diff options
author | Christian Pointner <equinox@spreadspace.org> | 2014-10-01 23:32:16 +0200 |
---|---|---|
committer | Christian Pointner <equinox@spreadspace.org> | 2014-10-01 23:32:16 +0200 |
commit | ece8ac69cc5719e1e814c60747ea81cd535ac497 (patch) | |
tree | 42bf680a1e6a515a037a43f8a78419c30f95ee87 /src | |
parent | sending 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.c | 14 | ||||
-rw-r--r-- | src/sydra.c | 78 | ||||
-rw-r--r-- | src/utils.c | 4 | ||||
-rw-r--r-- | src/utils.h | 2 |
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); |