manpagez: man pages & more
html files: gstreamer-1.0
Home | html | info | man

GstTypeFindFactory

GstTypeFindFactory — Information about registered typefind functions

Types and Values

Object Hierarchy

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

Includes

#include <gst/gstprotection.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".

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

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][nullable]


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.

© manpagez.com 2000-2024
Individual documents may contain additional copyright information.