#if (MIN_VERSION_haskell_gi_overloading(1,0,0) && !defined(__HADDOCK_VERSION__))
#define ENABLE_OVERLOADING
#endif
module GI.GES.Functions
(
addMissingUriRelocationUri ,
deinit ,
findFormatterForUri ,
init ,
initCheck ,
isInitialized ,
listAssets ,
playSinkConvertFrame ,
pspecEqual ,
pspecHash ,
validateRegisterActionTypes ,
version ,
) where
import Data.GI.Base.ShortPrelude
import qualified Data.GI.Base.ShortPrelude as SP
import qualified Data.GI.Base.Overloading as O
import qualified Prelude as P
import qualified Data.GI.Base.Attributes as GI.Attributes
import qualified Data.GI.Base.BasicTypes as B.Types
import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr
import qualified Data.GI.Base.GArray as B.GArray
import qualified Data.GI.Base.GClosure as B.GClosure
import qualified Data.GI.Base.GError as B.GError
import qualified Data.GI.Base.GHashTable as B.GHT
import qualified Data.GI.Base.GVariant as B.GVariant
import qualified Data.GI.Base.GValue as B.GValue
import qualified Data.GI.Base.GParamSpec as B.GParamSpec
import qualified Data.GI.Base.CallStack as B.CallStack
import qualified Data.GI.Base.Properties as B.Properties
import qualified Data.GI.Base.Signals as B.Signals
import qualified Control.Monad.IO.Class as MIO
import qualified Data.Coerce as Coerce
import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map
import qualified Foreign.Ptr as FP
import qualified GHC.OverloadedLabels as OL
import qualified GHC.Records as R
import {-# SOURCE #-} qualified GI.GES.Objects.Asset as GES.Asset
import qualified GI.Gst.Objects.Element as Gst.Element
import qualified GI.Gst.Structs.Caps as Gst.Caps
import qualified GI.Gst.Structs.Sample as Gst.Sample
foreign import ccall "ges_version" ges_version ::
Ptr Word32 ->
Ptr Word32 ->
Ptr Word32 ->
Ptr Word32 ->
IO ()
version ::
(B.CallStack.HasCallStack, MonadIO m) =>
m ((Word32, Word32, Word32, Word32))
version :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
m (Word32, Word32, Word32, Word32)
version = forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO forall a b. (a -> b) -> a -> b
$ do
Ptr Word32
major <- forall a. Storable a => IO (Ptr a)
allocMem :: IO (Ptr Word32)
Ptr Word32
minor <- forall a. Storable a => IO (Ptr a)
allocMem :: IO (Ptr Word32)
Ptr Word32
micro <- forall a. Storable a => IO (Ptr a)
allocMem :: IO (Ptr Word32)
Ptr Word32
nano <- forall a. Storable a => IO (Ptr a)
allocMem :: IO (Ptr Word32)
Ptr Word32 -> Ptr Word32 -> Ptr Word32 -> Ptr Word32 -> IO ()
ges_version Ptr Word32
major Ptr Word32
minor Ptr Word32
micro Ptr Word32
nano
Word32
major' <- forall a. Storable a => Ptr a -> IO a
peek Ptr Word32
major
Word32
minor' <- forall a. Storable a => Ptr a -> IO a
peek Ptr Word32
minor
Word32
micro' <- forall a. Storable a => Ptr a -> IO a
peek Ptr Word32
micro
Word32
nano' <- forall a. Storable a => Ptr a -> IO a
peek Ptr Word32
nano
forall a. Ptr a -> IO ()
freeMem Ptr Word32
major
forall a. Ptr a -> IO ()
freeMem Ptr Word32
minor
forall a. Ptr a -> IO ()
freeMem Ptr Word32
micro
forall a. Ptr a -> IO ()
freeMem Ptr Word32
nano
forall (m :: * -> *) a. Monad m => a -> m a
return (Word32
major', Word32
minor', Word32
micro', Word32
nano')
foreign import ccall "ges_validate_register_action_types" ges_validate_register_action_types ::
IO CInt
validateRegisterActionTypes ::
(B.CallStack.HasCallStack, MonadIO m) =>
m Bool
validateRegisterActionTypes :: forall (m :: * -> *). (HasCallStack, MonadIO m) => m Bool
validateRegisterActionTypes = forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO forall a b. (a -> b) -> a -> b
$ do
CInt
result <- IO CInt
ges_validate_register_action_types
let result' :: Bool
result' = (forall a. Eq a => a -> a -> Bool
/= CInt
0) CInt
result
forall (m :: * -> *) a. Monad m => a -> m a
return Bool
result'
foreign import ccall "ges_pspec_hash" ges_pspec_hash ::
Ptr () ->
IO Word32
pspecHash ::
(B.CallStack.HasCallStack, MonadIO m) =>
Ptr ()
-> m Word32
pspecHash :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Ptr () -> m Word32
pspecHash Ptr ()
keySpec = forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO forall a b. (a -> b) -> a -> b
$ do
Word32
result <- Ptr () -> IO Word32
ges_pspec_hash Ptr ()
keySpec
forall (m :: * -> *) a. Monad m => a -> m a
return Word32
result
foreign import ccall "ges_pspec_equal" ges_pspec_equal ::
Ptr () ->
Ptr () ->
IO CInt
pspecEqual ::
(B.CallStack.HasCallStack, MonadIO m) =>
Ptr ()
-> Ptr ()
-> m Bool
pspecEqual :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Ptr () -> Ptr () -> m Bool
pspecEqual Ptr ()
keySpec1 Ptr ()
keySpec2 = forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO forall a b. (a -> b) -> a -> b
$ do
CInt
result <- Ptr () -> Ptr () -> IO CInt
ges_pspec_equal Ptr ()
keySpec1 Ptr ()
keySpec2
let result' :: Bool
result' = (forall a. Eq a => a -> a -> Bool
/= CInt
0) CInt
result
forall (m :: * -> *) a. Monad m => a -> m a
return Bool
result'
foreign import ccall "ges_play_sink_convert_frame" ges_play_sink_convert_frame ::
Ptr Gst.Element.Element ->
Ptr Gst.Caps.Caps ->
IO (Ptr Gst.Sample.Sample)
{-# DEPRECATED playSinkConvertFrame ["(Since version 1.18)","Use the \\\"convert-sample\\\" action signal of","@/playsink/@ instead."] #-}
playSinkConvertFrame ::
(B.CallStack.HasCallStack, MonadIO m, Gst.Element.IsElement a) =>
a
-> Gst.Caps.Caps
-> m Gst.Sample.Sample
playSinkConvertFrame :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsElement a) =>
a -> Caps -> m Sample
playSinkConvertFrame a
playsink Caps
caps = forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO forall a b. (a -> b) -> a -> b
$ do
Ptr Element
playsink' <- forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
playsink
Ptr Caps
caps' <- forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Caps
caps
Ptr Sample
result <- Ptr Element -> Ptr Caps -> IO (Ptr Sample)
ges_play_sink_convert_frame Ptr Element
playsink' Ptr Caps
caps'
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"playSinkConvertFrame" Ptr Sample
result
Sample
result' <- (forall a.
(HasCallStack, GBoxed a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
wrapBoxed ManagedPtr Sample -> Sample
Gst.Sample.Sample) Ptr Sample
result
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
playsink
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr Caps
caps
forall (m :: * -> *) a. Monad m => a -> m a
return Sample
result'
foreign import ccall "ges_list_assets" ges_list_assets ::
CGType ->
IO (Ptr (GList (Ptr GES.Asset.Asset)))
listAssets ::
(B.CallStack.HasCallStack, MonadIO m) =>
GType
-> m [GES.Asset.Asset]
listAssets :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
GType -> m [Asset]
listAssets GType
filter = forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO forall a b. (a -> b) -> a -> b
$ do
let filter' :: CGType
filter' = GType -> CGType
gtypeToCGType GType
filter
Ptr (GList (Ptr Asset))
result <- CGType -> IO (Ptr (GList (Ptr Asset)))
ges_list_assets CGType
filter'
[Ptr Asset]
result' <- forall a. Ptr (GList (Ptr a)) -> IO [Ptr a]
unpackGList Ptr (GList (Ptr Asset))
result
[Asset]
result'' <- forall (t :: * -> *) (m :: * -> *) a b.
(Traversable t, Monad m) =>
(a -> m b) -> t a -> m (t b)
mapM (forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
newObject ManagedPtr Asset -> Asset
GES.Asset.Asset) [Ptr Asset]
result'
forall a. Ptr (GList a) -> IO ()
g_list_free Ptr (GList (Ptr Asset))
result
forall (m :: * -> *) a. Monad m => a -> m a
return [Asset]
result''
foreign import ccall "ges_is_initialized" ges_is_initialized ::
IO CInt
isInitialized ::
(B.CallStack.HasCallStack, MonadIO m) =>
m Bool
isInitialized :: forall (m :: * -> *). (HasCallStack, MonadIO m) => m Bool
isInitialized = forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO forall a b. (a -> b) -> a -> b
$ do
CInt
result <- IO CInt
ges_is_initialized
let result' :: Bool
result' = (forall a. Eq a => a -> a -> Bool
/= CInt
0) CInt
result
forall (m :: * -> *) a. Monad m => a -> m a
return Bool
result'
foreign import ccall "ges_init_check" ges_init_check ::
Ptr Int32 ->
Ptr (Ptr CString) ->
Ptr (Ptr GError) ->
IO CInt
initCheck ::
(B.CallStack.HasCallStack, MonadIO m) =>
Maybe ([T.Text])
-> m ((Maybe [T.Text]))
initCheck :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Maybe [Text] -> m (Maybe [Text])
initCheck Maybe [Text]
argv = forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO forall a b. (a -> b) -> a -> b
$ do
let argc :: Int32
argc = case Maybe [Text]
argv of
Maybe [Text]
Nothing -> Int32
0
Just [Text]
jArgv -> forall a b. (Integral a, Num b) => a -> b
fromIntegral forall a b. (a -> b) -> a -> b
$ forall (t :: * -> *) a. Foldable t => t a -> Int
P.length [Text]
jArgv
Ptr Int32
argc' <- forall a. Storable a => IO (Ptr a)
allocMem :: IO (Ptr Int32)
forall a. Storable a => Ptr a -> a -> IO ()
poke Ptr Int32
argc' Int32
argc
Ptr CString
maybeArgv <- case Maybe [Text]
argv of
Maybe [Text]
Nothing -> forall (m :: * -> *) a. Monad m => a -> m a
return forall a. Ptr a
nullPtr
Just [Text]
jArgv -> do
Ptr CString
jArgv' <- [Text] -> IO (Ptr CString)
packUTF8CArray [Text]
jArgv
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr CString
jArgv'
Ptr (Ptr CString)
maybeArgv' <- forall a. Storable a => IO (Ptr a)
allocMem :: IO (Ptr (Ptr CString))
forall a. Storable a => Ptr a -> a -> IO ()
poke Ptr (Ptr CString)
maybeArgv' Ptr CString
maybeArgv
forall a b. IO a -> IO b -> IO a
onException (do
CInt
_ <- forall a. (Ptr (Ptr GError) -> IO a) -> IO a
propagateGError forall a b. (a -> b) -> a -> b
$ Ptr Int32 -> Ptr (Ptr CString) -> Ptr (Ptr GError) -> IO CInt
ges_init_check Ptr Int32
argc' Ptr (Ptr CString)
maybeArgv'
Int32
argc'' <- forall a. Storable a => Ptr a -> IO a
peek Ptr Int32
argc'
Ptr CString
maybeArgv'' <- forall a. Storable a => Ptr a -> IO a
peek Ptr (Ptr CString)
maybeArgv'
Maybe [Text]
maybeMaybeArgv'' <- forall a b. Ptr a -> (Ptr a -> IO b) -> IO (Maybe b)
convertIfNonNull Ptr CString
maybeArgv'' forall a b. (a -> b) -> a -> b
$ \Ptr CString
maybeArgv''' -> do
[Text]
maybeArgv'''' <- (forall a.
(HasCallStack, Integral a) =>
a -> Ptr CString -> IO [Text]
unpackUTF8CArrayWithLength Int32
argc'') Ptr CString
maybeArgv'''
(forall a b c.
(Storable a, Integral b) =>
b -> (a -> IO c) -> Ptr a -> IO ()
mapCArrayWithLength Int32
argc'') forall a. Ptr a -> IO ()
freeMem Ptr CString
maybeArgv'''
forall a. Ptr a -> IO ()
freeMem Ptr CString
maybeArgv'''
forall (m :: * -> *) a. Monad m => a -> m a
return [Text]
maybeArgv''''
forall a. Ptr a -> IO ()
freeMem Ptr Int32
argc'
forall a. Ptr a -> IO ()
freeMem Ptr (Ptr CString)
maybeArgv'
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe [Text]
maybeMaybeArgv''
) (do
forall a. Ptr a -> IO ()
freeMem Ptr Int32
argc'
forall a. Ptr a -> IO ()
freeMem Ptr (Ptr CString)
maybeArgv'
)
foreign import ccall "ges_init" ges_init ::
IO CInt
init ::
(B.CallStack.HasCallStack, MonadIO m) =>
m Bool
init :: forall (m :: * -> *). (HasCallStack, MonadIO m) => m Bool
init = forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO forall a b. (a -> b) -> a -> b
$ do
CInt
result <- IO CInt
ges_init
let result' :: Bool
result' = (forall a. Eq a => a -> a -> Bool
/= CInt
0) CInt
result
forall (m :: * -> *) a. Monad m => a -> m a
return Bool
result'
foreign import ccall "ges_find_formatter_for_uri" ges_find_formatter_for_uri ::
CString ->
IO (Ptr GES.Asset.Asset)
findFormatterForUri ::
(B.CallStack.HasCallStack, MonadIO m) =>
T.Text
-> m GES.Asset.Asset
findFormatterForUri :: forall (m :: * -> *). (HasCallStack, MonadIO m) => Text -> m Asset
findFormatterForUri Text
uri = forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO forall a b. (a -> b) -> a -> b
$ do
CString
uri' <- Text -> IO CString
textToCString Text
uri
Ptr Asset
result <- CString -> IO (Ptr Asset)
ges_find_formatter_for_uri CString
uri'
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"findFormatterForUri" Ptr Asset
result
Asset
result' <- (forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
newObject ManagedPtr Asset -> Asset
GES.Asset.Asset) Ptr Asset
result
forall a. Ptr a -> IO ()
freeMem CString
uri'
forall (m :: * -> *) a. Monad m => a -> m a
return Asset
result'
foreign import ccall "ges_deinit" ges_deinit ::
IO ()
deinit ::
(B.CallStack.HasCallStack, MonadIO m) =>
m ()
deinit :: forall (m :: * -> *). (HasCallStack, MonadIO m) => m ()
deinit = forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO forall a b. (a -> b) -> a -> b
$ do
IO ()
ges_deinit
forall (m :: * -> *) a. Monad m => a -> m a
return ()
foreign import ccall "ges_add_missing_uri_relocation_uri" ges_add_missing_uri_relocation_uri ::
CString ->
CInt ->
IO CInt
addMissingUriRelocationUri ::
(B.CallStack.HasCallStack, MonadIO m) =>
T.Text
-> Bool
-> m Bool
addMissingUriRelocationUri :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Text -> Bool -> m Bool
addMissingUriRelocationUri Text
uri Bool
recurse = forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO forall a b. (a -> b) -> a -> b
$ do
CString
uri' <- Text -> IO CString
textToCString Text
uri
let recurse' :: CInt
recurse' = (forall a b. (Integral a, Num b) => a -> b
fromIntegral forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a. Enum a => a -> Int
fromEnum) Bool
recurse
CInt
result <- CString -> CInt -> IO CInt
ges_add_missing_uri_relocation_uri CString
uri' CInt
recurse'
let result' :: Bool
result' = (forall a. Eq a => a -> a -> Bool
/= CInt
0) CInt
result
forall a. Ptr a -> IO ()
freeMem CString
uri'
forall (m :: * -> *) a. Monad m => a -> m a
return Bool
result'