From c0fd8e0c39032d3048b44660ddca049a4d169ea7 Mon Sep 17 00:00:00 2001 From: Stefan Sauer Date: Wed, 19 Feb 2014 21:26:03 +0100 Subject: [PATCH] autodetect: extract common helper code The function to generate the pretty names is basically the same. Use one and add a parameter. --- gst/autodetect/gstautoaudiosink.c | 24 ++---------------------- gst/autodetect/gstautoaudiosrc.c | 24 ++---------------------- gst/autodetect/gstautodetect.c | 26 ++++++++++++++++++++++++++ gst/autodetect/gstautodetect.h | 4 ++++ gst/autodetect/gstautovideosink.c | 24 ++---------------------- gst/autodetect/gstautovideosrc.c | 24 ++---------------------- 6 files changed, 38 insertions(+), 88 deletions(-) diff --git a/gst/autodetect/gstautoaudiosink.c b/gst/autodetect/gstautoaudiosink.c index 7c1e2c5350..9dc7e18147 100644 --- a/gst/autodetect/gstautoaudiosink.c +++ b/gst/autodetect/gstautoaudiosink.c @@ -210,27 +210,6 @@ gst_auto_audio_sink_factory_filter (GstPluginFeature * feature, gpointer data) return TRUE; } -static GstElement * -gst_auto_audio_sink_create_element_with_pretty_name (GstAutoAudioSink * sink, - GstElementFactory * factory) -{ - GstElement *element; - gchar *name, *marker; - - marker = g_strdup (GST_OBJECT_NAME (factory)); - if (g_str_has_suffix (marker, "sink")) - marker[strlen (marker) - 4] = '\0'; - if (g_str_has_prefix (marker, "gst")) - memmove (marker, marker + 3, strlen (marker + 3) + 1); - name = g_strdup_printf ("%s-actual-sink-%s", GST_OBJECT_NAME (sink), marker); - g_free (marker); - - element = gst_element_factory_create (factory, name); - g_free (name); - - return element; -} - static GstElement * gst_auto_audio_sink_find_best (GstAutoAudioSink * sink) { @@ -257,7 +236,8 @@ gst_auto_audio_sink_find_best (GstAutoAudioSink * sink) GstElementFactory *f = GST_ELEMENT_FACTORY (item->data); GstElement *el; - if ((el = gst_auto_audio_sink_create_element_with_pretty_name (sink, f))) { + if ((el = gst_auto_create_element_with_pretty_name (GST_ELEMENT_CAST (sink), + f, "sink"))) { GstStateChangeReturn ret; GST_DEBUG_OBJECT (sink, "Testing %s", GST_OBJECT_NAME (f)); diff --git a/gst/autodetect/gstautoaudiosrc.c b/gst/autodetect/gstautoaudiosrc.c index 49fa387a1c..b63d6baf8b 100644 --- a/gst/autodetect/gstautoaudiosrc.c +++ b/gst/autodetect/gstautoaudiosrc.c @@ -196,27 +196,6 @@ gst_auto_audio_src_factory_filter (GstPluginFeature * feature, gpointer data) return TRUE; } -static GstElement * -gst_auto_audio_src_create_element_with_pretty_name (GstAutoAudioSrc * src, - GstElementFactory * factory) -{ - GstElement *element; - gchar *name, *marker; - - marker = g_strdup (GST_OBJECT_NAME (factory)); - if (g_str_has_suffix (marker, "src")) - marker[strlen (marker) - 4] = '\0'; - if (g_str_has_prefix (marker, "gst")) - memmove (marker, marker + 3, strlen (marker + 3) + 1); - name = g_strdup_printf ("%s-actual-src-%s", GST_OBJECT_NAME (src), marker); - g_free (marker); - - element = gst_element_factory_create (factory, name); - g_free (name); - - return element; -} - static GstElement * gst_auto_audio_src_find_best (GstAutoAudioSrc * src) { @@ -243,7 +222,8 @@ gst_auto_audio_src_find_best (GstAutoAudioSrc * src) GstElementFactory *f = GST_ELEMENT_FACTORY (item->data); GstElement *el; - if ((el = gst_auto_audio_src_create_element_with_pretty_name (src, f))) { + if ((el = gst_auto_create_element_with_pretty_name (GST_ELEMENT_CAST (src), + f, "src"))) { GstStateChangeReturn ret; GST_DEBUG_OBJECT (src, "Testing %s", GST_OBJECT_NAME (f)); diff --git a/gst/autodetect/gstautodetect.c b/gst/autodetect/gstautodetect.c index 96a8cd739f..7d7feb5d0b 100644 --- a/gst/autodetect/gstautodetect.c +++ b/gst/autodetect/gstautodetect.c @@ -21,6 +21,8 @@ #include "config.h" #endif +#include + #include #include "gstautodetect.h" @@ -31,6 +33,30 @@ GST_DEBUG_CATEGORY (autodetect_debug); +GstElement * +gst_auto_create_element_with_pretty_name (GstElement * autodetect, + GstElementFactory * factory, const gchar * suffix) +{ + GstElement *element; + gchar *name, *marker; + + marker = g_strdup (GST_OBJECT_NAME (factory)); + if (g_str_has_suffix (marker, suffix)) + marker[strlen (marker) - 4] = '\0'; + if (g_str_has_prefix (marker, "gst")) + memmove (marker, marker + 3, strlen (marker + 3) + 1); + name = g_strdup_printf ("%s-actual-%s-%s", GST_OBJECT_NAME (autodetect), + suffix, marker); + g_free (marker); + + element = gst_element_factory_create (factory, name); + g_free (name); + + return element; +} + + + static gboolean plugin_init (GstPlugin * plugin) { diff --git a/gst/autodetect/gstautodetect.h b/gst/autodetect/gstautodetect.h index 5e6875c693..c366a0cc87 100644 --- a/gst/autodetect/gstautodetect.h +++ b/gst/autodetect/gstautodetect.h @@ -23,4 +23,8 @@ GST_DEBUG_CATEGORY_EXTERN (autodetect_debug); #define GST_CAT_DEFAULT autodetect_debug +GstElement * gst_auto_create_element_with_pretty_name ( + GstElement * autodetect, GstElementFactory * factory, const gchar *suffix); + + #endif /* __GST_AUTO_DETECT_H__ */ diff --git a/gst/autodetect/gstautovideosink.c b/gst/autodetect/gstautovideosink.c index 282bca4651..2163c6f16a 100644 --- a/gst/autodetect/gstautovideosink.c +++ b/gst/autodetect/gstautovideosink.c @@ -209,27 +209,6 @@ gst_auto_video_sink_factory_filter (GstPluginFeature * feature, gpointer data) return TRUE; } -static GstElement * -gst_auto_video_sink_create_element_with_pretty_name (GstAutoVideoSink * sink, - GstElementFactory * factory) -{ - GstElement *element; - gchar *name, *marker; - - marker = g_strdup (GST_OBJECT_NAME (factory)); - if (g_str_has_suffix (marker, "sink")) - marker[strlen (marker) - 4] = '\0'; - if (g_str_has_prefix (marker, "gst")) - memmove (marker, marker + 3, strlen (marker + 3) + 1); - name = g_strdup_printf ("%s-actual-sink-%s", GST_OBJECT_NAME (sink), marker); - g_free (marker); - - element = gst_element_factory_create (factory, name); - g_free (name); - - return element; -} - static GstElement * gst_auto_video_sink_find_best (GstAutoVideoSink * sink) { @@ -253,7 +232,8 @@ gst_auto_video_sink_find_best (GstAutoVideoSink * sink) GstElementFactory *f = GST_ELEMENT_FACTORY (item->data); GstElement *el; - if ((el = gst_auto_video_sink_create_element_with_pretty_name (sink, f))) { + if ((el = gst_auto_create_element_with_pretty_name (GST_ELEMENT_CAST (sink), + f, "sink"))) { GstStateChangeReturn ret; GST_DEBUG_OBJECT (sink, "Testing %s", GST_OBJECT_NAME (f)); diff --git a/gst/autodetect/gstautovideosrc.c b/gst/autodetect/gstautovideosrc.c index a7a9a088e4..c4c5fa4725 100644 --- a/gst/autodetect/gstautovideosrc.c +++ b/gst/autodetect/gstautovideosrc.c @@ -195,27 +195,6 @@ gst_auto_video_src_factory_filter (GstPluginFeature * feature, gpointer data) return TRUE; } -static GstElement * -gst_auto_video_src_create_element_with_pretty_name (GstAutoVideoSrc * src, - GstElementFactory * factory) -{ - GstElement *element; - gchar *name, *marker; - - marker = g_strdup (GST_OBJECT_NAME (factory)); - if (g_str_has_suffix (marker, "src")) - marker[strlen (marker) - 4] = '\0'; - if (g_str_has_prefix (marker, "gst")) - memmove (marker, marker + 3, strlen (marker + 3) + 1); - name = g_strdup_printf ("%s-actual-src-%s", GST_OBJECT_NAME (src), marker); - g_free (marker); - - element = gst_element_factory_create (factory, name); - g_free (name); - - return element; -} - static GstElement * gst_auto_video_src_find_best (GstAutoVideoSrc * src) { @@ -239,7 +218,8 @@ gst_auto_video_src_find_best (GstAutoVideoSrc * src) GstElementFactory *f = GST_ELEMENT_FACTORY (item->data); GstElement *el; - if ((el = gst_auto_video_src_create_element_with_pretty_name (src, f))) { + if ((el = gst_auto_create_element_with_pretty_name (GST_ELEMENT_CAST (src), + f, "src"))) { GstStateChangeReturn ret; GST_DEBUG_OBJECT (src, "Testing %s", GST_OBJECT_NAME (f));