{- |
Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
License    : LGPL-2.1
Maintainer : Iñaki García Etxebarria (inaki@blueleaf.cc)

Structure containing the information of a URI analyzed by 'GI.GstPbutils.Objects.Discoverer.Discoverer'.
-}

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

module GI.GstPbutils.Objects.DiscovererInfo
    (

-- * Exported types
    DiscovererInfo(..)                      ,
    IsDiscovererInfo                        ,
    toDiscovererInfo                        ,
    noDiscovererInfo                        ,


 -- * Methods
-- ** copy #method:copy#

#if ENABLE_OVERLOADING
    DiscovererInfoCopyMethodInfo            ,
#endif
    discovererInfoCopy                      ,


-- ** fromVariant #method:fromVariant#

    discovererInfoFromVariant               ,


-- ** getAudioStreams #method:getAudioStreams#

#if ENABLE_OVERLOADING
    DiscovererInfoGetAudioStreamsMethodInfo ,
#endif
    discovererInfoGetAudioStreams           ,


-- ** getContainerStreams #method:getContainerStreams#

#if ENABLE_OVERLOADING
    DiscovererInfoGetContainerStreamsMethodInfo,
#endif
    discovererInfoGetContainerStreams       ,


-- ** getDuration #method:getDuration#

#if ENABLE_OVERLOADING
    DiscovererInfoGetDurationMethodInfo     ,
#endif
    discovererInfoGetDuration               ,


-- ** getLive #method:getLive#

#if ENABLE_OVERLOADING
    DiscovererInfoGetLiveMethodInfo         ,
#endif
    discovererInfoGetLive                   ,


-- ** getMisc #method:getMisc#

#if ENABLE_OVERLOADING
    DiscovererInfoGetMiscMethodInfo         ,
#endif
    discovererInfoGetMisc                   ,


-- ** getMissingElementsInstallerDetails #method:getMissingElementsInstallerDetails#

#if ENABLE_OVERLOADING
    DiscovererInfoGetMissingElementsInstallerDetailsMethodInfo,
#endif
    discovererInfoGetMissingElementsInstallerDetails,


-- ** getResult #method:getResult#

#if ENABLE_OVERLOADING
    DiscovererInfoGetResultMethodInfo       ,
#endif
    discovererInfoGetResult                 ,


-- ** getSeekable #method:getSeekable#

#if ENABLE_OVERLOADING
    DiscovererInfoGetSeekableMethodInfo     ,
#endif
    discovererInfoGetSeekable               ,


-- ** getStreamInfo #method:getStreamInfo#

#if ENABLE_OVERLOADING
    DiscovererInfoGetStreamInfoMethodInfo   ,
#endif
    discovererInfoGetStreamInfo             ,


-- ** getStreamList #method:getStreamList#

#if ENABLE_OVERLOADING
    DiscovererInfoGetStreamListMethodInfo   ,
#endif
    discovererInfoGetStreamList             ,


-- ** getStreams #method:getStreams#

#if ENABLE_OVERLOADING
    DiscovererInfoGetStreamsMethodInfo      ,
#endif
    discovererInfoGetStreams                ,


-- ** getSubtitleStreams #method:getSubtitleStreams#

#if ENABLE_OVERLOADING
    DiscovererInfoGetSubtitleStreamsMethodInfo,
#endif
    discovererInfoGetSubtitleStreams        ,


-- ** getTags #method:getTags#

#if ENABLE_OVERLOADING
    DiscovererInfoGetTagsMethodInfo         ,
#endif
    discovererInfoGetTags                   ,


-- ** getToc #method:getToc#

#if ENABLE_OVERLOADING
    DiscovererInfoGetTocMethodInfo          ,
#endif
    discovererInfoGetToc                    ,


-- ** getUri #method:getUri#

#if ENABLE_OVERLOADING
    DiscovererInfoGetUriMethodInfo          ,
#endif
    discovererInfoGetUri                    ,


-- ** getVideoStreams #method:getVideoStreams#

#if ENABLE_OVERLOADING
    DiscovererInfoGetVideoStreamsMethodInfo ,
#endif
    discovererInfoGetVideoStreams           ,


-- ** toVariant #method:toVariant#

#if ENABLE_OVERLOADING
    DiscovererInfoToVariantMethodInfo       ,
#endif
    discovererInfoToVariant                 ,




    ) 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.GObject.Objects.Object as GObject.Object
