Copyright | Will Thompson Iñaki García Etxebarria and Jonas Platte |
---|---|
License | LGPL-2.1 |
Maintainer | Iñaki García Etxebarria |
Safe Haskell | None |
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
- noTypeFindFactory :: Maybe TypeFindFactory
- typeFindFactoryCallFunction :: (HasCallStack, MonadIO m, IsTypeFindFactory a) => a -> TypeFind -> m ()
- typeFindFactoryGetCaps :: (HasCallStack, MonadIO m, IsTypeFindFactory a) => a -> m 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.
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 gobjectType :: IO GType # | |
IsGValue TypeFindFactory Source # | Convert |
Defined in GI.Gst.Objects.TypeFindFactory toGValue :: TypeFindFactory -> IO GValue # fromGValue :: GValue -> IO TypeFindFactory # | |
HasParentTypes TypeFindFactory Source # | |
Defined in GI.Gst.Objects.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
.
noTypeFindFactory :: Maybe TypeFindFactory Source #
A convenience alias for Nothing
:: Maybe
TypeFindFactory
.
Methods
Overloaded methods
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 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.