module Media.Streaming.GStreamer.Core.Registry (
Registry,
RegistryClass,
castToRegistry,
gTypeRegistry,
defaultRegistry,
registryGetFeatureList,
registryGetFeatureListByPlugin,
registryGetPathList,
registryGetPluginList,
registryAddPlugin,
registryRemovePlugin,
registryPluginFilter,
registryFeatureFilter,
registryFindPlugin,
registryFindFeature,
registryLookupFeature,
registryScanPath,
registryXMLReadCache,
registryXMLWriteCache,
registryLookup,
registryRemoveFeature,
registryAddFeature,
defaultRegistryCheckFeatureVersion,
defaultRegistryGetPathList,
defaultRegistryAddPlugin,
defaultRegistryScanPath,
defaultRegistryFindPlugin,
defaultRegistryFindFeature,
defaultRegistryFeatureFilter,
onRegistryFeatureAdded,
afterRegistryFeatureAdded,
onRegistryPluginAdded,
afterRegistryPluginAdded
) where
import Control.Monad (liftM)
import Media.Streaming.GStreamer.Core.Types
import Media.Streaming.GStreamer.Core.Signals
import System.Glib.GType
import System.Glib.FFI
import System.Glib.UTFString
import System.Glib.Signals
import System.Glib.GList
defaultRegistry :: Registry
defaultRegistry =
unsafePerformIO $ gst_registry_get_default >>= peekObject
registryGetFeatureList :: RegistryClass registry
=> registry
-> GType
-> IO [PluginFeature]
registryGetFeatureList registry gType =
(\(Registry arg1) arg2 -> withForeignPtr arg1 $ \argPtr1 ->gst_registry_get_feature_list argPtr1 arg2) (toRegistry registry) gType >>=
fromGList >>= mapM takeObject
registryGetFeatureListByPlugin :: RegistryClass registry
=> registry
-> String
-> IO [PluginFeature]
registryGetFeatureListByPlugin registry name =
withUTFString name $ \cName ->
(\(Registry arg1) arg2 -> withForeignPtr arg1 $ \argPtr1 ->gst_registry_get_feature_list_by_plugin argPtr1 arg2) (toRegistry registry) cName >>=
fromGList >>= mapM takeObject
registryGetPathList :: RegistryClass registry
=> registry
-> IO [FilePath]
registryGetPathList registry =
(\(Registry arg1) -> withForeignPtr arg1 $ \argPtr1 ->gst_registry_get_path_list argPtr1) (toRegistry registry) >>=
fromGList >>= mapM peekUTFString
registryGetPluginList :: RegistryClass registry
=> registry
-> IO [Plugin]
registryGetPluginList registry =
(\(Registry arg1) -> withForeignPtr arg1 $ \argPtr1 ->gst_registry_get_plugin_list argPtr1) (toRegistry registry) >>=
fromGList >>= mapM takeObject
registryAddPlugin :: (RegistryClass registry, PluginClass plugin)
=> registry
-> plugin
-> IO Bool
registryAddPlugin registry plugin =
liftM toBool $ (\(Registry arg1) (Plugin arg2) -> withForeignPtr arg1 $ \argPtr1 ->withForeignPtr arg2 $ \argPtr2 ->gst_registry_add_plugin argPtr1 argPtr2) (toRegistry registry) (toPlugin plugin)
registryRemovePlugin :: (RegistryClass registry, PluginClass plugin)
=> registry
-> plugin
-> IO ()
registryRemovePlugin registry plugin =
(\(Registry arg1) (Plugin arg2) -> withForeignPtr arg1 $ \argPtr1 ->withForeignPtr arg2 $ \argPtr2 ->gst_registry_remove_plugin argPtr1 argPtr2) (toRegistry registry) (toPlugin plugin)
type CPluginFilter = Ptr Plugin
-> ((Ptr ()))
-> IO (CInt)
marshalPluginFilter :: PluginFilter
-> IO ((FunPtr ((Ptr Plugin) -> ((Ptr ()) -> (IO CInt)))))
marshalPluginFilter pluginFilter =
makePluginFilter cPluginFilter
where cPluginFilter :: CPluginFilter
cPluginFilter pluginPtr _ =
liftM fromBool $ peekObject pluginPtr >>= pluginFilter
foreign import ccall "wrapper"
makePluginFilter :: CPluginFilter
-> IO ((FunPtr ((Ptr Plugin) -> ((Ptr ()) -> (IO CInt)))))
registryPluginFilter :: RegistryClass registry
=> registry
-> PluginFilter
-> Bool
-> IO [Plugin]
registryPluginFilter registry pluginFilter first =
do cPluginFilter <- marshalPluginFilter pluginFilter
(\(Registry arg1) arg2 arg3 arg4 -> withForeignPtr arg1 $ \argPtr1 ->gst_registry_plugin_filter argPtr1 arg2 arg3 arg4) (toRegistry registry)
cPluginFilter
(fromBool first)
nullPtr >>=
fromGList >>= mapM takeObject
type CPluginFeatureFilter = Ptr PluginFeature
-> ((Ptr ()))
-> IO (CInt)
marshalPluginFeatureFilter :: PluginFeatureFilter
-> IO ((FunPtr ((Ptr PluginFeature) -> ((Ptr ()) -> (IO CInt)))))
marshalPluginFeatureFilter pluginFeatureFilter =
makePluginFeatureFilter cPluginFeatureFilter
where cPluginFeatureFilter :: CPluginFeatureFilter
cPluginFeatureFilter pluginFeaturePtr _ =
liftM fromBool $ peekObject pluginFeaturePtr >>= pluginFeatureFilter
foreign import ccall "wrapper"
makePluginFeatureFilter :: CPluginFeatureFilter
-> IO ((FunPtr ((Ptr PluginFeature) -> ((Ptr ()) -> (IO CInt)))))
registryFeatureFilter :: RegistryClass registry
=> registry
-> PluginFeatureFilter
-> Bool
-> IO [PluginFeature]
registryFeatureFilter registry featureFilter first =
do cPluginFeatureFilter <- marshalPluginFeatureFilter featureFilter
(\(Registry arg1) arg2 arg3 arg4 -> withForeignPtr arg1 $ \argPtr1 ->gst_registry_feature_filter argPtr1 arg2 arg3 arg4) (toRegistry registry)
cPluginFeatureFilter
(fromBool first)
nullPtr >>=
fromGList >>= mapM takeObject
registryFindPlugin :: RegistryClass registry
=> registry
-> String
-> IO (Maybe Plugin)
registryFindPlugin registry name =
(withUTFString name $ (\(Registry arg1) arg2 -> withForeignPtr arg1 $ \argPtr1 ->gst_registry_find_plugin argPtr1 arg2) (toRegistry registry)) >>=
maybePeek takeObject
registryFindFeature :: RegistryClass registry
=> registry
-> String
-> GType
-> IO (Maybe PluginFeature)
registryFindFeature registry name gType =
withUTFString name $ \cName ->
(\(Registry arg1) arg2 arg3 -> withForeignPtr arg1 $ \argPtr1 ->gst_registry_find_feature argPtr1 arg2 arg3) (toRegistry registry)
cName
gType >>=
maybePeek takeObject
registryLookupFeature :: RegistryClass registry
=> registry
-> String
-> IO (Maybe PluginFeature)
registryLookupFeature registry name =
(withUTFString name $ (\(Registry arg1) arg2 -> withForeignPtr arg1 $ \argPtr1 ->gst_registry_lookup_feature argPtr1 arg2) (toRegistry registry)) >>=
maybePeek takeObject
registryScanPath :: RegistryClass registry
=> registry
-> FilePath
-> IO Bool
registryScanPath registry path =
liftM toBool $
withUTFString path $
(\(Registry arg1) arg2 -> withForeignPtr arg1 $ \argPtr1 ->gst_registry_scan_path argPtr1 arg2) (toRegistry registry)
registryXMLReadCache :: RegistryClass registry
=> registry
-> FilePath
-> IO Bool
registryXMLReadCache registry location =
liftM toBool $
withUTFString location $
(\(Registry arg1) arg2 -> withForeignPtr arg1 $ \argPtr1 ->gst_registry_xml_read_cache argPtr1 arg2) (toRegistry registry)
registryXMLWriteCache :: RegistryClass registry
=> registry
-> FilePath
-> IO Bool
registryXMLWriteCache registry location =
liftM toBool $
withUTFString location $
(\(Registry arg1) arg2 -> withForeignPtr arg1 $ \argPtr1 ->gst_registry_xml_write_cache argPtr1 arg2) (toRegistry registry)
registryLookup :: RegistryClass registry
=> registry
-> FilePath
-> IO Plugin
registryLookup registry filename =
(withUTFString filename $
(\(Registry arg1) arg2 -> withForeignPtr arg1 $ \argPtr1 ->gst_registry_lookup argPtr1 arg2) (toRegistry registry)) >>=
takeObject
registryRemoveFeature :: (RegistryClass registry, PluginFeatureClass pluginFeature)
=> registry
-> pluginFeature
-> IO ()
registryRemoveFeature registry pluginFeature =
(\(Registry arg1) (PluginFeature arg2) -> withForeignPtr arg1 $ \argPtr1 ->withForeignPtr arg2 $ \argPtr2 ->gst_registry_remove_feature argPtr1 argPtr2) (toRegistry registry) (toPluginFeature pluginFeature)
registryAddFeature :: (RegistryClass registry, PluginFeatureClass pluginFeature)
=> registry
-> pluginFeature
-> IO Bool
registryAddFeature registry pluginFeature =
liftM toBool $
(\(Registry arg1) (PluginFeature arg2) -> withForeignPtr arg1 $ \argPtr1 ->withForeignPtr arg2 $ \argPtr2 ->gst_registry_add_feature argPtr1 argPtr2) (toRegistry registry) (toPluginFeature pluginFeature)
defaultRegistryCheckFeatureVersion :: String
-> Word
-> Word
-> Word
-> IO Bool
defaultRegistryCheckFeatureVersion feature minMajor minMinor minMicro =
liftM toBool $ withUTFString feature $ \cFeature ->
gst_default_registry_check_feature_version cFeature
(fromIntegral minMajor)
(fromIntegral minMinor)
(fromIntegral minMicro)
defaultRegistryGetPathList :: IO [FilePath]
defaultRegistryGetPathList =
registryGetPathList defaultRegistry
defaultRegistryAddPlugin :: PluginClass plugin
=> plugin
-> IO Bool
defaultRegistryAddPlugin =
registryAddPlugin defaultRegistry
defaultRegistryScanPath :: String
-> IO Bool
defaultRegistryScanPath =
registryScanPath defaultRegistry
defaultRegistryFindPlugin :: String
-> IO (Maybe Plugin)
defaultRegistryFindPlugin =
registryFindPlugin defaultRegistry
defaultRegistryFindFeature :: String
-> GType
-> IO (Maybe PluginFeature)
defaultRegistryFindFeature =
registryFindFeature defaultRegistry
defaultRegistryFeatureFilter :: PluginFeatureFilter
-> Bool
-> IO [PluginFeature]
defaultRegistryFeatureFilter =
registryFeatureFilter defaultRegistry
onRegistryFeatureAdded, afterRegistryFeatureAdded :: RegistryClass registry
=> registry
-> (PluginFeature -> IO ())
-> IO (ConnectId registry)
onRegistryFeatureAdded =
connect_OBJECT__NONE "feature-added" False
afterRegistryFeatureAdded =
connect_OBJECT__NONE "feature-added" False
onRegistryPluginAdded, afterRegistryPluginAdded :: RegistryClass registry
=> registry
-> (Plugin -> IO ())
-> IO (ConnectId registry)
onRegistryPluginAdded =
connect_OBJECT__NONE "plugin-added" False
afterRegistryPluginAdded =
connect_OBJECT__NONE "plugin-added" False
foreign import ccall safe "gst_registry_get_default"
gst_registry_get_default :: (IO (Ptr Registry))
foreign import ccall safe "gst_registry_get_feature_list"
gst_registry_get_feature_list :: ((Ptr Registry) -> (CUInt -> (IO (Ptr ()))))
foreign import ccall safe "gst_registry_get_feature_list_by_plugin"
gst_registry_get_feature_list_by_plugin :: ((Ptr Registry) -> ((Ptr CChar) -> (IO (Ptr ()))))
foreign import ccall safe "gst_registry_get_path_list"
gst_registry_get_path_list :: ((Ptr Registry) -> (IO (Ptr ())))
foreign import ccall safe "gst_registry_get_plugin_list"
gst_registry_get_plugin_list :: ((Ptr Registry) -> (IO (Ptr ())))
foreign import ccall safe "gst_registry_add_plugin"
gst_registry_add_plugin :: ((Ptr Registry) -> ((Ptr Plugin) -> (IO CInt)))
foreign import ccall safe "gst_registry_remove_plugin"
gst_registry_remove_plugin :: ((Ptr Registry) -> ((Ptr Plugin) -> (IO ())))
foreign import ccall safe "gst_registry_plugin_filter"
gst_registry_plugin_filter :: ((Ptr Registry) -> ((FunPtr ((Ptr Plugin) -> ((Ptr ()) -> (IO CInt)))) -> (CInt -> ((Ptr ()) -> (IO (Ptr ()))))))
foreign import ccall safe "gst_registry_feature_filter"
gst_registry_feature_filter :: ((Ptr Registry) -> ((FunPtr ((Ptr PluginFeature) -> ((Ptr ()) -> (IO CInt)))) -> (CInt -> ((Ptr ()) -> (IO (Ptr ()))))))
foreign import ccall safe "gst_registry_find_plugin"
gst_registry_find_plugin :: ((Ptr Registry) -> ((Ptr CChar) -> (IO (Ptr Plugin))))
foreign import ccall safe "gst_registry_find_feature"
gst_registry_find_feature :: ((Ptr Registry) -> ((Ptr CChar) -> (CUInt -> (IO (Ptr PluginFeature)))))
foreign import ccall safe "gst_registry_lookup_feature"
gst_registry_lookup_feature :: ((Ptr Registry) -> ((Ptr CChar) -> (IO (Ptr PluginFeature))))
foreign import ccall safe "gst_registry_scan_path"
gst_registry_scan_path :: ((Ptr Registry) -> ((Ptr CChar) -> (IO CInt)))
foreign import ccall safe "gst_registry_xml_read_cache"
gst_registry_xml_read_cache :: ((Ptr Registry) -> ((Ptr CChar) -> (IO CInt)))
foreign import ccall safe "gst_registry_xml_write_cache"
gst_registry_xml_write_cache :: ((Ptr Registry) -> ((Ptr CChar) -> (IO CInt)))
foreign import ccall safe "gst_registry_lookup"
gst_registry_lookup :: ((Ptr Registry) -> ((Ptr CChar) -> (IO (Ptr Plugin))))
foreign import ccall safe "gst_registry_remove_feature"
gst_registry_remove_feature :: ((Ptr Registry) -> ((Ptr PluginFeature) -> (IO ())))
foreign import ccall safe "gst_registry_add_feature"
gst_registry_add_feature :: ((Ptr Registry) -> ((Ptr PluginFeature) -> (IO CInt)))
foreign import ccall safe "gst_default_registry_check_feature_version"
gst_default_registry_check_feature_version :: ((Ptr CChar) -> (CUInt -> (CUInt -> (CUInt -> (IO CInt)))))