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

The opaque base class object for all encoding profiles. This contains generic
information like name, description, format and preset.
-}

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

module GI.GstPbutils.Objects.EncodingProfile
    (

-- * Exported types
    EncodingProfile(..)                     ,
    IsEncodingProfile                       ,
    toEncodingProfile                       ,
    noEncodingProfile                       ,


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

#if ENABLE_OVERLOADING
    EncodingProfileCopyMethodInfo           ,
#endif
    encodingProfileCopy                     ,


-- ** find #method:find#

    encodingProfileFind                     ,


-- ** fromDiscoverer #method:fromDiscoverer#

    encodingProfileFromDiscoverer           ,


-- ** getAllowDynamicOutput #method:getAllowDynamicOutput#

#if ENABLE_OVERLOADING
    EncodingProfileGetAllowDynamicOutputMethodInfo,
#endif
    encodingProfileGetAllowDynamicOutput    ,


-- ** getDescription #method:getDescription#

#if ENABLE_OVERLOADING
    EncodingProfileGetDescriptionMethodInfo ,
#endif
    encodingProfileGetDescription           ,


-- ** getFileExtension #method:getFileExtension#

#if ENABLE_OVERLOADING
    EncodingProfileGetFileExtensionMethodInfo,
#endif
    encodingProfileGetFileExtension         ,


-- ** getFormat #method:getFormat#

#if ENABLE_OVERLOADING
    EncodingProfileGetFormatMethodInfo      ,
#endif
    encodingProfileGetFormat                ,


-- ** getInputCaps #method:getInputCaps#

#if ENABLE_OVERLOADING
    EncodingProfileGetInputCapsMethodInfo   ,
#endif
    encodingProfileGetInputCaps             ,


-- ** getName #method:getName#

#if ENABLE_OVERLOADING
    EncodingProfileGetNameMethodInfo        ,
#endif
    encodingProfileGetName                  ,


-- ** getPresence #method:getPresence#

#if ENABLE_OVERLOADING
    EncodingProfileGetPresenceMethodInfo    ,
#endif
    encodingProfileGetPresence              ,


-- ** getPreset #method:getPreset#

#if ENABLE_OVERLOADING
    EncodingProfileGetPresetMethodInfo      ,
#endif
    encodingProfileGetPreset                ,


-- ** getPresetName #method:getPresetName#

#if ENABLE_OVERLOADING
    EncodingProfileGetPresetNameMethodInfo  ,
#endif
    encodingProfileGetPresetName            ,


-- ** getRestriction #method:getRestriction#

#if ENABLE_OVERLOADING
    EncodingProfileGetRestrictionMethodInfo ,
#endif
    encodingProfileGetRestriction           ,


-- ** getTypeNick #method:getTypeNick#

#if ENABLE_OVERLOADING
    EncodingProfileGetTypeNickMethodInfo    ,
#endif
    encodingProfileGetTypeNick              ,


-- ** isEnabled #method:isEnabled#

#if ENABLE_OVERLOADING
    EncodingProfileIsEnabledMethodInfo      ,
#endif
    encodingProfileIsEnabled                ,


-- ** isEqual #method:isEqual#

#if ENABLE_OVERLOADING
    EncodingProfileIsEqualMethodInfo        ,
#endif
    encodingProfileIsEqual                  ,


-- ** setAllowDynamicOutput #method:setAllowDynamicOutput#

#if ENABLE_OVERLOADING
    EncodingProfileSetAllowDynamicOutputMethodInfo,
#endif
    encodingProfileSetAllowDynamicOutput    ,


-- ** setDescription #method:setDescription#

#if ENABLE_OVERLOADING
    EncodingProfileSetDescriptionMethodInfo ,
#endif
    encodingProfileSetDescription           ,


-- ** setEnabled #method:setEnabled#

#if ENABLE_OVERLOADING
    EncodingProfileSetEnabledMethodInfo     ,
#endif
    encodingProfileSetEnabled               ,


-- ** setFormat #method:setFormat#

#if ENABLE_OVERLOADING
    EncodingProfileSetFormatMethodInfo      ,
#endif
    encodingProfileSetFormat                ,


-- ** setName #method:setName#

#if ENABLE_OVERLOADING
    EncodingProfileSetNameMethodInfo        ,
#endif
    encodingProfileSetName                  ,


-- ** setPresence #method:setPresence#

#if ENABLE_OVERLOADING
    EncodingProfileSetPresenceMethodInfo    ,
#endif
    encodingProfileSetPresence              ,


-- ** setPreset #method:setPreset#

#if ENABLE_OVERLOADING
    EncodingProfileSetPresetMethodInfo      ,
#endif
    encodingProfileSetPreset                ,


-- ** setPresetName #method:setPresetName#

#if ENABLE_OVERLOADING
    EncodingProfileSetPresetNameMethodInfo  ,
#endif
    encodingProfileSetPresetName            ,


-- ** setRestriction #method:setRestriction#

#if ENABLE_OVERLOADING
    EncodingProfileSetRestrictionMethodInfo ,
#endif
    encodingProfileSetRestriction           ,




 -- * Properties
-- ** restrictionCaps #attr:restrictionCaps#
{- | /No description available in the introspection data./
-}
#if ENABLE_OVERLOADING
    EncodingProfileRestrictionCapsPropertyInfo,
#endif
    clearEncodingProfileRestrictionCaps     ,
    constructEncodingProfileRestrictionCaps ,
#if ENABLE_OVERLOADING
    encodingProfileRestrictionCaps          ,
#endif
    getEncodingProfileRestrictionCaps       ,
    setEncodingProfileRestrictionCaps       ,




    ) 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.Caps as Gst.Caps
