{- | 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 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 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 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 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 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 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 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 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 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 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 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