summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChristian Pointner <equinox@spreadspace.org>2014-10-01 23:32:16 +0200
committerChristian Pointner <equinox@spreadspace.org>2014-10-01 23:32:16 +0200
commitece8ac69cc5719e1e814c60747ea81cd535ac497 (patch)
tree42bf680a1e6a515a037a43f8a78419c30f95ee87 /src
parentsending remove client command when closed (diff)
sydra create bin now lets the caller control wheter to create ghost pads or not
Diffstat (limited to 'src')
-rw-r--r--src/pipelines.c14
-rw-r--r--src/sydra.c78
-rw-r--r--src/utils.c4
-rw-r--r--src/utils.h2
4 files changed, 49 insertions, 49 deletions
diff --git a/src/pipelines.c b/src/pipelines.c
index 12b6eee..abe6fca 100644
--- a/src/pipelines.c
+++ b/src/pipelines.c
@@ -67,12 +67,12 @@ static gboolean create_avsend_elements(struct av_elements *ave, GstElement* pipe
char bin_name[32];
snprintf(bin_name, sizeof(bin_name), "%s source", ave->name_);
- ave->srcsink_ = sydra_create_bin_from_desc(bin_name, ave->srcsink_str_);
+ ave->srcsink_ = sydra_create_bin_from_desc(bin_name, ave->srcsink_str_, TRUE);
ave->tee_raw_ = sydra_create_element("tee", NULL);
GstElement *qr = sydra_create_element("queue", NULL);
snprintf(bin_name, sizeof(bin_name), "%s encoder", ave->name_);
- ave->encdec_ = sydra_create_bin_from_desc(bin_name, ave->encdec_str_);
+ ave->encdec_ = sydra_create_bin_from_desc(bin_name, ave->encdec_str_, TRUE);
ave->tee_enc_ = sydra_create_element("tee", NULL);
GstElement *qe = sydra_create_element("queue", NULL);
ave->payloader_ = sydra_create_element(ave->payloader_str_, NULL);
@@ -105,12 +105,12 @@ static gboolean create_avrecv_elements(struct av_elements *ave, GstElement* pipe
char bin_name[32];
snprintf(bin_name, sizeof(bin_name), "%s sink", ave->name_);
- ave->srcsink_ = sydra_create_bin_from_desc(bin_name, ave->srcsink_str_);
+ ave->srcsink_ = sydra_create_bin_from_desc(bin_name, ave->srcsink_str_, TRUE);
ave->tee_raw_ = sydra_create_element("tee", NULL);
GstElement *qr = sydra_create_element("queue", NULL);
snprintf(bin_name, sizeof(bin_name), "%s decoder", ave->name_);
- ave->encdec_ = sydra_create_bin_from_desc(bin_name, ave->encdec_str_);
+ ave->encdec_ = sydra_create_bin_from_desc(bin_name, ave->encdec_str_, TRUE);
ave->tee_enc_ = sydra_create_element("tee", NULL);
GstElement *qe = sydra_create_element("queue", NULL);
ave->payloader_ = sydra_create_element(ave->payloader_str_, NULL);
@@ -226,7 +226,7 @@ static gboolean create_udp_sources(options_t* opt, GstElement* pipeline, GstElem
static gboolean create_preview_elements(const char* preview_bin_desc, GstElement* pipeline, GstElement* tee)
{
GstElement *qr = sydra_create_element("queue", NULL);
- GstElement *preview_bin = sydra_create_bin_from_desc("preview sink", preview_bin_desc);
+ GstElement *preview_bin = sydra_create_bin_from_desc("preview sink", preview_bin_desc, TRUE);
if(!qr || !preview_bin) {
return FALSE;
@@ -258,13 +258,13 @@ static gboolean create_recorder_elements(options_t* opt, GstElement* pipeline, s
GstElement *ev = NULL, *tv = ve->tee_enc_;
if(opt->video_enc_rec_) {
- ev = sydra_create_bin_from_desc("record video encoder", opt->video_enc_rec_);
+ ev = sydra_create_bin_from_desc("record video encoder", opt->video_enc_rec_, TRUE);
if(!ev) return FALSE;
tv = ve->tee_raw_;
}
GstElement *ea = NULL, *ta = ae->tee_enc_;
if(opt->audio_enc_rec_) {
- ea = sydra_create_bin_from_desc("record audio encoder", opt->audio_enc_rec_);
+ ea = sydra_create_bin_from_desc("record audio encoder", opt->audio_enc_rec_, TRUE);
if(!ea) return FALSE;
ta = ae->tee_raw_;
}
diff --git a/src/sydra.c b/src/sydra.c
index 9eed676..9201ab4 100644
--- a/src/sydra.c
+++ b/src/sydra.c
@@ -118,46 +118,46 @@ static gboolean bus_call(GstBus *bus, GstMessage *msg, gpointer data)
(msg->src ? GST_OBJECT_NAME(msg->src) : "NULL"), running_time, stream_time, timestamp, duration);
break;
}
- case GST_MESSAGE_STREAM_STATUS:
- {
- GstStreamStatusType type;
- GstElement *owner;
- const GValue *val;
- gchar *path, *ownerstr;
- GstTask *task = NULL;
-
- gst_message_parse_stream_status (msg, &type, &owner);
- val = gst_message_get_stream_status_object (msg);
-
- path = gst_object_get_path_string (GST_MESSAGE_SRC (msg));
- ownerstr = gst_object_get_path_string (GST_OBJECT (owner));
- log_printf(DEBUG,"Recevied Stream-Status message type: %d, source: %s, owner: %s, object: type %s, value %p",
- type, path, ownerstr, G_VALUE_TYPE_NAME (val), g_value_get_object (val));
- g_free (path);
- g_free (ownerstr);
-
- /* see if we know how to deal with this object */
- if (G_VALUE_TYPE (val) == GST_TYPE_TASK) {
- task = g_value_get_object (val);
- }
-
- switch (type) {
- case GST_STREAM_STATUS_TYPE_CREATE:
- log_printf(DEBUG," created task %p", task);
- break;
- case GST_STREAM_STATUS_TYPE_ENTER:
- /* log_printf(DEBUG," raising task priority"); */
- /* setpriority (PRIO_PROCESS, 0, -10); */
- break;
- case GST_STREAM_STATUS_TYPE_LEAVE:
- break;
- default:
- break;
- }
- break;
- }
+ /* case GST_MESSAGE_STREAM_STATUS: */
+ /* { */
+ /* GstStreamStatusType type; */
+ /* GstElement *owner; */
+ /* const GValue *val; */
+ /* gchar *path, *ownerstr; */
+ /* GstTask *task = NULL; */
+
+ /* gst_message_parse_stream_status (msg, &type, &owner); */
+ /* val = gst_message_get_stream_status_object (msg); */
+
+ /* path = gst_object_get_path_string (GST_MESSAGE_SRC (msg)); */
+ /* ownerstr = gst_object_get_path_string (GST_OBJECT (owner)); */
+ /* log_printf(DEBUG,"Recevied Stream-Status message type: %d, source: %s, owner: %s, object: type %s, value %p", */
+ /* type, path, ownerstr, G_VALUE_TYPE_NAME (val), g_value_get_object (val)); */
+ /* g_free (path); */
+ /* g_free (ownerstr); */
+
+ /* /\* see if we know how to deal with this object *\/ */
+ /* if (G_VALUE_TYPE (val) == GST_TYPE_TASK) { */
+ /* task = g_value_get_object (val); */
+ /* } */
+
+ /* switch (type) { */
+ /* case GST_STREAM_STATUS_TYPE_CREATE: */
+ /* log_printf(DEBUG," created task %p", task); */
+ /* break; */
+ /* case GST_STREAM_STATUS_TYPE_ENTER: */
+ /* /\* log_printf(DEBUG," raising task priority"); *\/ */
+ /* /\* setpriority (PRIO_PROCESS, 0, -10); *\/ */
+ /* break; */
+ /* case GST_STREAM_STATUS_TYPE_LEAVE: */
+ /* break; */
+ /* default: */
+ /* break; */
+ /* } */
+ /* break; */
+ /* } */
default:
- log_printf(DEBUG, "unkonwn message %s from %s", GST_MESSAGE_TYPE_NAME(msg), GST_MESSAGE_SRC_NAME(msg));
+ /* log_printf(DEBUG, "unkonwn message %s from %s", GST_MESSAGE_TYPE_NAME(msg), GST_MESSAGE_SRC_NAME(msg)); */
return TRUE;
}
return TRUE;
diff --git a/src/utils.c b/src/utils.c
index 729b23a..b1bcee3 100644
--- a/src/utils.c
+++ b/src/utils.c
@@ -51,10 +51,10 @@ gint cmp_udp_client(gconstpointer A, gconstpointer B)
return strncmp(a->host_.addr_, b->host_.addr_, sizeof(a->host_.addr_));
}
-GstElement* sydra_create_bin_from_desc(const char* type, const char* desc)
+GstElement* sydra_create_bin_from_desc(const char* type, const char* desc, gboolean ghost_unlinked_pads)
{
GError *error = NULL;
- GstElement *bin = gst_parse_bin_from_description(desc, TRUE, &error);
+ GstElement *bin = gst_parse_bin_from_description(desc, ghost_unlinked_pads, &error);
if(!bin) {
log_printf(ERROR, "Bin description for %s parser error: %s", type, error ? error->message : "unknown");
g_error_free(error);
diff --git a/src/utils.h b/src/utils.h
index d1797db..8bd2c42 100644
--- a/src/utils.h
+++ b/src/utils.h
@@ -39,7 +39,7 @@
#include <gst/gst.h>
gint cmp_udp_client(gconstpointer A, gconstpointer B);
-GstElement* sydra_create_bin_from_desc(const char* type, const char* desc);
+GstElement* sydra_create_bin_from_desc(const char* type, const char* desc, gboolean ghost_unlinked_pads);
GstElement* sydra_create_element(const char* type, const char* name);
gboolean sydra_link_request_static(GstElement* src, const char* src_pad_name, GstElement* sink, const char* sink_pad_name);
gboolean sydra_link_static_request(GstElement* src, const char* src_pad_name, GstElement* sink, const char* sink_pad_name);