import {-# SOURCE #-} qualified GI.GstPbutils.Objects.DiscovererInfo as GstPbutils.DiscovererInfo

-- | Memory-managed wrapper type.
newtype EncodingProfile = EncodingProfile (ManagedPtr EncodingProfile)
foreign import ccall "gst_encoding_profile_get_type"
    c_gst_encoding_profile_get_type :: IO GType

instance GObject EncodingProfile where
    gobjectType = c_gst_encoding_profile_get_type


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

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

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

-- | A convenience alias for `Nothing` :: `Maybe` `EncodingProfile`.
noEncodingProfile :: Maybe EncodingProfile
noEncodingProfile = Nothing

#if ENABLE_OVERLOADING
type family ResolveEncodingProfileMethod (t :: Symbol) (o :: *) :: * where
    ResolveEncodingProfileMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveEncodingProfileMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveEncodingProfileMethod "copy" o = EncodingProfileCopyMethodInfo
    ResolveEncodingProfileMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveEncodingProfileMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveEncodingProfileMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
    ResolveEncodingProfileMethod "isEnabled" o = EncodingProfileIsEnabledMethodInfo
    ResolveEncodingProfileMethod "isEqual" o = EncodingProfileIsEqualMethodInfo
    ResolveEncodingProfileMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveEncodingProfileMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveEncodingProfileMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveEncodingProfileMethod "ref" o = GObject.Object.ObjectRefMethodInfo
    ResolveEncodingProfileMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveEncodingProfileMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolveEncodingProfileMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolveEncodingProfileMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolveEncodingProfileMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolveEncodingProfileMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
    ResolveEncodingProfileMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolveEncodingProfileMethod "getAllowDynamicOutput" o = EncodingProfileGetAllowDynamicOutputMethodInfo
    ResolveEncodingProfileMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolveEncodingProfileMethod "getDescription" o = EncodingProfileGetDescriptionMethodInfo
    ResolveEncodingProfileMethod "getFileExtension" o = EncodingProfileGetFileExtensionMethodInfo
    ResolveEncodingProfileMethod "getFormat" o = EncodingProfileGetFormatMethodInfo
    ResolveEncodingProfileMethod "getInputCaps" o = EncodingProfileGetInputCapsMethodInfo
    ResolveEncodingProfileMethod "getName" o = EncodingProfileGetNameMethodInfo
    ResolveEncodingProfileMethod "getPresence" o = EncodingProfileGetPresenceMethodInfo
    ResolveEncodingProfileMethod "getPreset" o = EncodingProfileGetPresetMethodInfo
    ResolveEncodingProfileMethod "getPresetName" o = EncodingProfileGetPresetNameMethodInfo
    ResolveEncodingProfileMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveEncodingProfileMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveEncodingProfileMethod "getRestriction" o = EncodingProfileGetRestrictionMethodInfo
    ResolveEncodingProfileMethod "getTypeNick" o = EncodingProfileGetTypeNickMethodInfo
    ResolveEncodingProfileMethod "setAllowDynamicOutput" o = EncodingProfileSetAllowDynamicOutputMethodInfo
    ResolveEncodingProfileMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveEncodingProfileMethod "setDescription" o = EncodingProfileSetDescriptionMethodInfo
    ResolveEncodingProfileMethod "setEnabled" o = EncodingProfileSetEnabledMethodInfo
    ResolveEncodingProfileMethod "setFormat" o = EncodingProfileSetFormatMethodInfo
    ResolveEncodingProfileMethod "setName" o = EncodingProfileSetNameMethodInfo
    ResolveEncodingProfileMethod "setPresence" o = EncodingProfileSetPresenceMethodInfo
    ResolveEncodingProfileMethod "setPreset" o = EncodingProfileSetPresetMethodInfo
    ResolveEncodingProfileMethod "setPresetName" o = EncodingProfileSetPresetNameMethodInfo
    ResolveEncodingProfileMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveEncodingProfileMethod "setRestriction" o = EncodingProfileSetRestrictionMethodInfo
    ResolveEncodingProfileMethod l o = O.MethodResolutionFailed l o

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

-- VVV Prop "restriction-caps"
   -- Type: TInterface (Name {namespace = "Gst", name = "Caps"})
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Nothing,Nothing)

{- |
Get the value of the “@restriction-caps@” property.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

@
'Data.GI.Base.Attributes.get' encodingProfile #restrictionCaps
@
-}
getEncodingProfileRestrictionCaps :: (MonadIO m, IsEncodingProfile o) => o -> m (Maybe Gst.Caps.Caps)
getEncodingProfileRestrictionCaps obj = liftIO $ B.Properties.getObjectPropertyBoxed obj "restriction-caps" Gst.Caps.Caps

{- |
Set the value of the “@restriction-caps@” property.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

@
'Data.GI.Base.Attributes.set' encodingProfile [ #restrictionCaps 'Data.GI.Base.Attributes.:=' value ]
@
-}
setEncodingProfileRestrictionCaps :: (MonadIO m, IsEncodingProfile o) => o -> Gst.Caps.Caps -> m ()
setEncodingProfileRestrictionCaps obj val = liftIO $ B.Properties.setObjectPropertyBoxed obj "restriction-caps" (Just val)

{- |
Construct a `GValueConstruct` with valid value for the “@restriction-caps@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
-}
constructEncodingProfileRestrictionCaps :: (IsEncodingProfile o) => Gst.Caps.Caps -> IO (GValueConstruct o)
constructEncodingProfileRestrictionCaps val = B.Properties.constructObjectPropertyBoxed "restriction-caps" (Just val)

{- |
Set the value of the “@restriction-caps@” property to `Nothing`.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to

@
'Data.GI.Base.Attributes.clear' #restrictionCaps
@
-}
clearEncodingProfileRestrictionCaps :: (MonadIO m, IsEncodingProfile o) => o -> m ()
clearEncodingProfileRestrictionCaps obj = liftIO $ B.Properties.setObjectPropertyBoxed obj "restriction-caps" (Nothing :: Maybe Gst.Caps.Caps)

#if ENABLE_OVERLOADING
data EncodingProfileRestrictionCapsPropertyInfo
instance AttrInfo EncodingProfileRestrictionCapsPropertyInfo where
    type AttrAllowedOps EncodingProfileRestrictionCapsPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet, 'AttrClear]
    type AttrSetTypeConstraint EncodingProfileRestrictionCapsPropertyInfo = (~) Gst.Caps.Caps
    type AttrBaseTypeConstraint EncodingProfileRestrictionCapsPropertyInfo = IsEncodingProfile
    type AttrGetType EncodingProfileRestrictionCapsPropertyInfo = (Maybe Gst.Caps.Caps)
    type AttrLabel EncodingProfileRestrictionCapsPropertyInfo = "restriction-caps"
    type AttrOrigin EncodingProfileRestrictionCapsPropertyInfo = EncodingProfile
    attrGet _ = getEncodingProfileRestrictionCaps
    attrSet _ = setEncodingProfileRestrictionCaps
    attrConstruct _ = constructEncodingProfileRestrictionCaps
    attrClear _ = clearEncodingProfileRestrictionCaps
#endif

#if ENABLE_OVERLOADING
instance O.HasAttributeList EncodingProfile
type instance O.AttributeList EncodingProfile = EncodingProfileAttributeList
type EncodingProfileAttributeList = ('[ '("restrictionCaps", EncodingProfileRestrictionCapsPropertyInfo)] :: [(Symbol, *)])
#endif

#if ENABLE_OVERLOADING
encodingProfileRestrictionCaps :: AttrLabelProxy "restrictionCaps"
encodingProfileRestrictionCaps = AttrLabelProxy

#endif

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

#endif

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

