Gst.TypeFindFactory

g GObject.InitiallyUnowned GObject.InitiallyUnowned Gst.Object Gst.Object GObject.InitiallyUnowned->Gst.Object GObject.Object GObject.Object GObject.Object->GObject.InitiallyUnowned Gst.PluginFeature Gst.PluginFeature Gst.Object->Gst.PluginFeature Gst.TypeFindFactory Gst.TypeFindFactory Gst.PluginFeature->Gst.TypeFindFactory

Subclasses:

None

Methods

Inherited:

Gst.PluginFeature (10), Gst.Object (27), GObject.Object (37)

Structs:

GObject.ObjectClass (5)

class

get_list ()

call_function (find)

get_caps ()

get_extensions ()

has_function ()

Virtual Methods

Inherited:

Gst.Object (1), GObject.Object (7)

Properties

Inherited:

Gst.Object (2)

Signals

Inherited:

Gst.Object (1), GObject.Object (1)

Fields

Inherited:

Gst.Object (1), GObject.Object (1)

Class Details

class Gst.TypeFindFactory(**kwargs)
Bases:

Gst.PluginFeature

Abstract:

No

Structure:

Gst.TypeFindFactoryClass

These functions allow querying information about registered typefind functions. How to create and register these functions is described in the section ‘“Writing typefind functions” [gstreamer-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;
};
classmethod get_list()[source]
Returns:

the list of all registered Gst.TypeFindFactory.

Return type:

[Gst.TypeFindFactory]

Gets the list of all registered typefind factories. You must free the list using Gst.PluginFeature.list_free().

The returned factories are sorted by highest rank first, and then by factory name.

Free-function: Gst.PluginFeature.list_free

call_function(find)[source]
Parameters:

find (Gst.TypeFind) – a properly setup Gst.TypeFind entry. The get_data and suggest_type members must be set.

Calls the Gst.TypeFindFunction associated with this factory.

get_caps()[source]
Returns:

the Gst.Caps associated with this factory

Return type:

Gst.Caps or None

Gets the Gst.Caps associated with a typefind factory.

get_extensions()[source]
Returns:

a None-terminated array of extensions associated with this factory

Return type:

[str] or None

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

has_function()[source]
Returns:

True if the factory has a typefind functions set, otherwise False

Return type:

bool

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.