GstTypeFindFactory

GstTypeFindFactory — Information about registered typefind functions

Types and Values

Object Hierarchy

    GObject
    ╰── GInitiallyUnowned
        ╰── GstObject
            ╰── GstPluginFeature
                ╰── GstTypeFindFactory

Includes

#include <gst/gst.h>

Description

These functions allow querying informations about registered typefind functions. How to create and register these functions is described in the section "Writing typefind functions".

Example 13. how to write a simple typefinder

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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.

Last reviewed on 2005-11-09 (0.9.4)

Functions

gst_type_find_factory_get_list ()

GList *
gst_type_find_factory_get_list (void);

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

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

Free-function: gst_plugin_feature_list_free

Returns

the list of all registered GstTypeFindFactory.

[transfer full][element-type Gst.TypeFindFactory]


gst_type_find_factory_get_extensions ()

const gchar * const *
gst_type_find_factory_get_extensions (GstTypeFindFactory *factory);

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.

Parameters

factory

A GstTypeFindFactory

 

Returns

a NULL-terminated array of extensions associated with this factory.

[transfer none][array zero-terminated=1][element-type utf8]


gst_type_find_factory_get_caps ()

GstCaps *
gst_type_find_factory_get_caps (GstTypeFindFactory *factory);

Gets the GstCaps associated with a typefind factory.

Parameters

factory

A GstTypeFindFactory

 

Returns

the GstCaps associated with this factory.

[transfer none]


gst_type_find_factory_has_function ()

gboolean
gst_type_find_factory_has_function (GstTypeFindFactory *factory);

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.

Parameters

factory

A GstTypeFindFactory

 

Returns

TRUE if the factory has a typefind functions set, otherwise FALSE


gst_type_find_factory_call_function ()

void
gst_type_find_factory_call_function (GstTypeFindFactory *factory,
                                     GstTypeFind *find);

Calls the GstTypeFindFunction associated with this factory.

Parameters

factory

A GstTypeFindFactory

 

find

a properly setup GstTypeFind entry. The get_data and suggest_type members must be set.

[transfer none]

Types and Values

GstTypeFindFactory

typedef struct _GstTypeFindFactory GstTypeFindFactory;

Opaque object that stores information about a typefind function.