From dcd516e20d4e8c2fc4c93e3d6d5bec8e6f49c76c Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Wed, 24 Sep 2014 22:39:39 +0200 Subject: moved gstreamer utility functions to seperate file --- src/sydra.c | 82 +------------------------------------------------------------ 1 file changed, 1 insertion(+), 81 deletions(-) (limited to 'src/sydra.c') diff --git a/src/sydra.c b/src/sydra.c index bb55c97..c7503b6 100644 --- a/src/sydra.c +++ b/src/sydra.c @@ -52,6 +52,7 @@ #include "string_list.h" #include "log.h" #include "daemon.h" +#include "utils.h" static gboolean sig_handler_terminate(gpointer user_data) { @@ -162,88 +163,7 @@ static gboolean bus_call(GstBus *bus, GstMessage *msg, gpointer data) return TRUE; } -static GstElement* sydra_create_bin_from_desc(const char* type, const char* desc) -{ - GError *error = NULL; - GstElement *bin = gst_parse_bin_from_description(desc, TRUE, &error); - if(!bin) { - log_printf(ERROR, "Bin description for %s parser error: %s", type, error ? error->message : "unknown"); - g_error_free(error); - return NULL; - } - if(error) { - log_printf(WARNING, "Bin description for %s parser warning: %s", type, error ? error->message : "unknown"); - g_error_free(error); - } - return bin; -} - -static GstElement* sydra_create_element(const char* type, const char* name) -{ - GstElement *e = gst_element_factory_make (type, name); - if(!e) { - log_printf(ERROR, "Error creating element %s%sof type %s", name ? name : "", name ? " " : "", type); - return NULL; - } - return e; -} - -static gboolean sydra_link_pads(GstElement* src, GstPad* src_pad, const char* src_pad_name, GstElement* sink, GstPad* sink_pad, const char* sink_pad_name) -{ - if(!src_pad || !sink_pad) - return FALSE; - - GstPadLinkReturn ret = gst_pad_link(src_pad, sink_pad); - gst_object_unref(GST_OBJECT(src_pad)); - gst_object_unref(GST_OBJECT(sink_pad)); - - if(GST_PAD_LINK_FAILED(ret)) { - gchar* src_name = gst_element_get_name(src); - gchar* sink_name = gst_element_get_name(sink); - log_printf(ERROR, "Error linking pad '%s' of '%s' with pad '%s' of '%s'", - src_pad_name, src_name, sink_pad_name, sink_name); - g_free(src_name); - g_free(sink_name); - return FALSE; - } - return TRUE; -} - -static gboolean sydra_link_request_static(GstElement* src, const char* src_pad_name, GstElement* sink, const char* sink_pad_name) -{ - GstPad *src_pad = gst_element_get_request_pad(src, src_pad_name); - GstPad *sink_pad = gst_element_get_static_pad(sink, sink_pad_name); - return sydra_link_pads(src, src_pad, src_pad_name, sink, sink_pad, sink_pad_name); -} - -static gboolean sydra_link_static_request(GstElement* src, const char* src_pad_name, GstElement* sink, const char* sink_pad_name) -{ - GstPad *src_pad = gst_element_get_static_pad(src, src_pad_name); - GstPad *sink_pad = gst_element_get_request_pad(sink, sink_pad_name); - return sydra_link_pads(src, src_pad, src_pad_name, sink, sink_pad, sink_pad_name); -} -static gboolean sydra_link_static_static(GstElement* src, const char* src_pad_name, GstElement* sink, const char* sink_pad_name) -{ - GstPad *src_pad = gst_element_get_static_pad(src, src_pad_name); - GstPad *sink_pad = gst_element_get_static_pad(sink, sink_pad_name); - return sydra_link_pads(src, src_pad, src_pad_name, sink, sink_pad, sink_pad_name); -} - -static gboolean sydra_link_static_compatible(GstElement* src, const char* src_pad_name, GstElement* sink) -{ - GstPad *src_pad = gst_element_get_static_pad(src, src_pad_name); - if(!src_pad) return FALSE; - - GstPad *sink_pad = gst_element_get_compatible_pad(sink, src_pad, NULL); - if(!sink_pad) return FALSE; - - gchar* sink_pad_name = gst_pad_get_name(sink_pad); - gboolean res = sydra_link_pads(src, src_pad, src_pad_name, sink, sink_pad, sink_pad_name); - g_free(sink_pad_name); - - return res; -} struct media_elements { const char* name_; -- cgit v1.2.3