[][src]Struct gstreamer::TypeFindFactory

pub struct TypeFindFactory(_, _);

These functions allow querying information 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, PluginFeatureExtManual

Methods

impl TypeFindFactory[src]

pub fn get_caps(&self) -> Option<Caps>[src]

Gets the Caps associated with a typefind factory.

Returns

the Caps associated with this factory

pub fn get_extensions(&self) -> Vec<GString>[src]

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

pub fn has_function(&self) -> bool[src]

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

pub fn get_list() -> Vec<TypeFindFactory>[src]

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]

pub fn call_function(&self, find: &mut dyn TypeFindImpl)[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[src]

impl Debug for TypeFindFactory[src]

impl Eq for TypeFindFactory[src]

impl Hash for TypeFindFactory[src]

impl IsA<Object> for TypeFindFactory[src]

impl IsA<PluginFeature> for TypeFindFactory[src]

impl Ord for TypeFindFactory[src]

impl<T: ObjectType> PartialEq<T> for TypeFindFactory[src]

impl<T: ObjectType> PartialOrd<T> for TypeFindFactory[src]

impl Send for TypeFindFactory[src]

impl StaticType for TypeFindFactory[src]

impl Sync for TypeFindFactory[src]

Auto Trait Implementations

impl RefUnwindSafe for TypeFindFactory

impl Unpin for TypeFindFactory

impl UnwindSafe for TypeFindFactory

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<Super, Sub> CanDowncast<Sub> for Super where
    Sub: IsA<Super>,
    Super: IsA<Super>, 
[src]

impl<T> Cast for T where
    T: ObjectType
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ObjectExt for T where
    T: ObjectType
[src]

impl<'a, T> ToGlibContainerFromSlice<'a, *const GList> for T where
    T: GlibPtrDefault + ToGlibPtr<'a, <T as GlibPtrDefault>::GlibType>, 
[src]

impl<'a, T> ToGlibContainerFromSlice<'a, *const GPtrArray> for T where
    T: GlibPtrDefault + ToGlibPtr<'a, <T as GlibPtrDefault>::GlibType>, 
[src]

impl<'a, T> ToGlibContainerFromSlice<'a, *mut GArray> for T where
    T: GlibPtrDefault + ToGlibPtr<'a, <T as GlibPtrDefault>::GlibType>, 
[src]

impl<'a, T> ToGlibContainerFromSlice<'a, *mut GList> for T where
    T: GlibPtrDefault + ToGlibPtr<'a, <T as GlibPtrDefault>::GlibType>, 
[src]

impl<'a, T> ToGlibContainerFromSlice<'a, *mut GPtrArray> for T where
    T: GlibPtrDefault + ToGlibPtr<'a, <T as GlibPtrDefault>::GlibType>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T> ToSendValue for T where
    T: ToValue + SetValue + Send + ?Sized
[src]

impl<T> ToValue for T where
    T: SetValue + ?Sized
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.