TypeFindFactory
Object Hierarchy:
Description:
[ CCode ( lower_case_csuffix = "type_find_factory" , type_id = "gst_type_find_factory_get_type ()" ) ]
public sealed class TypeFindFactory : PluginFeature
public sealed class TypeFindFactory : PluginFeature
These functions allow querying information about registered typefind functions.
How to create and register these functions is described in the section "Writing typefind functions".
The following example shows how to write a very simple typefinder that identifies the given data. You can get quite a bit more complicated than that though.
typedef struct {
guint8 *data;
guint size;
guint probability;
GstCaps *data;
} MyTypeFind;
static void
my_peek (gpointer data, gint64 offset, guint size)
{
MyTypeFind *find = (MyTypeFind *) data;
if (offset >= 0 && offset + size <= find->size) {
return find->data + offset;
}
return NULL;
}
static void
my_suggest (gpointer data, guint probability, GstCaps *caps)
{
MyTypeFind *find = (MyTypeFind *) data;
if (probability > find->probability) {
find->probability = probability;
gst_caps_replace (&find->caps, caps);
}
}
static GstCaps *
find_type (guint8 *data, guint size)
{
GList *walk, *type_list;
MyTypeFind find = {data, size, 0, NULL};
GstTypeFind gst_find = {my_peek, my_suggest, &find, };
walk = type_list = gst_type_find_factory_get_list ();
while (walk) {
GstTypeFindFactory *factory = GST_TYPE_FIND_FACTORY (walk->data);
walk = g_list_next (walk)
gst_type_find_factory_call_function (factory, &gst_find);
}
g_list_free (type_list);
return find.caps;
};
Namespace: Gst
Package: gstreamer-1.0
Content:
Static methods:
Creation methods:
Methods:
Inherited Members:
All known members inherited from class Gst.PluginFeature
All known members inherited from class Gst.Object
All known members inherited from class GLib.Object