TypeFindFactory

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.

1 
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 };

Constructors

this
this(GstTypeFindFactory* gstTypeFindFactory, bool ownedRef = false)

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

Members

Functions

callFunction
void callFunction(TypeFind find)

Calls the GstTypeFindFunction associated with this factory.

getCaps
Caps getCaps()

Gets the GstCaps associated with a typefind factory.

getExtensions
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.

getStruct
void* getStruct()

the main Gtk struct as a void*

getTypeFindFactoryStruct
GstTypeFindFactory* getTypeFindFactoryStruct(bool transferOwnership = false)

Get the main Gtk struct

hasFunction
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

getList
ListG getList()

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

getType
GType getType()

Variables

gstTypeFindFactory
GstTypeFindFactory* gstTypeFindFactory;

the main Gtk struct