{-# LANGUAGE TypeApplications #-}


-- | Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
-- License    : LGPL-2.1
-- Maintainer : Iñaki García Etxebarria
-- 
-- t'GI.GstAudio.Structs.AudioDownmixMeta.AudioDownmixMeta' defines an audio downmix matrix to be send along with
-- audio buffers. These functions in this module help to create and attach the
-- meta as well as extracting it.
-- 
-- /Since: 1.16/

#if (MIN_VERSION_haskell_gi_overloading(1,0,0) && !defined(__HADDOCK_VERSION__))
#define ENABLE_OVERLOADING
#endif

module GI.GstAudio.Structs.AudioMeta
    ( 

-- * Exported types
    AudioMeta(..)                           ,
    newZeroAudioMeta                        ,
    noAudioMeta                             ,


 -- * Methods
-- ** Overloaded methods #method:Overloaded methods#

#if defined(ENABLE_OVERLOADING)
    ResolveAudioMetaMethod                  ,
#endif


-- ** getInfo #method:getInfo#

    audioMetaGetInfo                        ,




 -- * Properties
-- ** info #attr:info#
-- | the audio properties of the buffer

#if defined(ENABLE_OVERLOADING)
    audioMeta_info                          ,
#endif
    getAudioMetaInfo                        ,


-- ** meta #attr:meta#
-- | parent t'GI.Gst.Structs.Meta.Meta'

#if defined(ENABLE_OVERLOADING)
    audioMeta_meta                          ,
#endif
    getAudioMetaMeta                        ,


-- ** offsets #attr:offsets#
-- | the offsets (in bytes) where each channel plane starts in the
--   buffer or 'P.Nothing' if the buffer has interleaved layout; if not 'P.Nothing', this
--   is guaranteed to be an array of /@info@/.channels elements

#if defined(ENABLE_OVERLOADING)
    audioMeta_offsets                       ,
#endif
    getAudioMetaOffsets                     ,
    setAudioMetaOffsets                     ,


-- ** samples #attr:samples#
-- | the number of valid samples in the buffer

#if defined(ENABLE_OVERLOADING)
    audioMeta_samples                       ,
#endif
    getAudioMetaSamples                     ,
    setAudioMetaSamples                     ,




    ) 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.GI.Base.Signals as B.Signals
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.Structs.AudioInfo as GstAudio.AudioInfo

-- | Memory-managed wrapper type.
newtype AudioMeta = AudioMeta (ManagedPtr AudioMeta)
    deriving (AudioMeta -> AudioMeta -> Bool
(AudioMeta -> AudioMeta -> Bool)
-> (AudioMeta -> AudioMeta -> Bool) -> Eq AudioMeta
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: AudioMeta -> AudioMeta -> Bool
$c/= :: AudioMeta -> AudioMeta -> Bool
== :: AudioMeta -> AudioMeta -> Bool
$c== :: AudioMeta -> AudioMeta -> Bool
Eq)
instance WrappedPtr AudioMeta where
    wrappedPtrCalloc :: IO (Ptr AudioMeta)
wrappedPtrCalloc = Int -> IO (Ptr AudioMeta)
forall a. Int -> IO (Ptr a)
callocBytes 448
    wrappedPtrCopy :: AudioMeta -> IO AudioMeta
wrappedPtrCopy = \p :: AudioMeta
p -> AudioMeta -> (Ptr AudioMeta -> IO AudioMeta) -> IO AudioMeta
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr AudioMeta
p (Int -> Ptr AudioMeta -> IO (Ptr AudioMeta)
forall a. WrappedPtr a => Int -> Ptr a -> IO (Ptr a)
copyBytes 448 (Ptr AudioMeta -> IO (Ptr AudioMeta))
-> (Ptr AudioMeta -> IO AudioMeta) -> Ptr AudioMeta -> IO AudioMeta
forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> (ManagedPtr AudioMeta -> AudioMeta)
-> Ptr AudioMeta -> IO AudioMeta
forall a.
(HasCallStack, WrappedPtr a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
wrapPtr ManagedPtr AudioMeta -> AudioMeta
AudioMeta)
    wrappedPtrFree :: Maybe (GDestroyNotify AudioMeta)
wrappedPtrFree = GDestroyNotify AudioMeta -> Maybe (GDestroyNotify AudioMeta)
forall a. a -> Maybe a
Just GDestroyNotify AudioMeta
forall a. FunPtr (Ptr a -> IO ())
ptr_to_g_free

-- | Construct a `AudioMeta` struct initialized to zero.
newZeroAudioMeta :: MonadIO m => m AudioMeta
newZeroAudioMeta :: m AudioMeta
newZeroAudioMeta = IO AudioMeta -> m AudioMeta
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
$ IO (Ptr AudioMeta)
forall a. WrappedPtr a => IO (Ptr a)
wrappedPtrCalloc IO (Ptr AudioMeta)
-> (Ptr AudioMeta -> IO AudioMeta) -> IO AudioMeta
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (ManagedPtr AudioMeta -> AudioMeta)
-> Ptr AudioMeta -> IO AudioMeta
forall a.
(HasCallStack, WrappedPtr a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
wrapPtr ManagedPtr AudioMeta -> AudioMeta
AudioMeta

instance tag ~ 'AttrSet => Constructible AudioMeta tag where
    new :: (ManagedPtr AudioMeta -> AudioMeta)
-> [AttrOp AudioMeta tag] -> m AudioMeta
new _ attrs :: [AttrOp AudioMeta tag]
attrs = do
        AudioMeta
o <- m AudioMeta
forall (m :: * -> *). MonadIO m => m AudioMeta
newZeroAudioMeta
        AudioMeta -> [AttrOp AudioMeta 'AttrSet] -> m ()
forall o (m :: * -> *).
MonadIO m =>
o -> [AttrOp o 'AttrSet] -> m ()
GI.Attributes.set AudioMeta
o [AttrOp AudioMeta tag]
[AttrOp AudioMeta 'AttrSet]
attrs
        AudioMeta -> m AudioMeta
forall (m :: * -> *) a. Monad m => a -> m a
return AudioMeta
o


-- | A convenience alias for `Nothing` :: `Maybe` `AudioMeta`.
noAudioMeta :: Maybe AudioMeta
noAudioMeta :: Maybe AudioMeta
noAudioMeta = Maybe AudioMeta
forall a. Maybe a
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' audioMeta #meta
-- @
getAudioMetaMeta :: MonadIO m => AudioMeta -> m Gst.Meta.Meta
getAudioMetaMeta :: AudioMeta -> m Meta
getAudioMetaMeta s :: AudioMeta
s = IO Meta -> m Meta
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Meta -> m Meta) -> IO Meta -> m Meta
forall a b. (a -> b) -> a -> b
$ AudioMeta -> (Ptr AudioMeta -> IO Meta) -> IO Meta
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr AudioMeta
s ((Ptr AudioMeta -> IO Meta) -> IO Meta)
-> (Ptr AudioMeta -> IO Meta) -> IO Meta
forall a b. (a -> b) -> a -> b
$ \ptr :: Ptr AudioMeta
ptr -> do
    let val :: Ptr Meta
val = Ptr AudioMeta
ptr Ptr AudioMeta -> Int -> Ptr Meta
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: (Ptr Gst.Meta.Meta)
    Meta
val' <- ((ManagedPtr Meta -> Meta) -> Ptr Meta -> IO Meta
forall a.
(HasCallStack, WrappedPtr a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
newPtr ManagedPtr Meta -> Meta
Gst.Meta.Meta) Ptr Meta
val
    Meta -> IO Meta
forall (m :: * -> *) a. Monad m => a -> m a
return Meta
val'

#if defined(ENABLE_OVERLOADING)
data AudioMetaMetaFieldInfo
instance AttrInfo AudioMetaMetaFieldInfo where
    type AttrBaseTypeConstraint AudioMetaMetaFieldInfo = (~) AudioMeta
    type AttrAllowedOps AudioMetaMetaFieldInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint AudioMetaMetaFieldInfo = (~) (Ptr Gst.Meta.Meta)
    type AttrTransferTypeConstraint AudioMetaMetaFieldInfo = (~)(Ptr Gst.Meta.Meta)
    type AttrTransferType AudioMetaMetaFieldInfo = (Ptr Gst.Meta.Meta)
    type AttrGetType AudioMetaMetaFieldInfo = Gst.Meta.Meta
    type AttrLabel AudioMetaMetaFieldInfo = "meta"
    type AttrOrigin AudioMetaMetaFieldInfo = AudioMeta
    attrGet = getAudioMetaMeta
    attrSet = undefined
    attrConstruct = undefined
    attrClear = undefined
    attrTransfer = undefined

audioMeta_meta :: AttrLabelProxy "meta"
audioMeta_meta = AttrLabelProxy

#endif


-- | Get the value of the “@info@” field.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' audioMeta #info
-- @
getAudioMetaInfo :: MonadIO m => AudioMeta -> m GstAudio.AudioInfo.AudioInfo
getAudioMetaInfo :: AudioMeta -> m AudioInfo
getAudioMetaInfo s :: AudioMeta
s = IO AudioInfo -> m AudioInfo
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO AudioInfo -> m AudioInfo) -> IO AudioInfo -> m AudioInfo
forall a b. (a -> b) -> a -> b
$ AudioMeta -> (Ptr AudioMeta -> IO AudioInfo) -> IO AudioInfo
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr AudioMeta
s ((Ptr AudioMeta -> IO AudioInfo) -> IO AudioInfo)
-> (Ptr AudioMeta -> IO AudioInfo) -> IO AudioInfo
forall a b. (a -> b) -> a -> b
$ \ptr :: Ptr AudioMeta
ptr -> do
    let val :: Ptr AudioInfo
val = Ptr AudioMeta
ptr Ptr AudioMeta -> Int -> Ptr AudioInfo
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 16 :: (Ptr GstAudio.AudioInfo.AudioInfo)
    AudioInfo
val' <- ((ManagedPtr AudioInfo -> AudioInfo)
-> Ptr AudioInfo -> IO AudioInfo
forall a.
(HasCallStack, BoxedObject a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
newBoxed ManagedPtr AudioInfo -> AudioInfo
GstAudio.AudioInfo.AudioInfo) Ptr AudioInfo
val
    AudioInfo -> IO AudioInfo
forall (m :: * -> *) a. Monad m => a -> m a
return AudioInfo
val'

#if defined(ENABLE_OVERLOADING)
data AudioMetaInfoFieldInfo
instance AttrInfo AudioMetaInfoFieldInfo where
    type AttrBaseTypeConstraint AudioMetaInfoFieldInfo = (~) AudioMeta
    type AttrAllowedOps AudioMetaInfoFieldInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint AudioMetaInfoFieldInfo = (~) (Ptr GstAudio.AudioInfo.AudioInfo)
    type AttrTransferTypeConstraint AudioMetaInfoFieldInfo = (~)(Ptr GstAudio.AudioInfo.AudioInfo)
    type AttrTransferType AudioMetaInfoFieldInfo = (Ptr GstAudio.AudioInfo.AudioInfo)
    type AttrGetType AudioMetaInfoFieldInfo = GstAudio.AudioInfo.AudioInfo
    type AttrLabel AudioMetaInfoFieldInfo = "info"
    type AttrOrigin AudioMetaInfoFieldInfo = AudioMeta
    attrGet = getAudioMetaInfo
    attrSet = undefined
    attrConstruct = undefined
    attrClear = undefined
    attrTransfer = undefined

audioMeta_info :: AttrLabelProxy "info"
audioMeta_info = AttrLabelProxy

#endif


-- | Get the value of the “@samples@” field.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' audioMeta #samples
-- @
getAudioMetaSamples :: MonadIO m => AudioMeta -> m Word64
getAudioMetaSamples :: AudioMeta -> m Word64
getAudioMetaSamples s :: AudioMeta
s = IO Word64 -> m Word64
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
$ AudioMeta -> (Ptr AudioMeta -> IO Word64) -> IO Word64
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr AudioMeta
s ((Ptr AudioMeta -> IO Word64) -> IO Word64)
-> (Ptr AudioMeta -> IO Word64) -> IO Word64
forall a b. (a -> b) -> a -> b
$ \ptr :: Ptr AudioMeta
ptr -> do
    Word64
val <- Ptr Word64 -> IO Word64
forall a. Storable a => Ptr a -> IO a
peek (Ptr AudioMeta
ptr Ptr AudioMeta -> Int -> Ptr Word64
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 336) :: IO Word64
    Word64 -> IO Word64
forall (m :: * -> *) a. Monad m => a -> m a
return Word64
val

-- | Set the value of the “@samples@” field.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' audioMeta [ #samples 'Data.GI.Base.Attributes.:=' value ]
-- @
setAudioMetaSamples :: MonadIO m => AudioMeta -> Word64 -> m ()
setAudioMetaSamples :: AudioMeta -> Word64 -> m ()
setAudioMetaSamples s :: AudioMeta
s val :: Word64
val = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ AudioMeta -> (Ptr AudioMeta -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr AudioMeta
s ((Ptr AudioMeta -> IO ()) -> IO ())
-> (Ptr AudioMeta -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \ptr :: Ptr AudioMeta
ptr -> do
    Ptr Word64 -> Word64 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr AudioMeta
ptr Ptr AudioMeta -> Int -> Ptr Word64
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 336) (Word64
val :: Word64)

#if defined(ENABLE_OVERLOADING)
data AudioMetaSamplesFieldInfo
instance AttrInfo AudioMetaSamplesFieldInfo where
    type AttrBaseTypeConstraint AudioMetaSamplesFieldInfo = (~) AudioMeta
    type AttrAllowedOps AudioMetaSamplesFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint AudioMetaSamplesFieldInfo = (~) Word64
    type AttrTransferTypeConstraint AudioMetaSamplesFieldInfo = (~)Word64
    type AttrTransferType AudioMetaSamplesFieldInfo = Word64
    type AttrGetType AudioMetaSamplesFieldInfo = Word64
    type AttrLabel AudioMetaSamplesFieldInfo = "samples"
    type AttrOrigin AudioMetaSamplesFieldInfo = AudioMeta
    attrGet = getAudioMetaSamples
    attrSet = setAudioMetaSamples
    attrConstruct = undefined
    attrClear = undefined
    attrTransfer _ v = do
        return v

audioMeta_samples :: AttrLabelProxy "samples"
audioMeta_samples = AttrLabelProxy

#endif


-- | Get the value of the “@offsets@” field.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' audioMeta #offsets
-- @
getAudioMetaOffsets :: MonadIO m => AudioMeta -> m Word64
getAudioMetaOffsets :: AudioMeta -> m Word64
getAudioMetaOffsets s :: AudioMeta
s = IO Word64 -> m Word64
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
$ AudioMeta -> (Ptr AudioMeta -> IO Word64) -> IO Word64
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr AudioMeta
s ((Ptr AudioMeta -> IO Word64) -> IO Word64)
-> (Ptr AudioMeta -> IO Word64) -> IO Word64
forall a b. (a -> b) -> a -> b
$ \ptr :: Ptr AudioMeta
ptr -> do
    Word64
val <- Ptr Word64 -> IO Word64
forall a. Storable a => Ptr a -> IO a
peek (Ptr AudioMeta
ptr Ptr AudioMeta -> Int -> Ptr Word64
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 344) :: IO Word64
    Word64 -> IO Word64
forall (m :: * -> *) a. Monad m => a -> m a
return Word64
val

-- | Set the value of the “@offsets@” field.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' audioMeta [ #offsets 'Data.GI.Base.Attributes.:=' value ]
-- @
setAudioMetaOffsets :: MonadIO m => AudioMeta -> Word64 -> m ()
setAudioMetaOffsets :: AudioMeta -> Word64 -> m ()
setAudioMetaOffsets s :: AudioMeta
s val :: Word64
val = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ AudioMeta -> (Ptr AudioMeta -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr AudioMeta
s ((Ptr AudioMeta -> IO ()) -> IO ())
-> (Ptr AudioMeta -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \ptr :: Ptr AudioMeta
ptr -> do
    Ptr Word64 -> Word64 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr AudioMeta
ptr Ptr AudioMeta -> Int -> Ptr Word64
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 344) (Word64
val :: Word64)

#if defined(ENABLE_OVERLOADING)
data AudioMetaOffsetsFieldInfo
instance AttrInfo AudioMetaOffsetsFieldInfo where
    type AttrBaseTypeConstraint AudioMetaOffsetsFieldInfo = (~) AudioMeta
    type AttrAllowedOps AudioMetaOffsetsFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint AudioMetaOffsetsFieldInfo = (~) Word64
    type AttrTransferTypeConstraint AudioMetaOffsetsFieldInfo = (~)Word64
    type AttrTransferType AudioMetaOffsetsFieldInfo = Word64
    type AttrGetType AudioMetaOffsetsFieldInfo = Word64
    type AttrLabel AudioMetaOffsetsFieldInfo = "offsets"
    type AttrOrigin AudioMetaOffsetsFieldInfo = AudioMeta
    attrGet = getAudioMetaOffsets
    attrSet = setAudioMetaOffsets
    attrConstruct = undefined
    attrClear = undefined
    attrTransfer _ v = do
        return v

audioMeta_offsets :: AttrLabelProxy "offsets"
audioMeta_offsets = AttrLabelProxy

#endif



#if defined(ENABLE_OVERLOADING)
instance O.HasAttributeList AudioMeta
type instance O.AttributeList AudioMeta = AudioMetaAttributeList
type AudioMetaAttributeList = ('[ '("meta", AudioMetaMetaFieldInfo), '("info", AudioMetaInfoFieldInfo), '("samples", AudioMetaSamplesFieldInfo), '("offsets", AudioMetaOffsetsFieldInfo)] :: [(Symbol, *)])
#endif

-- method AudioMeta::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_meta_get_info" gst_audio_meta_get_info :: 
    IO (Ptr Gst.MetaInfo.MetaInfo)

-- | /No description available in the introspection data./
audioMetaGetInfo ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    m Gst.MetaInfo.MetaInfo
audioMetaGetInfo :: m MetaInfo
audioMetaGetInfo  = IO MetaInfo -> m MetaInfo
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO MetaInfo -> m MetaInfo) -> IO MetaInfo -> m MetaInfo
forall a b. (a -> b) -> a -> b
$ do
    Ptr MetaInfo
result <- IO (Ptr MetaInfo)
gst_audio_meta_get_info
    Text -> Ptr MetaInfo -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL "audioMetaGetInfo" Ptr MetaInfo
result
    MetaInfo
result' <- ((ManagedPtr MetaInfo -> MetaInfo) -> Ptr MetaInfo -> IO MetaInfo
forall a.
(HasCallStack, WrappedPtr a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
newPtr ManagedPtr MetaInfo -> MetaInfo
Gst.MetaInfo.MetaInfo) Ptr MetaInfo
result
    MetaInfo -> IO MetaInfo
forall (m :: * -> *) a. Monad m => a -> m a
return MetaInfo
result'

#if defined(ENABLE_OVERLOADING)
#endif

#if defined(ENABLE_OVERLOADING)
type family ResolveAudioMetaMethod (t :: Symbol) (o :: *) :: * where
    ResolveAudioMetaMethod l o = O.MethodResolutionFailed l o

instance (info ~ ResolveAudioMetaMethod t AudioMeta, O.MethodInfo info AudioMeta p) => OL.IsLabel t (AudioMeta -> p) where
#if MIN_VERSION_base(4,10,0)
    fromLabel = O.overloadedMethod @info
#else
    fromLabel _ = O.overloadedMethod @info
#endif

#endif