gi-gst-1.0.20: GStreamer bindings

CopyrightWill Thompson Iñaki García Etxebarria and Jonas Platte
LicenseLGPL-2.1
MaintainerIñaki García Etxebarria (inaki@blueleaf.cc)
Safe HaskellNone
LanguageHaskell2010

GI.Gst.Objects.TypeFindFactory

Contents

Description

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

C code

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

Exported types

newtype TypeFindFactory Source #

Memory-managed wrapper type.

Constructors

TypeFindFactory (ManagedPtr TypeFindFactory) 
Instances
GObject TypeFindFactory Source # 
Instance details

Defined in GI.Gst.Objects.TypeFindFactory

Methods

gobjectType :: IO GType

HasParentTypes TypeFindFactory Source # 
Instance details

Defined in GI.Gst.Objects.TypeFindFactory

type ParentTypes TypeFindFactory Source # 
Instance details

Defined in GI.Gst.Objects.TypeFindFactory

type ParentTypes TypeFindFactory = PluginFeature ': (Object ': (Object ': ([] :: [Type])))

class (GObject o, IsDescendantOf TypeFindFactory o) => IsTypeFindFactory o Source #

Type class for types which can be safely cast to TypeFindFactory, for instance with toTypeFindFactory.

Instances
(GObject o, IsDescendantOf TypeFindFactory o) => IsTypeFindFactory o Source # 
Instance details

Defined in GI.Gst.Objects.TypeFindFactory

toTypeFindFactory :: (MonadIO m, IsTypeFindFactory o) => o -> m TypeFindFactory Source #

Cast to TypeFindFactory, for types for which this is known to be safe. For general casts, use castTo.

Methods

callFunction

typeFindFactoryCallFunction Source #

Arguments

:: (HasCallStack, MonadIO m, IsTypeFindFactory a) 
=> a

factory: A TypeFindFactory

-> TypeFind

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

-> m () 

Calls the TypeFindFunction associated with this factory.

getCaps

typeFindFactoryGetCaps Source #

Arguments

:: (HasCallStack, MonadIO m, IsTypeFindFactory a) 
=> a

factory: A TypeFindFactory

-> m Caps

Returns: the Caps associated with this factory

Gets the Caps associated with a typefind factory.

getExtensions

typeFindFactoryGetExtensions Source #

Arguments

:: (HasCallStack, MonadIO m, IsTypeFindFactory a) 
=> a

factory: A TypeFindFactory

-> m (Maybe [Text])

Returns: a Nothing-terminated array of extensions associated with this factory

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 Nothing to indicate a 0-length list.

getList

typeFindFactoryGetList Source #

Arguments

:: (HasCallStack, MonadIO m) 
=> m [TypeFindFactory]

Returns: the list of all registered TypeFindFactory.

Gets the list of all registered typefind factories. You must free the list using pluginFeatureListFree.

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

Free-function: gst_plugin_feature_list_free

hasFunction

typeFindFactoryHasFunction Source #

Arguments

:: (HasCallStack, MonadIO m, IsTypeFindFactory a) 
=> a

factory: A TypeFindFactory

-> m Bool

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

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.