#define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \
&& !defined(__HADDOCK_VERSION__))
module GI.GstAudio.Structs.AudioInfo
(
AudioInfo(..) ,
newZeroAudioInfo ,
noAudioInfo ,
#if ENABLE_OVERLOADING
AudioInfoConvertMethodInfo ,
#endif
audioInfoConvert ,
#if ENABLE_OVERLOADING
AudioInfoCopyMethodInfo ,
#endif
audioInfoCopy ,
#if ENABLE_OVERLOADING
AudioInfoFreeMethodInfo ,
#endif
audioInfoFree ,
#if ENABLE_OVERLOADING
AudioInfoFromCapsMethodInfo ,
#endif
audioInfoFromCaps ,
#if ENABLE_OVERLOADING
AudioInfoInitMethodInfo ,
#endif
audioInfoInit ,
#if ENABLE_OVERLOADING
AudioInfoIsEqualMethodInfo ,
#endif
audioInfoIsEqual ,
audioInfoNew ,
#if ENABLE_OVERLOADING
AudioInfoSetFormatMethodInfo ,
#endif
audioInfoSetFormat ,
#if ENABLE_OVERLOADING
AudioInfoToCapsMethodInfo ,
#endif
audioInfoToCaps ,
#if ENABLE_OVERLOADING
audioInfo_bpf ,
#endif
getAudioInfoBpf ,
setAudioInfoBpf ,
#if ENABLE_OVERLOADING
audioInfo_channels ,
#endif
getAudioInfoChannels ,
setAudioInfoChannels ,
#if ENABLE_OVERLOADING
audioInfo_finfo ,
#endif
clearAudioInfoFinfo ,
getAudioInfoFinfo ,
setAudioInfoFinfo ,
#if ENABLE_OVERLOADING
audioInfo_flags ,
#endif
getAudioInfoFlags ,
setAudioInfoFlags ,
#if ENABLE_OVERLOADING
audioInfo_layout ,
#endif
getAudioInfoLayout ,
setAudioInfoLayout ,
#if ENABLE_OVERLOADING
audioInfo_rate ,
#endif
getAudioInfoRate ,
setAudioInfoRate ,
) 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.ManagedPtr as B.ManagedPtr
import qualified Data.GI.Base.GClosure as B.GClosure
import qualified Data.GI.Base.GError as B.GError
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.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 GI.Gst.Enums as Gst.Enums
import qualified GI.Gst.Structs.Caps as Gst.Caps
import {-# SOURCE #-} qualified GI.GstAudio.Enums as GstAudio.Enums
import {-# SOURCE #-} qualified GI.GstAudio.Flags as GstAudio.Flags
import {-# SOURCE #-} qualified GI.GstAudio.Structs.AudioFormatInfo as GstAudio.AudioFormatInfo
newtype AudioInfo = AudioInfo (ManagedPtr AudioInfo)
foreign import ccall "gst_audio_info_get_type" c_gst_audio_info_get_type ::
IO GType
instance BoxedObject AudioInfo where
boxedType _ = c_gst_audio_info_get_type
newZeroAudioInfo :: MonadIO m => m AudioInfo
newZeroAudioInfo = liftIO $ callocBoxedBytes 320 >>= wrapBoxed AudioInfo
instance tag ~ 'AttrSet => Constructible AudioInfo tag where
new _ attrs = do
o <- newZeroAudioInfo
GI.Attributes.set o attrs
return o
noAudioInfo :: Maybe AudioInfo
noAudioInfo = Nothing
getAudioInfoFinfo :: MonadIO m => AudioInfo -> m (Maybe GstAudio.AudioFormatInfo.AudioFormatInfo)
getAudioInfoFinfo s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 0) :: IO (Ptr GstAudio.AudioFormatInfo.AudioFormatInfo)
result <- SP.convertIfNonNull val $ \val' -> do
val'' <- (newPtr GstAudio.AudioFormatInfo.AudioFormatInfo) val'
return val''
return result
setAudioInfoFinfo :: MonadIO m => AudioInfo -> Ptr GstAudio.AudioFormatInfo.AudioFormatInfo -> m ()
setAudioInfoFinfo s val = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 0) (val :: Ptr GstAudio.AudioFormatInfo.AudioFormatInfo)
clearAudioInfoFinfo :: MonadIO m => AudioInfo -> m ()
clearAudioInfoFinfo s = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 0) (FP.nullPtr :: Ptr GstAudio.AudioFormatInfo.AudioFormatInfo)
#if ENABLE_OVERLOADING
data AudioInfoFinfoFieldInfo
instance AttrInfo AudioInfoFinfoFieldInfo where
type AttrAllowedOps AudioInfoFinfoFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear]
type AttrSetTypeConstraint AudioInfoFinfoFieldInfo = (~) (Ptr GstAudio.AudioFormatInfo.AudioFormatInfo)
type AttrBaseTypeConstraint AudioInfoFinfoFieldInfo = (~) AudioInfo
type AttrGetType AudioInfoFinfoFieldInfo = Maybe GstAudio.AudioFormatInfo.AudioFormatInfo
type AttrLabel AudioInfoFinfoFieldInfo = "finfo"
type AttrOrigin AudioInfoFinfoFieldInfo = AudioInfo
attrGet _ = getAudioInfoFinfo
attrSet _ = setAudioInfoFinfo
attrConstruct = undefined
attrClear _ = clearAudioInfoFinfo
audioInfo_finfo :: AttrLabelProxy "finfo"
audioInfo_finfo = AttrLabelProxy
#endif
getAudioInfoFlags :: MonadIO m => AudioInfo -> m [GstAudio.Flags.AudioFlags]
getAudioInfoFlags s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 8) :: IO CUInt
let val' = wordToGFlags val
return val'
setAudioInfoFlags :: MonadIO m => AudioInfo -> [GstAudio.Flags.AudioFlags] -> m ()
setAudioInfoFlags s val = liftIO $ withManagedPtr s $ \ptr -> do
let val' = gflagsToWord val
poke (ptr `plusPtr` 8) (val' :: CUInt)
#if ENABLE_OVERLOADING
data AudioInfoFlagsFieldInfo
instance AttrInfo AudioInfoFlagsFieldInfo where
type AttrAllowedOps AudioInfoFlagsFieldInfo = '[ 'AttrSet, 'AttrGet]
type AttrSetTypeConstraint AudioInfoFlagsFieldInfo = (~) [GstAudio.Flags.AudioFlags]
type AttrBaseTypeConstraint AudioInfoFlagsFieldInfo = (~) AudioInfo
type AttrGetType AudioInfoFlagsFieldInfo = [GstAudio.Flags.AudioFlags]
type AttrLabel AudioInfoFlagsFieldInfo = "flags"
type AttrOrigin AudioInfoFlagsFieldInfo = AudioInfo
attrGet _ = getAudioInfoFlags
attrSet _ = setAudioInfoFlags
attrConstruct = undefined
attrClear _ = undefined
audioInfo_flags :: AttrLabelProxy "flags"
audioInfo_flags = AttrLabelProxy
#endif
getAudioInfoLayout :: MonadIO m => AudioInfo -> m GstAudio.Enums.AudioLayout
getAudioInfoLayout s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 12) :: IO CUInt
let val' = (toEnum . fromIntegral) val
return val'
setAudioInfoLayout :: MonadIO m => AudioInfo -> GstAudio.Enums.AudioLayout -> m ()
setAudioInfoLayout s val = liftIO $ withManagedPtr s $ \ptr -> do
let val' = (fromIntegral . fromEnum) val
poke (ptr `plusPtr` 12) (val' :: CUInt)
#if ENABLE_OVERLOADING
data AudioInfoLayoutFieldInfo
instance AttrInfo AudioInfoLayoutFieldInfo where
type AttrAllowedOps AudioInfoLayoutFieldInfo = '[ 'AttrSet, 'AttrGet]
type AttrSetTypeConstraint AudioInfoLayoutFieldInfo = (~) GstAudio.Enums.AudioLayout
type AttrBaseTypeConstraint AudioInfoLayoutFieldInfo = (~) AudioInfo
type AttrGetType AudioInfoLayoutFieldInfo = GstAudio.Enums.AudioLayout
type AttrLabel AudioInfoLayoutFieldInfo = "layout"
type AttrOrigin AudioInfoLayoutFieldInfo = AudioInfo
attrGet _ = getAudioInfoLayout
attrSet _ = setAudioInfoLayout
attrConstruct = undefined
attrClear _ = undefined
audioInfo_layout :: AttrLabelProxy "layout"
audioInfo_layout = AttrLabelProxy
#endif
getAudioInfoRate :: MonadIO m => AudioInfo -> m Int32
getAudioInfoRate s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 16) :: IO Int32
return val
setAudioInfoRate :: MonadIO m => AudioInfo -> Int32 -> m ()
setAudioInfoRate s val = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 16) (val :: Int32)
#if ENABLE_OVERLOADING
data AudioInfoRateFieldInfo
instance AttrInfo AudioInfoRateFieldInfo where
type AttrAllowedOps AudioInfoRateFieldInfo = '[ 'AttrSet, 'AttrGet]
type AttrSetTypeConstraint AudioInfoRateFieldInfo = (~) Int32
type AttrBaseTypeConstraint AudioInfoRateFieldInfo = (~) AudioInfo
type AttrGetType AudioInfoRateFieldInfo = Int32
type AttrLabel AudioInfoRateFieldInfo = "rate"
type AttrOrigin AudioInfoRateFieldInfo = AudioInfo
attrGet _ = getAudioInfoRate
attrSet _ = setAudioInfoRate
attrConstruct = undefined
attrClear _ = undefined
audioInfo_rate :: AttrLabelProxy "rate"
audioInfo_rate = AttrLabelProxy
#endif
getAudioInfoChannels :: MonadIO m => AudioInfo -> m Int32
getAudioInfoChannels s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 20) :: IO Int32
return val
setAudioInfoChannels :: MonadIO m => AudioInfo -> Int32 -> m ()
setAudioInfoChannels s val = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 20) (val :: Int32)
#if ENABLE_OVERLOADING
data AudioInfoChannelsFieldInfo
instance AttrInfo AudioInfoChannelsFieldInfo where
type AttrAllowedOps AudioInfoChannelsFieldInfo = '[ 'AttrSet, 'AttrGet]
type AttrSetTypeConstraint AudioInfoChannelsFieldInfo = (~) Int32
type AttrBaseTypeConstraint AudioInfoChannelsFieldInfo = (~) AudioInfo
type AttrGetType AudioInfoChannelsFieldInfo = Int32
type AttrLabel AudioInfoChannelsFieldInfo = "channels"
type AttrOrigin AudioInfoChannelsFieldInfo = AudioInfo
attrGet _ = getAudioInfoChannels
attrSet _ = setAudioInfoChannels
attrConstruct = undefined
attrClear _ = undefined
audioInfo_channels :: AttrLabelProxy "channels"
audioInfo_channels = AttrLabelProxy
#endif
getAudioInfoBpf :: MonadIO m => AudioInfo -> m Int32
getAudioInfoBpf s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 24) :: IO Int32
return val
setAudioInfoBpf :: MonadIO m => AudioInfo -> Int32 -> m ()
setAudioInfoBpf s val = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 24) (val :: Int32)
#if ENABLE_OVERLOADING
data AudioInfoBpfFieldInfo
instance AttrInfo AudioInfoBpfFieldInfo where
type AttrAllowedOps AudioInfoBpfFieldInfo = '[ 'AttrSet, 'AttrGet]
type AttrSetTypeConstraint AudioInfoBpfFieldInfo = (~) Int32
type AttrBaseTypeConstraint AudioInfoBpfFieldInfo = (~) AudioInfo
type AttrGetType AudioInfoBpfFieldInfo = Int32
type AttrLabel AudioInfoBpfFieldInfo = "bpf"
type AttrOrigin AudioInfoBpfFieldInfo = AudioInfo
attrGet _ = getAudioInfoBpf
attrSet _ = setAudioInfoBpf
attrConstruct = undefined
attrClear _ = undefined
audioInfo_bpf :: AttrLabelProxy "bpf"
audioInfo_bpf = AttrLabelProxy
#endif
#if ENABLE_OVERLOADING
instance O.HasAttributeList AudioInfo
type instance O.AttributeList AudioInfo = AudioInfoAttributeList
type AudioInfoAttributeList = ('[ '("finfo", AudioInfoFinfoFieldInfo), '("flags", AudioInfoFlagsFieldInfo), '("layout", AudioInfoLayoutFieldInfo), '("rate", AudioInfoRateFieldInfo), '("channels", AudioInfoChannelsFieldInfo), '("bpf", AudioInfoBpfFieldInfo)] :: [(Symbol, *)])
#endif
foreign import ccall "gst_audio_info_new" gst_audio_info_new ::
IO (Ptr AudioInfo)
audioInfoNew ::
(B.CallStack.HasCallStack, MonadIO m) =>
m AudioInfo
audioInfoNew = liftIO $ do
result <- gst_audio_info_new
checkUnexpectedReturnNULL "audioInfoNew" result
result' <- (wrapBoxed AudioInfo) result
return result'
#if ENABLE_OVERLOADING
#endif
foreign import ccall "gst_audio_info_convert" gst_audio_info_convert ::
Ptr AudioInfo ->
CUInt ->
Int64 ->
CUInt ->
Ptr Int64 ->
IO CInt
audioInfoConvert ::
(B.CallStack.HasCallStack, MonadIO m) =>
AudioInfo
-> Gst.Enums.Format
-> Int64
-> Gst.Enums.Format
-> m ((Bool, Int64))
audioInfoConvert info srcFmt srcVal destFmt = liftIO $ do
info' <- unsafeManagedPtrGetPtr info
let srcFmt' = (fromIntegral . fromEnum) srcFmt
let destFmt' = (fromIntegral . fromEnum) destFmt
destVal <- allocMem :: IO (Ptr Int64)
result <- gst_audio_info_convert info' srcFmt' srcVal destFmt' destVal
let result' = (/= 0) result
destVal' <- peek destVal
touchManagedPtr info
freeMem destVal
return (result', destVal')
#if ENABLE_OVERLOADING
data AudioInfoConvertMethodInfo
instance (signature ~ (Gst.Enums.Format -> Int64 -> Gst.Enums.Format -> m ((Bool, Int64))), MonadIO m) => O.MethodInfo AudioInfoConvertMethodInfo AudioInfo signature where
overloadedMethod _ = audioInfoConvert
#endif
foreign import ccall "gst_audio_info_copy" gst_audio_info_copy ::
Ptr AudioInfo ->
IO (Ptr AudioInfo)
audioInfoCopy ::
(B.CallStack.HasCallStack, MonadIO m) =>
AudioInfo
-> m AudioInfo
audioInfoCopy info = liftIO $ do
info' <- unsafeManagedPtrGetPtr info
result <- gst_audio_info_copy info'
checkUnexpectedReturnNULL "audioInfoCopy" result
result' <- (wrapBoxed AudioInfo) result
touchManagedPtr info
return result'
#if ENABLE_OVERLOADING
data AudioInfoCopyMethodInfo
instance (signature ~ (m AudioInfo), MonadIO m) => O.MethodInfo AudioInfoCopyMethodInfo AudioInfo signature where
overloadedMethod _ = audioInfoCopy
#endif
foreign import ccall "gst_audio_info_free" gst_audio_info_free ::
Ptr AudioInfo ->
IO ()
audioInfoFree ::
(B.CallStack.HasCallStack, MonadIO m) =>
AudioInfo
-> m ()
audioInfoFree info = liftIO $ do
info' <- unsafeManagedPtrGetPtr info
gst_audio_info_free info'
touchManagedPtr info
return ()
#if ENABLE_OVERLOADING
data AudioInfoFreeMethodInfo
instance (signature ~ (m ()), MonadIO m) => O.MethodInfo AudioInfoFreeMethodInfo AudioInfo signature where
overloadedMethod _ = audioInfoFree
#endif
foreign import ccall "gst_audio_info_from_caps" gst_audio_info_from_caps ::
Ptr AudioInfo ->
Ptr Gst.Caps.Caps ->
IO CInt
audioInfoFromCaps ::
(B.CallStack.HasCallStack, MonadIO m) =>
AudioInfo
-> Gst.Caps.Caps
-> m Bool
audioInfoFromCaps info caps = liftIO $ do
info' <- unsafeManagedPtrGetPtr info
caps' <- unsafeManagedPtrGetPtr caps
result <- gst_audio_info_from_caps info' caps'
let result' = (/= 0) result
touchManagedPtr info
touchManagedPtr caps
return result'
#if ENABLE_OVERLOADING
data AudioInfoFromCapsMethodInfo
instance (signature ~ (Gst.Caps.Caps -> m Bool), MonadIO m) => O.MethodInfo AudioInfoFromCapsMethodInfo AudioInfo signature where
overloadedMethod _ = audioInfoFromCaps
#endif
foreign import ccall "gst_audio_info_init" gst_audio_info_init ::
Ptr AudioInfo ->
IO ()
audioInfoInit ::
(B.CallStack.HasCallStack, MonadIO m) =>
AudioInfo
-> m ()
audioInfoInit info = liftIO $ do
info' <- unsafeManagedPtrGetPtr info
gst_audio_info_init info'
touchManagedPtr info
return ()
#if ENABLE_OVERLOADING
data AudioInfoInitMethodInfo
instance (signature ~ (m ()), MonadIO m) => O.MethodInfo AudioInfoInitMethodInfo AudioInfo signature where
overloadedMethod _ = audioInfoInit
#endif
foreign import ccall "gst_audio_info_is_equal" gst_audio_info_is_equal ::
Ptr AudioInfo ->
Ptr AudioInfo ->
IO CInt
audioInfoIsEqual ::
(B.CallStack.HasCallStack, MonadIO m) =>
AudioInfo
-> AudioInfo
-> m Bool
audioInfoIsEqual info other = liftIO $ do
info' <- unsafeManagedPtrGetPtr info
other' <- unsafeManagedPtrGetPtr other
result <- gst_audio_info_is_equal info' other'
let result' = (/= 0) result
touchManagedPtr info
touchManagedPtr other
return result'
#if ENABLE_OVERLOADING
data AudioInfoIsEqualMethodInfo
instance (signature ~ (AudioInfo -> m Bool), MonadIO m) => O.MethodInfo AudioInfoIsEqualMethodInfo AudioInfo signature where
overloadedMethod _ = audioInfoIsEqual
#endif
foreign import ccall "gst_audio_info_set_format" gst_audio_info_set_format ::
Ptr AudioInfo ->
CUInt ->
Int32 ->
Int32 ->
Ptr CInt ->
IO ()
audioInfoSetFormat ::
(B.CallStack.HasCallStack, MonadIO m) =>
AudioInfo
-> GstAudio.Enums.AudioFormat
-> Int32
-> Int32
-> Maybe ([GstAudio.Enums.AudioChannelPosition])
-> m ()
audioInfoSetFormat info format rate channels position = liftIO $ do
info' <- unsafeManagedPtrGetPtr info
let format' = (fromIntegral . fromEnum) format
maybePosition <- case position of
Nothing -> return nullPtr
Just jPosition -> do
let jPosition' = map (fromIntegral . fromEnum) jPosition
jPosition'' <- packStorableArray jPosition'
return jPosition''
gst_audio_info_set_format info' format' rate channels maybePosition
touchManagedPtr info
freeMem maybePosition
return ()
#if ENABLE_OVERLOADING
data AudioInfoSetFormatMethodInfo
instance (signature ~ (GstAudio.Enums.AudioFormat -> Int32 -> Int32 -> Maybe ([GstAudio.Enums.AudioChannelPosition]) -> m ()), MonadIO m) => O.MethodInfo AudioInfoSetFormatMethodInfo AudioInfo signature where
overloadedMethod _ = audioInfoSetFormat
#endif
foreign import ccall "gst_audio_info_to_caps" gst_audio_info_to_caps ::
Ptr AudioInfo ->
IO (Ptr Gst.Caps.Caps)
audioInfoToCaps ::
(B.CallStack.HasCallStack, MonadIO m) =>
AudioInfo
-> m Gst.Caps.Caps
audioInfoToCaps info = liftIO $ do
info' <- unsafeManagedPtrGetPtr info
result <- gst_audio_info_to_caps info'
checkUnexpectedReturnNULL "audioInfoToCaps" result
result' <- (wrapBoxed Gst.Caps.Caps) result
touchManagedPtr info
return result'
#if ENABLE_OVERLOADING
data AudioInfoToCapsMethodInfo
instance (signature ~ (m Gst.Caps.Caps), MonadIO m) => O.MethodInfo AudioInfoToCapsMethodInfo AudioInfo signature where
overloadedMethod _ = audioInfoToCaps
#endif
#if ENABLE_OVERLOADING
type family ResolveAudioInfoMethod (t :: Symbol) (o :: *) :: * where
ResolveAudioInfoMethod "convert" o = AudioInfoConvertMethodInfo
ResolveAudioInfoMethod "copy" o = AudioInfoCopyMethodInfo
ResolveAudioInfoMethod "free" o = AudioInfoFreeMethodInfo
ResolveAudioInfoMethod "fromCaps" o = AudioInfoFromCapsMethodInfo
ResolveAudioInfoMethod "init" o = AudioInfoInitMethodInfo
ResolveAudioInfoMethod "isEqual" o = AudioInfoIsEqualMethodInfo
ResolveAudioInfoMethod "toCaps" o = AudioInfoToCapsMethodInfo
ResolveAudioInfoMethod "setFormat" o = AudioInfoSetFormatMethodInfo
ResolveAudioInfoMethod l o = O.MethodResolutionFailed l o
instance (info ~ ResolveAudioInfoMethod t AudioInfo, O.MethodInfo info AudioInfo p) => OL.IsLabel t (AudioInfo -> p) where
#if MIN_VERSION_base(4,10,0)
fromLabel = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)
#else
fromLabel _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)
#endif
#endif