These functions allow querying information about registered typefind functions. How to create and register these functions is described in the section <link linkend="gstreamer-Writing-typefind-functions"> "Writing typefind functions"</link>.

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.

2 typedef struct {
3 guint8 *data;
4 guint size;
5 guint probability;
6 GstCaps *data;
7 } MyTypeFind;
8 static void
9 my_peek (gpointer data, gint64 offset, guint size)
10 {
11 MyTypeFind *find = (MyTypeFind *) data;
12 if (offset &gt;= 0 &amp;&amp; offset + size &lt;= find->size) {
13 return find->data + offset;
14 }
15 return NULL;
16 }
17 static void
18 my_suggest (gpointer data, guint probability, GstCaps *caps)
19 {
20 MyTypeFind *find = (MyTypeFind *) data;
21 if (probability &gt; find->probability) {
22 find->probability = probability;
23 gst_caps_replace (&amp;find->caps, caps);
24 }
25 }
26 static GstCaps *
27 find_type (guint8 *data, guint size)
28 {
29 GList *walk, *type_list;
30 MyTypeFind find = {data, size, 0, NULL};
31 GstTypeFind gst_find = {my_peek, my_suggest, &amp;find, };
32 walk = type_list = gst_type_find_factory_get_list ();
33 while (walk) {
34 GstTypeFindFactory *factory = GST_TYPE_FIND_FACTORY (walk->data);
35 walk = g_list_next (walk)
36 gst_type_find_factory_call_function (factory, &amp;gst_find);
37 }
38 g_list_free (type_list);
39 return find.caps;
40 };


this(GstTypeFindFactory* gstTypeFindFactory, bool ownedRef = false)

Sets our main struct and passes it to the parent class.



void callFunction(TypeFind find)

Calls the GstTypeFindFunction associated with this factory.

Caps getCaps()

Gets the GstCaps associated with a typefind factory.

string[] getExtensions()

Gets the extensions associated with a GstTypeFindFactory The returned array should not be changed. If you need to change stuff in it, you should copy it using g_strdupv(). This function may return NULL to indicate a 0-length list.

void* getStruct()

the main Gtk struct as a void*

GstTypeFindFactory* getTypeFindFactoryStruct(bool transferOwnership = false)

Get the main Gtk struct

bool hasFunction()

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.

Static functions

ListG getList()

Gets the list of all registered typefind factories. You must free the list using gst_plugin_feature_list_free().

GType getType()


GstTypeFindFactory* gstTypeFindFactory;

the main Gtk struct