foreign import ccall "gst_encoding_profile_copy" gst_encoding_profile_copy ::
    Ptr EncodingProfile ->                  -- self : TInterface (Name {namespace = "GstPbutils", name = "EncodingProfile"})
    IO (Ptr EncodingProfile)

{- |
Makes a deep copy of /@self@/
-}
encodingProfileCopy ::
    (B.CallStack.HasCallStack, MonadIO m, IsEncodingProfile a) =>
    a
    {- ^ /@self@/: The 'GI.GstPbutils.Objects.EncodingProfile.EncodingProfile' to copy -}
    -> m EncodingProfile
    {- ^ __Returns:__ The copy of /@self@/

Since 1.12 -}
encodingProfileCopy self = liftIO $ do
    self' <- unsafeManagedPtrCastPtr self
    result <- gst_encoding_profile_copy self'
    checkUnexpectedReturnNULL "encodingProfileCopy" result
    result' <- (wrapObject EncodingProfile) result
    touchManagedPtr self
    return result'

#if ENABLE_OVERLOADING
data EncodingProfileCopyMethodInfo
instance (signature ~ (m EncodingProfile), MonadIO m, IsEncodingProfile a) => O.MethodInfo EncodingProfileCopyMethodInfo a signature where
    overloadedMethod _ = encodingProfileCopy

#endif

