#if (MIN_VERSION_haskell_gi_overloading(1,0,0) && !defined(__HADDOCK_VERSION__))
#define ENABLE_OVERLOADING
#endif
module GI.GstAudio.Functions
(
audioChannelGetFallbackMask ,
audioChannelPositionsFromMask ,
audioChannelPositionsToMask ,
audioChannelPositionsToString ,
audioChannelPositionsToValidOrder ,
audioCheckValidChannelPositions ,
audioClippingMetaApiGetType ,
audioDownmixMetaApiGetType ,
audioFormatInfoGetType ,
audioFormatsRaw ,
audioGetChannelReorderMap ,
audioIec61937FrameSize ,
audioIec61937Payload ,
audioLevelMetaApiGetType ,
audioMakeRawCaps ,
audioMetaApiGetType ,
audioReorderChannels ,
bufferAddAudioClippingMeta ,
bufferAddAudioDownmixMeta ,
bufferAddAudioLevelMeta ,
bufferAddAudioMeta ,
bufferGetAudioDownmixMetaForChannels ,
bufferGetAudioLevelMeta ,
) 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 qualified GI.Gst.Enums as Gst.Enums
import qualified GI.Gst.Structs.Buffer as Gst.Buffer
import qualified GI.Gst.Structs.Caps as Gst.Caps
import {-# SOURCE #-} qualified GI.GstAudio.Enums as GstAudio.Enums
import {-# SOURCE #-} qualified GI.GstAudio.Structs.AudioClippingMeta as GstAudio.AudioClippingMeta
import {-# SOURCE #-} qualified GI.GstAudio.Structs.AudioDownmixMeta as GstAudio.AudioDownmixMeta
import {-# SOURCE #-} qualified GI.GstAudio.Structs.AudioInfo as GstAudio.AudioInfo
import {-# SOURCE #-} qualified GI.GstAudio.Structs.AudioLevelMeta as GstAudio.AudioLevelMeta
import {-# SOURCE #-} qualified GI.GstAudio.Structs.AudioMeta as GstAudio.AudioMeta
import {-# SOURCE #-} qualified GI.GstAudio.Structs.AudioRingBufferSpec as GstAudio.AudioRingBufferSpec
foreign import ccall "gst_buffer_get_audio_level_meta" gst_buffer_get_audio_level_meta ::
Ptr Gst.Buffer.Buffer ->
IO (Ptr GstAudio.AudioLevelMeta.AudioLevelMeta)
bufferGetAudioLevelMeta ::
(B.CallStack.HasCallStack, MonadIO m) =>
Gst.Buffer.Buffer
-> m (Maybe GstAudio.AudioLevelMeta.AudioLevelMeta)
bufferGetAudioLevelMeta :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Buffer -> m (Maybe AudioLevelMeta)
bufferGetAudioLevelMeta Buffer
buffer = IO (Maybe AudioLevelMeta) -> m (Maybe AudioLevelMeta)
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Maybe AudioLevelMeta) -> m (Maybe AudioLevelMeta))
-> IO (Maybe AudioLevelMeta) -> m (Maybe AudioLevelMeta)
forall a b. (a -> b) -> a -> b
$ do
Ptr Buffer
buffer' <- Buffer -> IO (Ptr Buffer)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Buffer
buffer
Ptr AudioLevelMeta
result <- Ptr Buffer -> IO (Ptr AudioLevelMeta)
gst_buffer_get_audio_level_meta Ptr Buffer
buffer'
Maybe AudioLevelMeta
maybeResult <- Ptr AudioLevelMeta
-> (Ptr AudioLevelMeta -> IO AudioLevelMeta)
-> IO (Maybe AudioLevelMeta)
forall a b. Ptr a -> (Ptr a -> IO b) -> IO (Maybe b)
convertIfNonNull Ptr AudioLevelMeta
result ((Ptr AudioLevelMeta -> IO AudioLevelMeta)
-> IO (Maybe AudioLevelMeta))
-> (Ptr AudioLevelMeta -> IO AudioLevelMeta)
-> IO (Maybe AudioLevelMeta)
forall a b. (a -> b) -> a -> b
$ \Ptr AudioLevelMeta
result' -> do
AudioLevelMeta
result'' <- ((ManagedPtr AudioLevelMeta -> AudioLevelMeta)
-> Ptr AudioLevelMeta -> IO AudioLevelMeta
forall a.
(HasCallStack, BoxedPtr a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
newPtr ManagedPtr AudioLevelMeta -> AudioLevelMeta
GstAudio.AudioLevelMeta.AudioLevelMeta) Ptr AudioLevelMeta
result'
AudioLevelMeta -> IO AudioLevelMeta
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return AudioLevelMeta
result''
Buffer -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr Buffer
buffer
Maybe AudioLevelMeta -> IO (Maybe AudioLevelMeta)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe AudioLevelMeta
maybeResult
foreign import ccall "gst_buffer_get_audio_downmix_meta_for_channels" gst_buffer_get_audio_downmix_meta_for_channels ::
Ptr Gst.Buffer.Buffer ->
Ptr CInt ->
Int32 ->
IO (Ptr GstAudio.AudioDownmixMeta.AudioDownmixMeta)
bufferGetAudioDownmixMetaForChannels ::
(B.CallStack.HasCallStack, MonadIO m) =>
Gst.Buffer.Buffer
-> [GstAudio.Enums.AudioChannelPosition]
-> m GstAudio.AudioDownmixMeta.AudioDownmixMeta
bufferGetAudioDownmixMetaForChannels :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Buffer -> [AudioChannelPosition] -> m AudioDownmixMeta
bufferGetAudioDownmixMetaForChannels Buffer
buffer [AudioChannelPosition]
toPosition = IO AudioDownmixMeta -> m AudioDownmixMeta
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO AudioDownmixMeta -> m AudioDownmixMeta)
-> IO AudioDownmixMeta -> m AudioDownmixMeta
forall a b. (a -> b) -> a -> b
$ do
let toChannels :: Int32
toChannels = Int -> Int32
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> Int32) -> Int -> Int32
forall a b. (a -> b) -> a -> b
$ [AudioChannelPosition] -> Int
forall a. [a] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
P.length [AudioChannelPosition]
toPosition
Ptr Buffer
buffer' <- Buffer -> IO (Ptr Buffer)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Buffer
buffer
let toPosition' :: [CInt]
toPosition' = (AudioChannelPosition -> CInt) -> [AudioChannelPosition] -> [CInt]
forall a b. (a -> b) -> [a] -> [b]
map (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CInt)
-> (AudioChannelPosition -> Int) -> AudioChannelPosition -> CInt
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AudioChannelPosition -> Int
forall a. Enum a => a -> Int
fromEnum) [AudioChannelPosition]
toPosition
Ptr CInt
toPosition'' <- [CInt] -> IO (Ptr CInt)
forall a. Storable a => [a] -> IO (Ptr a)
packStorableArray [CInt]
toPosition'
Ptr AudioDownmixMeta
result <- Ptr Buffer -> Ptr CInt -> Int32 -> IO (Ptr AudioDownmixMeta)
gst_buffer_get_audio_downmix_meta_for_channels Ptr Buffer
buffer' Ptr CInt
toPosition'' Int32
toChannels
Text -> Ptr AudioDownmixMeta -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"bufferGetAudioDownmixMetaForChannels" Ptr AudioDownmixMeta
result
AudioDownmixMeta
result' <- ((ManagedPtr AudioDownmixMeta -> AudioDownmixMeta)
-> Ptr AudioDownmixMeta -> IO AudioDownmixMeta
forall a.
(HasCallStack, BoxedPtr a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
newPtr ManagedPtr AudioDownmixMeta -> AudioDownmixMeta
GstAudio.AudioDownmixMeta.AudioDownmixMeta) Ptr AudioDownmixMeta
result
Buffer -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr Buffer
buffer
Ptr CInt -> IO ()
forall a. Ptr a -> IO ()
freeMem Ptr CInt
toPosition''
AudioDownmixMeta -> IO AudioDownmixMeta
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return AudioDownmixMeta
result'
foreign import ccall "gst_buffer_add_audio_meta" gst_buffer_add_audio_meta ::
Ptr Gst.Buffer.Buffer ->
Ptr GstAudio.AudioInfo.AudioInfo ->
Word64 ->
Word64 ->
IO (Ptr GstAudio.AudioMeta.AudioMeta)
bufferAddAudioMeta ::
(B.CallStack.HasCallStack, MonadIO m) =>
Gst.Buffer.Buffer
-> GstAudio.AudioInfo.AudioInfo
-> Word64
-> Word64
-> m GstAudio.AudioMeta.AudioMeta
bufferAddAudioMeta :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Buffer -> AudioInfo -> Word64 -> Word64 -> m AudioMeta
bufferAddAudioMeta Buffer
buffer AudioInfo
info Word64
samples Word64
offsets = IO AudioMeta -> m AudioMeta
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO AudioMeta -> m AudioMeta) -> IO AudioMeta -> m AudioMeta
forall a b. (a -> b) -> a -> b
$ do
Ptr Buffer
buffer' <- Buffer -> IO (Ptr Buffer)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Buffer
buffer
Ptr AudioInfo
info' <- AudioInfo -> IO (Ptr AudioInfo)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr AudioInfo
info
Ptr AudioMeta
result <- Ptr Buffer
-> Ptr AudioInfo -> Word64 -> Word64 -> IO (Ptr AudioMeta)
gst_buffer_add_audio_meta Ptr Buffer
buffer' Ptr AudioInfo
info' Word64
samples Word64
offsets
Text -> Ptr AudioMeta -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"bufferAddAudioMeta" Ptr AudioMeta
result
AudioMeta
result' <- ((ManagedPtr AudioMeta -> AudioMeta)
-> Ptr AudioMeta -> IO AudioMeta
forall a.
(HasCallStack, BoxedPtr a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
newPtr ManagedPtr AudioMeta -> AudioMeta
GstAudio.AudioMeta.AudioMeta) Ptr AudioMeta
result
Buffer -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr Buffer
buffer
AudioInfo -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr AudioInfo
info
AudioMeta -> IO AudioMeta
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return AudioMeta
result'
foreign import ccall "gst_buffer_add_audio_level_meta" gst_buffer_add_audio_level_meta ::
Ptr Gst.Buffer.Buffer ->
Word8 ->
CInt ->
IO (Ptr GstAudio.AudioLevelMeta.AudioLevelMeta)
bufferAddAudioLevelMeta ::
(B.CallStack.HasCallStack, MonadIO m) =>
Gst.Buffer.Buffer
-> Word8
-> Bool
-> m (Maybe GstAudio.AudioLevelMeta.AudioLevelMeta)
bufferAddAudioLevelMeta :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Buffer -> Word8 -> Bool -> m (Maybe AudioLevelMeta)
bufferAddAudioLevelMeta Buffer
buffer Word8
level Bool
voiceActivity = IO (Maybe AudioLevelMeta) -> m (Maybe AudioLevelMeta)
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Maybe AudioLevelMeta) -> m (Maybe AudioLevelMeta))
-> IO (Maybe AudioLevelMeta) -> m (Maybe AudioLevelMeta)
forall a b. (a -> b) -> a -> b
$ do
Ptr Buffer
buffer' <- Buffer -> IO (Ptr Buffer)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Buffer
buffer
let voiceActivity' :: CInt
voiceActivity' = (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Bool -> Int
forall a. Enum a => a -> Int
fromEnum) Bool
voiceActivity
Ptr AudioLevelMeta
result <- Ptr Buffer -> Word8 -> CInt -> IO (Ptr AudioLevelMeta)
gst_buffer_add_audio_level_meta Ptr Buffer
buffer' Word8
level CInt
voiceActivity'
Maybe AudioLevelMeta
maybeResult <- Ptr AudioLevelMeta
-> (Ptr AudioLevelMeta -> IO AudioLevelMeta)
-> IO (Maybe AudioLevelMeta)
forall a b. Ptr a -> (Ptr a -> IO b) -> IO (Maybe b)
convertIfNonNull Ptr AudioLevelMeta
result ((Ptr AudioLevelMeta -> IO AudioLevelMeta)
-> IO (Maybe AudioLevelMeta))
-> (Ptr AudioLevelMeta -> IO AudioLevelMeta)
-> IO (Maybe AudioLevelMeta)
forall a b. (a -> b) -> a -> b
$ \Ptr AudioLevelMeta
result' -> do
AudioLevelMeta
result'' <- ((ManagedPtr AudioLevelMeta -> AudioLevelMeta)
-> Ptr AudioLevelMeta -> IO AudioLevelMeta
forall a.
(HasCallStack, BoxedPtr a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
newPtr ManagedPtr AudioLevelMeta -> AudioLevelMeta
GstAudio.AudioLevelMeta.AudioLevelMeta) Ptr AudioLevelMeta
result'
AudioLevelMeta -> IO AudioLevelMeta
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return AudioLevelMeta
result''
Buffer -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr Buffer
buffer
Maybe AudioLevelMeta -> IO (Maybe AudioLevelMeta)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe AudioLevelMeta
maybeResult
foreign import ccall "gst_buffer_add_audio_downmix_meta" gst_buffer_add_audio_downmix_meta ::
Ptr Gst.Buffer.Buffer ->
Ptr CInt ->
Int32 ->
Ptr CInt ->
Int32 ->
CFloat ->
IO (Ptr GstAudio.AudioDownmixMeta.AudioDownmixMeta)
bufferAddAudioDownmixMeta ::
(B.CallStack.HasCallStack, MonadIO m) =>
Gst.Buffer.Buffer
-> [GstAudio.Enums.AudioChannelPosition]
-> [GstAudio.Enums.AudioChannelPosition]
-> Float
-> m GstAudio.AudioDownmixMeta.AudioDownmixMeta
bufferAddAudioDownmixMeta :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Buffer
-> [AudioChannelPosition]
-> [AudioChannelPosition]
-> Float
-> m AudioDownmixMeta
bufferAddAudioDownmixMeta Buffer
buffer [AudioChannelPosition]
fromPosition [AudioChannelPosition]
toPosition Float
matrix = IO AudioDownmixMeta -> m AudioDownmixMeta
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO AudioDownmixMeta -> m AudioDownmixMeta)
-> IO AudioDownmixMeta -> m AudioDownmixMeta
forall a b. (a -> b) -> a -> b
$ do
let toChannels :: Int32
toChannels = Int -> Int32
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> Int32) -> Int -> Int32
forall a b. (a -> b) -> a -> b
$ [AudioChannelPosition] -> Int
forall a. [a] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
P.length [AudioChannelPosition]
toPosition
let fromChannels :: Int32
fromChannels = Int -> Int32
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> Int32) -> Int -> Int32
forall a b. (a -> b) -> a -> b
$ [AudioChannelPosition] -> Int
forall a. [a] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
P.length [AudioChannelPosition]
fromPosition
Ptr Buffer
buffer' <- Buffer -> IO (Ptr Buffer)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Buffer
buffer
let fromPosition' :: [CInt]
fromPosition' = (AudioChannelPosition -> CInt) -> [AudioChannelPosition] -> [CInt]
forall a b. (a -> b) -> [a] -> [b]
map (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CInt)
-> (AudioChannelPosition -> Int) -> AudioChannelPosition -> CInt
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AudioChannelPosition -> Int
forall a. Enum a => a -> Int
fromEnum) [AudioChannelPosition]
fromPosition
Ptr CInt
fromPosition'' <- [CInt] -> IO (Ptr CInt)
forall a. Storable a => [a] -> IO (Ptr a)
packStorableArray [CInt]
fromPosition'
let toPosition' :: [CInt]
toPosition' = (AudioChannelPosition -> CInt) -> [AudioChannelPosition] -> [CInt]
forall a b. (a -> b) -> [a] -> [b]
map (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CInt)
-> (AudioChannelPosition -> Int) -> AudioChannelPosition -> CInt
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AudioChannelPosition -> Int
forall a. Enum a => a -> Int
fromEnum) [AudioChannelPosition]
toPosition
Ptr CInt
toPosition'' <- [CInt] -> IO (Ptr CInt)
forall a. Storable a => [a] -> IO (Ptr a)
packStorableArray [CInt]
toPosition'
let matrix' :: CFloat
matrix' = Float -> CFloat
forall a b. (Real a, Fractional b) => a -> b
realToFrac Float
matrix
Ptr AudioDownmixMeta
result <- Ptr Buffer
-> Ptr CInt
-> Int32
-> Ptr CInt
-> Int32
-> CFloat
-> IO (Ptr AudioDownmixMeta)
gst_buffer_add_audio_downmix_meta Ptr Buffer
buffer' Ptr CInt
fromPosition'' Int32
fromChannels Ptr CInt
toPosition'' Int32
toChannels CFloat
matrix'
Text -> Ptr AudioDownmixMeta -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"bufferAddAudioDownmixMeta" Ptr AudioDownmixMeta
result
AudioDownmixMeta
result' <- ((ManagedPtr AudioDownmixMeta -> AudioDownmixMeta)
-> Ptr AudioDownmixMeta -> IO AudioDownmixMeta
forall a.
(HasCallStack, BoxedPtr a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
newPtr ManagedPtr AudioDownmixMeta -> AudioDownmixMeta
GstAudio.AudioDownmixMeta.AudioDownmixMeta) Ptr AudioDownmixMeta
result
Buffer -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr Buffer
buffer
Ptr CInt -> IO ()
forall a. Ptr a -> IO ()
freeMem Ptr CInt
fromPosition''
Ptr CInt -> IO ()
forall a. Ptr a -> IO ()
freeMem Ptr CInt
toPosition''
AudioDownmixMeta -> IO AudioDownmixMeta
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return AudioDownmixMeta
result'
foreign import ccall "gst_buffer_add_audio_clipping_meta" gst_buffer_add_audio_clipping_meta ::
Ptr Gst.Buffer.Buffer ->
CUInt ->
Word64 ->
Word64 ->
IO (Ptr GstAudio.AudioClippingMeta.AudioClippingMeta)
bufferAddAudioClippingMeta ::
(B.CallStack.HasCallStack, MonadIO m) =>
Gst.Buffer.Buffer
-> Gst.Enums.Format
-> Word64
-> Word64
-> m GstAudio.AudioClippingMeta.AudioClippingMeta
bufferAddAudioClippingMeta :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Buffer -> Format -> Word64 -> Word64 -> m AudioClippingMeta
bufferAddAudioClippingMeta Buffer
buffer Format
format Word64
start Word64
end = IO AudioClippingMeta -> m AudioClippingMeta
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO AudioClippingMeta -> m AudioClippingMeta)
-> IO AudioClippingMeta -> m AudioClippingMeta
forall a b. (a -> b) -> a -> b
$ do
Ptr Buffer
buffer' <- Buffer -> IO (Ptr Buffer)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Buffer
buffer
let format' :: CUInt
format' = (Int -> CUInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CUInt) -> (Format -> Int) -> Format -> CUInt
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Format -> Int
forall a. Enum a => a -> Int
fromEnum) Format
format
Ptr AudioClippingMeta
result <- Ptr Buffer
-> CUInt -> Word64 -> Word64 -> IO (Ptr AudioClippingMeta)
gst_buffer_add_audio_clipping_meta Ptr Buffer
buffer' CUInt
format' Word64
start Word64
end
Text -> Ptr AudioClippingMeta -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"bufferAddAudioClippingMeta" Ptr AudioClippingMeta
result
AudioClippingMeta
result' <- ((ManagedPtr AudioClippingMeta -> AudioClippingMeta)
-> Ptr AudioClippingMeta -> IO AudioClippingMeta
forall a.
(HasCallStack, BoxedPtr a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
newPtr ManagedPtr AudioClippingMeta -> AudioClippingMeta
GstAudio.AudioClippingMeta.AudioClippingMeta) Ptr AudioClippingMeta
result
Buffer -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr Buffer
buffer
AudioClippingMeta -> IO AudioClippingMeta
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return AudioClippingMeta
result'
foreign import ccall "gst_audio_reorder_channels" gst_audio_reorder_channels ::
Ptr Word8 ->
Word64 ->
CUInt ->
Int32 ->
Ptr CInt ->
Ptr CInt ->
IO CInt
audioReorderChannels ::
(B.CallStack.HasCallStack, MonadIO m) =>
ByteString
-> GstAudio.Enums.AudioFormat
-> [GstAudio.Enums.AudioChannelPosition]
-> [GstAudio.Enums.AudioChannelPosition]
-> m Bool
audioReorderChannels :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
ByteString
-> AudioFormat
-> [AudioChannelPosition]
-> [AudioChannelPosition]
-> m Bool
audioReorderChannels ByteString
data_ AudioFormat
format [AudioChannelPosition]
from [AudioChannelPosition]
to = IO Bool -> m Bool
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
forall a b. (a -> b) -> a -> b
$ do
let channels :: Int32
channels = Int -> Int32
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> Int32) -> Int -> Int32
forall a b. (a -> b) -> a -> b
$ [AudioChannelPosition] -> Int
forall a. [a] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
P.length [AudioChannelPosition]
to
let from_expected_length_ :: Int32
from_expected_length_ = Int -> Int32
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> Int32) -> Int -> Int32
forall a b. (a -> b) -> a -> b
$ [AudioChannelPosition] -> Int
forall a. [a] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
P.length [AudioChannelPosition]
from
Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (Int32
from_expected_length_ Int32 -> Int32 -> Bool
forall a. Eq a => a -> a -> Bool
/= Int32
channels) (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$
[Char] -> IO ()
forall a. HasCallStack => [Char] -> a
error [Char]
"GstAudio.audioReorderChannels : length of 'from' does not agree with that of 'to'."
let size :: Word64
size = Int -> Word64
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> Word64) -> Int -> Word64
forall a b. (a -> b) -> a -> b
$ ByteString -> Int
B.length ByteString
data_
Ptr Word8
data_' <- ByteString -> IO (Ptr Word8)
packByteString ByteString
data_
let format' :: CUInt
format' = (Int -> CUInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CUInt) -> (AudioFormat -> Int) -> AudioFormat -> CUInt
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AudioFormat -> Int
forall a. Enum a => a -> Int
fromEnum) AudioFormat
format
let from' :: [CInt]
from' = (AudioChannelPosition -> CInt) -> [AudioChannelPosition] -> [CInt]
forall a b. (a -> b) -> [a] -> [b]
map (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CInt)
-> (AudioChannelPosition -> Int) -> AudioChannelPosition -> CInt
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AudioChannelPosition -> Int
forall a. Enum a => a -> Int
fromEnum) [AudioChannelPosition]
from
Ptr CInt
from'' <- [CInt] -> IO (Ptr CInt)
forall a. Storable a => [a] -> IO (Ptr a)
packStorableArray [CInt]
from'
let to' :: [CInt]
to' = (AudioChannelPosition -> CInt) -> [AudioChannelPosition] -> [CInt]
forall a b. (a -> b) -> [a] -> [b]
map (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CInt)
-> (AudioChannelPosition -> Int) -> AudioChannelPosition -> CInt
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AudioChannelPosition -> Int
forall a. Enum a => a -> Int
fromEnum) [AudioChannelPosition]
to
Ptr CInt
to'' <- [CInt] -> IO (Ptr CInt)
forall a. Storable a => [a] -> IO (Ptr a)
packStorableArray [CInt]
to'
CInt
result <- Ptr Word8
-> Word64 -> CUInt -> Int32 -> Ptr CInt -> Ptr CInt -> IO CInt
gst_audio_reorder_channels Ptr Word8
data_' Word64
size CUInt
format' Int32
channels Ptr CInt
from'' Ptr CInt
to''
let result' :: Bool
result' = (CInt -> CInt -> Bool
forall a. Eq a => a -> a -> Bool
/= CInt
0) CInt
result
Ptr Word8 -> IO ()
forall a. Ptr a -> IO ()
freeMem Ptr Word8
data_'
Ptr CInt -> IO ()
forall a. Ptr a -> IO ()
freeMem Ptr CInt
from''
Ptr CInt -> IO ()
forall a. Ptr a -> IO ()
freeMem Ptr CInt
to''
Bool -> IO Bool
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Bool
result'
foreign import ccall "gst_audio_meta_api_get_type" gst_audio_meta_api_get_type ::
IO CGType
audioMetaApiGetType ::
(B.CallStack.HasCallStack, MonadIO m) =>
m GType
audioMetaApiGetType :: forall (m :: * -> *). (HasCallStack, MonadIO m) => m GType
audioMetaApiGetType = IO GType -> m GType
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO GType -> m GType) -> IO GType -> m GType
forall a b. (a -> b) -> a -> b
$ do
Word64
result <- IO Word64
gst_audio_meta_api_get_type
let result' :: GType
result' = Word64 -> GType
GType Word64
result
GType -> IO GType
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return GType
result'
foreign import ccall "gst_audio_make_raw_caps" gst_audio_make_raw_caps ::
Ptr CUInt ->
Word32 ->
CUInt ->
IO (Ptr Gst.Caps.Caps)
audioMakeRawCaps ::
(B.CallStack.HasCallStack, MonadIO m) =>
Maybe ([GstAudio.Enums.AudioFormat])
-> GstAudio.Enums.AudioLayout
-> m Gst.Caps.Caps
audioMakeRawCaps :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Maybe [AudioFormat] -> AudioLayout -> m Caps
audioMakeRawCaps Maybe [AudioFormat]
formats AudioLayout
layout = IO Caps -> m Caps
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Caps -> m Caps) -> IO Caps -> m Caps
forall a b. (a -> b) -> a -> b
$ do
let len :: Word32
len = case Maybe [AudioFormat]
formats of
Maybe [AudioFormat]
Nothing -> Word32
0
Just [AudioFormat]
jFormats -> Int -> Word32
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> Word32) -> Int -> Word32
forall a b. (a -> b) -> a -> b
$ [AudioFormat] -> Int
forall a. [a] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
P.length [AudioFormat]
jFormats
Ptr CUInt
maybeFormats <- case Maybe [AudioFormat]
formats of
Maybe [AudioFormat]
Nothing -> Ptr CUInt -> IO (Ptr CUInt)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr CUInt
forall a. Ptr a
nullPtr
Just [AudioFormat]
jFormats -> do
let jFormats' :: [CUInt]
jFormats' = (AudioFormat -> CUInt) -> [AudioFormat] -> [CUInt]
forall a b. (a -> b) -> [a] -> [b]
map (Int -> CUInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CUInt) -> (AudioFormat -> Int) -> AudioFormat -> CUInt
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AudioFormat -> Int
forall a. Enum a => a -> Int
fromEnum) [AudioFormat]
jFormats
Ptr CUInt
jFormats'' <- [CUInt] -> IO (Ptr CUInt)
forall a. Storable a => [a] -> IO (Ptr a)
packStorableArray [CUInt]
jFormats'
Ptr CUInt -> IO (Ptr CUInt)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr CUInt
jFormats''
let layout' :: CUInt
layout' = (Int -> CUInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CUInt) -> (AudioLayout -> Int) -> AudioLayout -> CUInt
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AudioLayout -> Int
forall a. Enum a => a -> Int
fromEnum) AudioLayout
layout
Ptr Caps
result <- Ptr CUInt -> Word32 -> CUInt -> IO (Ptr Caps)
gst_audio_make_raw_caps Ptr CUInt
maybeFormats Word32
len CUInt
layout'
Text -> Ptr Caps -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"audioMakeRawCaps" Ptr Caps
result
Caps
result' <- ((ManagedPtr Caps -> Caps) -> Ptr Caps -> IO Caps
forall a.
(HasCallStack, GBoxed a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
wrapBoxed ManagedPtr Caps -> Caps
Gst.Caps.Caps) Ptr Caps
result
Ptr CUInt -> IO ()
forall a. Ptr a -> IO ()
freeMem Ptr CUInt
maybeFormats
Caps -> IO Caps
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Caps
result'
foreign import ccall "gst_audio_level_meta_api_get_type" gst_audio_level_meta_api_get_type ::
IO CGType
audioLevelMetaApiGetType ::
(B.CallStack.HasCallStack, MonadIO m) =>
m GType
audioLevelMetaApiGetType :: forall (m :: * -> *). (HasCallStack, MonadIO m) => m GType
audioLevelMetaApiGetType = IO GType -> m GType
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO GType -> m GType) -> IO GType -> m GType
forall a b. (a -> b) -> a -> b
$ do
Word64
result <- IO Word64
gst_audio_level_meta_api_get_type
let result' :: GType
result' = Word64 -> GType
GType Word64
result
GType -> IO GType
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return GType
result'
foreign import ccall "gst_audio_iec61937_payload" gst_audio_iec61937_payload ::
Ptr Word8 ->
Word32 ->
Ptr Word8 ->
Word32 ->
Ptr GstAudio.AudioRingBufferSpec.AudioRingBufferSpec ->
Int32 ->
IO CInt
audioIec61937Payload ::
(B.CallStack.HasCallStack, MonadIO m) =>
ByteString
-> ByteString
-> GstAudio.AudioRingBufferSpec.AudioRingBufferSpec
-> Int32
-> m Bool
audioIec61937Payload :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
ByteString -> ByteString -> AudioRingBufferSpec -> Int32 -> m Bool
audioIec61937Payload ByteString
src ByteString
dst AudioRingBufferSpec
spec Int32
endianness = IO Bool -> m Bool
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
forall a b. (a -> b) -> a -> b
$ do
let dstN :: Word32
dstN = Int -> Word32
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> Word32) -> Int -> Word32
forall a b. (a -> b) -> a -> b
$ ByteString -> Int
B.length ByteString
dst
let srcN :: Word32
srcN = Int -> Word32
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> Word32) -> Int -> Word32
forall a b. (a -> b) -> a -> b
$ ByteString -> Int
B.length ByteString
src
Ptr Word8
src' <- ByteString -> IO (Ptr Word8)
packByteString ByteString
src
Ptr Word8
dst' <- ByteString -> IO (Ptr Word8)
packByteString ByteString
dst
Ptr AudioRingBufferSpec
spec' <- AudioRingBufferSpec -> IO (Ptr AudioRingBufferSpec)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr AudioRingBufferSpec
spec
CInt
result <- Ptr Word8
-> Word32
-> Ptr Word8
-> Word32
-> Ptr AudioRingBufferSpec
-> Int32
-> IO CInt
gst_audio_iec61937_payload Ptr Word8
src' Word32
srcN Ptr Word8
dst' Word32
dstN Ptr AudioRingBufferSpec
spec' Int32
endianness
let result' :: Bool
result' = (CInt -> CInt -> Bool
forall a. Eq a => a -> a -> Bool
/= CInt
0) CInt
result
AudioRingBufferSpec -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr AudioRingBufferSpec
spec
Ptr Word8 -> IO ()
forall a. Ptr a -> IO ()
freeMem Ptr Word8
src'
Ptr Word8 -> IO ()
forall a. Ptr a -> IO ()
freeMem Ptr Word8
dst'
Bool -> IO Bool
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Bool
result'
foreign import ccall "gst_audio_iec61937_frame_size" gst_audio_iec61937_frame_size ::
Ptr GstAudio.AudioRingBufferSpec.AudioRingBufferSpec ->
IO Word32
audioIec61937FrameSize ::
(B.CallStack.HasCallStack, MonadIO m) =>
GstAudio.AudioRingBufferSpec.AudioRingBufferSpec
-> m Word32
audioIec61937FrameSize :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
AudioRingBufferSpec -> m Word32
audioIec61937FrameSize AudioRingBufferSpec
spec = IO Word32 -> m Word32
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Word32 -> m Word32) -> IO Word32 -> m Word32
forall a b. (a -> b) -> a -> b
$ do
Ptr AudioRingBufferSpec
spec' <- AudioRingBufferSpec -> IO (Ptr AudioRingBufferSpec)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr AudioRingBufferSpec
spec
Word32
result <- Ptr AudioRingBufferSpec -> IO Word32
gst_audio_iec61937_frame_size Ptr AudioRingBufferSpec
spec'
AudioRingBufferSpec -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr AudioRingBufferSpec
spec
Word32 -> IO Word32
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Word32
result
foreign import ccall "gst_audio_get_channel_reorder_map" gst_audio_get_channel_reorder_map ::
Int32 ->
Ptr CInt ->
Ptr CInt ->
Ptr Int32 ->
IO CInt
audioGetChannelReorderMap ::
(B.CallStack.HasCallStack, MonadIO m) =>
[GstAudio.Enums.AudioChannelPosition]
-> [GstAudio.Enums.AudioChannelPosition]
-> [Int32]
-> m Bool
audioGetChannelReorderMap :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
[AudioChannelPosition]
-> [AudioChannelPosition] -> [Int32] -> m Bool
audioGetChannelReorderMap [AudioChannelPosition]
from [AudioChannelPosition]
to [Int32]
reorderMap = IO Bool -> m Bool
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
forall a b. (a -> b) -> a -> b
$ do
let channels :: Int32
channels = Int -> Int32
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> Int32) -> Int -> Int32
forall a b. (a -> b) -> a -> b
$ [Int32] -> Int
forall a. [a] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
P.length [Int32]
reorderMap
let to_expected_length_ :: Int32
to_expected_length_ = Int -> Int32
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> Int32) -> Int -> Int32
forall a b. (a -> b) -> a -> b
$ [AudioChannelPosition] -> Int
forall a. [a] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
P.length [AudioChannelPosition]
to
Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (Int32
to_expected_length_ Int32 -> Int32 -> Bool
forall a. Eq a => a -> a -> Bool
/= Int32
channels) (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$
[Char] -> IO ()
forall a. HasCallStack => [Char] -> a
error [Char]
"GstAudio.audioGetChannelReorderMap : length of 'to' does not agree with that of 'reorderMap'."
let from_expected_length_ :: Int32
from_expected_length_ = Int -> Int32
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> Int32) -> Int -> Int32
forall a b. (a -> b) -> a -> b
$ [AudioChannelPosition] -> Int
forall a. [a] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
P.length [AudioChannelPosition]
from
Bool -> IO () -> IO ()
forall (f :: * -> *). Applicative f => Bool -> f () -> f ()
when (Int32
from_expected_length_ Int32 -> Int32 -> Bool
forall a. Eq a => a -> a -> Bool
/= Int32
channels) (IO () -> IO ()) -> IO () -> IO ()
forall a b. (a -> b) -> a -> b
$
[Char] -> IO ()
forall a. HasCallStack => [Char] -> a
error [Char]
"GstAudio.audioGetChannelReorderMap : length of 'from' does not agree with that of 'to'."
let from' :: [CInt]
from' = (AudioChannelPosition -> CInt) -> [AudioChannelPosition] -> [CInt]
forall a b. (a -> b) -> [a] -> [b]
map (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CInt)
-> (AudioChannelPosition -> Int) -> AudioChannelPosition -> CInt
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AudioChannelPosition -> Int
forall a. Enum a => a -> Int
fromEnum) [AudioChannelPosition]
from
Ptr CInt
from'' <- [CInt] -> IO (Ptr CInt)
forall a. Storable a => [a] -> IO (Ptr a)
packStorableArray [CInt]
from'
let to' :: [CInt]
to' = (AudioChannelPosition -> CInt) -> [AudioChannelPosition] -> [CInt]
forall a b. (a -> b) -> [a] -> [b]
map (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CInt)
-> (AudioChannelPosition -> Int) -> AudioChannelPosition -> CInt
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AudioChannelPosition -> Int
forall a. Enum a => a -> Int
fromEnum) [AudioChannelPosition]
to
Ptr CInt
to'' <- [CInt] -> IO (Ptr CInt)
forall a. Storable a => [a] -> IO (Ptr a)
packStorableArray [CInt]
to'
Ptr Int32
reorderMap' <- [Int32] -> IO (Ptr Int32)
forall a. Storable a => [a] -> IO (Ptr a)
packStorableArray [Int32]
reorderMap
CInt
result <- Int32 -> Ptr CInt -> Ptr CInt -> Ptr Int32 -> IO CInt
gst_audio_get_channel_reorder_map Int32
channels Ptr CInt
from'' Ptr CInt
to'' Ptr Int32
reorderMap'
let result' :: Bool
result' = (CInt -> CInt -> Bool
forall a. Eq a => a -> a -> Bool
/= CInt
0) CInt
result
Ptr CInt -> IO ()
forall a. Ptr a -> IO ()
freeMem Ptr CInt
from''
Ptr CInt -> IO ()
forall a. Ptr a -> IO ()
freeMem Ptr CInt
to''
Ptr Int32 -> IO ()
forall a. Ptr a -> IO ()
freeMem Ptr Int32
reorderMap'
Bool -> IO Bool
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Bool
result'
foreign import ccall "gst_audio_formats_raw" gst_audio_formats_raw ::
Ptr Word32 ->
IO (Ptr CUInt)
audioFormatsRaw ::
(B.CallStack.HasCallStack, MonadIO m) =>
m [GstAudio.Enums.AudioFormat]
audioFormatsRaw :: forall (m :: * -> *). (HasCallStack, MonadIO m) => m [AudioFormat]
audioFormatsRaw = IO [AudioFormat] -> m [AudioFormat]
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO [AudioFormat] -> m [AudioFormat])
-> IO [AudioFormat] -> m [AudioFormat]
forall a b. (a -> b) -> a -> b
$ do
Ptr Word32
len <- IO (Ptr Word32)
forall a. Storable a => IO (Ptr a)
allocMem :: IO (Ptr Word32)
Ptr CUInt
result <- Ptr Word32 -> IO (Ptr CUInt)
gst_audio_formats_raw Ptr Word32
len
Word32
len' <- Ptr Word32 -> IO Word32
forall a. Storable a => Ptr a -> IO a
peek Ptr Word32
len
Text -> Ptr CUInt -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"audioFormatsRaw" Ptr CUInt
result
[CUInt]
result' <- (Word32 -> Ptr CUInt -> IO [CUInt]
forall a b. (Integral a, Storable b) => a -> Ptr b -> IO [b]
unpackStorableArrayWithLength Word32
len') Ptr CUInt
result
let result'' :: [AudioFormat]
result'' = (CUInt -> AudioFormat) -> [CUInt] -> [AudioFormat]
forall a b. (a -> b) -> [a] -> [b]
map (Int -> AudioFormat
forall a. Enum a => Int -> a
toEnum (Int -> AudioFormat) -> (CUInt -> Int) -> CUInt -> AudioFormat
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CUInt -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral) [CUInt]
result'
Ptr Word32 -> IO ()
forall a. Ptr a -> IO ()
freeMem Ptr Word32
len
[AudioFormat] -> IO [AudioFormat]
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return [AudioFormat]
result''
foreign import ccall "gst_audio_format_info_get_type" gst_audio_format_info_get_type ::
IO CGType
audioFormatInfoGetType ::
(B.CallStack.HasCallStack, MonadIO m) =>
m GType
audioFormatInfoGetType :: forall (m :: * -> *). (HasCallStack, MonadIO m) => m GType
audioFormatInfoGetType = IO GType -> m GType
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO GType -> m GType) -> IO GType -> m GType
forall a b. (a -> b) -> a -> b
$ do
Word64
result <- IO Word64
gst_audio_format_info_get_type
let result' :: GType
result' = Word64 -> GType
GType Word64
result
GType -> IO GType
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return GType
result'
foreign import ccall "gst_audio_downmix_meta_api_get_type" gst_audio_downmix_meta_api_get_type ::
IO CGType
audioDownmixMetaApiGetType ::
(B.CallStack.HasCallStack, MonadIO m) =>
m GType
audioDownmixMetaApiGetType :: forall (m :: * -> *). (HasCallStack, MonadIO m) => m GType
audioDownmixMetaApiGetType = IO GType -> m GType
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO GType -> m GType) -> IO GType -> m GType
forall a b. (a -> b) -> a -> b
$ do
Word64
result <- IO Word64
gst_audio_downmix_meta_api_get_type
let result' :: GType
result' = Word64 -> GType
GType Word64
result
GType -> IO GType
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return GType
result'
foreign import ccall "gst_audio_clipping_meta_api_get_type" gst_audio_clipping_meta_api_get_type ::
IO CGType
audioClippingMetaApiGetType ::
(B.CallStack.HasCallStack, MonadIO m) =>
m GType
audioClippingMetaApiGetType :: forall (m :: * -> *). (HasCallStack, MonadIO m) => m GType
audioClippingMetaApiGetType = IO GType -> m GType
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO GType -> m GType) -> IO GType -> m GType
forall a b. (a -> b) -> a -> b
$ do
Word64
result <- IO Word64
gst_audio_clipping_meta_api_get_type
let result' :: GType
result' = Word64 -> GType
GType Word64
result
GType -> IO GType
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return GType
result'
foreign import ccall "gst_audio_check_valid_channel_positions" gst_audio_check_valid_channel_positions ::
Ptr CInt ->
Int32 ->
CInt ->
IO CInt
audioCheckValidChannelPositions ::
(B.CallStack.HasCallStack, MonadIO m) =>
[GstAudio.Enums.AudioChannelPosition]
-> Bool
-> m Bool
audioCheckValidChannelPositions :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
[AudioChannelPosition] -> Bool -> m Bool
audioCheckValidChannelPositions [AudioChannelPosition]
position Bool
forceOrder = IO Bool -> m Bool
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
forall a b. (a -> b) -> a -> b
$ do
let channels :: Int32
channels = Int -> Int32
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> Int32) -> Int -> Int32
forall a b. (a -> b) -> a -> b
$ [AudioChannelPosition] -> Int
forall a. [a] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
P.length [AudioChannelPosition]
position
let position' :: [CInt]
position' = (AudioChannelPosition -> CInt) -> [AudioChannelPosition] -> [CInt]
forall a b. (a -> b) -> [a] -> [b]
map (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CInt)
-> (AudioChannelPosition -> Int) -> AudioChannelPosition -> CInt
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AudioChannelPosition -> Int
forall a. Enum a => a -> Int
fromEnum) [AudioChannelPosition]
position
Ptr CInt
position'' <- [CInt] -> IO (Ptr CInt)
forall a. Storable a => [a] -> IO (Ptr a)
packStorableArray [CInt]
position'
let forceOrder' :: CInt
forceOrder' = (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Bool -> Int
forall a. Enum a => a -> Int
fromEnum) Bool
forceOrder
CInt
result <- Ptr CInt -> Int32 -> CInt -> IO CInt
gst_audio_check_valid_channel_positions Ptr CInt
position'' Int32
channels CInt
forceOrder'
let result' :: Bool
result' = (CInt -> CInt -> Bool
forall a. Eq a => a -> a -> Bool
/= CInt
0) CInt
result
Ptr CInt -> IO ()
forall a. Ptr a -> IO ()
freeMem Ptr CInt
position''
Bool -> IO Bool
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Bool
result'
foreign import ccall "gst_audio_channel_positions_to_valid_order" gst_audio_channel_positions_to_valid_order ::
Ptr CInt ->
Int32 ->
IO CInt
audioChannelPositionsToValidOrder ::
(B.CallStack.HasCallStack, MonadIO m) =>
[GstAudio.Enums.AudioChannelPosition]
-> m Bool
audioChannelPositionsToValidOrder :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
[AudioChannelPosition] -> m Bool
audioChannelPositionsToValidOrder [AudioChannelPosition]
position = IO Bool -> m Bool
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
forall a b. (a -> b) -> a -> b
$ do
let channels :: Int32
channels = Int -> Int32
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> Int32) -> Int -> Int32
forall a b. (a -> b) -> a -> b
$ [AudioChannelPosition] -> Int
forall a. [a] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
P.length [AudioChannelPosition]
position
let position' :: [CInt]
position' = (AudioChannelPosition -> CInt) -> [AudioChannelPosition] -> [CInt]
forall a b. (a -> b) -> [a] -> [b]
map (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CInt)
-> (AudioChannelPosition -> Int) -> AudioChannelPosition -> CInt
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AudioChannelPosition -> Int
forall a. Enum a => a -> Int
fromEnum) [AudioChannelPosition]
position
Ptr CInt
position'' <- [CInt] -> IO (Ptr CInt)
forall a. Storable a => [a] -> IO (Ptr a)
packStorableArray [CInt]
position'
CInt
result <- Ptr CInt -> Int32 -> IO CInt
gst_audio_channel_positions_to_valid_order Ptr CInt
position'' Int32
channels
let result' :: Bool
result' = (CInt -> CInt -> Bool
forall a. Eq a => a -> a -> Bool
/= CInt
0) CInt
result
Ptr CInt -> IO ()
forall a. Ptr a -> IO ()
freeMem Ptr CInt
position''
Bool -> IO Bool
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Bool
result'
foreign import ccall "gst_audio_channel_positions_to_string" gst_audio_channel_positions_to_string ::
Ptr CInt ->
Int32 ->
IO CString
audioChannelPositionsToString ::
(B.CallStack.HasCallStack, MonadIO m) =>
[GstAudio.Enums.AudioChannelPosition]
-> m T.Text
audioChannelPositionsToString :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
[AudioChannelPosition] -> m Text
audioChannelPositionsToString [AudioChannelPosition]
position = IO Text -> m Text
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Text -> m Text) -> IO Text -> m Text
forall a b. (a -> b) -> a -> b
$ do
let channels :: Int32
channels = Int -> Int32
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> Int32) -> Int -> Int32
forall a b. (a -> b) -> a -> b
$ [AudioChannelPosition] -> Int
forall a. [a] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
P.length [AudioChannelPosition]
position
let position' :: [CInt]
position' = (AudioChannelPosition -> CInt) -> [AudioChannelPosition] -> [CInt]
forall a b. (a -> b) -> [a] -> [b]
map (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CInt)
-> (AudioChannelPosition -> Int) -> AudioChannelPosition -> CInt
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AudioChannelPosition -> Int
forall a. Enum a => a -> Int
fromEnum) [AudioChannelPosition]
position
Ptr CInt
position'' <- [CInt] -> IO (Ptr CInt)
forall a. Storable a => [a] -> IO (Ptr a)
packStorableArray [CInt]
position'
CString
result <- Ptr CInt -> Int32 -> IO CString
gst_audio_channel_positions_to_string Ptr CInt
position'' Int32
channels
Text -> CString -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"audioChannelPositionsToString" CString
result
Text
result' <- HasCallStack => CString -> IO Text
CString -> IO Text
cstringToText CString
result
CString -> IO ()
forall a. Ptr a -> IO ()
freeMem CString
result
Ptr CInt -> IO ()
forall a. Ptr a -> IO ()
freeMem Ptr CInt
position''
Text -> IO Text
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Text
result'
foreign import ccall "gst_audio_channel_positions_to_mask" gst_audio_channel_positions_to_mask ::
Ptr CInt ->
Int32 ->
CInt ->
Ptr Word64 ->
IO CInt
audioChannelPositionsToMask ::
(B.CallStack.HasCallStack, MonadIO m) =>
[GstAudio.Enums.AudioChannelPosition]
-> Bool
-> m ((Bool, Word64))
audioChannelPositionsToMask :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
[AudioChannelPosition] -> Bool -> m (Bool, Word64)
audioChannelPositionsToMask [AudioChannelPosition]
position Bool
forceOrder = IO (Bool, Word64) -> m (Bool, Word64)
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Bool, Word64) -> m (Bool, Word64))
-> IO (Bool, Word64) -> m (Bool, Word64)
forall a b. (a -> b) -> a -> b
$ do
let channels :: Int32
channels = Int -> Int32
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> Int32) -> Int -> Int32
forall a b. (a -> b) -> a -> b
$ [AudioChannelPosition] -> Int
forall a. [a] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
P.length [AudioChannelPosition]
position
let position' :: [CInt]
position' = (AudioChannelPosition -> CInt) -> [AudioChannelPosition] -> [CInt]
forall a b. (a -> b) -> [a] -> [b]
map (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CInt)
-> (AudioChannelPosition -> Int) -> AudioChannelPosition -> CInt
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AudioChannelPosition -> Int
forall a. Enum a => a -> Int
fromEnum) [AudioChannelPosition]
position
Ptr CInt
position'' <- [CInt] -> IO (Ptr CInt)
forall a. Storable a => [a] -> IO (Ptr a)
packStorableArray [CInt]
position'
let forceOrder' :: CInt
forceOrder' = (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Bool -> Int
forall a. Enum a => a -> Int
fromEnum) Bool
forceOrder
Ptr Word64
channelMask <- IO (Ptr Word64)
forall a. Storable a => IO (Ptr a)
allocMem :: IO (Ptr Word64)
CInt
result <- Ptr CInt -> Int32 -> CInt -> Ptr Word64 -> IO CInt
gst_audio_channel_positions_to_mask Ptr CInt
position'' Int32
channels CInt
forceOrder' Ptr Word64
channelMask
let result' :: Bool
result' = (CInt -> CInt -> Bool
forall a. Eq a => a -> a -> Bool
/= CInt
0) CInt
result
Word64
channelMask' <- Ptr Word64 -> IO Word64
forall a. Storable a => Ptr a -> IO a
peek Ptr Word64
channelMask
Ptr CInt -> IO ()
forall a. Ptr a -> IO ()
freeMem Ptr CInt
position''
Ptr Word64 -> IO ()
forall a. Ptr a -> IO ()
freeMem Ptr Word64
channelMask
(Bool, Word64) -> IO (Bool, Word64)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Bool
result', Word64
channelMask')
foreign import ccall "gst_audio_channel_positions_from_mask" gst_audio_channel_positions_from_mask ::
Int32 ->
Word64 ->
Ptr CInt ->
IO CInt
audioChannelPositionsFromMask ::
(B.CallStack.HasCallStack, MonadIO m) =>
Word64
-> [GstAudio.Enums.AudioChannelPosition]
-> m Bool
audioChannelPositionsFromMask :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Word64 -> [AudioChannelPosition] -> m Bool
audioChannelPositionsFromMask Word64
channelMask [AudioChannelPosition]
position = IO Bool -> m Bool
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
forall a b. (a -> b) -> a -> b
$ do
let channels :: Int32
channels = Int -> Int32
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> Int32) -> Int -> Int32
forall a b. (a -> b) -> a -> b
$ [AudioChannelPosition] -> Int
forall a. [a] -> Int
forall (t :: * -> *) a. Foldable t => t a -> Int
P.length [AudioChannelPosition]
position
let position' :: [CInt]
position' = (AudioChannelPosition -> CInt) -> [AudioChannelPosition] -> [CInt]
forall a b. (a -> b) -> [a] -> [b]
map (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CInt)
-> (AudioChannelPosition -> Int) -> AudioChannelPosition -> CInt
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AudioChannelPosition -> Int
forall a. Enum a => a -> Int
fromEnum) [AudioChannelPosition]
position
Ptr CInt
position'' <- [CInt] -> IO (Ptr CInt)
forall a. Storable a => [a] -> IO (Ptr a)
packStorableArray [CInt]
position'
CInt
result <- Int32 -> Word64 -> Ptr CInt -> IO CInt
gst_audio_channel_positions_from_mask Int32
channels Word64
channelMask Ptr CInt
position''
let result' :: Bool
result' = (CInt -> CInt -> Bool
forall a. Eq a => a -> a -> Bool
/= CInt
0) CInt
result
Ptr CInt -> IO ()
forall a. Ptr a -> IO ()
freeMem Ptr CInt
position''
Bool -> IO Bool
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Bool
result'
foreign import ccall "gst_audio_channel_get_fallback_mask" gst_audio_channel_get_fallback_mask ::
Int32 ->
IO Word64
audioChannelGetFallbackMask ::
(B.CallStack.HasCallStack, MonadIO m) =>
Int32
-> m Word64
audioChannelGetFallbackMask :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
Int32 -> m Word64
audioChannelGetFallbackMask Int32
channels = IO Word64 -> m Word64
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Word64 -> m Word64) -> IO Word64 -> m Word64
forall a b. (a -> b) -> a -> b
$ do
Word64
result <- Int32 -> IO Word64
gst_audio_channel_get_fallback_mask Int32
channels
Word64 -> IO Word64
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Word64
result