gi-gstaudio-1.0.17: GI/GstAudio/Structs/AudioDownmixMeta.hs
{- |
Copyright : Will Thompson, Iñaki García Etxebarria and Jonas Platte
License : LGPL-2.1
Maintainer : Iñaki García Etxebarria (inaki@blueleaf.cc)
Extra buffer metadata describing audio downmixing matrix. This metadata is
attached to audio buffers and contains a matrix to downmix the buffer number
of channels to /@channels@/.
/@matrix@/ is an two-dimensional array of /@toChannels@/ times /@fromChannels@/
coefficients, i.e. the i-th output channels is constructed by multiplicating
the input channels with the coefficients in /@matrix@/[i] and taking the sum
of the results.
-}
#define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \
&& !defined(__HADDOCK_VERSION__))
module GI.GstAudio.Structs.AudioDownmixMeta
(
-- * Exported types
AudioDownmixMeta(..) ,
newZeroAudioDownmixMeta ,
noAudioDownmixMeta ,
-- * Methods
-- ** getInfo #method:getInfo#
audioDownmixMetaGetInfo ,
-- * Properties
-- ** fromChannels #attr:fromChannels#
{- | the number of channels of the source
-}
#if ENABLE_OVERLOADING
audioDownmixMeta_fromChannels ,
#endif
getAudioDownmixMetaFromChannels ,
setAudioDownmixMetaFromChannels ,
-- ** fromPosition #attr:fromPosition#
{- | the channel positions of the source
-}
#if ENABLE_OVERLOADING
audioDownmixMeta_fromPosition ,
#endif
getAudioDownmixMetaFromPosition ,
setAudioDownmixMetaFromPosition ,
-- ** matrix #attr:matrix#
{- | the matrix coefficients.
-}
#if ENABLE_OVERLOADING
audioDownmixMeta_matrix ,
#endif
getAudioDownmixMetaMatrix ,
setAudioDownmixMetaMatrix ,
-- ** meta #attr:meta#
{- | parent 'GI.Gst.Structs.Meta.Meta'
-}
#if ENABLE_OVERLOADING
audioDownmixMeta_meta ,
#endif
getAudioDownmixMetaMeta ,
-- ** toChannels #attr:toChannels#
{- | the number of channels of the destination
-}
#if ENABLE_OVERLOADING
audioDownmixMeta_toChannels ,
#endif
getAudioDownmixMetaToChannels ,
setAudioDownmixMetaToChannels ,
-- ** toPosition #attr:toPosition#
{- | the channel positions of the destination
-}
#if ENABLE_OVERLOADING
audioDownmixMeta_toPosition ,
#endif
getAudioDownmixMetaToPosition ,
setAudioDownmixMetaToPosition ,
) 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.Structs.Meta as Gst.Meta
import qualified GI.Gst.Structs.MetaInfo as Gst.MetaInfo
import {-# SOURCE #-} qualified GI.GstAudio.Enums as GstAudio.Enums
-- | Memory-managed wrapper type.
newtype AudioDownmixMeta = AudioDownmixMeta (ManagedPtr AudioDownmixMeta)
instance WrappedPtr AudioDownmixMeta where
wrappedPtrCalloc = callocBytes 48
wrappedPtrCopy = \p -> withManagedPtr p (copyBytes 48 >=> wrapPtr AudioDownmixMeta)
wrappedPtrFree = Just ptr_to_g_free
-- | Construct a `AudioDownmixMeta` struct initialized to zero.
newZeroAudioDownmixMeta :: MonadIO m => m AudioDownmixMeta
newZeroAudioDownmixMeta = liftIO $ wrappedPtrCalloc >>= wrapPtr AudioDownmixMeta
instance tag ~ 'AttrSet => Constructible AudioDownmixMeta tag where
new _ attrs = do
o <- newZeroAudioDownmixMeta
GI.Attributes.set o attrs
return o
-- | A convenience alias for `Nothing` :: `Maybe` `AudioDownmixMeta`.
noAudioDownmixMeta :: Maybe AudioDownmixMeta
noAudioDownmixMeta = Nothing
{- |
Get the value of the “@meta@” field.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
@
'Data.GI.Base.Attributes.get' audioDownmixMeta #meta
@
-}
getAudioDownmixMetaMeta :: MonadIO m => AudioDownmixMeta -> m Gst.Meta.Meta
getAudioDownmixMetaMeta s = liftIO $ withManagedPtr s $ \ptr -> do
let val = ptr `plusPtr` 0 :: (Ptr Gst.Meta.Meta)
val' <- (newPtr Gst.Meta.Meta) val
return val'
#if ENABLE_OVERLOADING
data AudioDownmixMetaMetaFieldInfo
instance AttrInfo AudioDownmixMetaMetaFieldInfo where
type AttrAllowedOps AudioDownmixMetaMetaFieldInfo = '[ 'AttrGet]
type AttrSetTypeConstraint AudioDownmixMetaMetaFieldInfo = (~) (Ptr Gst.Meta.Meta)
type AttrBaseTypeConstraint AudioDownmixMetaMetaFieldInfo = (~) AudioDownmixMeta
type AttrGetType AudioDownmixMetaMetaFieldInfo = Gst.Meta.Meta
type AttrLabel AudioDownmixMetaMetaFieldInfo = "meta"
type AttrOrigin AudioDownmixMetaMetaFieldInfo = AudioDownmixMeta
attrGet _ = getAudioDownmixMetaMeta
attrSet _ = undefined
attrConstruct = undefined
attrClear _ = undefined
audioDownmixMeta_meta :: AttrLabelProxy "meta"
audioDownmixMeta_meta = AttrLabelProxy
#endif
{- |
Get the value of the “@from_position@” field.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
@
'Data.GI.Base.Attributes.get' audioDownmixMeta #fromPosition
@
-}
getAudioDownmixMetaFromPosition :: MonadIO m => AudioDownmixMeta -> m GstAudio.Enums.AudioChannelPosition
getAudioDownmixMetaFromPosition s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 16) :: IO CInt
let val' = (toEnum . fromIntegral) val
return val'
{- |
Set the value of the “@from_position@” field.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
@
'Data.GI.Base.Attributes.set' audioDownmixMeta [ #fromPosition 'Data.GI.Base.Attributes.:=' value ]
@
-}
setAudioDownmixMetaFromPosition :: MonadIO m => AudioDownmixMeta -> GstAudio.Enums.AudioChannelPosition -> m ()
setAudioDownmixMetaFromPosition s val = liftIO $ withManagedPtr s $ \ptr -> do
let val' = (fromIntegral . fromEnum) val
poke (ptr `plusPtr` 16) (val' :: CInt)
#if ENABLE_OVERLOADING
data AudioDownmixMetaFromPositionFieldInfo
instance AttrInfo AudioDownmixMetaFromPositionFieldInfo where
type AttrAllowedOps AudioDownmixMetaFromPositionFieldInfo = '[ 'AttrSet, 'AttrGet]
type AttrSetTypeConstraint AudioDownmixMetaFromPositionFieldInfo = (~) GstAudio.Enums.AudioChannelPosition
type AttrBaseTypeConstraint AudioDownmixMetaFromPositionFieldInfo = (~) AudioDownmixMeta
type AttrGetType AudioDownmixMetaFromPositionFieldInfo = GstAudio.Enums.AudioChannelPosition
type AttrLabel AudioDownmixMetaFromPositionFieldInfo = "from_position"
type AttrOrigin AudioDownmixMetaFromPositionFieldInfo = AudioDownmixMeta
attrGet _ = getAudioDownmixMetaFromPosition
attrSet _ = setAudioDownmixMetaFromPosition
attrConstruct = undefined
attrClear _ = undefined
audioDownmixMeta_fromPosition :: AttrLabelProxy "fromPosition"
audioDownmixMeta_fromPosition = AttrLabelProxy
#endif
{- |
Get the value of the “@to_position@” field.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
@
'Data.GI.Base.Attributes.get' audioDownmixMeta #toPosition
@
-}
getAudioDownmixMetaToPosition :: MonadIO m => AudioDownmixMeta -> m GstAudio.Enums.AudioChannelPosition
getAudioDownmixMetaToPosition s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 24) :: IO CInt
let val' = (toEnum . fromIntegral) val
return val'
{- |
Set the value of the “@to_position@” field.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
@
'Data.GI.Base.Attributes.set' audioDownmixMeta [ #toPosition 'Data.GI.Base.Attributes.:=' value ]
@
-}
setAudioDownmixMetaToPosition :: MonadIO m => AudioDownmixMeta -> GstAudio.Enums.AudioChannelPosition -> m ()
setAudioDownmixMetaToPosition s val = liftIO $ withManagedPtr s $ \ptr -> do
let val' = (fromIntegral . fromEnum) val
poke (ptr `plusPtr` 24) (val' :: CInt)
#if ENABLE_OVERLOADING
data AudioDownmixMetaToPositionFieldInfo
instance AttrInfo AudioDownmixMetaToPositionFieldInfo where
type AttrAllowedOps AudioDownmixMetaToPositionFieldInfo = '[ 'AttrSet, 'AttrGet]
type AttrSetTypeConstraint AudioDownmixMetaToPositionFieldInfo = (~) GstAudio.Enums.AudioChannelPosition
type AttrBaseTypeConstraint AudioDownmixMetaToPositionFieldInfo = (~) AudioDownmixMeta
type AttrGetType AudioDownmixMetaToPositionFieldInfo = GstAudio.Enums.AudioChannelPosition
type AttrLabel AudioDownmixMetaToPositionFieldInfo = "to_position"
type AttrOrigin AudioDownmixMetaToPositionFieldInfo = AudioDownmixMeta
attrGet _ = getAudioDownmixMetaToPosition
attrSet _ = setAudioDownmixMetaToPosition
attrConstruct = undefined
attrClear _ = undefined
audioDownmixMeta_toPosition :: AttrLabelProxy "toPosition"
audioDownmixMeta_toPosition = AttrLabelProxy
#endif
{- |
Get the value of the “@from_channels@” field.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
@
'Data.GI.Base.Attributes.get' audioDownmixMeta #fromChannels
@
-}
getAudioDownmixMetaFromChannels :: MonadIO m => AudioDownmixMeta -> m Int32
getAudioDownmixMetaFromChannels s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 32) :: IO Int32
return val
{- |
Set the value of the “@from_channels@” field.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
@
'Data.GI.Base.Attributes.set' audioDownmixMeta [ #fromChannels 'Data.GI.Base.Attributes.:=' value ]
@
-}
setAudioDownmixMetaFromChannels :: MonadIO m => AudioDownmixMeta -> Int32 -> m ()
setAudioDownmixMetaFromChannels s val = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 32) (val :: Int32)
#if ENABLE_OVERLOADING
data AudioDownmixMetaFromChannelsFieldInfo
instance AttrInfo AudioDownmixMetaFromChannelsFieldInfo where
type AttrAllowedOps AudioDownmixMetaFromChannelsFieldInfo = '[ 'AttrSet, 'AttrGet]
type AttrSetTypeConstraint AudioDownmixMetaFromChannelsFieldInfo = (~) Int32
type AttrBaseTypeConstraint AudioDownmixMetaFromChannelsFieldInfo = (~) AudioDownmixMeta
type AttrGetType AudioDownmixMetaFromChannelsFieldInfo = Int32
type AttrLabel AudioDownmixMetaFromChannelsFieldInfo = "from_channels"
type AttrOrigin AudioDownmixMetaFromChannelsFieldInfo = AudioDownmixMeta
attrGet _ = getAudioDownmixMetaFromChannels
attrSet _ = setAudioDownmixMetaFromChannels
attrConstruct = undefined
attrClear _ = undefined
audioDownmixMeta_fromChannels :: AttrLabelProxy "fromChannels"
audioDownmixMeta_fromChannels = AttrLabelProxy
#endif
{- |
Get the value of the “@to_channels@” field.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
@
'Data.GI.Base.Attributes.get' audioDownmixMeta #toChannels
@
-}
getAudioDownmixMetaToChannels :: MonadIO m => AudioDownmixMeta -> m Int32
getAudioDownmixMetaToChannels s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 36) :: IO Int32
return val
{- |
Set the value of the “@to_channels@” field.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
@
'Data.GI.Base.Attributes.set' audioDownmixMeta [ #toChannels 'Data.GI.Base.Attributes.:=' value ]
@
-}
setAudioDownmixMetaToChannels :: MonadIO m => AudioDownmixMeta -> Int32 -> m ()
setAudioDownmixMetaToChannels s val = liftIO $ withManagedPtr s $ \ptr -> do
poke (ptr `plusPtr` 36) (val :: Int32)
#if ENABLE_OVERLOADING
data AudioDownmixMetaToChannelsFieldInfo
instance AttrInfo AudioDownmixMetaToChannelsFieldInfo where
type AttrAllowedOps AudioDownmixMetaToChannelsFieldInfo = '[ 'AttrSet, 'AttrGet]
type AttrSetTypeConstraint AudioDownmixMetaToChannelsFieldInfo = (~) Int32
type AttrBaseTypeConstraint AudioDownmixMetaToChannelsFieldInfo = (~) AudioDownmixMeta
type AttrGetType AudioDownmixMetaToChannelsFieldInfo = Int32
type AttrLabel AudioDownmixMetaToChannelsFieldInfo = "to_channels"
type AttrOrigin AudioDownmixMetaToChannelsFieldInfo = AudioDownmixMeta
attrGet _ = getAudioDownmixMetaToChannels
attrSet _ = setAudioDownmixMetaToChannels
attrConstruct = undefined
attrClear _ = undefined
audioDownmixMeta_toChannels :: AttrLabelProxy "toChannels"
audioDownmixMeta_toChannels = AttrLabelProxy
#endif
{- |
Get the value of the “@matrix@” field.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
@
'Data.GI.Base.Attributes.get' audioDownmixMeta #matrix
@
-}
getAudioDownmixMetaMatrix :: MonadIO m => AudioDownmixMeta -> m Float
getAudioDownmixMetaMatrix s = liftIO $ withManagedPtr s $ \ptr -> do
val <- peek (ptr `plusPtr` 40) :: IO CFloat
let val' = realToFrac val
return val'
{- |
Set the value of the “@matrix@” field.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
@
'Data.GI.Base.Attributes.set' audioDownmixMeta [ #matrix 'Data.GI.Base.Attributes.:=' value ]
@
-}
setAudioDownmixMetaMatrix :: MonadIO m => AudioDownmixMeta -> Float -> m ()
setAudioDownmixMetaMatrix s val = liftIO $ withManagedPtr s $ \ptr -> do
let val' = realToFrac val
poke (ptr `plusPtr` 40) (val' :: CFloat)
#if ENABLE_OVERLOADING
data AudioDownmixMetaMatrixFieldInfo
instance AttrInfo AudioDownmixMetaMatrixFieldInfo where
type AttrAllowedOps AudioDownmixMetaMatrixFieldInfo = '[ 'AttrSet, 'AttrGet]
type AttrSetTypeConstraint AudioDownmixMetaMatrixFieldInfo = (~) Float
type AttrBaseTypeConstraint AudioDownmixMetaMatrixFieldInfo = (~) AudioDownmixMeta
type AttrGetType AudioDownmixMetaMatrixFieldInfo = Float
type AttrLabel AudioDownmixMetaMatrixFieldInfo = "matrix"
type AttrOrigin AudioDownmixMetaMatrixFieldInfo = AudioDownmixMeta
attrGet _ = getAudioDownmixMetaMatrix
attrSet _ = setAudioDownmixMetaMatrix
attrConstruct = undefined
attrClear _ = undefined
audioDownmixMeta_matrix :: AttrLabelProxy "matrix"
audioDownmixMeta_matrix = AttrLabelProxy
#endif
#if ENABLE_OVERLOADING
instance O.HasAttributeList AudioDownmixMeta
type instance O.AttributeList AudioDownmixMeta = AudioDownmixMetaAttributeList
type AudioDownmixMetaAttributeList = ('[ '("meta", AudioDownmixMetaMetaFieldInfo), '("fromPosition", AudioDownmixMetaFromPositionFieldInfo), '("toPosition", AudioDownmixMetaToPositionFieldInfo), '("fromChannels", AudioDownmixMetaFromChannelsFieldInfo), '("toChannels", AudioDownmixMetaToChannelsFieldInfo), '("matrix", AudioDownmixMetaMatrixFieldInfo)] :: [(Symbol, *)])
#endif
-- method AudioDownmixMeta::get_info
-- method type : MemberFunction
-- Args : []
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Gst", name = "MetaInfo"}))
-- throws : False
-- Skip return : False
foreign import ccall "gst_audio_downmix_meta_get_info" gst_audio_downmix_meta_get_info ::
IO (Ptr Gst.MetaInfo.MetaInfo)
{- |
/No description available in the introspection data./
-}
audioDownmixMetaGetInfo ::
(B.CallStack.HasCallStack, MonadIO m) =>
m Gst.MetaInfo.MetaInfo
audioDownmixMetaGetInfo = liftIO $ do
result <- gst_audio_downmix_meta_get_info
checkUnexpectedReturnNULL "audioDownmixMetaGetInfo" result
result' <- (newPtr Gst.MetaInfo.MetaInfo) result
return result'
#if ENABLE_OVERLOADING
#endif
#if ENABLE_OVERLOADING
type family ResolveAudioDownmixMetaMethod (t :: Symbol) (o :: *) :: * where
ResolveAudioDownmixMetaMethod l o = O.MethodResolutionFailed l o
instance (info ~ ResolveAudioDownmixMetaMethod t AudioDownmixMeta, O.MethodInfo info AudioDownmixMeta p) => OL.IsLabel t (AudioDownmixMeta -> 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