typefindfactory: add gst_type_find_factory_has_function()

Add API so people don't have to poke the struct for this.
This commit is contained in:
Tim-Philipp Müller 2012-05-01 22:33:30 +01:00
parent 80fa8aa77b
commit ecf74cf2db
3 changed files with 20 additions and 1 deletions

View 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);
}

View 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);

View 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 */