{-# LANGUAGE TypeApplications #-}


-- | Copyright  : Will Thompson and Iñaki García Etxebarria
-- License    : LGPL-2.1
-- Maintainer : Iñaki García Etxebarria
-- 
-- t'GI.GstPbutils.Objects.DiscovererStreamInfo.DiscovererStreamInfo' specific to audio streams.

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

module GI.GstPbutils.Objects.DiscovererAudioInfo
    ( 

-- * Exported types
    DiscovererAudioInfo(..)                 ,
    IsDiscovererAudioInfo                   ,
    toDiscovererAudioInfo                   ,


 -- * Methods
-- | 
-- 
--  === __Click to display all available methods, including inherited ones__
-- ==== Methods
-- [bindProperty]("GI.GObject.Objects.Object#g:method:bindProperty"), [bindPropertyFull]("GI.GObject.Objects.Object#g:method:bindPropertyFull"), [forceFloating]("GI.GObject.Objects.Object#g:method:forceFloating"), [freezeNotify]("GI.GObject.Objects.Object#g:method:freezeNotify"), [getv]("GI.GObject.Objects.Object#g:method:getv"), [isFloating]("GI.GObject.Objects.Object#g:method:isFloating"), [notify]("GI.GObject.Objects.Object#g:method:notify"), [notifyByPspec]("GI.GObject.Objects.Object#g:method:notifyByPspec"), [ref]("GI.GObject.Objects.Object#g:method:ref"), [refSink]("GI.GObject.Objects.Object#g:method:refSink"), [runDispose]("GI.GObject.Objects.Object#g:method:runDispose"), [stealData]("GI.GObject.Objects.Object#g:method:stealData"), [stealQdata]("GI.GObject.Objects.Object#g:method:stealQdata"), [thawNotify]("GI.GObject.Objects.Object#g:method:thawNotify"), [unref]("GI.GObject.Objects.Object#g:method:unref"), [watchClosure]("GI.GObject.Objects.Object#g:method:watchClosure").
-- 
-- ==== Getters
-- [getBitrate]("GI.GstPbutils.Objects.DiscovererAudioInfo#g:method:getBitrate"), [getCaps]("GI.GstPbutils.Objects.DiscovererStreamInfo#g:method:getCaps"), [getChannelMask]("GI.GstPbutils.Objects.DiscovererAudioInfo#g:method:getChannelMask"), [getChannels]("GI.GstPbutils.Objects.DiscovererAudioInfo#g:method:getChannels"), [getData]("GI.GObject.Objects.Object#g:method:getData"), [getDepth]("GI.GstPbutils.Objects.DiscovererAudioInfo#g:method:getDepth"), [getLanguage]("GI.GstPbutils.Objects.DiscovererAudioInfo#g:method:getLanguage"), [getMaxBitrate]("GI.GstPbutils.Objects.DiscovererAudioInfo#g:method:getMaxBitrate"), [getMisc]("GI.GstPbutils.Objects.DiscovererStreamInfo#g:method:getMisc"), [getNext]("GI.GstPbutils.Objects.DiscovererStreamInfo#g:method:getNext"), [getPrevious]("GI.GstPbutils.Objects.DiscovererStreamInfo#g:method:getPrevious"), [getProperty]("GI.GObject.Objects.Object#g:method:getProperty"), [getQdata]("GI.GObject.Objects.Object#g:method:getQdata"), [getSampleRate]("GI.GstPbutils.Objects.DiscovererAudioInfo#g:method:getSampleRate"), [getStreamId]("GI.GstPbutils.Objects.DiscovererStreamInfo#g:method:getStreamId"), [getStreamNumber]("GI.GstPbutils.Objects.DiscovererStreamInfo#g:method:getStreamNumber"), [getStreamTypeNick]("GI.GstPbutils.Objects.DiscovererStreamInfo#g:method:getStreamTypeNick"), [getTags]("GI.GstPbutils.Objects.DiscovererStreamInfo#g:method:getTags"), [getToc]("GI.GstPbutils.Objects.DiscovererStreamInfo#g:method:getToc").
-- 
-- ==== Setters
-- [setData]("GI.GObject.Objects.Object#g:method:setData"), [setDataFull]("GI.GObject.Objects.Object#g:method:setDataFull"), [setProperty]("GI.GObject.Objects.Object#g:method:setProperty").

#if defined(ENABLE_OVERLOADING)
    ResolveDiscovererAudioInfoMethod        ,
#endif

-- ** getBitrate #method:getBitrate#

#if defined(ENABLE_OVERLOADING)
    DiscovererAudioInfoGetBitrateMethodInfo ,
#endif
    discovererAudioInfoGetBitrate           ,


-- ** getChannelMask #method:getChannelMask#

#if defined(ENABLE_OVERLOADING)
    DiscovererAudioInfoGetChannelMaskMethodInfo,
#endif
    discovererAudioInfoGetChannelMask       ,


-- ** getChannels #method:getChannels#

#if defined(ENABLE_OVERLOADING)
    DiscovererAudioInfoGetChannelsMethodInfo,
#endif
    discovererAudioInfoGetChannels          ,


-- ** getDepth #method:getDepth#

#if defined(ENABLE_OVERLOADING)
    DiscovererAudioInfoGetDepthMethodInfo   ,
#endif
    discovererAudioInfoGetDepth             ,


-- ** getLanguage #method:getLanguage#

#if defined(ENABLE_OVERLOADING)
    DiscovererAudioInfoGetLanguageMethodInfo,
#endif
    discovererAudioInfoGetLanguage          ,


-- ** getMaxBitrate #method:getMaxBitrate#

#if defined(ENABLE_OVERLOADING)
    DiscovererAudioInfoGetMaxBitrateMethodInfo,
#endif
    discovererAudioInfoGetMaxBitrate        ,


-- ** getSampleRate #method:getSampleRate#

#if defined(ENABLE_OVERLOADING)
    DiscovererAudioInfoGetSampleRateMethodInfo,
#endif
    discovererAudioInfoGetSampleRate        ,




    ) 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.GObject.Objects.Object as GObject.Object
import {-# SOURCE #-} qualified GI.GstPbutils.Objects.DiscovererStreamInfo as GstPbutils.DiscovererStreamInfo

-- | Memory-managed wrapper type.
newtype DiscovererAudioInfo = DiscovererAudioInfo (SP.ManagedPtr DiscovererAudioInfo)
    deriving (DiscovererAudioInfo -> DiscovererAudioInfo -> Bool
(DiscovererAudioInfo -> DiscovererAudioInfo -> Bool)
-> (DiscovererAudioInfo -> DiscovererAudioInfo -> Bool)
-> Eq DiscovererAudioInfo
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: DiscovererAudioInfo -> DiscovererAudioInfo -> Bool
== :: DiscovererAudioInfo -> DiscovererAudioInfo -> Bool
$c/= :: DiscovererAudioInfo -> DiscovererAudioInfo -> Bool
/= :: DiscovererAudioInfo -> DiscovererAudioInfo -> Bool
Eq)

instance SP.ManagedPtrNewtype DiscovererAudioInfo where
    toManagedPtr :: DiscovererAudioInfo -> ManagedPtr DiscovererAudioInfo
toManagedPtr (DiscovererAudioInfo ManagedPtr DiscovererAudioInfo
p) = ManagedPtr DiscovererAudioInfo
p

foreign import ccall "gst_discoverer_audio_info_get_type"
    c_gst_discoverer_audio_info_get_type :: IO B.Types.GType

instance B.Types.TypedObject DiscovererAudioInfo where
    glibType :: IO GType
glibType = IO GType
c_gst_discoverer_audio_info_get_type

instance B.Types.GObject DiscovererAudioInfo

-- | Type class for types which can be safely cast to `DiscovererAudioInfo`, for instance with `toDiscovererAudioInfo`.
class (SP.GObject o, O.IsDescendantOf DiscovererAudioInfo o) => IsDiscovererAudioInfo o
instance (SP.GObject o, O.IsDescendantOf DiscovererAudioInfo o) => IsDiscovererAudioInfo o

instance O.HasParentTypes DiscovererAudioInfo
type instance O.ParentTypes DiscovererAudioInfo = '[GstPbutils.DiscovererStreamInfo.DiscovererStreamInfo, GObject.Object.Object]

-- | Cast to `DiscovererAudioInfo`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`.
toDiscovererAudioInfo :: (MIO.MonadIO m, IsDiscovererAudioInfo o) => o -> m DiscovererAudioInfo
toDiscovererAudioInfo :: forall (m :: * -> *) o.
(MonadIO m, IsDiscovererAudioInfo o) =>
o -> m DiscovererAudioInfo
toDiscovererAudioInfo = IO DiscovererAudioInfo -> m DiscovererAudioInfo
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO DiscovererAudioInfo -> m DiscovererAudioInfo)
-> (o -> IO DiscovererAudioInfo) -> o -> m DiscovererAudioInfo
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ManagedPtr DiscovererAudioInfo -> DiscovererAudioInfo)
-> o -> IO DiscovererAudioInfo
forall o o'.
(HasCallStack, ManagedPtrNewtype o, TypedObject o,
 ManagedPtrNewtype o', TypedObject o') =>
(ManagedPtr o' -> o') -> o -> IO o'
B.ManagedPtr.unsafeCastTo ManagedPtr DiscovererAudioInfo -> DiscovererAudioInfo
DiscovererAudioInfo

-- | Convert 'DiscovererAudioInfo' to and from 'Data.GI.Base.GValue.GValue'. See 'Data.GI.Base.GValue.toGValue' and 'Data.GI.Base.GValue.fromGValue'.
instance B.GValue.IsGValue (Maybe DiscovererAudioInfo) where
    gvalueGType_ :: IO GType
gvalueGType_ = IO GType
c_gst_discoverer_audio_info_get_type
    gvalueSet_ :: Ptr GValue -> Maybe DiscovererAudioInfo -> IO ()
gvalueSet_ Ptr GValue
gv Maybe DiscovererAudioInfo
P.Nothing = Ptr GValue -> Ptr DiscovererAudioInfo -> IO ()
forall a. GObject a => Ptr GValue -> Ptr a -> IO ()
B.GValue.set_object Ptr GValue
gv (Ptr DiscovererAudioInfo
forall a. Ptr a
FP.nullPtr :: FP.Ptr DiscovererAudioInfo)
    gvalueSet_ Ptr GValue
gv (P.Just DiscovererAudioInfo
obj) = DiscovererAudioInfo -> (Ptr DiscovererAudioInfo -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
B.ManagedPtr.withManagedPtr DiscovererAudioInfo
obj (Ptr GValue -> Ptr DiscovererAudioInfo -> IO ()
forall a. GObject a => Ptr GValue -> Ptr a -> IO ()
B.GValue.set_object Ptr GValue
gv)
    gvalueGet_ :: Ptr GValue -> IO (Maybe DiscovererAudioInfo)
gvalueGet_ Ptr GValue
gv = do
        Ptr DiscovererAudioInfo
ptr <- Ptr GValue -> IO (Ptr DiscovererAudioInfo)
forall a. GObject a => Ptr GValue -> IO (Ptr a)
B.GValue.get_object Ptr GValue
gv :: IO (FP.Ptr DiscovererAudioInfo)
        if Ptr DiscovererAudioInfo
ptr Ptr DiscovererAudioInfo -> Ptr DiscovererAudioInfo -> Bool
forall a. Eq a => a -> a -> Bool
/= Ptr DiscovererAudioInfo
forall a. Ptr a
FP.nullPtr
        then DiscovererAudioInfo -> Maybe DiscovererAudioInfo
forall a. a -> Maybe a
P.Just (DiscovererAudioInfo -> Maybe DiscovererAudioInfo)
-> IO DiscovererAudioInfo -> IO (Maybe DiscovererAudioInfo)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (ManagedPtr DiscovererAudioInfo -> DiscovererAudioInfo)
-> Ptr DiscovererAudioInfo -> IO DiscovererAudioInfo
forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
B.ManagedPtr.newObject ManagedPtr DiscovererAudioInfo -> DiscovererAudioInfo
DiscovererAudioInfo Ptr DiscovererAudioInfo
ptr
        else Maybe DiscovererAudioInfo -> IO (Maybe DiscovererAudioInfo)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe DiscovererAudioInfo
forall a. Maybe a
P.Nothing
        
    

#if defined(ENABLE_OVERLOADING)
type family ResolveDiscovererAudioInfoMethod (t :: Symbol) (o :: DK.Type) :: DK.Type where
    ResolveDiscovererAudioInfoMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveDiscovererAudioInfoMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveDiscovererAudioInfoMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveDiscovererAudioInfoMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveDiscovererAudioInfoMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
    ResolveDiscovererAudioInfoMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveDiscovererAudioInfoMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveDiscovererAudioInfoMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveDiscovererAudioInfoMethod "ref" o = GObject.Object.ObjectRefMethodInfo
    ResolveDiscovererAudioInfoMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveDiscovererAudioInfoMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolveDiscovererAudioInfoMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolveDiscovererAudioInfoMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolveDiscovererAudioInfoMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolveDiscovererAudioInfoMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
    ResolveDiscovererAudioInfoMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolveDiscovererAudioInfoMethod "getBitrate" o = DiscovererAudioInfoGetBitrateMethodInfo
    ResolveDiscovererAudioInfoMethod "getCaps" o = GstPbutils.DiscovererStreamInfo.DiscovererStreamInfoGetCapsMethodInfo
    ResolveDiscovererAudioInfoMethod "getChannelMask" o = DiscovererAudioInfoGetChannelMaskMethodInfo
    ResolveDiscovererAudioInfoMethod "getChannels" o = DiscovererAudioInfoGetChannelsMethodInfo
    ResolveDiscovererAudioInfoMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolveDiscovererAudioInfoMethod "getDepth" o = DiscovererAudioInfoGetDepthMethodInfo
    ResolveDiscovererAudioInfoMethod "getLanguage" o = DiscovererAudioInfoGetLanguageMethodInfo
    ResolveDiscovererAudioInfoMethod "getMaxBitrate" o = DiscovererAudioInfoGetMaxBitrateMethodInfo
    ResolveDiscovererAudioInfoMethod "getMisc" o = GstPbutils.DiscovererStreamInfo.DiscovererStreamInfoGetMiscMethodInfo
    ResolveDiscovererAudioInfoMethod "getNext" o = GstPbutils.DiscovererStreamInfo.DiscovererStreamInfoGetNextMethodInfo
    ResolveDiscovererAudioInfoMethod "getPrevious" o = GstPbutils.DiscovererStreamInfo.DiscovererStreamInfoGetPreviousMethodInfo
    ResolveDiscovererAudioInfoMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveDiscovererAudioInfoMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveDiscovererAudioInfoMethod "getSampleRate" o = DiscovererAudioInfoGetSampleRateMethodInfo
    ResolveDiscovererAudioInfoMethod "getStreamId" o = GstPbutils.DiscovererStreamInfo.DiscovererStreamInfoGetStreamIdMethodInfo
    ResolveDiscovererAudioInfoMethod "getStreamNumber" o = GstPbutils.DiscovererStreamInfo.DiscovererStreamInfoGetStreamNumberMethodInfo
    ResolveDiscovererAudioInfoMethod "getStreamTypeNick" o = GstPbutils.DiscovererStreamInfo.DiscovererStreamInfoGetStreamTypeNickMethodInfo
    ResolveDiscovererAudioInfoMethod "getTags" o = GstPbutils.DiscovererStreamInfo.DiscovererStreamInfoGetTagsMethodInfo
    ResolveDiscovererAudioInfoMethod "getToc" o = GstPbutils.DiscovererStreamInfo.DiscovererStreamInfoGetTocMethodInfo
    ResolveDiscovererAudioInfoMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveDiscovererAudioInfoMethod "setDataFull" o = GObject.Object.ObjectSetDataFullMethodInfo
    ResolveDiscovererAudioInfoMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveDiscovererAudioInfoMethod l o = O.MethodResolutionFailed l o

instance (info ~ ResolveDiscovererAudioInfoMethod t DiscovererAudioInfo, O.OverloadedMethod info DiscovererAudioInfo p) => OL.IsLabel t (DiscovererAudioInfo -> 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 ~ ResolveDiscovererAudioInfoMethod t DiscovererAudioInfo, O.OverloadedMethod info DiscovererAudioInfo p, R.HasField t DiscovererAudioInfo p) => R.HasField t DiscovererAudioInfo p where
    getField = O.overloadedMethod @info

#endif

instance (info ~ ResolveDiscovererAudioInfoMethod t DiscovererAudioInfo, O.OverloadedMethodInfo info DiscovererAudioInfo) => OL.IsLabel t (O.MethodProxy info DiscovererAudioInfo) where
#if MIN_VERSION_base(4,10,0)
    fromLabel = O.MethodProxy
#else
    fromLabel _ = O.MethodProxy
#endif

#endif

#if defined(ENABLE_OVERLOADING)
instance O.HasAttributeList DiscovererAudioInfo
type instance O.AttributeList DiscovererAudioInfo = DiscovererAudioInfoAttributeList
type DiscovererAudioInfoAttributeList = ('[ ] :: [(Symbol, DK.Type)])
#endif

#if defined(ENABLE_OVERLOADING)
#endif

#if defined(ENABLE_OVERLOADING)
type instance O.SignalList DiscovererAudioInfo = DiscovererAudioInfoSignalList
type DiscovererAudioInfoSignalList = ('[ '("notify", GObject.Object.ObjectNotifySignalInfo)] :: [(Symbol, DK.Type)])

#endif

-- method DiscovererAudioInfo::get_bitrate
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "info"
--           , argType =
--               TInterface
--                 Name { namespace = "GstPbutils" , name = "DiscovererAudioInfo" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GstDiscovererAudioInfo"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just (TBasicType TUInt)
-- throws : False
-- Skip return : False

foreign import ccall "gst_discoverer_audio_info_get_bitrate" gst_discoverer_audio_info_get_bitrate :: 
    Ptr DiscovererAudioInfo ->              -- info : TInterface (Name {namespace = "GstPbutils", name = "DiscovererAudioInfo"})
    IO Word32

-- | /No description available in the introspection data./
discovererAudioInfoGetBitrate ::
    (B.CallStack.HasCallStack, MonadIO m, IsDiscovererAudioInfo a) =>
    a
    -- ^ /@info@/: a t'GI.GstPbutils.Objects.DiscovererAudioInfo.DiscovererAudioInfo'
    -> m Word32
    -- ^ __Returns:__ the average or nominal bitrate of the stream in bits\/second.
discovererAudioInfoGetBitrate :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsDiscovererAudioInfo a) =>
a -> m Word32
discovererAudioInfoGetBitrate a
info = IO Word32 -> m Word32
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Word32 -> m Word32) -> IO Word32 -> m Word32
forall a b. (a -> b) -> a -> b
$ do
    Ptr DiscovererAudioInfo
info' <- a -> IO (Ptr DiscovererAudioInfo)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
info
    Word32
result <- Ptr DiscovererAudioInfo -> IO Word32
gst_discoverer_audio_info_get_bitrate Ptr DiscovererAudioInfo
info'
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
info
    Word32 -> IO Word32
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Word32
result

#if defined(ENABLE_OVERLOADING)
data DiscovererAudioInfoGetBitrateMethodInfo
instance (signature ~ (m Word32), MonadIO m, IsDiscovererAudioInfo a) => O.OverloadedMethod DiscovererAudioInfoGetBitrateMethodInfo a signature where
    overloadedMethod = discovererAudioInfoGetBitrate

instance O.OverloadedMethodInfo DiscovererAudioInfoGetBitrateMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstPbutils.Objects.DiscovererAudioInfo.discovererAudioInfoGetBitrate",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstpbutils-1.0.27/docs/GI-GstPbutils-Objects-DiscovererAudioInfo.html#v:discovererAudioInfoGetBitrate"
        })


#endif

-- method DiscovererAudioInfo::get_channel_mask
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "info"
--           , argType =
--               TInterface
--                 Name { namespace = "GstPbutils" , name = "DiscovererAudioInfo" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GstDiscovererAudioInfo"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just (TBasicType TUInt64)
-- throws : False
-- Skip return : False

foreign import ccall "gst_discoverer_audio_info_get_channel_mask" gst_discoverer_audio_info_get_channel_mask :: 
    Ptr DiscovererAudioInfo ->              -- info : TInterface (Name {namespace = "GstPbutils", name = "DiscovererAudioInfo"})
    IO Word64

-- | /No description available in the introspection data./
-- 
-- /Since: 1.14/
discovererAudioInfoGetChannelMask ::
    (B.CallStack.HasCallStack, MonadIO m, IsDiscovererAudioInfo a) =>
    a
    -- ^ /@info@/: a t'GI.GstPbutils.Objects.DiscovererAudioInfo.DiscovererAudioInfo'
    -> m Word64
    -- ^ __Returns:__ the channel-mask of the stream, refer to
    -- 'GI.GstAudio.Functions.audioChannelPositionsFromMask' for more
    -- information.
discovererAudioInfoGetChannelMask :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsDiscovererAudioInfo a) =>
a -> m Word64
discovererAudioInfoGetChannelMask a
info = 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 DiscovererAudioInfo
info' <- a -> IO (Ptr DiscovererAudioInfo)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
info
    Word64
result <- Ptr DiscovererAudioInfo -> IO Word64
gst_discoverer_audio_info_get_channel_mask Ptr DiscovererAudioInfo
info'
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
info
    Word64 -> IO Word64
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Word64
result

#if defined(ENABLE_OVERLOADING)
data DiscovererAudioInfoGetChannelMaskMethodInfo
instance (signature ~ (m Word64), MonadIO m, IsDiscovererAudioInfo a) => O.OverloadedMethod DiscovererAudioInfoGetChannelMaskMethodInfo a signature where
    overloadedMethod = discovererAudioInfoGetChannelMask

instance O.OverloadedMethodInfo DiscovererAudioInfoGetChannelMaskMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstPbutils.Objects.DiscovererAudioInfo.discovererAudioInfoGetChannelMask",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstpbutils-1.0.27/docs/GI-GstPbutils-Objects-DiscovererAudioInfo.html#v:discovererAudioInfoGetChannelMask"
        })


#endif

-- method DiscovererAudioInfo::get_channels
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "info"
--           , argType =
--               TInterface
--                 Name { namespace = "GstPbutils" , name = "DiscovererAudioInfo" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GstDiscovererAudioInfo"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just (TBasicType TUInt)
-- throws : False
-- Skip return : False

foreign import ccall "gst_discoverer_audio_info_get_channels" gst_discoverer_audio_info_get_channels :: 
    Ptr DiscovererAudioInfo ->              -- info : TInterface (Name {namespace = "GstPbutils", name = "DiscovererAudioInfo"})
    IO Word32

-- | /No description available in the introspection data./
discovererAudioInfoGetChannels ::
    (B.CallStack.HasCallStack, MonadIO m, IsDiscovererAudioInfo a) =>
    a
    -- ^ /@info@/: a t'GI.GstPbutils.Objects.DiscovererAudioInfo.DiscovererAudioInfo'
    -> m Word32
    -- ^ __Returns:__ the number of channels in the stream.
discovererAudioInfoGetChannels :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsDiscovererAudioInfo a) =>
a -> m Word32
discovererAudioInfoGetChannels a
info = IO Word32 -> m Word32
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Word32 -> m Word32) -> IO Word32 -> m Word32
forall a b. (a -> b) -> a -> b
$ do
    Ptr DiscovererAudioInfo
info' <- a -> IO (Ptr DiscovererAudioInfo)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
info
    Word32
result <- Ptr DiscovererAudioInfo -> IO Word32
gst_discoverer_audio_info_get_channels Ptr DiscovererAudioInfo
info'
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
info
    Word32 -> IO Word32
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Word32
result

#if defined(ENABLE_OVERLOADING)
data DiscovererAudioInfoGetChannelsMethodInfo
instance (signature ~ (m Word32), MonadIO m, IsDiscovererAudioInfo a) => O.OverloadedMethod DiscovererAudioInfoGetChannelsMethodInfo a signature where
    overloadedMethod = discovererAudioInfoGetChannels

instance O.OverloadedMethodInfo DiscovererAudioInfoGetChannelsMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstPbutils.Objects.DiscovererAudioInfo.discovererAudioInfoGetChannels",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstpbutils-1.0.27/docs/GI-GstPbutils-Objects-DiscovererAudioInfo.html#v:discovererAudioInfoGetChannels"
        })


#endif

-- method DiscovererAudioInfo::get_depth
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "info"
--           , argType =
--               TInterface
--                 Name { namespace = "GstPbutils" , name = "DiscovererAudioInfo" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GstDiscovererAudioInfo"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just (TBasicType TUInt)
-- throws : False
-- Skip return : False

foreign import ccall "gst_discoverer_audio_info_get_depth" gst_discoverer_audio_info_get_depth :: 
    Ptr DiscovererAudioInfo ->              -- info : TInterface (Name {namespace = "GstPbutils", name = "DiscovererAudioInfo"})
    IO Word32

-- | /No description available in the introspection data./
discovererAudioInfoGetDepth ::
    (B.CallStack.HasCallStack, MonadIO m, IsDiscovererAudioInfo a) =>
    a
    -- ^ /@info@/: a t'GI.GstPbutils.Objects.DiscovererAudioInfo.DiscovererAudioInfo'
    -> m Word32
    -- ^ __Returns:__ the number of bits used per sample in each channel.
discovererAudioInfoGetDepth :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsDiscovererAudioInfo a) =>
a -> m Word32
discovererAudioInfoGetDepth a
info = IO Word32 -> m Word32
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Word32 -> m Word32) -> IO Word32 -> m Word32
forall a b. (a -> b) -> a -> b
$ do
    Ptr DiscovererAudioInfo
info' <- a -> IO (Ptr DiscovererAudioInfo)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
info
    Word32
result <- Ptr DiscovererAudioInfo -> IO Word32
gst_discoverer_audio_info_get_depth Ptr DiscovererAudioInfo
info'
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
info
    Word32 -> IO Word32
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Word32
result

#if defined(ENABLE_OVERLOADING)
data DiscovererAudioInfoGetDepthMethodInfo
instance (signature ~ (m Word32), MonadIO m, IsDiscovererAudioInfo a) => O.OverloadedMethod DiscovererAudioInfoGetDepthMethodInfo a signature where
    overloadedMethod = discovererAudioInfoGetDepth

instance O.OverloadedMethodInfo DiscovererAudioInfoGetDepthMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstPbutils.Objects.DiscovererAudioInfo.discovererAudioInfoGetDepth",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstpbutils-1.0.27/docs/GI-GstPbutils-Objects-DiscovererAudioInfo.html#v:discovererAudioInfoGetDepth"
        })


#endif

-- method DiscovererAudioInfo::get_language
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "info"
--           , argType =
--               TInterface
--                 Name { namespace = "GstPbutils" , name = "DiscovererAudioInfo" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GstDiscovererAudioInfo"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just (TBasicType TUTF8)
-- throws : False
-- Skip return : False

foreign import ccall "gst_discoverer_audio_info_get_language" gst_discoverer_audio_info_get_language :: 
    Ptr DiscovererAudioInfo ->              -- info : TInterface (Name {namespace = "GstPbutils", name = "DiscovererAudioInfo"})
    IO CString

-- | /No description available in the introspection data./
discovererAudioInfoGetLanguage ::
    (B.CallStack.HasCallStack, MonadIO m, IsDiscovererAudioInfo a) =>
    a
    -- ^ /@info@/: a t'GI.GstPbutils.Objects.DiscovererAudioInfo.DiscovererAudioInfo'
    -> m (Maybe T.Text)
    -- ^ __Returns:__ the language of the stream, or NULL if unknown.
discovererAudioInfoGetLanguage :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsDiscovererAudioInfo a) =>
a -> m (Maybe Text)
discovererAudioInfoGetLanguage a
info = IO (Maybe Text) -> m (Maybe Text)
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Maybe Text) -> m (Maybe Text))
-> IO (Maybe Text) -> m (Maybe Text)
forall a b. (a -> b) -> a -> b
$ do
    Ptr DiscovererAudioInfo
info' <- a -> IO (Ptr DiscovererAudioInfo)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
info
    CString
result <- Ptr DiscovererAudioInfo -> IO CString
gst_discoverer_audio_info_get_language Ptr DiscovererAudioInfo
info'
    Maybe Text
maybeResult <- CString -> (CString -> IO Text) -> IO (Maybe Text)
forall a b. Ptr a -> (Ptr a -> IO b) -> IO (Maybe b)
convertIfNonNull CString
result ((CString -> IO Text) -> IO (Maybe Text))
-> (CString -> IO Text) -> IO (Maybe Text)
forall a b. (a -> b) -> a -> b
$ \CString
result' -> do
        Text
result'' <- HasCallStack => CString -> IO Text
CString -> IO Text
cstringToText CString
result'
        Text -> IO Text
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Text
result''
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
info
    Maybe Text -> IO (Maybe Text)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe Text
maybeResult

#if defined(ENABLE_OVERLOADING)
data DiscovererAudioInfoGetLanguageMethodInfo
instance (signature ~ (m (Maybe T.Text)), MonadIO m, IsDiscovererAudioInfo a) => O.OverloadedMethod DiscovererAudioInfoGetLanguageMethodInfo a signature where
    overloadedMethod = discovererAudioInfoGetLanguage

instance O.OverloadedMethodInfo DiscovererAudioInfoGetLanguageMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstPbutils.Objects.DiscovererAudioInfo.discovererAudioInfoGetLanguage",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstpbutils-1.0.27/docs/GI-GstPbutils-Objects-DiscovererAudioInfo.html#v:discovererAudioInfoGetLanguage"
        })


#endif

-- method DiscovererAudioInfo::get_max_bitrate
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "info"
--           , argType =
--               TInterface
--                 Name { namespace = "GstPbutils" , name = "DiscovererAudioInfo" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GstDiscovererAudioInfo"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just (TBasicType TUInt)
-- throws : False
-- Skip return : False

foreign import ccall "gst_discoverer_audio_info_get_max_bitrate" gst_discoverer_audio_info_get_max_bitrate :: 
    Ptr DiscovererAudioInfo ->              -- info : TInterface (Name {namespace = "GstPbutils", name = "DiscovererAudioInfo"})
    IO Word32

-- | /No description available in the introspection data./
discovererAudioInfoGetMaxBitrate ::
    (B.CallStack.HasCallStack, MonadIO m, IsDiscovererAudioInfo a) =>
    a
    -- ^ /@info@/: a t'GI.GstPbutils.Objects.DiscovererAudioInfo.DiscovererAudioInfo'
    -> m Word32
    -- ^ __Returns:__ the maximum bitrate of the stream in bits\/second.
discovererAudioInfoGetMaxBitrate :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsDiscovererAudioInfo a) =>
a -> m Word32
discovererAudioInfoGetMaxBitrate a
info = IO Word32 -> m Word32
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Word32 -> m Word32) -> IO Word32 -> m Word32
forall a b. (a -> b) -> a -> b
$ do
    Ptr DiscovererAudioInfo
info' <- a -> IO (Ptr DiscovererAudioInfo)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
info
    Word32
result <- Ptr DiscovererAudioInfo -> IO Word32
gst_discoverer_audio_info_get_max_bitrate Ptr DiscovererAudioInfo
info'
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
info
    Word32 -> IO Word32
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Word32
result

#if defined(ENABLE_OVERLOADING)
data DiscovererAudioInfoGetMaxBitrateMethodInfo
instance (signature ~ (m Word32), MonadIO m, IsDiscovererAudioInfo a) => O.OverloadedMethod DiscovererAudioInfoGetMaxBitrateMethodInfo a signature where
    overloadedMethod = discovererAudioInfoGetMaxBitrate

instance O.OverloadedMethodInfo DiscovererAudioInfoGetMaxBitrateMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstPbutils.Objects.DiscovererAudioInfo.discovererAudioInfoGetMaxBitrate",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstpbutils-1.0.27/docs/GI-GstPbutils-Objects-DiscovererAudioInfo.html#v:discovererAudioInfoGetMaxBitrate"
        })


#endif

-- method DiscovererAudioInfo::get_sample_rate
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "info"
--           , argType =
--               TInterface
--                 Name { namespace = "GstPbutils" , name = "DiscovererAudioInfo" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GstDiscovererAudioInfo"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just (TBasicType TUInt)
-- throws : False
-- Skip return : False

foreign import ccall "gst_discoverer_audio_info_get_sample_rate" gst_discoverer_audio_info_get_sample_rate :: 
    Ptr DiscovererAudioInfo ->              -- info : TInterface (Name {namespace = "GstPbutils", name = "DiscovererAudioInfo"})
    IO Word32

-- | /No description available in the introspection data./
discovererAudioInfoGetSampleRate ::
    (B.CallStack.HasCallStack, MonadIO m, IsDiscovererAudioInfo a) =>
    a
    -- ^ /@info@/: a t'GI.GstPbutils.Objects.DiscovererAudioInfo.DiscovererAudioInfo'
    -> m Word32
    -- ^ __Returns:__ the sample rate of the stream in Hertz.
discovererAudioInfoGetSampleRate :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsDiscovererAudioInfo a) =>
a -> m Word32
discovererAudioInfoGetSampleRate a
info = IO Word32 -> m Word32
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Word32 -> m Word32) -> IO Word32 -> m Word32
forall a b. (a -> b) -> a -> b
$ do
    Ptr DiscovererAudioInfo
info' <- a -> IO (Ptr DiscovererAudioInfo)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
info
    Word32
result <- Ptr DiscovererAudioInfo -> IO Word32
gst_discoverer_audio_info_get_sample_rate Ptr DiscovererAudioInfo
info'
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
info
    Word32 -> IO Word32
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Word32
result

#if defined(ENABLE_OVERLOADING)
data DiscovererAudioInfoGetSampleRateMethodInfo
instance (signature ~ (m Word32), MonadIO m, IsDiscovererAudioInfo a) => O.OverloadedMethod DiscovererAudioInfoGetSampleRateMethodInfo a signature where
    overloadedMethod = discovererAudioInfoGetSampleRate

instance O.OverloadedMethodInfo DiscovererAudioInfoGetSampleRateMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstPbutils.Objects.DiscovererAudioInfo.discovererAudioInfoGetSampleRate",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstpbutils-1.0.27/docs/GI-GstPbutils-Objects-DiscovererAudioInfo.html#v:discovererAudioInfoGetSampleRate"
        })


#endif