typefindfactory: add gst_type_find_factory_has_function()
authorTim-Philipp Müller <tim.muller@collabora.co.uk>
Tue, 1 May 2012 21:33:30 +0000 (22:33 +0100)
committerTim-Philipp Müller <tim.muller@collabora.co.uk>
Tue, 1 May 2012 22:23:41 +0000 (23:23 +0100)
Add API so people don't have to poke the struct for this.

gst/gsttypefindfactory.c
gst/gsttypefindfactory.h
libs/gst/base/gsttypefindhelper.c

index aca0698..1707768 100644 (file)
@@ -222,3 +222,21 @@ gst_type_find_factory_call_function (GstTypeFindFactory * factory,
     gst_object_unref (new_factory);
   }
 }
+
+/**
+ * gst_type_find_factory_has_function:
+ * @factory: A #GstTypeFindFactory
+ *
+ * Check whether the factory has a typefind function. Typefind factories
+ * without typefind functions are a last-effort fallback mechanism to
+ * e.g. assume a certain media type based on the file extension.
+ *
+ * Returns: TRUE if the factory has a typefind functions set, otherwise FALSE
+ */
+gboolean
+gst_type_find_factory_has_function (GstTypeFindFactory * factory)
+{
+  g_return_val_if_fail (GST_IS_TYPE_FIND_FACTORY (factory), FALSE);
+
+  return (factory->function != NULL);
+}
index 3d8ff31..3797f29 100644 (file)
@@ -73,6 +73,7 @@ GList *         gst_type_find_factory_get_list          (void);
 
 gchar **        gst_type_find_factory_get_extensions    (GstTypeFindFactory *factory);
 GstCaps *       gst_type_find_factory_get_caps          (GstTypeFindFactory *factory);
+gboolean        gst_type_find_factory_has_function      (GstTypeFindFactory *factory);
 void            gst_type_find_factory_call_function     (GstTypeFindFactory *factory,
                                                          GstTypeFind *find);
 
index 41f66bf..d9bbe72 100644 (file)
@@ -623,7 +623,7 @@ gst_type_find_helper_for_extension (GstObject * obj, const gchar * extension)
     factory = GST_TYPE_FIND_FACTORY (l->data);
 
     /* we only want to check those factories without a function */
-    if (factory->function != NULL)
+    if (gst_type_find_factory_has_function (factory))
       continue;
 
     /* get the extension that this typefind factory can handle */