Struct gstreamer::TypeFindFactory[]

pub struct TypeFindFactory(_, _);

These functions allow querying informations about registered typefind functions. How to create and register these functions is described in the section "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.

  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 &gt;= 0 &amp;&amp; offset + size &lt;= find->size) {
      return find->data + offset;
    }
    return NULL;
  }
  static void
  my_suggest (gpointer data, guint probability, GstCaps *caps)
  {
    MyTypeFind *find = (MyTypeFind *) data;
    if (probability &gt; find->probability) {
      find->probability = probability;
      gst_caps_replace (&amp;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, &amp;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, &amp;gst_find);
    }
    g_list_free (type_list);
    return find.caps;
  };

Implements

PluginFeatureExt, GstObjectExt, glib::object::ObjectExt

Methods

impl TypeFindFactory
[src]

Gets the Caps associated with a typefind factory.

Returns

the Caps associated with this factory

Important traits for Vec<u8>

Gets the extensions associated with a TypeFindFactory. 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 None to indicate a 0-length list.

Returns

a None-terminated array of extensions associated with this 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.

Returns

true if the factory has a typefind functions set, otherwise false

Important traits for Vec<u8>

Gets the list of all registered typefind factories. You must free the list using PluginFeature::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 TypeFindFactory.

impl TypeFindFactory
[src]

Calls the GstTypeFindFunction associated with this factory.

find

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

Trait Implementations

impl Clone for TypeFindFactory

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

impl Hash for TypeFindFactory

Feeds this value into the given [Hasher]. Read more

Feeds a slice of this type into the given [Hasher]. Read more

impl Ord for TypeFindFactory

This method returns an Ordering between self and other. Read more

Compares and returns the maximum of two values. Read more

Compares and returns the minimum of two values. Read more

impl StaticType for TypeFindFactory

Returns the type identifier of Self.

impl<T: IsA<Object>> PartialEq<T> for TypeFindFactory

This method tests for self and other values to be equal, and is used by ==. Read more

This method tests for !=.

impl Eq for TypeFindFactory

impl<T: IsA<Object>> PartialOrd<T> for TypeFindFactory

This method returns an ordering between self and other values if one exists. Read more

This method tests less than (for self and other) and is used by the < operator. Read more

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more

This method tests greater than (for self and other) and is used by the > operator. Read more

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more

impl Debug for TypeFindFactory

Formats the value using the given formatter. Read more

impl IsA<PluginFeature> for TypeFindFactory

impl IsA<Object> for TypeFindFactory

impl IsA<Object> for TypeFindFactory

impl Send for TypeFindFactory
[src]

impl Sync for TypeFindFactory
[src]