{-# LANGUAGE TypeApplications #-}
#if (MIN_VERSION_haskell_gi_overloading(1,0,0) && !defined(__HADDOCK_VERSION__))
#define ENABLE_OVERLOADING
#endif
module GI.GstAudio.Structs.AudioConverter
(
AudioConverter(..) ,
#if defined(ENABLE_OVERLOADING)
ResolveAudioConverterMethod ,
#endif
#if defined(ENABLE_OVERLOADING)
AudioConverterConvertMethodInfo ,
#endif
audioConverterConvert ,
#if defined(ENABLE_OVERLOADING)
AudioConverterFreeMethodInfo ,
#endif
audioConverterFree ,
#if defined(ENABLE_OVERLOADING)
AudioConverterGetConfigMethodInfo ,
#endif
audioConverterGetConfig ,
#if defined(ENABLE_OVERLOADING)
AudioConverterGetInFramesMethodInfo ,
#endif
audioConverterGetInFrames ,
#if defined(ENABLE_OVERLOADING)
AudioConverterGetMaxLatencyMethodInfo ,
#endif
audioConverterGetMaxLatency ,
#if defined(ENABLE_OVERLOADING)
AudioConverterGetOutFramesMethodInfo ,
#endif
audioConverterGetOutFrames ,
#if defined(ENABLE_OVERLOADING)
AudioConverterIsPassthroughMethodInfo ,
#endif
audioConverterIsPassthrough ,
audioConverterNew ,
#if defined(ENABLE_OVERLOADING)
AudioConverterResetMethodInfo ,
#endif
audioConverterReset ,
#if defined(ENABLE_OVERLOADING)
AudioConverterSamplesMethodInfo ,
#endif
audioConverterSamples ,
#if defined(ENABLE_OVERLOADING)
AudioConverterSupportsInplaceMethodInfo ,
#endif
audioConverterSupportsInplace ,
#if defined(ENABLE_OVERLOADING)
AudioConverterUpdateConfigMethodInfo ,
#endif
audioConverterUpdateConfig ,
) 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.Kind as DK
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.Structs.Structure as Gst.Structure
import {-# SOURCE #-} qualified GI.GstAudio.Flags as GstAudio.Flags
import {-# SOURCE #-} qualified GI.GstAudio.Structs.AudioInfo as GstAudio.AudioInfo
newtype AudioConverter = AudioConverter (SP.ManagedPtr AudioConverter)
deriving (AudioConverter -> AudioConverter -> Bool
(AudioConverter -> AudioConverter -> Bool)
-> (AudioConverter -> AudioConverter -> Bool) -> Eq AudioConverter
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: AudioConverter -> AudioConverter -> Bool
== :: AudioConverter -> AudioConverter -> Bool
$c/= :: AudioConverter -> AudioConverter -> Bool
/= :: AudioConverter -> AudioConverter -> Bool
Eq)
instance SP.ManagedPtrNewtype AudioConverter where
toManagedPtr :: AudioConverter -> ManagedPtr AudioConverter
toManagedPtr (AudioConverter ManagedPtr AudioConverter
p) = ManagedPtr AudioConverter
p
foreign import ccall "gst_audio_converter_get_type" c_gst_audio_converter_get_type ::
IO GType
type instance O.ParentTypes AudioConverter = '[]
instance O.HasParentTypes AudioConverter
instance B.Types.TypedObject AudioConverter where
glibType :: IO GType
glibType = IO GType
c_gst_audio_converter_get_type
instance B.Types.GBoxed AudioConverter
instance B.GValue.IsGValue (Maybe AudioConverter) where
gvalueGType_ :: IO GType
gvalueGType_ = IO GType
c_gst_audio_converter_get_type
gvalueSet_ :: Ptr GValue -> Maybe AudioConverter -> IO ()
gvalueSet_ Ptr GValue
gv Maybe AudioConverter
P.Nothing = Ptr GValue -> Ptr AudioConverter -> IO ()
forall a. Ptr GValue -> Ptr a -> IO ()
B.GValue.set_boxed Ptr GValue
gv (Ptr AudioConverter
forall a. Ptr a
FP.nullPtr :: FP.Ptr AudioConverter)
gvalueSet_ Ptr GValue
gv (P.Just AudioConverter
obj) = AudioConverter -> (Ptr AudioConverter -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
B.ManagedPtr.withManagedPtr AudioConverter
obj (Ptr GValue -> Ptr AudioConverter -> IO ()
forall a. Ptr GValue -> Ptr a -> IO ()
B.GValue.set_boxed Ptr GValue
gv)
gvalueGet_ :: Ptr GValue -> IO (Maybe AudioConverter)
gvalueGet_ Ptr GValue
gv = do
Ptr AudioConverter
ptr <- Ptr GValue -> IO (Ptr AudioConverter)
forall b. Ptr GValue -> IO (Ptr b)
B.GValue.get_boxed Ptr GValue
gv :: IO (Ptr AudioConverter)
if Ptr AudioConverter
ptr Ptr AudioConverter -> Ptr AudioConverter -> Bool
forall a. Eq a => a -> a -> Bool
/= Ptr AudioConverter
forall a. Ptr a
FP.nullPtr
then AudioConverter -> Maybe AudioConverter
forall a. a -> Maybe a
P.Just (AudioConverter -> Maybe AudioConverter)
-> IO AudioConverter -> IO (Maybe AudioConverter)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (ManagedPtr AudioConverter -> AudioConverter)
-> Ptr AudioConverter -> IO AudioConverter
forall a.
(HasCallStack, GBoxed a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
B.ManagedPtr.newBoxed ManagedPtr AudioConverter -> AudioConverter
AudioConverter Ptr AudioConverter
ptr
else Maybe AudioConverter -> IO (Maybe AudioConverter)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe AudioConverter
forall a. Maybe a
P.Nothing
#if defined(ENABLE_OVERLOADING)
instance O.HasAttributeList AudioConverter
type instance O.AttributeList AudioConverter = AudioConverterAttributeList
type AudioConverterAttributeList = ('[ ] :: [(Symbol, DK.Type)])
#endif
foreign import ccall "gst_audio_converter_new" gst_audio_converter_new ::
CUInt ->
Ptr GstAudio.AudioInfo.AudioInfo ->
Ptr GstAudio.AudioInfo.AudioInfo ->
Ptr Gst.Structure.Structure ->
IO (Ptr AudioConverter)
audioConverterNew ::
(B.CallStack.HasCallStack, MonadIO m) =>
[GstAudio.Flags.AudioConverterFlags]
-> GstAudio.AudioInfo.AudioInfo
-> GstAudio.AudioInfo.AudioInfo
-> Maybe (Gst.Structure.Structure)
-> m (Maybe AudioConverter)
audioConverterNew :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
[AudioConverterFlags]
-> AudioInfo
-> AudioInfo
-> Maybe Structure
-> m (Maybe AudioConverter)
audioConverterNew [AudioConverterFlags]
flags AudioInfo
inInfo AudioInfo
outInfo Maybe Structure
config = IO (Maybe AudioConverter) -> m (Maybe AudioConverter)
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Maybe AudioConverter) -> m (Maybe AudioConverter))
-> IO (Maybe AudioConverter) -> m (Maybe AudioConverter)
forall a b. (a -> b) -> a -> b
$ do
let flags' :: CUInt
flags' = [AudioConverterFlags] -> CUInt
forall b a. (Num b, IsGFlag a) => [a] -> b
gflagsToWord [AudioConverterFlags]
flags
Ptr AudioInfo
inInfo' <- AudioInfo -> IO (Ptr AudioInfo)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr AudioInfo
inInfo
Ptr AudioInfo
outInfo' <- AudioInfo -> IO (Ptr AudioInfo)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr AudioInfo
outInfo
Ptr Structure
maybeConfig <- case Maybe Structure
config of
Maybe Structure
Nothing -> Ptr Structure -> IO (Ptr Structure)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr Structure
forall a. Ptr a
nullPtr
Just Structure
jConfig -> do
Ptr Structure
jConfig' <- Structure -> IO (Ptr Structure)
forall a. (HasCallStack, GBoxed a) => a -> IO (Ptr a)
B.ManagedPtr.disownBoxed Structure
jConfig
Ptr Structure -> IO (Ptr Structure)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr Structure
jConfig'
Ptr AudioConverter
result <- CUInt
-> Ptr AudioInfo
-> Ptr AudioInfo
-> Ptr Structure
-> IO (Ptr AudioConverter)
gst_audio_converter_new CUInt
flags' Ptr AudioInfo
inInfo' Ptr AudioInfo
outInfo' Ptr Structure
maybeConfig
Maybe AudioConverter
maybeResult <- Ptr AudioConverter
-> (Ptr AudioConverter -> IO AudioConverter)
-> IO (Maybe AudioConverter)
forall a b. Ptr a -> (Ptr a -> IO b) -> IO (Maybe b)
convertIfNonNull Ptr AudioConverter
result ((Ptr AudioConverter -> IO AudioConverter)
-> IO (Maybe AudioConverter))
-> (Ptr AudioConverter -> IO AudioConverter)
-> IO (Maybe AudioConverter)
forall a b. (a -> b) -> a -> b
$ \Ptr AudioConverter
result' -> do
AudioConverter
result'' <- ((ManagedPtr AudioConverter -> AudioConverter)
-> Ptr AudioConverter -> IO AudioConverter
forall a.
(HasCallStack, GBoxed a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
wrapBoxed ManagedPtr AudioConverter -> AudioConverter
AudioConverter) Ptr AudioConverter
result'
AudioConverter -> IO AudioConverter
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return AudioConverter
result''
AudioInfo -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr AudioInfo
inInfo
AudioInfo -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr AudioInfo
outInfo
Maybe Structure -> (Structure -> IO ()) -> IO ()
forall (m :: * -> *) a. Monad m => Maybe a -> (a -> m ()) -> m ()
whenJust Maybe Structure
config Structure -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr
Maybe AudioConverter -> IO (Maybe AudioConverter)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe AudioConverter
maybeResult
#if defined(ENABLE_OVERLOADING)
#endif
foreign import ccall "gst_audio_converter_convert" gst_audio_converter_convert ::
Ptr AudioConverter ->
CUInt ->
Ptr Word8 ->
Word64 ->
Ptr (Ptr Word8) ->
Ptr Word64 ->
IO CInt
audioConverterConvert ::
(B.CallStack.HasCallStack, MonadIO m) =>
AudioConverter
-> [GstAudio.Flags.AudioConverterFlags]
-> ByteString
-> m ((Bool, ByteString))
audioConverterConvert :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
AudioConverter
-> [AudioConverterFlags] -> ByteString -> m (Bool, ByteString)
audioConverterConvert AudioConverter
convert [AudioConverterFlags]
flags ByteString
in_ = IO (Bool, ByteString) -> m (Bool, ByteString)
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Bool, ByteString) -> m (Bool, ByteString))
-> IO (Bool, ByteString) -> m (Bool, ByteString)
forall a b. (a -> b) -> a -> b
$ do
let inSize :: Word64
inSize = 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
in_
Ptr AudioConverter
convert' <- AudioConverter -> IO (Ptr AudioConverter)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr AudioConverter
convert
let flags' :: CUInt
flags' = [AudioConverterFlags] -> CUInt
forall b a. (Num b, IsGFlag a) => [a] -> b
gflagsToWord [AudioConverterFlags]
flags
Ptr Word8
in_' <- ByteString -> IO (Ptr Word8)
packByteString ByteString
in_
Ptr (Ptr Word8)
out <- IO (Ptr (Ptr Word8))
forall a. Storable a => IO (Ptr a)
callocMem :: IO (Ptr (Ptr Word8))
Ptr Word64
outSize <- IO (Ptr Word64)
forall a. Storable a => IO (Ptr a)
allocMem :: IO (Ptr Word64)
CInt
result <- Ptr AudioConverter
-> CUInt
-> Ptr Word8
-> Word64
-> Ptr (Ptr Word8)
-> Ptr Word64
-> IO CInt
gst_audio_converter_convert Ptr AudioConverter
convert' CUInt
flags' Ptr Word8
in_' Word64
inSize Ptr (Ptr Word8)
out Ptr Word64
outSize
Word64
outSize' <- Ptr Word64 -> IO Word64
forall a. Storable a => Ptr a -> IO a
peek Ptr Word64
outSize
let result' :: Bool
result' = (CInt -> CInt -> Bool
forall a. Eq a => a -> a -> Bool
/= CInt
0) CInt
result
Ptr Word8
out' <- Ptr (Ptr Word8) -> IO (Ptr Word8)
forall a. Storable a => Ptr a -> IO a
peek Ptr (Ptr Word8)
out
ByteString
out'' <- (Word64 -> Ptr Word8 -> IO ByteString
forall a. Integral a => a -> Ptr Word8 -> IO ByteString
unpackByteStringWithLength Word64
outSize') Ptr Word8
out'
Ptr Word8 -> IO ()
forall a. Ptr a -> IO ()
freeMem Ptr Word8
out'
AudioConverter -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr AudioConverter
convert
Ptr Word8 -> IO ()
forall a. Ptr a -> IO ()
freeMem Ptr Word8
in_'
Ptr (Ptr Word8) -> IO ()
forall a. Ptr a -> IO ()
freeMem Ptr (Ptr Word8)
out
Ptr Word64 -> IO ()
forall a. Ptr a -> IO ()
freeMem Ptr Word64
outSize
(Bool, ByteString) -> IO (Bool, ByteString)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Bool
result', ByteString
out'')
#if defined(ENABLE_OVERLOADING)
data AudioConverterConvertMethodInfo
instance (signature ~ ([GstAudio.Flags.AudioConverterFlags] -> ByteString -> m ((Bool, ByteString))), MonadIO m) => O.OverloadedMethod AudioConverterConvertMethodInfo AudioConverter signature where
overloadedMethod = audioConverterConvert
instance O.OverloadedMethodInfo AudioConverterConvertMethodInfo AudioConverter where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.GstAudio.Structs.AudioConverter.audioConverterConvert",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstaudio-1.0.27/docs/GI-GstAudio-Structs-AudioConverter.html#v:audioConverterConvert"
})
#endif
foreign import ccall "gst_audio_converter_free" gst_audio_converter_free ::
Ptr AudioConverter ->
IO ()
audioConverterFree ::
(B.CallStack.HasCallStack, MonadIO m) =>
AudioConverter
-> m ()
audioConverterFree :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
AudioConverter -> m ()
audioConverterFree AudioConverter
convert = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
Ptr AudioConverter
convert' <- AudioConverter -> IO (Ptr AudioConverter)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr AudioConverter
convert
Ptr AudioConverter -> IO ()
gst_audio_converter_free Ptr AudioConverter
convert'
AudioConverter -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr AudioConverter
convert
() -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
#if defined(ENABLE_OVERLOADING)
data AudioConverterFreeMethodInfo
instance (signature ~ (m ()), MonadIO m) => O.OverloadedMethod AudioConverterFreeMethodInfo AudioConverter signature where
overloadedMethod = audioConverterFree
instance O.OverloadedMethodInfo AudioConverterFreeMethodInfo AudioConverter where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.GstAudio.Structs.AudioConverter.audioConverterFree",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstaudio-1.0.27/docs/GI-GstAudio-Structs-AudioConverter.html#v:audioConverterFree"
})
#endif
foreign import ccall "gst_audio_converter_get_config" gst_audio_converter_get_config ::
Ptr AudioConverter ->
Ptr Int32 ->
Ptr Int32 ->
IO (Ptr Gst.Structure.Structure)
audioConverterGetConfig ::
(B.CallStack.HasCallStack, MonadIO m) =>
AudioConverter
-> m ((Gst.Structure.Structure, Int32, Int32))
audioConverterGetConfig :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
AudioConverter -> m (Structure, Int32, Int32)
audioConverterGetConfig AudioConverter
convert = IO (Structure, Int32, Int32) -> m (Structure, Int32, Int32)
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Structure, Int32, Int32) -> m (Structure, Int32, Int32))
-> IO (Structure, Int32, Int32) -> m (Structure, Int32, Int32)
forall a b. (a -> b) -> a -> b
$ do
Ptr AudioConverter
convert' <- AudioConverter -> IO (Ptr AudioConverter)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr AudioConverter
convert
Ptr Int32
inRate <- IO (Ptr Int32)
forall a. Storable a => IO (Ptr a)
allocMem :: IO (Ptr Int32)
Ptr Int32
outRate <- IO (Ptr Int32)
forall a. Storable a => IO (Ptr a)
allocMem :: IO (Ptr Int32)
Ptr Structure
result <- Ptr AudioConverter -> Ptr Int32 -> Ptr Int32 -> IO (Ptr Structure)
gst_audio_converter_get_config Ptr AudioConverter
convert' Ptr Int32
inRate Ptr Int32
outRate
Text -> Ptr Structure -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"audioConverterGetConfig" Ptr Structure
result
Structure
result' <- ((ManagedPtr Structure -> Structure)
-> Ptr Structure -> IO Structure
forall a.
(HasCallStack, GBoxed a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
newBoxed ManagedPtr Structure -> Structure
Gst.Structure.Structure) Ptr Structure
result
Int32
inRate' <- Ptr Int32 -> IO Int32
forall a. Storable a => Ptr a -> IO a
peek Ptr Int32
inRate
Int32
outRate' <- Ptr Int32 -> IO Int32
forall a. Storable a => Ptr a -> IO a
peek Ptr Int32
outRate
AudioConverter -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr AudioConverter
convert
Ptr Int32 -> IO ()
forall a. Ptr a -> IO ()
freeMem Ptr Int32
inRate
Ptr Int32 -> IO ()
forall a. Ptr a -> IO ()
freeMem Ptr Int32
outRate
(Structure, Int32, Int32) -> IO (Structure, Int32, Int32)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Structure
result', Int32
inRate', Int32
outRate')
#if defined(ENABLE_OVERLOADING)
data AudioConverterGetConfigMethodInfo
instance (signature ~ (m ((Gst.Structure.Structure, Int32, Int32))), MonadIO m) => O.OverloadedMethod AudioConverterGetConfigMethodInfo AudioConverter signature where
overloadedMethod = audioConverterGetConfig
instance O.OverloadedMethodInfo AudioConverterGetConfigMethodInfo AudioConverter where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.GstAudio.Structs.AudioConverter.audioConverterGetConfig",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstaudio-1.0.27/docs/GI-GstAudio-Structs-AudioConverter.html#v:audioConverterGetConfig"
})
#endif
foreign import ccall "gst_audio_converter_get_in_frames" gst_audio_converter_get_in_frames ::
Ptr AudioConverter ->
Word64 ->
IO Word64
audioConverterGetInFrames ::
(B.CallStack.HasCallStack, MonadIO m) =>
AudioConverter
-> Word64
-> m Word64
audioConverterGetInFrames :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
AudioConverter -> Word64 -> m Word64
audioConverterGetInFrames AudioConverter
convert Word64
outFrames = 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
Ptr AudioConverter
convert' <- AudioConverter -> IO (Ptr AudioConverter)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr AudioConverter
convert
Word64
result <- Ptr AudioConverter -> Word64 -> IO Word64
gst_audio_converter_get_in_frames Ptr AudioConverter
convert' Word64
outFrames
AudioConverter -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr AudioConverter
convert
Word64 -> IO Word64
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Word64
result
#if defined(ENABLE_OVERLOADING)
data AudioConverterGetInFramesMethodInfo
instance (signature ~ (Word64 -> m Word64), MonadIO m) => O.OverloadedMethod AudioConverterGetInFramesMethodInfo AudioConverter signature where
overloadedMethod = audioConverterGetInFrames
instance O.OverloadedMethodInfo AudioConverterGetInFramesMethodInfo AudioConverter where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.GstAudio.Structs.AudioConverter.audioConverterGetInFrames",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstaudio-1.0.27/docs/GI-GstAudio-Structs-AudioConverter.html#v:audioConverterGetInFrames"
})
#endif
foreign import ccall "gst_audio_converter_get_max_latency" gst_audio_converter_get_max_latency ::
Ptr AudioConverter ->
IO Word64
audioConverterGetMaxLatency ::
(B.CallStack.HasCallStack, MonadIO m) =>
AudioConverter
-> m Word64
audioConverterGetMaxLatency :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
AudioConverter -> m Word64
audioConverterGetMaxLatency AudioConverter
convert = 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
Ptr AudioConverter
convert' <- AudioConverter -> IO (Ptr AudioConverter)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr AudioConverter
convert
Word64
result <- Ptr AudioConverter -> IO Word64
gst_audio_converter_get_max_latency Ptr AudioConverter
convert'
AudioConverter -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr AudioConverter
convert
Word64 -> IO Word64
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Word64
result
#if defined(ENABLE_OVERLOADING)
data AudioConverterGetMaxLatencyMethodInfo
instance (signature ~ (m Word64), MonadIO m) => O.OverloadedMethod AudioConverterGetMaxLatencyMethodInfo AudioConverter signature where
overloadedMethod = audioConverterGetMaxLatency
instance O.OverloadedMethodInfo AudioConverterGetMaxLatencyMethodInfo AudioConverter where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.GstAudio.Structs.AudioConverter.audioConverterGetMaxLatency",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstaudio-1.0.27/docs/GI-GstAudio-Structs-AudioConverter.html#v:audioConverterGetMaxLatency"
})
#endif
foreign import ccall "gst_audio_converter_get_out_frames" gst_audio_converter_get_out_frames ::
Ptr AudioConverter ->
Word64 ->
IO Word64
audioConverterGetOutFrames ::
(B.CallStack.HasCallStack, MonadIO m) =>
AudioConverter
-> Word64
-> m Word64
audioConverterGetOutFrames :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
AudioConverter -> Word64 -> m Word64
audioConverterGetOutFrames AudioConverter
convert Word64
inFrames = 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
Ptr AudioConverter
convert' <- AudioConverter -> IO (Ptr AudioConverter)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr AudioConverter
convert
Word64
result <- Ptr AudioConverter -> Word64 -> IO Word64
gst_audio_converter_get_out_frames Ptr AudioConverter
convert' Word64
inFrames
AudioConverter -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr AudioConverter
convert
Word64 -> IO Word64
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Word64
result
#if defined(ENABLE_OVERLOADING)
data AudioConverterGetOutFramesMethodInfo
instance (signature ~ (Word64 -> m Word64), MonadIO m) => O.OverloadedMethod AudioConverterGetOutFramesMethodInfo AudioConverter signature where
overloadedMethod = audioConverterGetOutFrames
instance O.OverloadedMethodInfo AudioConverterGetOutFramesMethodInfo AudioConverter where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.GstAudio.Structs.AudioConverter.audioConverterGetOutFrames",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstaudio-1.0.27/docs/GI-GstAudio-Structs-AudioConverter.html#v:audioConverterGetOutFrames"
})
#endif
foreign import ccall "gst_audio_converter_is_passthrough" gst_audio_converter_is_passthrough ::
Ptr AudioConverter ->
IO CInt
audioConverterIsPassthrough ::
(B.CallStack.HasCallStack, MonadIO m) =>
AudioConverter
-> m Bool
audioConverterIsPassthrough :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
AudioConverter -> m Bool
audioConverterIsPassthrough AudioConverter
convert = 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
Ptr AudioConverter
convert' <- AudioConverter -> IO (Ptr AudioConverter)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr AudioConverter
convert
CInt
result <- Ptr AudioConverter -> IO CInt
gst_audio_converter_is_passthrough Ptr AudioConverter
convert'
let result' :: Bool
result' = (CInt -> CInt -> Bool
forall a. Eq a => a -> a -> Bool
/= CInt
0) CInt
result
AudioConverter -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr AudioConverter
convert
Bool -> IO Bool
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Bool
result'
#if defined(ENABLE_OVERLOADING)
data AudioConverterIsPassthroughMethodInfo
instance (signature ~ (m Bool), MonadIO m) => O.OverloadedMethod AudioConverterIsPassthroughMethodInfo AudioConverter signature where
overloadedMethod = audioConverterIsPassthrough
instance O.OverloadedMethodInfo AudioConverterIsPassthroughMethodInfo AudioConverter where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.GstAudio.Structs.AudioConverter.audioConverterIsPassthrough",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstaudio-1.0.27/docs/GI-GstAudio-Structs-AudioConverter.html#v:audioConverterIsPassthrough"
})
#endif
foreign import ccall "gst_audio_converter_reset" gst_audio_converter_reset ::
Ptr AudioConverter ->
IO ()
audioConverterReset ::
(B.CallStack.HasCallStack, MonadIO m) =>
AudioConverter
-> m ()
audioConverterReset :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
AudioConverter -> m ()
audioConverterReset AudioConverter
convert = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
Ptr AudioConverter
convert' <- AudioConverter -> IO (Ptr AudioConverter)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr AudioConverter
convert
Ptr AudioConverter -> IO ()
gst_audio_converter_reset Ptr AudioConverter
convert'
AudioConverter -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr AudioConverter
convert
() -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()
#if defined(ENABLE_OVERLOADING)
data AudioConverterResetMethodInfo
instance (signature ~ (m ()), MonadIO m) => O.OverloadedMethod AudioConverterResetMethodInfo AudioConverter signature where
overloadedMethod = audioConverterReset
instance O.OverloadedMethodInfo AudioConverterResetMethodInfo AudioConverter where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.GstAudio.Structs.AudioConverter.audioConverterReset",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstaudio-1.0.27/docs/GI-GstAudio-Structs-AudioConverter.html#v:audioConverterReset"
})
#endif
foreign import ccall "gst_audio_converter_samples" gst_audio_converter_samples ::
Ptr AudioConverter ->
CUInt ->
Ptr () ->
Word64 ->
Ptr () ->
Word64 ->
IO CInt
audioConverterSamples ::
(B.CallStack.HasCallStack, MonadIO m) =>
AudioConverter
-> [GstAudio.Flags.AudioConverterFlags]
-> Ptr ()
-> Word64
-> Ptr ()
-> Word64
-> m Bool
audioConverterSamples :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
AudioConverter
-> [AudioConverterFlags]
-> Ptr ()
-> Word64
-> Ptr ()
-> Word64
-> m Bool
audioConverterSamples AudioConverter
convert [AudioConverterFlags]
flags Ptr ()
in_ Word64
inFrames Ptr ()
out Word64
outFrames = 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
Ptr AudioConverter
convert' <- AudioConverter -> IO (Ptr AudioConverter)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr AudioConverter
convert
let flags' :: CUInt
flags' = [AudioConverterFlags] -> CUInt
forall b a. (Num b, IsGFlag a) => [a] -> b
gflagsToWord [AudioConverterFlags]
flags
CInt
result <- Ptr AudioConverter
-> CUInt -> Ptr () -> Word64 -> Ptr () -> Word64 -> IO CInt
gst_audio_converter_samples Ptr AudioConverter
convert' CUInt
flags' Ptr ()
in_ Word64
inFrames Ptr ()
out Word64
outFrames
let result' :: Bool
result' = (CInt -> CInt -> Bool
forall a. Eq a => a -> a -> Bool
/= CInt
0) CInt
result
AudioConverter -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr AudioConverter
convert
Bool -> IO Bool
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Bool
result'
#if defined(ENABLE_OVERLOADING)
data AudioConverterSamplesMethodInfo
instance (signature ~ ([GstAudio.Flags.AudioConverterFlags] -> Ptr () -> Word64 -> Ptr () -> Word64 -> m Bool), MonadIO m) => O.OverloadedMethod AudioConverterSamplesMethodInfo AudioConverter signature where
overloadedMethod = audioConverterSamples
instance O.OverloadedMethodInfo AudioConverterSamplesMethodInfo AudioConverter where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.GstAudio.Structs.AudioConverter.audioConverterSamples",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstaudio-1.0.27/docs/GI-GstAudio-Structs-AudioConverter.html#v:audioConverterSamples"
})
#endif
foreign import ccall "gst_audio_converter_supports_inplace" gst_audio_converter_supports_inplace ::
Ptr AudioConverter ->
IO CInt
audioConverterSupportsInplace ::
(B.CallStack.HasCallStack, MonadIO m) =>
AudioConverter
-> m Bool
audioConverterSupportsInplace :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
AudioConverter -> m Bool
audioConverterSupportsInplace AudioConverter
convert = 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
Ptr AudioConverter
convert' <- AudioConverter -> IO (Ptr AudioConverter)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr AudioConverter
convert
CInt
result <- Ptr AudioConverter -> IO CInt
gst_audio_converter_supports_inplace Ptr AudioConverter
convert'
let result' :: Bool
result' = (CInt -> CInt -> Bool
forall a. Eq a => a -> a -> Bool
/= CInt
0) CInt
result
AudioConverter -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr AudioConverter
convert
Bool -> IO Bool
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Bool
result'
#if defined(ENABLE_OVERLOADING)
data AudioConverterSupportsInplaceMethodInfo
instance (signature ~ (m Bool), MonadIO m) => O.OverloadedMethod AudioConverterSupportsInplaceMethodInfo AudioConverter signature where
overloadedMethod = audioConverterSupportsInplace
instance O.OverloadedMethodInfo AudioConverterSupportsInplaceMethodInfo AudioConverter where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.GstAudio.Structs.AudioConverter.audioConverterSupportsInplace",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstaudio-1.0.27/docs/GI-GstAudio-Structs-AudioConverter.html#v:audioConverterSupportsInplace"
})
#endif
foreign import ccall "gst_audio_converter_update_config" gst_audio_converter_update_config ::
Ptr AudioConverter ->
Int32 ->
Int32 ->
Ptr Gst.Structure.Structure ->
IO CInt
audioConverterUpdateConfig ::
(B.CallStack.HasCallStack, MonadIO m) =>
AudioConverter
-> Int32
-> Int32
-> Maybe (Gst.Structure.Structure)
-> m Bool
audioConverterUpdateConfig :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
AudioConverter -> Int32 -> Int32 -> Maybe Structure -> m Bool
audioConverterUpdateConfig AudioConverter
convert Int32
inRate Int32
outRate Maybe Structure
config = 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
Ptr AudioConverter
convert' <- AudioConverter -> IO (Ptr AudioConverter)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr AudioConverter
convert
Ptr Structure
maybeConfig <- case Maybe Structure
config of
Maybe Structure
Nothing -> Ptr Structure -> IO (Ptr Structure)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr Structure
forall a. Ptr a
nullPtr
Just Structure
jConfig -> do
Ptr Structure
jConfig' <- Structure -> IO (Ptr Structure)
forall a. (HasCallStack, GBoxed a) => a -> IO (Ptr a)
B.ManagedPtr.disownBoxed Structure
jConfig
Ptr Structure -> IO (Ptr Structure)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr Structure
jConfig'
CInt
result <- Ptr AudioConverter -> Int32 -> Int32 -> Ptr Structure -> IO CInt
gst_audio_converter_update_config Ptr AudioConverter
convert' Int32
inRate Int32
outRate Ptr Structure
maybeConfig
let result' :: Bool
result' = (CInt -> CInt -> Bool
forall a. Eq a => a -> a -> Bool
/= CInt
0) CInt
result
AudioConverter -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr AudioConverter
convert
Maybe Structure -> (Structure -> IO ()) -> IO ()
forall (m :: * -> *) a. Monad m => Maybe a -> (a -> m ()) -> m ()
whenJust Maybe Structure
config Structure -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr
Bool -> IO Bool
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Bool
result'
#if defined(ENABLE_OVERLOADING)
data AudioConverterUpdateConfigMethodInfo
instance (signature ~ (Int32 -> Int32 -> Maybe (Gst.Structure.Structure) -> m Bool), MonadIO m) => O.OverloadedMethod AudioConverterUpdateConfigMethodInfo AudioConverter signature where
overloadedMethod = audioConverterUpdateConfig
instance O.OverloadedMethodInfo AudioConverterUpdateConfigMethodInfo AudioConverter where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.GstAudio.Structs.AudioConverter.audioConverterUpdateConfig",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstaudio-1.0.27/docs/GI-GstAudio-Structs-AudioConverter.html#v:audioConverterUpdateConfig"
})
#endif
#if defined(ENABLE_OVERLOADING)
type family ResolveAudioConverterMethod (t :: Symbol) (o :: DK.Type) :: DK.Type where
ResolveAudioConverterMethod "convert" o = AudioConverterConvertMethodInfo
ResolveAudioConverterMethod "free" o = AudioConverterFreeMethodInfo
ResolveAudioConverterMethod "isPassthrough" o = AudioConverterIsPassthroughMethodInfo
ResolveAudioConverterMethod "reset" o = AudioConverterResetMethodInfo
ResolveAudioConverterMethod "samples" o = AudioConverterSamplesMethodInfo
ResolveAudioConverterMethod "supportsInplace" o = AudioConverterSupportsInplaceMethodInfo
ResolveAudioConverterMethod "updateConfig" o = AudioConverterUpdateConfigMethodInfo
ResolveAudioConverterMethod "getConfig" o = AudioConverterGetConfigMethodInfo
ResolveAudioConverterMethod "getInFrames" o = AudioConverterGetInFramesMethodInfo
ResolveAudioConverterMethod "getMaxLatency" o = AudioConverterGetMaxLatencyMethodInfo
ResolveAudioConverterMethod "getOutFrames" o = AudioConverterGetOutFramesMethodInfo
ResolveAudioConverterMethod l o = O.MethodResolutionFailed l o
instance (info ~ ResolveAudioConverterMethod t AudioConverter, O.OverloadedMethod info AudioConverter p) => OL.IsLabel t (AudioConverter -> p) where
#if MIN_VERSION_base(4,10,0)
fromLabel = O.overloadedMethod @info
#else
fromLabel _ = O.overloadedMethod @info
#endif
#if MIN_VERSION_base(4,13,0)
instance (info ~ ResolveAudioConverterMethod t AudioConverter, O.OverloadedMethod info AudioConverter p, R.HasField t AudioConverter p) => R.HasField t AudioConverter p where
getField = O.overloadedMethod @info
#endif
instance (info ~ ResolveAudioConverterMethod t AudioConverter, O.OverloadedMethodInfo info AudioConverter) => OL.IsLabel t (O.MethodProxy info AudioConverter) where
#if MIN_VERSION_base(4,10,0)
fromLabel = O.MethodProxy
#else
fromLabel _ = O.MethodProxy
#endif
#endif