import qualified GI.Gst.Structs.Structure as Gst.Structure
import qualified GI.Gst.Structs.TagList as Gst.TagList
import qualified GI.Gst.Structs.Toc as Gst.Toc
import {-# SOURCE #-} qualified GI.GstPbutils.Enums as GstPbutils.Enums
import {-# SOURCE #-} qualified GI.GstPbutils.Flags as GstPbutils.Flags
import {-# SOURCE #-} qualified GI.GstPbutils.Objects.DiscovererStreamInfo as GstPbutils.DiscovererStreamInfo

-- | Memory-managed wrapper type.
newtype DiscovererInfo = DiscovererInfo (ManagedPtr DiscovererInfo)
foreign import ccall "gst_discoverer_info_get_type"
    c_gst_discoverer_info_get_type :: IO GType

instance GObject DiscovererInfo where
    gobjectType = c_gst_discoverer_info_get_type


-- | Type class for types which can be safely cast to `DiscovererInfo`, for instance with `toDiscovererInfo`.
class (GObject o, O.IsDescendantOf DiscovererInfo o) => IsDiscovererInfo o
instance (GObject o, O.IsDescendantOf DiscovererInfo o) => IsDiscovererInfo o

instance O.HasParentTypes DiscovererInfo
type instance O.ParentTypes DiscovererInfo = '[GObject.Object.Object]

-- | Cast to `DiscovererInfo`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`.
toDiscovererInfo :: (MonadIO m, IsDiscovererInfo o) => o -> m DiscovererInfo
toDiscovererInfo = liftIO . unsafeCastTo DiscovererInfo

-- | A convenience alias for `Nothing` :: `Maybe` `DiscovererInfo`.
noDiscovererInfo :: Maybe DiscovererInfo
noDiscovererInfo = Nothing

#if ENABLE_OVERLOADING
type family ResolveDiscovererInfoMethod (t :: Symbol) (o :: *) :: * where
    ResolveDiscovererInfoMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveDiscovererInfoMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveDiscovererInfoMethod "copy" o = DiscovererInfoCopyMethodInfo
    ResolveDiscovererInfoMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveDiscovererInfoMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveDiscovererInfoMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
    ResolveDiscovererInfoMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveDiscovererInfoMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveDiscovererInfoMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveDiscovererInfoMethod "ref" o = GObject.Object.ObjectRefMethodInfo
    ResolveDiscovererInfoMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveDiscovererInfoMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolveDiscovererInfoMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolveDiscovererInfoMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolveDiscovererInfoMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolveDiscovererInfoMethod "toVariant" o = DiscovererInfoToVariantMethodInfo
    ResolveDiscovererInfoMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
    ResolveDiscovererInfoMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolveDiscovererInfoMethod "getAudioStreams" o = DiscovererInfoGetAudioStreamsMethodInfo
    ResolveDiscovererInfoMethod "getContainerStreams" o = DiscovererInfoGetContainerStreamsMethodInfo
    ResolveDiscovererInfoMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolveDiscovererInfoMethod "getDuration" o = DiscovererInfoGetDurationMethodInfo
    ResolveDiscovererInfoMethod "getLive" o = DiscovererInfoGetLiveMethodInfo
    ResolveDiscovererInfoMethod "getMisc" o = DiscovererInfoGetMiscMethodInfo
    ResolveDiscovererInfoMethod "getMissingElementsInstallerDetails" o = DiscovererInfoGetMissingElementsInstallerDetailsMethodInfo
    ResolveDiscovererInfoMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveDiscovererInfoMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveDiscovererInfoMethod "getResult" o = DiscovererInfoGetResultMethodInfo
    ResolveDiscovererInfoMethod "getSeekable" o = DiscovererInfoGetSeekableMethodInfo
    ResolveDiscovererInfoMethod "getStreamInfo" o = DiscovererInfoGetStreamInfoMethodInfo
    ResolveDiscovererInfoMethod "getStreamList" o = DiscovererInfoGetStreamListMethodInfo
    ResolveDiscovererInfoMethod "getStreams" o = DiscovererInfoGetStreamsMethodInfo
    ResolveDiscovererInfoMethod "getSubtitleStreams" o = DiscovererInfoGetSubtitleStreamsMethodInfo
    ResolveDiscovererInfoMethod "getTags" o = DiscovererInfoGetTagsMethodInfo
    ResolveDiscovererInfoMethod "getToc" o = DiscovererInfoGetTocMethodInfo
    ResolveDiscovererInfoMethod "getUri" o = DiscovererInfoGetUriMethodInfo
    ResolveDiscovererInfoMethod "getVideoStreams" o = DiscovererInfoGetVideoStreamsMethodInfo
    ResolveDiscovererInfoMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveDiscovererInfoMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveDiscovererInfoMethod l o = O.MethodResolutionFailed l o

instance (info ~ ResolveDiscovererInfoMethod t DiscovererInfo, O.MethodInfo info DiscovererInfo p) => OL.IsLabel t (DiscovererInfo -> 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

#if ENABLE_OVERLOADING
instance O.HasAttributeList DiscovererInfo
type instance O.AttributeList DiscovererInfo = DiscovererInfoAttributeList
type DiscovererInfoAttributeList = ('[ ] :: [(Symbol, *)])
#endif

#if ENABLE_OVERLOADING
#endif

#if ENABLE_OVERLOADING
type instance O.SignalList DiscovererInfo = DiscovererInfoSignalList
type DiscovererInfoSignalList = ('[ '("notify", GObject.Object.ObjectNotifySignalInfo)] :: [(Symbol, *)])

#endif

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

foreign import ccall "gst_discoverer_info_copy" gst_discoverer_info_copy ::
    Ptr DiscovererInfo ->                   -- ptr : TInterface (Name {namespace = "GstPbutils", name = "DiscovererInfo"})
    IO (Ptr DiscovererInfo)

{- |
/No description available in the introspection data./
-}
discovererInfoCopy ::
    (B.CallStack.HasCallStack, MonadIO m, IsDiscovererInfo a) =>
    a
    {- ^ /@ptr@/: a 'GI.GstPbutils.Objects.DiscovererInfo.DiscovererInfo' -}
    -> m DiscovererInfo
    {- ^ __Returns:__ A copy of the 'GI.GstPbutils.Objects.DiscovererInfo.DiscovererInfo' -}
discovererInfoCopy ptr = liftIO $ do
    ptr' <- unsafeManagedPtrCastPtr ptr
    result <- gst_discoverer_info_copy ptr'
    checkUnexpectedReturnNULL "discovererInfoCopy" result
    result' <- (wrapObject DiscovererInfo) result
    touchManagedPtr ptr
    return result'

#if ENABLE_OVERLOADING
data DiscovererInfoCopyMethodInfo
instance (signature ~ (m DiscovererInfo), MonadIO m, IsDiscovererInfo a) => O.MethodInfo DiscovererInfoCopyMethodInfo a signature where
    overloadedMethod _ = discovererInfoCopy

#endif

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

foreign import ccall "gst_discoverer_info_get_audio_streams" gst_discoverer_info_get_audio_streams ::
    Ptr DiscovererInfo ->                   -- info : TInterface (Name {namespace = "GstPbutils", name = "DiscovererInfo"})
    IO (Ptr (GList (Ptr GstPbutils.DiscovererStreamInfo.DiscovererStreamInfo)))

{- |
Finds all the 'GI.GstPbutils.Objects.DiscovererAudioInfo.DiscovererAudioInfo' contained in /@info@/
-}
discovererInfoGetAudioStreams ::
    (B.CallStack.HasCallStack, MonadIO m, IsDiscovererInfo a) =>
    a
    {- ^ /@info@/: a 'GI.GstPbutils.Objects.DiscovererInfo.DiscovererInfo' -}
    -> m [GstPbutils.DiscovererStreamInfo.DiscovererStreamInfo]
    {- ^ __Returns:__ A 'GI.GLib.Structs.List.List' of
matching 'GI.GstPbutils.Objects.DiscovererStreamInfo.DiscovererStreamInfo'. The caller should free it with
'GI.GstPbutils.Objects.DiscovererStreamInfo.discovererStreamInfoListFree'. -}
discovererInfoGetAudioStreams info = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    result <- gst_discoverer_info_get_audio_streams info'
    result' <- unpackGList result
    result'' <- mapM (wrapObject GstPbutils.DiscovererStreamInfo.DiscovererStreamInfo) result'
    g_list_free result
    touchManagedPtr info
    return result''

#if ENABLE_OVERLOADING
data DiscovererInfoGetAudioStreamsMethodInfo
instance (signature ~ (m [GstPbutils.DiscovererStreamInfo.DiscovererStreamInfo]), MonadIO m, IsDiscovererInfo a) => O.MethodInfo DiscovererInfoGetAudioStreamsMethodInfo a signature where
    overloadedMethod _ = discovererInfoGetAudioStreams

#endif

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

foreign import ccall "gst_discoverer_info_get_container_streams" gst_discoverer_info_get_container_streams ::
    Ptr DiscovererInfo ->                   -- info : TInterface (Name {namespace = "GstPbutils", name = "DiscovererInfo"})
    IO (Ptr (GList (Ptr GstPbutils.DiscovererStreamInfo.DiscovererStreamInfo)))

{- |
Finds all the 'GI.GstPbutils.Objects.DiscovererContainerInfo.DiscovererContainerInfo' contained in /@info@/
-}
discovererInfoGetContainerStreams ::
    (B.CallStack.HasCallStack, MonadIO m, IsDiscovererInfo a) =>
    a
    {- ^ /@info@/: a 'GI.GstPbutils.Objects.DiscovererInfo.DiscovererInfo' -}
    -> m [GstPbutils.DiscovererStreamInfo.DiscovererStreamInfo]
    {- ^ __Returns:__ A 'GI.GLib.Structs.List.List' of
matching 'GI.GstPbutils.Objects.DiscovererStreamInfo.DiscovererStreamInfo'. The caller should free it with
'GI.GstPbutils.Objects.DiscovererStreamInfo.discovererStreamInfoListFree'. -}
discovererInfoGetContainerStreams info = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    result <- gst_discoverer_info_get_container_streams info'
    result' <- unpackGList result
    result'' <- mapM (wrapObject GstPbutils.DiscovererStreamInfo.DiscovererStreamInfo) result'
    g_list_free result
    touchManagedPtr info
    return result''

#if ENABLE_OVERLOADING
data DiscovererInfoGetContainerStreamsMethodInfo
instance (signature ~ (m [GstPbutils.DiscovererStreamInfo.DiscovererStreamInfo]), MonadIO m, IsDiscovererInfo a) => O.MethodInfo DiscovererInfoGetContainerStreamsMethodInfo a signature where
    overloadedMethod _ = discovererInfoGetContainerStreams

#endif

-- method DiscovererInfo::get_duration
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "info", argType = TInterface (Name {namespace = "GstPbutils", name = "DiscovererInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstDiscovererInfo", 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_info_get_duration" gst_discoverer_info_get_duration ::
    Ptr DiscovererInfo ->                   -- info : TInterface (Name {namespace = "GstPbutils", name = "DiscovererInfo"})
    IO Word64

{- |
/No description available in the introspection data./
-}
discovererInfoGetDuration ::
    (B.CallStack.HasCallStack, MonadIO m, IsDiscovererInfo a) =>
    a
    {- ^ /@info@/: a 'GI.GstPbutils.Objects.DiscovererInfo.DiscovererInfo' -}
    -> m Word64
    {- ^ __Returns:__ the duration of the URI in @/GstClockTime/@ (nanoseconds). -}
discovererInfoGetDuration info = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    result <- gst_discoverer_info_get_duration info'
    touchManagedPtr info
    return result

#if ENABLE_OVERLOADING
data DiscovererInfoGetDurationMethodInfo
instance (signature ~ (m Word64), MonadIO m, IsDiscovererInfo a) => O.MethodInfo DiscovererInfoGetDurationMethodInfo a signature where
    overloadedMethod _ = discovererInfoGetDuration

#endif

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

foreign import ccall "gst_discoverer_info_get_live" gst_discoverer_info_get_live ::
    Ptr DiscovererInfo ->                   -- info : TInterface (Name {namespace = "GstPbutils", name = "DiscovererInfo"})
    IO CInt

{- |
/No description available in the introspection data./

/Since: 1.14/
-}
discovererInfoGetLive ::
    (B.CallStack.HasCallStack, MonadIO m, IsDiscovererInfo a) =>
    a
    {- ^ /@info@/: a 'GI.GstPbutils.Objects.DiscovererInfo.DiscovererInfo' -}
    -> m Bool
    {- ^ __Returns:__ whether the URI is live. -}
discovererInfoGetLive info = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    result <- gst_discoverer_info_get_live info'
    let result' = (/= 0) result
    touchManagedPtr info
    return result'

#if ENABLE_OVERLOADING
data DiscovererInfoGetLiveMethodInfo
instance (signature ~ (m Bool), MonadIO m, IsDiscovererInfo a) => O.MethodInfo DiscovererInfoGetLiveMethodInfo a signature where
    overloadedMethod _ = discovererInfoGetLive

#endif

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

foreign import ccall "gst_discoverer_info_get_misc" gst_discoverer_info_get_misc ::
    Ptr DiscovererInfo ->                   -- info : TInterface (Name {namespace = "GstPbutils", name = "DiscovererInfo"})
    IO (Ptr Gst.Structure.Structure)

{-# DEPRECATED discovererInfoGetMisc ["This functions is deprecated since version 1.4, use","@/gst_discoverer_info_get_missing_elements_installer_details/@"] #-}
{- |
/No description available in the introspection data./
-}
discovererInfoGetMisc ::
    (B.CallStack.HasCallStack, MonadIO m, IsDiscovererInfo a) =>
    a
    {- ^ /@info@/: a 'GI.GstPbutils.Objects.DiscovererInfo.DiscovererInfo' -}
    -> m Gst.Structure.Structure
    {- ^ __Returns:__ Miscellaneous information stored as a 'GI.Gst.Structs.Structure.Structure'
(for example: information about missing plugins). If you wish to use the
'GI.Gst.Structs.Structure.Structure' after the life-time of /@info@/, you will need to copy it. -}
discovererInfoGetMisc info = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    result <- gst_discoverer_info_get_misc info'
    checkUnexpectedReturnNULL "discovererInfoGetMisc" result
    result' <- (newBoxed Gst.Structure.Structure) result
    touchManagedPtr info
    return result'

#if ENABLE_OVERLOADING
data DiscovererInfoGetMiscMethodInfo
instance (signature ~ (m Gst.Structure.Structure), MonadIO m, IsDiscovererInfo a) => O.MethodInfo DiscovererInfoGetMiscMethodInfo a signature where
    overloadedMethod _ = discovererInfoGetMisc

#endif

-- method DiscovererInfo::get_missing_elements_installer_details
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "info", argType = TInterface (Name {namespace = "GstPbutils", name = "DiscovererInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstDiscovererStreamInfo to retrieve installer detail\nfor the missing element", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TCArray True (-1) (-1) (TBasicType TUTF8))
-- throws : False
-- Skip return : False

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

{- |
Get the installer details for missing elements

/Since: 1.4/
-}
discovererInfoGetMissingElementsInstallerDetails ::
    (B.CallStack.HasCallStack, MonadIO m, IsDiscovererInfo a) =>
    a
    {- ^ /@info@/: a 'GI.GstPbutils.Objects.DiscovererStreamInfo.DiscovererStreamInfo' to retrieve installer detail
for the missing element -}
    -> m [T.Text]
    {- ^ __Returns:__ An array of strings
containing informations about how to install the various missing elements
for /@info@/ to be usable. If you wish to use the strings after the life-time
of /@info@/, you will need to copy them. -}
discovererInfoGetMissingElementsInstallerDetails info = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    result <- gst_discoverer_info_get_missing_elements_installer_details info'
    checkUnexpectedReturnNULL "discovererInfoGetMissingElementsInstallerDetails" result
    result' <- unpackZeroTerminatedUTF8CArray result
    touchManagedPtr info
    return result'

#if ENABLE_OVERLOADING
data DiscovererInfoGetMissingElementsInstallerDetailsMethodInfo
instance (signature ~ (m [T.Text]), MonadIO m, IsDiscovererInfo a) => O.MethodInfo DiscovererInfoGetMissingElementsInstallerDetailsMethodInfo a signature where
    overloadedMethod _ = discovererInfoGetMissingElementsInstallerDetails

#endif

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

foreign import ccall "gst_discoverer_info_get_result" gst_discoverer_info_get_result ::
    Ptr DiscovererInfo ->                   -- info : TInterface (Name {namespace = "GstPbutils", name = "DiscovererInfo"})
    IO CUInt

{- |
/No description available in the introspection data./
-}
discovererInfoGetResult ::
    (B.CallStack.HasCallStack, MonadIO m, IsDiscovererInfo a) =>
    a
    {- ^ /@info@/: a 'GI.GstPbutils.Objects.DiscovererInfo.DiscovererInfo' -}
    -> m GstPbutils.Enums.DiscovererResult
    {- ^ __Returns:__ the result of the discovery as a 'GI.GstPbutils.Enums.DiscovererResult'. -}
discovererInfoGetResult info = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    result <- gst_discoverer_info_get_result info'
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr info
    return result'

#if ENABLE_OVERLOADING
data DiscovererInfoGetResultMethodInfo
instance (signature ~ (m GstPbutils.Enums.DiscovererResult), MonadIO m, IsDiscovererInfo a) => O.MethodInfo DiscovererInfoGetResultMethodInfo a signature where
    overloadedMethod _ = discovererInfoGetResult

#endif

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

foreign import ccall "gst_discoverer_info_get_seekable" gst_discoverer_info_get_seekable ::
    Ptr DiscovererInfo ->                   -- info : TInterface (Name {namespace = "GstPbutils", name = "DiscovererInfo"})
    IO CInt

{- |
/No description available in the introspection data./
-}
discovererInfoGetSeekable ::
    (B.CallStack.HasCallStack, MonadIO m, IsDiscovererInfo a) =>
    a
    {- ^ /@info@/: a 'GI.GstPbutils.Objects.DiscovererInfo.DiscovererInfo' -}
    -> m Bool
    {- ^ __Returns:__ the whether the URI is seekable. -}
discovererInfoGetSeekable info = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    result <- gst_discoverer_info_get_seekable info'
    let result' = (/= 0) result
    touchManagedPtr info
    return result'

#if ENABLE_OVERLOADING
data DiscovererInfoGetSeekableMethodInfo
instance (signature ~ (m Bool), MonadIO m, IsDiscovererInfo a) => O.MethodInfo DiscovererInfoGetSeekableMethodInfo a signature where
    overloadedMethod _ = discovererInfoGetSeekable

#endif

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

foreign import ccall "gst_discoverer_info_get_stream_info" gst_discoverer_info_get_stream_info ::
    Ptr DiscovererInfo ->                   -- info : TInterface (Name {namespace = "GstPbutils", name = "DiscovererInfo"})
    IO (Ptr GstPbutils.DiscovererStreamInfo.DiscovererStreamInfo)

{- |
/No description available in the introspection data./
-}
discovererInfoGetStreamInfo ::
    (B.CallStack.HasCallStack, MonadIO m, IsDiscovererInfo a) =>
    a
    {- ^ /@info@/: a 'GI.GstPbutils.Objects.DiscovererInfo.DiscovererInfo' -}
    -> m GstPbutils.DiscovererStreamInfo.DiscovererStreamInfo
    {- ^ __Returns:__ the structure (or topology) of the URI as a
'GI.GstPbutils.Objects.DiscovererStreamInfo.DiscovererStreamInfo'.
This structure can be traversed to see the original hierarchy. Unref with
@/gst_discoverer_stream_info_unref()/@ after usage. -}
discovererInfoGetStreamInfo info = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    result <- gst_discoverer_info_get_stream_info info'
    checkUnexpectedReturnNULL "discovererInfoGetStreamInfo" result
    result' <- (wrapObject GstPbutils.DiscovererStreamInfo.DiscovererStreamInfo) result
    touchManagedPtr info
    return result'

#if ENABLE_OVERLOADING
data DiscovererInfoGetStreamInfoMethodInfo
instance (signature ~ (m GstPbutils.DiscovererStreamInfo.DiscovererStreamInfo), MonadIO m, IsDiscovererInfo a) => O.MethodInfo DiscovererInfoGetStreamInfoMethodInfo a signature where
    overloadedMethod _ = discovererInfoGetStreamInfo

#endif

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

foreign import ccall "gst_discoverer_info_get_stream_list" gst_discoverer_info_get_stream_list ::
    Ptr DiscovererInfo ->                   -- info : TInterface (Name {namespace = "GstPbutils", name = "DiscovererInfo"})
    IO (Ptr (GList (Ptr GstPbutils.DiscovererStreamInfo.DiscovererStreamInfo)))

{- |
/No description available in the introspection data./
-}
discovererInfoGetStreamList ::
    (B.CallStack.HasCallStack, MonadIO m, IsDiscovererInfo a) =>
    a
    {- ^ /@info@/: a 'GI.GstPbutils.Objects.DiscovererInfo.DiscovererInfo' -}
    -> m [GstPbutils.DiscovererStreamInfo.DiscovererStreamInfo]
    {- ^ __Returns:__ the list of
all streams contained in the @/info/@. Free after usage
with 'GI.GstPbutils.Objects.DiscovererStreamInfo.discovererStreamInfoListFree'. -}
discovererInfoGetStreamList info = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    result <- gst_discoverer_info_get_stream_list info'
    result' <- unpackGList result
    result'' <- mapM (wrapObject GstPbutils.DiscovererStreamInfo.DiscovererStreamInfo) result'
    g_list_free result
    touchManagedPtr info
    return result''

#if ENABLE_OVERLOADING
data DiscovererInfoGetStreamListMethodInfo
instance (signature ~ (m [GstPbutils.DiscovererStreamInfo.DiscovererStreamInfo]), MonadIO m, IsDiscovererInfo a) => O.MethodInfo DiscovererInfoGetStreamListMethodInfo a signature where
    overloadedMethod _ = discovererInfoGetStreamList

#endif

-- method DiscovererInfo::get_streams
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "info", argType = TInterface (Name {namespace = "GstPbutils", name = "DiscovererInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstDiscovererInfo", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "streamtype", argType = TBasicType TGType, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GType derived from #GstDiscovererStreamInfo", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TGList (TInterface (Name {namespace = "GstPbutils", name = "DiscovererStreamInfo"})))
-- throws : False
-- Skip return : False

foreign import ccall "gst_discoverer_info_get_streams" gst_discoverer_info_get_streams ::
    Ptr DiscovererInfo ->                   -- info : TInterface (Name {namespace = "GstPbutils", name = "DiscovererInfo"})
    CGType ->                               -- streamtype : TBasicType TGType
    IO (Ptr (GList (Ptr GstPbutils.DiscovererStreamInfo.DiscovererStreamInfo)))

{- |
Finds the 'GI.GstPbutils.Objects.DiscovererStreamInfo.DiscovererStreamInfo' contained in /@info@/ that match the
given /@streamtype@/.
-}
discovererInfoGetStreams ::
    (B.CallStack.HasCallStack, MonadIO m, IsDiscovererInfo a) =>
    a
    {- ^ /@info@/: a 'GI.GstPbutils.Objects.DiscovererInfo.DiscovererInfo' -}
    -> GType
    {- ^ /@streamtype@/: a 'GType' derived from 'GI.GstPbutils.Objects.DiscovererStreamInfo.DiscovererStreamInfo' -}
    -> m [GstPbutils.DiscovererStreamInfo.DiscovererStreamInfo]
    {- ^ __Returns:__ A 'GI.GLib.Structs.List.List' of
matching 'GI.GstPbutils.Objects.DiscovererStreamInfo.DiscovererStreamInfo'. The caller should free it with
'GI.GstPbutils.Objects.DiscovererStreamInfo.discovererStreamInfoListFree'. -}
discovererInfoGetStreams info streamtype = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    let streamtype' = gtypeToCGType streamtype
    result <- gst_discoverer_info_get_streams info' streamtype'
    result' <- unpackGList result
    result'' <- mapM (wrapObject GstPbutils.DiscovererStreamInfo.DiscovererStreamInfo) result'
    g_list_free result
    touchManagedPtr info
    return result''

#if ENABLE_OVERLOADING
data DiscovererInfoGetStreamsMethodInfo
instance (signature ~ (GType -> m [GstPbutils.DiscovererStreamInfo.DiscovererStreamInfo]), MonadIO m, IsDiscovererInfo a) => O.MethodInfo DiscovererInfoGetStreamsMethodInfo a signature where
    overloadedMethod _ = discovererInfoGetStreams

#endif

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

foreign import ccall "gst_discoverer_info_get_subtitle_streams" gst_discoverer_info_get_subtitle_streams ::
    Ptr DiscovererInfo ->                   -- info : TInterface (Name {namespace = "GstPbutils", name = "DiscovererInfo"})
    IO (Ptr (GList (Ptr GstPbutils.DiscovererStreamInfo.DiscovererStreamInfo)))

{- |
Finds all the 'GI.GstPbutils.Objects.DiscovererSubtitleInfo.DiscovererSubtitleInfo' contained in /@info@/
-}
discovererInfoGetSubtitleStreams ::
    (B.CallStack.HasCallStack, MonadIO m, IsDiscovererInfo a) =>
    a
    {- ^ /@info@/: a 'GI.GstPbutils.Objects.DiscovererInfo.DiscovererInfo' -}
    -> m [GstPbutils.DiscovererStreamInfo.DiscovererStreamInfo]
    {- ^ __Returns:__ A 'GI.GLib.Structs.List.List' of
matching 'GI.GstPbutils.Objects.DiscovererStreamInfo.DiscovererStreamInfo'. The caller should free it with
'GI.GstPbutils.Objects.DiscovererStreamInfo.discovererStreamInfoListFree'. -}
discovererInfoGetSubtitleStreams info = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    result <- gst_discoverer_info_get_subtitle_streams info'
    result' <- unpackGList result
    result'' <- mapM (wrapObject GstPbutils.DiscovererStreamInfo.DiscovererStreamInfo) result'
    g_list_free result
    touchManagedPtr info
    return result''

#if ENABLE_OVERLOADING
data DiscovererInfoGetSubtitleStreamsMethodInfo
instance (signature ~ (m [GstPbutils.DiscovererStreamInfo.DiscovererStreamInfo]), MonadIO m, IsDiscovererInfo a) => O.MethodInfo DiscovererInfoGetSubtitleStreamsMethodInfo a signature where
    overloadedMethod _ = discovererInfoGetSubtitleStreams

#endif

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

foreign import ccall "gst_discoverer_info_get_tags" gst_discoverer_info_get_tags ::
    Ptr DiscovererInfo ->                   -- info : TInterface (Name {namespace = "GstPbutils", name = "DiscovererInfo"})
    IO (Ptr Gst.TagList.TagList)

{- |
/No description available in the introspection data./
-}
discovererInfoGetTags ::
    (B.CallStack.HasCallStack, MonadIO m, IsDiscovererInfo a) =>
    a
    {- ^ /@info@/: a 'GI.GstPbutils.Objects.DiscovererInfo.DiscovererInfo' -}
    -> m Gst.TagList.TagList
    {- ^ __Returns:__ all tags contained in the URI. If you wish to use
the tags after the life-time of /@info@/, you will need to copy them. -}
discovererInfoGetTags info = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    result <- gst_discoverer_info_get_tags info'
    checkUnexpectedReturnNULL "discovererInfoGetTags" result
    result' <- (newBoxed Gst.TagList.TagList) result
    touchManagedPtr info
    return result'

#if ENABLE_OVERLOADING
data DiscovererInfoGetTagsMethodInfo
instance (signature ~ (m Gst.TagList.TagList), MonadIO m, IsDiscovererInfo a) => O.MethodInfo DiscovererInfoGetTagsMethodInfo a signature where
    overloadedMethod _ = discovererInfoGetTags

#endif

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

foreign import ccall "gst_discoverer_info_get_toc" gst_discoverer_info_get_toc ::
    Ptr DiscovererInfo ->                   -- info : TInterface (Name {namespace = "GstPbutils", name = "DiscovererInfo"})
    IO (Ptr Gst.Toc.Toc)

{- |
/No description available in the introspection data./
-}
discovererInfoGetToc ::
    (B.CallStack.HasCallStack, MonadIO m, IsDiscovererInfo a) =>
    a
    {- ^ /@info@/: a 'GI.GstPbutils.Objects.DiscovererInfo.DiscovererInfo' -}
    -> m Gst.Toc.Toc
    {- ^ __Returns:__ TOC contained in the URI. If you wish to use
the TOC after the life-time of /@info@/, you will need to copy it. -}
discovererInfoGetToc info = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    result <- gst_discoverer_info_get_toc info'
    checkUnexpectedReturnNULL "discovererInfoGetToc" result
    result' <- (newBoxed Gst.Toc.Toc) result
    touchManagedPtr info
    return result'

#if ENABLE_OVERLOADING
data DiscovererInfoGetTocMethodInfo
instance (signature ~ (m Gst.Toc.Toc), MonadIO m, IsDiscovererInfo a) => O.MethodInfo DiscovererInfoGetTocMethodInfo a signature where
    overloadedMethod _ = discovererInfoGetToc

#endif

-- method DiscovererInfo::get_uri
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "info", argType = TInterface (Name {namespace = "GstPbutils", name = "DiscovererInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstDiscovererInfo", 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_info_get_uri" gst_discoverer_info_get_uri ::
    Ptr DiscovererInfo ->                   -- info : TInterface (Name {namespace = "GstPbutils", name = "DiscovererInfo"})
    IO CString

{- |
/No description available in the introspection data./
-}
discovererInfoGetUri ::
    (B.CallStack.HasCallStack, MonadIO m, IsDiscovererInfo a) =>
    a
    {- ^ /@info@/: a 'GI.GstPbutils.Objects.DiscovererInfo.DiscovererInfo' -}
    -> m T.Text
    {- ^ __Returns:__ the URI to which this information corresponds to.
Copy it if you wish to use it after the life-time of /@info@/. -}
discovererInfoGetUri info = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    result <- gst_discoverer_info_get_uri info'
    checkUnexpectedReturnNULL "discovererInfoGetUri" result
    result' <- cstringToText result
    touchManagedPtr info
    return result'

#if ENABLE_OVERLOADING
data DiscovererInfoGetUriMethodInfo
instance (signature ~ (m T.Text), MonadIO m, IsDiscovererInfo a) => O.MethodInfo DiscovererInfoGetUriMethodInfo a signature where
    overloadedMethod _ = discovererInfoGetUri

#endif

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

foreign import ccall "gst_discoverer_info_get_video_streams" gst_discoverer_info_get_video_streams ::
    Ptr DiscovererInfo ->                   -- info : TInterface (Name {namespace = "GstPbutils", name = "DiscovererInfo"})
    IO (Ptr (GList (Ptr GstPbutils.DiscovererStreamInfo.DiscovererStreamInfo)))

{- |
Finds all the 'GI.GstPbutils.Objects.DiscovererVideoInfo.DiscovererVideoInfo' contained in /@info@/
-}
discovererInfoGetVideoStreams ::
    (B.CallStack.HasCallStack, MonadIO m, IsDiscovererInfo a) =>
    a
    {- ^ /@info@/: a 'GI.GstPbutils.Objects.DiscovererInfo.DiscovererInfo' -}
    -> m [GstPbutils.DiscovererStreamInfo.DiscovererStreamInfo]
    {- ^ __Returns:__ A 'GI.GLib.Structs.List.List' of
matching 'GI.GstPbutils.Objects.DiscovererStreamInfo.DiscovererStreamInfo'. The caller should free it with
'GI.GstPbutils.Objects.DiscovererStreamInfo.discovererStreamInfoListFree'. -}
discovererInfoGetVideoStreams info = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    result <- gst_discoverer_info_get_video_streams info'
    result' <- unpackGList result
    result'' <- mapM (wrapObject GstPbutils.DiscovererStreamInfo.DiscovererStreamInfo) result'
    g_list_free result
    touchManagedPtr info
    return result''

#if ENABLE_OVERLOADING
data DiscovererInfoGetVideoStreamsMethodInfo
instance (signature ~ (m [GstPbutils.DiscovererStreamInfo.DiscovererStreamInfo]), MonadIO m, IsDiscovererInfo a) => O.MethodInfo DiscovererInfoGetVideoStreamsMethodInfo a signature where
    overloadedMethod _ = discovererInfoGetVideoStreams

#endif

-- method DiscovererInfo::to_variant
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "info", argType = TInterface (Name {namespace = "GstPbutils", name = "DiscovererInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GstDiscovererInfo", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "flags", argType = TInterface (Name {namespace = "GstPbutils", name = "DiscovererSerializeFlags"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A combination of #GstDiscovererSerializeFlags to specify\nwhat needs to be serialized.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just TVariant
-- throws : False
-- Skip return : False

foreign import ccall "gst_discoverer_info_to_variant" gst_discoverer_info_to_variant ::
    Ptr DiscovererInfo ->                   -- info : TInterface (Name {namespace = "GstPbutils", name = "DiscovererInfo"})
    CUInt ->                                -- flags : TInterface (Name {namespace = "GstPbutils", name = "DiscovererSerializeFlags"})
    IO (Ptr GVariant)

{- |
Serializes /@info@/ to a 'GVariant' that can be parsed again
through 'GI.GstPbutils.Objects.DiscovererInfo.discovererInfoFromVariant'.

Note that any 'GI.Gst.Structs.Toc.Toc' (s) that might have been discovered will not be serialized
for now.

/Since: 1.6/
-}
discovererInfoToVariant ::
    (B.CallStack.HasCallStack, MonadIO m, IsDiscovererInfo a) =>
    a
    {- ^ /@info@/: A 'GI.GstPbutils.Objects.DiscovererInfo.DiscovererInfo' -}
    -> [GstPbutils.Flags.DiscovererSerializeFlags]
    {- ^ /@flags@/: A combination of 'GI.GstPbutils.Flags.DiscovererSerializeFlags' to specify
what needs to be serialized. -}
    -> m GVariant
    {- ^ __Returns:__ A newly-allocated 'GVariant' representing /@info@/. -}
discovererInfoToVariant info flags = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    let flags' = gflagsToWord flags
    result <- gst_discoverer_info_to_variant info' flags'
    checkUnexpectedReturnNULL "discovererInfoToVariant" result
    result' <- B.GVariant.wrapGVariantPtr result
    touchManagedPtr info
    return result'

#if ENABLE_OVERLOADING
data DiscovererInfoToVariantMethodInfo
instance (signature ~ ([GstPbutils.Flags.DiscovererSerializeFlags] -> m GVariant), MonadIO m, IsDiscovererInfo a) => O.MethodInfo DiscovererInfoToVariantMethodInfo a signature where
    overloadedMethod _ = discovererInfoToVariant

#endif

-- method DiscovererInfo::from_variant
-- method type : MemberFunction
-- Args : [Arg {argCName = "variant", argType = TVariant, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GVariant to deserialize into a #GstDiscovererInfo.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "GstPbutils", name = "DiscovererInfo"}))
-- throws : False
-- Skip return : False

foreign import ccall "gst_discoverer_info_from_variant" gst_discoverer_info_from_variant ::
    Ptr GVariant ->                         -- variant : TVariant
    IO (Ptr DiscovererInfo)

{- |
Parses a 'GVariant' as produced by 'GI.GstPbutils.Objects.DiscovererInfo.discovererInfoToVariant'
back to a 'GI.GstPbutils.Objects.DiscovererInfo.DiscovererInfo'.

/Since: 1.6/
-}
discovererInfoFromVariant ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    GVariant
    {- ^ /@variant@/: A 'GVariant' to deserialize into a 'GI.GstPbutils.Objects.DiscovererInfo.DiscovererInfo'. -}
    -> m DiscovererInfo
    {- ^ __Returns:__ A newly-allocated 'GI.GstPbutils.Objects.DiscovererInfo.DiscovererInfo'. -}
discovererInfoFromVariant variant = liftIO $ do
    variant' <- unsafeManagedPtrGetPtr variant
    result <- gst_discoverer_info_from_variant variant'
    checkUnexpectedReturnNULL "discovererInfoFromVariant" result
    result' <- (wrapObject DiscovererInfo) result
    touchManagedPtr variant
    return result'

#if ENABLE_OVERLOADING
#endif