Copyright | Will Thompson and Iñaki García Etxebarria |
---|---|
License | LGPL-2.1 |
Maintainer | Iñaki García Etxebarria |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
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 >= 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; };
Synopsis
- newtype TypeFindFactory = TypeFindFactory (ManagedPtr TypeFindFactory)
- class (GObject o, IsDescendantOf TypeFindFactory o) => IsTypeFindFactory o
- toTypeFindFactory :: (MonadIO m, IsTypeFindFactory o) => o -> m TypeFindFactory
- typeFindFactoryCallFunction :: (HasCallStack, MonadIO m, IsTypeFindFactory a) => a -> TypeFind -> m ()
- typeFindFactoryGetCaps :: (HasCallStack, MonadIO m, IsTypeFindFactory a) => a -> m (Maybe Caps)
- typeFindFactoryGetExtensions :: (HasCallStack, MonadIO m, IsTypeFindFactory a) => a -> m (Maybe [Text])
- typeFindFactoryGetList :: (HasCallStack, MonadIO m) => m [TypeFindFactory]
- typeFindFactoryHasFunction :: (HasCallStack, MonadIO m, IsTypeFindFactory a) => a -> m Bool
Exported types
newtype TypeFindFactory Source #
Memory-managed wrapper type.
TypeFindFactory (ManagedPtr TypeFindFactory) |
Instances
Eq TypeFindFactory Source # | |
Defined in GI.Gst.Objects.TypeFindFactory (==) :: TypeFindFactory -> TypeFindFactory -> Bool # (/=) :: TypeFindFactory -> TypeFindFactory -> Bool # | |
GObject TypeFindFactory Source # | |
Defined in GI.Gst.Objects.TypeFindFactory | |
ManagedPtrNewtype TypeFindFactory Source # | |
Defined in GI.Gst.Objects.TypeFindFactory toManagedPtr :: TypeFindFactory -> ManagedPtr TypeFindFactory | |
TypedObject TypeFindFactory Source # | |
Defined in GI.Gst.Objects.TypeFindFactory | |
HasParentTypes TypeFindFactory Source # | |
Defined in GI.Gst.Objects.TypeFindFactory | |
IsGValue (Maybe TypeFindFactory) Source # | Convert |
Defined in GI.Gst.Objects.TypeFindFactory gvalueGType_ :: IO GType gvalueSet_ :: Ptr GValue -> Maybe TypeFindFactory -> IO () gvalueGet_ :: Ptr GValue -> IO (Maybe TypeFindFactory) | |
type ParentTypes TypeFindFactory Source # | |
Defined in GI.Gst.Objects.TypeFindFactory |
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 # | |
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
Click to display all available methods, including inherited ones
Methods
addControlBinding, bindProperty, bindPropertyFull, callFunction, checkVersion, defaultError, forceFloating, freezeNotify, getv, hasActiveControlBindings, hasAncestor, hasAsAncestor, hasAsParent, hasFunction, isFloating, load, notify, notifyByPspec, ref, refSink, removeControlBinding, runDispose, stealData, stealQdata, suggestNextSync, syncValues, thawNotify, unparent, unref, watchClosure.
Getters
getCaps, getControlBinding, getControlRate, getData, getExtensions, getGValueArray, getName, getParent, getPathString, getPlugin, getPluginName, getProperty, getQdata, getRank, getValue.
Setters
setControlBindingDisabled, setControlBindingsDisabled, setControlRate, setData, setDataFull, setName, setParent, setProperty, setRank.
callFunction
typeFindFactoryCallFunction Source #
:: (HasCallStack, MonadIO m, IsTypeFindFactory a) | |
=> a |
|
-> TypeFind |
|
-> m () |
Calls the TypeFindFunction
associated with this factory.
getCaps
typeFindFactoryGetCaps Source #
:: (HasCallStack, MonadIO m, IsTypeFindFactory a) | |
=> a |
|
-> m (Maybe Caps) | Returns: the |
Gets the Caps
associated with a typefind factory.
getExtensions
typeFindFactoryGetExtensions Source #
:: (HasCallStack, MonadIO m, IsTypeFindFactory a) | |
=> a |
|
-> m (Maybe [Text]) | Returns:
a |
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 #
:: (HasCallStack, MonadIO m) | |
=> m [TypeFindFactory] | Returns: the list of all
registered |
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 #
:: (HasCallStack, MonadIO m, IsTypeFindFactory a) | |
=> a |
|
-> m Bool | Returns: |
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.