autodetect: extract common helper code
authorStefan Sauer <ensonic@users.sf.net>
Wed, 19 Feb 2014 20:26:03 +0000 (21:26 +0100)
committerStefan Sauer <ensonic@users.sf.net>
Wed, 19 Feb 2014 20:27:17 +0000 (21:27 +0100)
The function to generate the pretty names is basically the same. Use one and add
a parameter.

gst/autodetect/gstautoaudiosink.c
gst/autodetect/gstautoaudiosrc.c
gst/autodetect/gstautodetect.c
gst/autodetect/gstautodetect.h
gst/autodetect/gstautovideosink.c
gst/autodetect/gstautovideosrc.c

index 7c1e2c53507221a205a6f0d8714c5dcd0f1aecdd..9dc7e18147978e8f88146132bcd967834bacc345 100644 (file)
@@ -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));
index 49fa387a1ca6d491df7910c426e5a36c7846e0ad..b63d6baf8bcc0475a322dc1a5df9a888297e3109 100644 (file)
@@ -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));
index 96a8cd739fc3bd9b33e1496cfe798329350fc84c..7d7feb5d0b47b50a08f834be1841f779f5132a5b 100644 (file)
@@ -21,6 +21,8 @@
 #include "config.h"
 #endif
 
+#include <string.h>
+
 #include <gst/gst.h>
 
 #include "gstautodetect.h"
 
 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)
 {
index 5e6875c69304f6476af1943d8531c664eea2e7ef..c366a0cc879e7994c334be67422d1851e1283bf8 100644 (file)
@@ -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__ */
index 282bca465149b619df852860320d52ae92d3e91c..2163c6f16a5bea34a22d64bd2f82ae5416a082ef 100644 (file)
@@ -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));
index a7a9a088e498637855e5538d4f8179f56694e4c0..c4c5fa472510a1d09aedb9968841aa5c9d417fbd 100644 (file)
@@ -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));