-- method EncodingProfile::get_allow_dynamic_output
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "profile", argType = TInterface (Name {namespace = "GstPbutils", name = "EncodingProfile"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstEncodingProfile", 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_encoding_profile_get_allow_dynamic_output" gst_encoding_profile_get_allow_dynamic_output ::
    Ptr EncodingProfile ->                  -- profile : TInterface (Name {namespace = "GstPbutils", name = "EncodingProfile"})
    IO CInt

{- |
Get whether the format that has been negotiated in at some point can be renegotiated
later during the encoding.
-}
encodingProfileGetAllowDynamicOutput ::
    (B.CallStack.HasCallStack, MonadIO m, IsEncodingProfile a) =>
    a
    {- ^ /@profile@/: a 'GI.GstPbutils.Objects.EncodingProfile.EncodingProfile' -}
    -> m Bool
encodingProfileGetAllowDynamicOutput profile = liftIO $ do
    profile' <- unsafeManagedPtrCastPtr profile
    result <- gst_encoding_profile_get_allow_dynamic_output profile'
    let result' = (/= 0) result
    touchManagedPtr profile
    return result'

#if ENABLE_OVERLOADING
data EncodingProfileGetAllowDynamicOutputMethodInfo
instance (signature ~ (m Bool), MonadIO m, IsEncodingProfile a) => O.MethodInfo EncodingProfileGetAllowDynamicOutputMethodInfo a signature where
    overloadedMethod _ = encodingProfileGetAllowDynamicOutput

#endif

-- method EncodingProfile::get_description
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "profile", argType = TInterface (Name {namespace = "GstPbutils", name = "EncodingProfile"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstEncodingProfile", 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_encoding_profile_get_description" gst_encoding_profile_get_description ::
    Ptr EncodingProfile ->                  -- profile : TInterface (Name {namespace = "GstPbutils", name = "EncodingProfile"})
    IO CString

{- |
/No description available in the introspection data./
-}
encodingProfileGetDescription ::
    (B.CallStack.HasCallStack, MonadIO m, IsEncodingProfile a) =>
    a
    {- ^ /@profile@/: a 'GI.GstPbutils.Objects.EncodingProfile.EncodingProfile' -}
    -> m T.Text
    {- ^ __Returns:__ the description of the profile, can be 'Nothing'. -}
encodingProfileGetDescription profile = liftIO $ do
    profile' <- unsafeManagedPtrCastPtr profile
    result <- gst_encoding_profile_get_description profile'
    checkUnexpectedReturnNULL "encodingProfileGetDescription" result
    result' <- cstringToText result
    touchManagedPtr profile
    return result'

#if ENABLE_OVERLOADING
data EncodingProfileGetDescriptionMethodInfo
instance (signature ~ (m T.Text), MonadIO m, IsEncodingProfile a) => O.MethodInfo EncodingProfileGetDescriptionMethodInfo a signature where
    overloadedMethod _ = encodingProfileGetDescription

#endif

-- method EncodingProfile::get_file_extension
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "profile", argType = TInterface (Name {namespace = "GstPbutils", name = "EncodingProfile"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstEncodingProfile", 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_encoding_profile_get_file_extension" gst_encoding_profile_get_file_extension ::
    Ptr EncodingProfile ->                  -- profile : TInterface (Name {namespace = "GstPbutils", name = "EncodingProfile"})
    IO CString

{- |
/No description available in the introspection data./
-}
encodingProfileGetFileExtension ::
    (B.CallStack.HasCallStack, MonadIO m, IsEncodingProfile a) =>
    a
    {- ^ /@profile@/: a 'GI.GstPbutils.Objects.EncodingProfile.EncodingProfile' -}
    -> m T.Text
    {- ^ __Returns:__ a suitable file extension for /@profile@/, or NULL. -}
encodingProfileGetFileExtension profile = liftIO $ do
    profile' <- unsafeManagedPtrCastPtr profile
    result <- gst_encoding_profile_get_file_extension profile'
    checkUnexpectedReturnNULL "encodingProfileGetFileExtension" result
    result' <- cstringToText result
    touchManagedPtr profile
    return result'

#if ENABLE_OVERLOADING
data EncodingProfileGetFileExtensionMethodInfo
instance (signature ~ (m T.Text), MonadIO m, IsEncodingProfile a) => O.MethodInfo EncodingProfileGetFileExtensionMethodInfo a signature where
    overloadedMethod _ = encodingProfileGetFileExtension

#endif

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

foreign import ccall "gst_encoding_profile_get_format" gst_encoding_profile_get_format ::
    Ptr EncodingProfile ->                  -- profile : TInterface (Name {namespace = "GstPbutils", name = "EncodingProfile"})
    IO (Ptr Gst.Caps.Caps)

{- |
/No description available in the introspection data./
-}
encodingProfileGetFormat ::
    (B.CallStack.HasCallStack, MonadIO m, IsEncodingProfile a) =>
    a
    {- ^ /@profile@/: a 'GI.GstPbutils.Objects.EncodingProfile.EncodingProfile' -}
    -> m Gst.Caps.Caps
    {- ^ __Returns:__ the 'GI.Gst.Structs.Caps.Caps' corresponding to the media format used
in the profile. Unref after usage. -}
encodingProfileGetFormat profile = liftIO $ do
    profile' <- unsafeManagedPtrCastPtr profile
    result <- gst_encoding_profile_get_format profile'
    checkUnexpectedReturnNULL "encodingProfileGetFormat" result
    result' <- (wrapBoxed Gst.Caps.Caps) result
    touchManagedPtr profile
    return result'

#if ENABLE_OVERLOADING
data EncodingProfileGetFormatMethodInfo
instance (signature ~ (m Gst.Caps.Caps), MonadIO m, IsEncodingProfile a) => O.MethodInfo EncodingProfileGetFormatMethodInfo a signature where
    overloadedMethod _ = encodingProfileGetFormat

#endif

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

foreign import ccall "gst_encoding_profile_get_input_caps" gst_encoding_profile_get_input_caps ::
    Ptr EncodingProfile ->                  -- profile : TInterface (Name {namespace = "GstPbutils", name = "EncodingProfile"})
    IO (Ptr Gst.Caps.Caps)

{- |
Computes the full output caps that this /@profile@/ will be able to consume.
-}
encodingProfileGetInputCaps ::
    (B.CallStack.HasCallStack, MonadIO m, IsEncodingProfile a) =>
    a
    {- ^ /@profile@/: a 'GI.GstPbutils.Objects.EncodingProfile.EncodingProfile' -}
    -> m Gst.Caps.Caps
    {- ^ __Returns:__ The full caps the given /@profile@/ can consume. Call
@/gst_caps_unref()/@ when you are done with the caps. -}
encodingProfileGetInputCaps profile = liftIO $ do
    profile' <- unsafeManagedPtrCastPtr profile
    result <- gst_encoding_profile_get_input_caps profile'
    checkUnexpectedReturnNULL "encodingProfileGetInputCaps" result
    result' <- (wrapBoxed Gst.Caps.Caps) result
    touchManagedPtr profile
    return result'

#if ENABLE_OVERLOADING
data EncodingProfileGetInputCapsMethodInfo
instance (signature ~ (m Gst.Caps.Caps), MonadIO m, IsEncodingProfile a) => O.MethodInfo EncodingProfileGetInputCapsMethodInfo a signature where
    overloadedMethod _ = encodingProfileGetInputCaps

#endif

-- method EncodingProfile::get_name
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "profile", argType = TInterface (Name {namespace = "GstPbutils", name = "EncodingProfile"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstEncodingProfile", 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_encoding_profile_get_name" gst_encoding_profile_get_name ::
    Ptr EncodingProfile ->                  -- profile : TInterface (Name {namespace = "GstPbutils", name = "EncodingProfile"})
    IO CString

{- |
/No description available in the introspection data./
-}
encodingProfileGetName ::
    (B.CallStack.HasCallStack, MonadIO m, IsEncodingProfile a) =>
    a
    {- ^ /@profile@/: a 'GI.GstPbutils.Objects.EncodingProfile.EncodingProfile' -}
    -> m T.Text
    {- ^ __Returns:__ the name of the profile, can be 'Nothing'. -}
encodingProfileGetName profile = liftIO $ do
    profile' <- unsafeManagedPtrCastPtr profile
    result <- gst_encoding_profile_get_name profile'
    checkUnexpectedReturnNULL "encodingProfileGetName" result
    result' <- cstringToText result
    touchManagedPtr profile
    return result'

#if ENABLE_OVERLOADING
data EncodingProfileGetNameMethodInfo
instance (signature ~ (m T.Text), MonadIO m, IsEncodingProfile a) => O.MethodInfo EncodingProfileGetNameMethodInfo a signature where
    overloadedMethod _ = encodingProfileGetName

#endif

-- method EncodingProfile::get_presence
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "profile", argType = TInterface (Name {namespace = "GstPbutils", name = "EncodingProfile"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstEncodingProfile", 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_encoding_profile_get_presence" gst_encoding_profile_get_presence ::
    Ptr EncodingProfile ->                  -- profile : TInterface (Name {namespace = "GstPbutils", name = "EncodingProfile"})
    IO Word32

{- |
/No description available in the introspection data./
-}
encodingProfileGetPresence ::
    (B.CallStack.HasCallStack, MonadIO m, IsEncodingProfile a) =>
    a
    {- ^ /@profile@/: a 'GI.GstPbutils.Objects.EncodingProfile.EncodingProfile' -}
    -> m Word32
    {- ^ __Returns:__ The number of times the profile is used in its parent
container profile. If 0, it is not a mandatory stream. -}
encodingProfileGetPresence profile = liftIO $ do
    profile' <- unsafeManagedPtrCastPtr profile
    result <- gst_encoding_profile_get_presence profile'
    touchManagedPtr profile
    return result

#if ENABLE_OVERLOADING
data EncodingProfileGetPresenceMethodInfo
instance (signature ~ (m Word32), MonadIO m, IsEncodingProfile a) => O.MethodInfo EncodingProfileGetPresenceMethodInfo a signature where
    overloadedMethod _ = encodingProfileGetPresence

#endif

-- method EncodingProfile::get_preset
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "profile", argType = TInterface (Name {namespace = "GstPbutils", name = "EncodingProfile"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstEncodingProfile", 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_encoding_profile_get_preset" gst_encoding_profile_get_preset ::
    Ptr EncodingProfile ->                  -- profile : TInterface (Name {namespace = "GstPbutils", name = "EncodingProfile"})
    IO CString

{- |
/No description available in the introspection data./
-}
encodingProfileGetPreset ::
    (B.CallStack.HasCallStack, MonadIO m, IsEncodingProfile a) =>
    a
    {- ^ /@profile@/: a 'GI.GstPbutils.Objects.EncodingProfile.EncodingProfile' -}
    -> m T.Text
    {- ^ __Returns:__ the name of the 'GI.Gst.Interfaces.Preset.Preset' to be used in the profile.
This is the name that has been set when saving the preset. -}
encodingProfileGetPreset profile = liftIO $ do
    profile' <- unsafeManagedPtrCastPtr profile
    result <- gst_encoding_profile_get_preset profile'
    checkUnexpectedReturnNULL "encodingProfileGetPreset" result
    result' <- cstringToText result
    touchManagedPtr profile
    return result'

#if ENABLE_OVERLOADING
data EncodingProfileGetPresetMethodInfo
instance (signature ~ (m T.Text), MonadIO m, IsEncodingProfile a) => O.MethodInfo EncodingProfileGetPresetMethodInfo a signature where
    overloadedMethod _ = encodingProfileGetPreset

#endif

-- method EncodingProfile::get_preset_name
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "profile", argType = TInterface (Name {namespace = "GstPbutils", name = "EncodingProfile"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstEncodingProfile", 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_encoding_profile_get_preset_name" gst_encoding_profile_get_preset_name ::
    Ptr EncodingProfile ->                  -- profile : TInterface (Name {namespace = "GstPbutils", name = "EncodingProfile"})
    IO CString

{- |
/No description available in the introspection data./
-}
encodingProfileGetPresetName ::
    (B.CallStack.HasCallStack, MonadIO m, IsEncodingProfile a) =>
    a
    {- ^ /@profile@/: a 'GI.GstPbutils.Objects.EncodingProfile.EncodingProfile' -}
    -> m T.Text
    {- ^ __Returns:__ the name of the 'GI.Gst.Interfaces.Preset.Preset' factory to be used in the profile. -}
encodingProfileGetPresetName profile = liftIO $ do
    profile' <- unsafeManagedPtrCastPtr profile
    result <- gst_encoding_profile_get_preset_name profile'
    checkUnexpectedReturnNULL "encodingProfileGetPresetName" result
    result' <- cstringToText result
    touchManagedPtr profile
    return result'

#if ENABLE_OVERLOADING
data EncodingProfileGetPresetNameMethodInfo
instance (signature ~ (m T.Text), MonadIO m, IsEncodingProfile a) => O.MethodInfo EncodingProfileGetPresetNameMethodInfo a signature where
    overloadedMethod _ = encodingProfileGetPresetName

#endif

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

foreign import ccall "gst_encoding_profile_get_restriction" gst_encoding_profile_get_restriction ::
    Ptr EncodingProfile ->                  -- profile : TInterface (Name {namespace = "GstPbutils", name = "EncodingProfile"})
    IO (Ptr Gst.Caps.Caps)

{- |
/No description available in the introspection data./
-}
encodingProfileGetRestriction ::
    (B.CallStack.HasCallStack, MonadIO m, IsEncodingProfile a) =>
    a
    {- ^ /@profile@/: a 'GI.GstPbutils.Objects.EncodingProfile.EncodingProfile' -}
    -> m Gst.Caps.Caps
    {- ^ __Returns:__ The restriction 'GI.Gst.Structs.Caps.Caps' to apply before the encoder
that will be used in the profile. The fields present in restriction caps are
properties of the raw stream (that is before encoding), such as height and
width for video and depth and sampling rate for audio. Does not apply to
'GI.GstPbutils.Objects.EncodingContainerProfile.EncodingContainerProfile' (since there is no corresponding raw stream).
Can be 'Nothing'. Unref after usage. -}
encodingProfileGetRestriction profile = liftIO $ do
    profile' <- unsafeManagedPtrCastPtr profile
    result <- gst_encoding_profile_get_restriction profile'
    checkUnexpectedReturnNULL "encodingProfileGetRestriction" result
    result' <- (wrapBoxed Gst.Caps.Caps) result
    touchManagedPtr profile
    return result'

#if ENABLE_OVERLOADING
data EncodingProfileGetRestrictionMethodInfo
instance (signature ~ (m Gst.Caps.Caps), MonadIO m, IsEncodingProfile a) => O.MethodInfo EncodingProfileGetRestrictionMethodInfo a signature where
    overloadedMethod _ = encodingProfileGetRestriction

#endif

-- method EncodingProfile::get_type_nick
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "profile", argType = TInterface (Name {namespace = "GstPbutils", name = "EncodingProfile"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstEncodingProfile", 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_encoding_profile_get_type_nick" gst_encoding_profile_get_type_nick ::
    Ptr EncodingProfile ->                  -- profile : TInterface (Name {namespace = "GstPbutils", name = "EncodingProfile"})
    IO CString

{- |
/No description available in the introspection data./
-}
encodingProfileGetTypeNick ::
    (B.CallStack.HasCallStack, MonadIO m, IsEncodingProfile a) =>
    a
    {- ^ /@profile@/: a 'GI.GstPbutils.Objects.EncodingProfile.EncodingProfile' -}
    -> m T.Text
    {- ^ __Returns:__ the human-readable name of the type of /@profile@/. -}
encodingProfileGetTypeNick profile = liftIO $ do
    profile' <- unsafeManagedPtrCastPtr profile
    result <- gst_encoding_profile_get_type_nick profile'
    checkUnexpectedReturnNULL "encodingProfileGetTypeNick" result
    result' <- cstringToText result
    touchManagedPtr profile
    return result'

#if ENABLE_OVERLOADING
data EncodingProfileGetTypeNickMethodInfo
instance (signature ~ (m T.Text), MonadIO m, IsEncodingProfile a) => O.MethodInfo EncodingProfileGetTypeNickMethodInfo a signature where
    overloadedMethod _ = encodingProfileGetTypeNick

#endif

-- method EncodingProfile::is_enabled
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "profile", argType = TInterface (Name {namespace = "GstPbutils", name = "EncodingProfile"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, 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_encoding_profile_is_enabled" gst_encoding_profile_is_enabled ::
    Ptr EncodingProfile ->                  -- profile : TInterface (Name {namespace = "GstPbutils", name = "EncodingProfile"})
    IO CInt

{- |
/No description available in the introspection data./
-}
encodingProfileIsEnabled ::
    (B.CallStack.HasCallStack, MonadIO m, IsEncodingProfile a) =>
    a
    -> m Bool
encodingProfileIsEnabled profile = liftIO $ do
    profile' <- unsafeManagedPtrCastPtr profile
    result <- gst_encoding_profile_is_enabled profile'
    let result' = (/= 0) result
    touchManagedPtr profile
    return result'

#if ENABLE_OVERLOADING
data EncodingProfileIsEnabledMethodInfo
instance (signature ~ (m Bool), MonadIO m, IsEncodingProfile a) => O.MethodInfo EncodingProfileIsEnabledMethodInfo a signature where
    overloadedMethod _ = encodingProfileIsEnabled

#endif

-- method EncodingProfile::is_equal
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "a", argType = TInterface (Name {namespace = "GstPbutils", name = "EncodingProfile"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstEncodingProfile", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "b", argType = TInterface (Name {namespace = "GstPbutils", name = "EncodingProfile"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstEncodingProfile", 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_encoding_profile_is_equal" gst_encoding_profile_is_equal ::
    Ptr EncodingProfile ->                  -- a : TInterface (Name {namespace = "GstPbutils", name = "EncodingProfile"})
    Ptr EncodingProfile ->                  -- b : TInterface (Name {namespace = "GstPbutils", name = "EncodingProfile"})
    IO CInt

{- |
Checks whether the two 'GI.GstPbutils.Objects.EncodingProfile.EncodingProfile' are equal
-}
encodingProfileIsEqual ::
    (B.CallStack.HasCallStack, MonadIO m, IsEncodingProfile a, IsEncodingProfile b) =>
    a
    {- ^ /@a@/: a 'GI.GstPbutils.Objects.EncodingProfile.EncodingProfile' -}
    -> b
    {- ^ /@b@/: a 'GI.GstPbutils.Objects.EncodingProfile.EncodingProfile' -}
    -> m Bool
    {- ^ __Returns:__ 'True' if /@a@/ and /@b@/ are equal, else 'False'. -}
encodingProfileIsEqual a b = liftIO $ do
    a' <- unsafeManagedPtrCastPtr a
    b' <- unsafeManagedPtrCastPtr b
    result <- gst_encoding_profile_is_equal a' b'
    let result' = (/= 0) result
    touchManagedPtr a
    touchManagedPtr b
    return result'

#if ENABLE_OVERLOADING
data EncodingProfileIsEqualMethodInfo
instance (signature ~ (b -> m Bool), MonadIO m, IsEncodingProfile a, IsEncodingProfile b) => O.MethodInfo EncodingProfileIsEqualMethodInfo a signature where
    overloadedMethod _ = encodingProfileIsEqual

#endif

-- method EncodingProfile::set_allow_dynamic_output
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "profile", argType = TInterface (Name {namespace = "GstPbutils", name = "EncodingProfile"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstEncodingProfile", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "allow_dynamic_output", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "Whether the format that has been negotiated first can be renegotiated\nduring the encoding", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gst_encoding_profile_set_allow_dynamic_output" gst_encoding_profile_set_allow_dynamic_output ::
    Ptr EncodingProfile ->                  -- profile : TInterface (Name {namespace = "GstPbutils", name = "EncodingProfile"})
    CInt ->                                 -- allow_dynamic_output : TBasicType TBoolean
    IO ()

{- |
Sets whether the format that has been negotiated in at some point can be renegotiated
later during the encoding.
-}
encodingProfileSetAllowDynamicOutput ::
    (B.CallStack.HasCallStack, MonadIO m, IsEncodingProfile a) =>
    a
    {- ^ /@profile@/: a 'GI.GstPbutils.Objects.EncodingProfile.EncodingProfile' -}
    -> Bool
    {- ^ /@allowDynamicOutput@/: Whether the format that has been negotiated first can be renegotiated
during the encoding -}
    -> m ()
encodingProfileSetAllowDynamicOutput profile allowDynamicOutput = liftIO $ do
    profile' <- unsafeManagedPtrCastPtr profile
    let allowDynamicOutput' = (fromIntegral . fromEnum) allowDynamicOutput
    gst_encoding_profile_set_allow_dynamic_output profile' allowDynamicOutput'
    touchManagedPtr profile
    return ()

#if ENABLE_OVERLOADING
data EncodingProfileSetAllowDynamicOutputMethodInfo
instance (signature ~ (Bool -> m ()), MonadIO m, IsEncodingProfile a) => O.MethodInfo EncodingProfileSetAllowDynamicOutputMethodInfo a signature where
    overloadedMethod _ = encodingProfileSetAllowDynamicOutput

#endif

-- method EncodingProfile::set_description
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "profile", argType = TInterface (Name {namespace = "GstPbutils", name = "EncodingProfile"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstEncodingProfile", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "description", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the description to set on the profile", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gst_encoding_profile_set_description" gst_encoding_profile_set_description ::
    Ptr EncodingProfile ->                  -- profile : TInterface (Name {namespace = "GstPbutils", name = "EncodingProfile"})
    CString ->                              -- description : TBasicType TUTF8
    IO ()

{- |
Set /@description@/ as the given description for the /@profile@/. A copy of
/@description@/ will be made internally.
-}
encodingProfileSetDescription ::
    (B.CallStack.HasCallStack, MonadIO m, IsEncodingProfile a) =>
    a
    {- ^ /@profile@/: a 'GI.GstPbutils.Objects.EncodingProfile.EncodingProfile' -}
    -> Maybe (T.Text)
    {- ^ /@description@/: the description to set on the profile -}
    -> m ()
encodingProfileSetDescription profile description = liftIO $ do
    profile' <- unsafeManagedPtrCastPtr profile
    maybeDescription <- case description of
        Nothing -> return nullPtr
        Just jDescription -> do
            jDescription' <- textToCString jDescription
            return jDescription'
    gst_encoding_profile_set_description profile' maybeDescription
    touchManagedPtr profile
    freeMem maybeDescription
    return ()

#if ENABLE_OVERLOADING
data EncodingProfileSetDescriptionMethodInfo
instance (signature ~ (Maybe (T.Text) -> m ()), MonadIO m, IsEncodingProfile a) => O.MethodInfo EncodingProfileSetDescriptionMethodInfo a signature where
    overloadedMethod _ = encodingProfileSetDescription

#endif

-- method EncodingProfile::set_enabled
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "profile", argType = TInterface (Name {namespace = "GstPbutils", name = "EncodingProfile"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstEncodingProfile", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "enabled", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "%FALSE to disable #profile, %TRUE to enable it", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gst_encoding_profile_set_enabled" gst_encoding_profile_set_enabled ::
    Ptr EncodingProfile ->                  -- profile : TInterface (Name {namespace = "GstPbutils", name = "EncodingProfile"})
    CInt ->                                 -- enabled : TBasicType TBoolean
    IO ()

{- |
Set whether the profile should be used or not.

Since 1.6
-}
encodingProfileSetEnabled ::
    (B.CallStack.HasCallStack, MonadIO m, IsEncodingProfile a) =>
    a
    {- ^ /@profile@/: a 'GI.GstPbutils.Objects.EncodingProfile.EncodingProfile' -}
    -> Bool
    {- ^ /@enabled@/: 'False' to disable @/profile/@, 'True' to enable it -}
    -> m ()
encodingProfileSetEnabled profile enabled = liftIO $ do
    profile' <- unsafeManagedPtrCastPtr profile
    let enabled' = (fromIntegral . fromEnum) enabled
    gst_encoding_profile_set_enabled profile' enabled'
    touchManagedPtr profile
    return ()

#if ENABLE_OVERLOADING
data EncodingProfileSetEnabledMethodInfo
instance (signature ~ (Bool -> m ()), MonadIO m, IsEncodingProfile a) => O.MethodInfo EncodingProfileSetEnabledMethodInfo a signature where
    overloadedMethod _ = encodingProfileSetEnabled

#endif

-- method EncodingProfile::set_format
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "profile", argType = TInterface (Name {namespace = "GstPbutils", name = "EncodingProfile"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstEncodingProfile", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "format", argType = TInterface (Name {namespace = "Gst", name = "Caps"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the media format to use in the profile.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gst_encoding_profile_set_format" gst_encoding_profile_set_format ::
    Ptr EncodingProfile ->                  -- profile : TInterface (Name {namespace = "GstPbutils", name = "EncodingProfile"})
    Ptr Gst.Caps.Caps ->                    -- format : TInterface (Name {namespace = "Gst", name = "Caps"})
    IO ()

{- |
Sets the media format used in the profile.
-}
encodingProfileSetFormat ::
    (B.CallStack.HasCallStack, MonadIO m, IsEncodingProfile a) =>
    a
    {- ^ /@profile@/: a 'GI.GstPbutils.Objects.EncodingProfile.EncodingProfile' -}
    -> Gst.Caps.Caps
    {- ^ /@format@/: the media format to use in the profile. -}
    -> m ()
encodingProfileSetFormat profile format = liftIO $ do
    profile' <- unsafeManagedPtrCastPtr profile
    format' <- unsafeManagedPtrGetPtr format
    gst_encoding_profile_set_format profile' format'
    touchManagedPtr profile
    touchManagedPtr format
    return ()

#if ENABLE_OVERLOADING
data EncodingProfileSetFormatMethodInfo
instance (signature ~ (Gst.Caps.Caps -> m ()), MonadIO m, IsEncodingProfile a) => O.MethodInfo EncodingProfileSetFormatMethodInfo a signature where
    overloadedMethod _ = encodingProfileSetFormat

#endif

-- method EncodingProfile::set_name
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "profile", argType = TInterface (Name {namespace = "GstPbutils", name = "EncodingProfile"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstEncodingProfile", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the name to set on the profile", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gst_encoding_profile_set_name" gst_encoding_profile_set_name ::
    Ptr EncodingProfile ->                  -- profile : TInterface (Name {namespace = "GstPbutils", name = "EncodingProfile"})
    CString ->                              -- name : TBasicType TUTF8
    IO ()

{- |
Set /@name@/ as the given name for the /@profile@/. A copy of /@name@/ will be made
internally.
-}
encodingProfileSetName ::
    (B.CallStack.HasCallStack, MonadIO m, IsEncodingProfile a) =>
    a
    {- ^ /@profile@/: a 'GI.GstPbutils.Objects.EncodingProfile.EncodingProfile' -}
    -> Maybe (T.Text)
    {- ^ /@name@/: the name to set on the profile -}
    -> m ()
encodingProfileSetName profile name = liftIO $ do
    profile' <- unsafeManagedPtrCastPtr profile
    maybeName <- case name of
        Nothing -> return nullPtr
        Just jName -> do
            jName' <- textToCString jName
            return jName'
    gst_encoding_profile_set_name profile' maybeName
    touchManagedPtr profile
    freeMem maybeName
    return ()

#if ENABLE_OVERLOADING
data EncodingProfileSetNameMethodInfo
instance (signature ~ (Maybe (T.Text) -> m ()), MonadIO m, IsEncodingProfile a) => O.MethodInfo EncodingProfileSetNameMethodInfo a signature where
    overloadedMethod _ = encodingProfileSetName

#endif

-- method EncodingProfile::set_presence
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "profile", argType = TInterface (Name {namespace = "GstPbutils", name = "EncodingProfile"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstEncodingProfile", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "presence", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the number of time the profile can be used", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gst_encoding_profile_set_presence" gst_encoding_profile_set_presence ::
    Ptr EncodingProfile ->                  -- profile : TInterface (Name {namespace = "GstPbutils", name = "EncodingProfile"})
    Word32 ->                               -- presence : TBasicType TUInt
    IO ()

{- |
Set the number of time the profile is used in its parent
container profile. If 0, it is not a mandatory stream
-}
encodingProfileSetPresence ::
    (B.CallStack.HasCallStack, MonadIO m, IsEncodingProfile a) =>
    a
    {- ^ /@profile@/: a 'GI.GstPbutils.Objects.EncodingProfile.EncodingProfile' -}
    -> Word32
    {- ^ /@presence@/: the number of time the profile can be used -}
    -> m ()
encodingProfileSetPresence profile presence = liftIO $ do
    profile' <- unsafeManagedPtrCastPtr profile
    gst_encoding_profile_set_presence profile' presence
    touchManagedPtr profile
    return ()

#if ENABLE_OVERLOADING
data EncodingProfileSetPresenceMethodInfo
instance (signature ~ (Word32 -> m ()), MonadIO m, IsEncodingProfile a) => O.MethodInfo EncodingProfileSetPresenceMethodInfo a signature where
    overloadedMethod _ = encodingProfileSetPresence

#endif

-- method EncodingProfile::set_preset
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "profile", argType = TInterface (Name {namespace = "GstPbutils", name = "EncodingProfile"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstEncodingProfile", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "preset", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the element preset to use", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gst_encoding_profile_set_preset" gst_encoding_profile_set_preset ::
    Ptr EncodingProfile ->                  -- profile : TInterface (Name {namespace = "GstPbutils", name = "EncodingProfile"})
    CString ->                              -- preset : TBasicType TUTF8
    IO ()

{- |
Sets the name of the 'GI.Gst.Objects.Element.Element' that implements the 'GI.Gst.Interfaces.Preset.Preset' interface
to use for the profile.
This is the name that has been set when saving the preset.
-}
encodingProfileSetPreset ::
    (B.CallStack.HasCallStack, MonadIO m, IsEncodingProfile a) =>
    a
    {- ^ /@profile@/: a 'GI.GstPbutils.Objects.EncodingProfile.EncodingProfile' -}
    -> Maybe (T.Text)
    {- ^ /@preset@/: the element preset to use -}
    -> m ()
encodingProfileSetPreset profile preset = liftIO $ do
    profile' <- unsafeManagedPtrCastPtr profile
    maybePreset <- case preset of
        Nothing -> return nullPtr
        Just jPreset -> do
            jPreset' <- textToCString jPreset
            return jPreset'
    gst_encoding_profile_set_preset profile' maybePreset
    touchManagedPtr profile
    freeMem maybePreset
    return ()

#if ENABLE_OVERLOADING
data EncodingProfileSetPresetMethodInfo
instance (signature ~ (Maybe (T.Text) -> m ()), MonadIO m, IsEncodingProfile a) => O.MethodInfo EncodingProfileSetPresetMethodInfo a signature where
    overloadedMethod _ = encodingProfileSetPreset

#endif

-- method EncodingProfile::set_preset_name
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "profile", argType = TInterface (Name {namespace = "GstPbutils", name = "EncodingProfile"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstEncodingProfile", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "preset_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "The name of the preset to use in this @profile.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gst_encoding_profile_set_preset_name" gst_encoding_profile_set_preset_name ::
    Ptr EncodingProfile ->                  -- profile : TInterface (Name {namespace = "GstPbutils", name = "EncodingProfile"})
    CString ->                              -- preset_name : TBasicType TUTF8
    IO ()

{- |
Sets the name of the 'GI.Gst.Interfaces.Preset.Preset'\'s factory to be used in the profile.
-}
encodingProfileSetPresetName ::
    (B.CallStack.HasCallStack, MonadIO m, IsEncodingProfile a) =>
    a
    {- ^ /@profile@/: a 'GI.GstPbutils.Objects.EncodingProfile.EncodingProfile' -}
    -> Maybe (T.Text)
    {- ^ /@presetName@/: The name of the preset to use in this /@profile@/. -}
    -> m ()
encodingProfileSetPresetName profile presetName = liftIO $ do
    profile' <- unsafeManagedPtrCastPtr profile
    maybePresetName <- case presetName of
        Nothing -> return nullPtr
        Just jPresetName -> do
            jPresetName' <- textToCString jPresetName
            return jPresetName'
    gst_encoding_profile_set_preset_name profile' maybePresetName
    touchManagedPtr profile
    freeMem maybePresetName
    return ()

#if ENABLE_OVERLOADING
data EncodingProfileSetPresetNameMethodInfo
instance (signature ~ (Maybe (T.Text) -> m ()), MonadIO m, IsEncodingProfile a) => O.MethodInfo EncodingProfileSetPresetNameMethodInfo a signature where
    overloadedMethod _ = encodingProfileSetPresetName

#endif

-- method EncodingProfile::set_restriction
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "profile", argType = TInterface (Name {namespace = "GstPbutils", name = "EncodingProfile"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstEncodingProfile", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "restriction", argType = TInterface (Name {namespace = "Gst", name = "Caps"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the restriction to apply", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gst_encoding_profile_set_restriction" gst_encoding_profile_set_restriction ::
    Ptr EncodingProfile ->                  -- profile : TInterface (Name {namespace = "GstPbutils", name = "EncodingProfile"})
    Ptr Gst.Caps.Caps ->                    -- restriction : TInterface (Name {namespace = "Gst", name = "Caps"})
    IO ()

{- |
Set the restriction 'GI.Gst.Structs.Caps.Caps' to apply before the encoder
that will be used in the profile. See 'GI.GstPbutils.Objects.EncodingProfile.encodingProfileGetRestriction'
for more about restrictions. Does not apply to 'GI.GstPbutils.Objects.EncodingContainerProfile.EncodingContainerProfile'.
-}
encodingProfileSetRestriction ::
    (B.CallStack.HasCallStack, MonadIO m, IsEncodingProfile a) =>
    a
    {- ^ /@profile@/: a 'GI.GstPbutils.Objects.EncodingProfile.EncodingProfile' -}
    -> Maybe (Gst.Caps.Caps)
    {- ^ /@restriction@/: the restriction to apply -}
    -> m ()
encodingProfileSetRestriction profile restriction = liftIO $ do
    profile' <- unsafeManagedPtrCastPtr profile
    maybeRestriction <- case restriction of
        Nothing -> return nullPtr
        Just jRestriction -> do
            jRestriction' <- B.ManagedPtr.disownBoxed jRestriction
            return jRestriction'
    gst_encoding_profile_set_restriction profile' maybeRestriction
    touchManagedPtr profile
    whenJust restriction touchManagedPtr
    return ()

#if ENABLE_OVERLOADING
data EncodingProfileSetRestrictionMethodInfo
instance (signature ~ (Maybe (Gst.Caps.Caps) -> m ()), MonadIO m, IsEncodingProfile a) => O.MethodInfo EncodingProfileSetRestrictionMethodInfo a signature where
    overloadedMethod _ = encodingProfileSetRestriction

#endif

-- method EncodingProfile::find
-- method type : MemberFunction
-- Args : [Arg {argCName = "targetname", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The name of the target", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "profilename", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "The name of the profile, if %NULL\nprovided, it will default to the encoding profile called `default`.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "category", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "The target category. Can be %NULL", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "GstPbutils", name = "EncodingProfile"}))
-- throws : False
-- Skip return : False

foreign import ccall "gst_encoding_profile_find" gst_encoding_profile_find ::
    CString ->                              -- targetname : TBasicType TUTF8
    CString ->                              -- profilename : TBasicType TUTF8
    CString ->                              -- category : TBasicType TUTF8
    IO (Ptr EncodingProfile)

{- |
Find the 'GI.GstPbutils.Objects.EncodingProfile.EncodingProfile' with the specified name and category.
-}
encodingProfileFind ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    T.Text
    {- ^ /@targetname@/: The name of the target -}
    -> Maybe (T.Text)
    {- ^ /@profilename@/: The name of the profile, if 'Nothing'
provided, it will default to the encoding profile called @default@. -}
    -> Maybe (T.Text)
    {- ^ /@category@/: The target category. Can be 'Nothing' -}
    -> m EncodingProfile
    {- ^ __Returns:__ The matching 'GI.GstPbutils.Objects.EncodingProfile.EncodingProfile' or 'Nothing'. -}
encodingProfileFind targetname profilename category = liftIO $ do
    targetname' <- textToCString targetname
    maybeProfilename <- case profilename of
        Nothing -> return nullPtr
        Just jProfilename -> do
            jProfilename' <- textToCString jProfilename
            return jProfilename'
    maybeCategory <- case category of
        Nothing -> return nullPtr
        Just jCategory -> do
            jCategory' <- textToCString jCategory
            return jCategory'
    result <- gst_encoding_profile_find targetname' maybeProfilename maybeCategory
    checkUnexpectedReturnNULL "encodingProfileFind" result
    result' <- (wrapObject EncodingProfile) result
    freeMem targetname'
    freeMem maybeProfilename
    freeMem maybeCategory
    return result'

#if ENABLE_OVERLOADING
#endif

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

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

{- |
Creates a 'GI.GstPbutils.Objects.EncodingProfile.EncodingProfile' matching the formats from the given
'GI.GstPbutils.Objects.DiscovererInfo.DiscovererInfo'. Streams other than audio or video (eg,
subtitles), are currently ignored.
-}
encodingProfileFromDiscoverer ::
    (B.CallStack.HasCallStack, MonadIO m, GstPbutils.DiscovererInfo.IsDiscovererInfo a) =>
    a
    {- ^ /@info@/: The 'GI.GstPbutils.Objects.DiscovererInfo.DiscovererInfo' to read from -}
    -> m EncodingProfile
    {- ^ __Returns:__ The new 'GI.GstPbutils.Objects.EncodingProfile.EncodingProfile' or 'Nothing'. -}
encodingProfileFromDiscoverer info = liftIO $ do
    info' <- unsafeManagedPtrCastPtr info
    result <- gst_encoding_profile_from_discoverer info'
    checkUnexpectedReturnNULL "encodingProfileFromDiscoverer" result
    result' <- (wrapObject EncodingProfile) result
    touchManagedPtr info
    return result'

#if ENABLE_OVERLOADING
#endif