GstTypeFindFactory information about registered typefind functions These functions allow querying informations about registered typefind functions. How to create and register these functions is described in the section "Writing typefind functions". how to write a simple typefinder /* FIXME: compile this? ;) */ 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; }; The above 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. Writing typefind functions Object that stores information about a typefind function Class belonging to #GstTypeFindFactory. @parent: @Returns: @factory: @Returns: @factory: @Returns: @factory: @find: