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

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

module GI.GstPbutils.Objects.EncodingProfile
    ( 

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


 -- * Methods
-- ** copy #method:copy#
#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
    EncodingProfileCopyMethodInfo           ,
#endif
    encodingProfileCopy                     ,


-- ** find #method:find#
    encodingProfileFind                     ,


-- ** fromDiscoverer #method:fromDiscoverer#
    encodingProfileFromDiscoverer           ,


-- ** getAllowDynamicOutput #method:getAllowDynamicOutput#
#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
    EncodingProfileGetAllowDynamicOutputMethodInfo,
#endif
    encodingProfileGetAllowDynamicOutput    ,


-- ** getDescription #method:getDescription#
#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
    EncodingProfileGetDescriptionMethodInfo ,
#endif
    encodingProfileGetDescription           ,


-- ** getFileExtension #method:getFileExtension#
#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
    EncodingProfileGetFileExtensionMethodInfo,
#endif
    encodingProfileGetFileExtension         ,


-- ** getFormat #method:getFormat#
#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
    EncodingProfileGetFormatMethodInfo      ,
#endif
    encodingProfileGetFormat                ,


-- ** getInputCaps #method:getInputCaps#
#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
    EncodingProfileGetInputCapsMethodInfo   ,
#endif
    encodingProfileGetInputCaps             ,


-- ** getName #method:getName#
#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
    EncodingProfileGetNameMethodInfo        ,
#endif
    encodingProfileGetName                  ,


-- ** getPresence #method:getPresence#
#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
    EncodingProfileGetPresenceMethodInfo    ,
#endif
    encodingProfileGetPresence              ,


-- ** getPreset #method:getPreset#
#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
    EncodingProfileGetPresetMethodInfo      ,
#endif
    encodingProfileGetPreset                ,


-- ** getPresetName #method:getPresetName#
#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
    EncodingProfileGetPresetNameMethodInfo  ,
#endif
    encodingProfileGetPresetName            ,


-- ** getRestriction #method:getRestriction#
#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
    EncodingProfileGetRestrictionMethodInfo ,
#endif
    encodingProfileGetRestriction           ,


-- ** getTypeNick #method:getTypeNick#
#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
    EncodingProfileGetTypeNickMethodInfo    ,
#endif
    encodingProfileGetTypeNick              ,


-- ** isEnabled #method:isEnabled#
#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
    EncodingProfileIsEnabledMethodInfo      ,
#endif
    encodingProfileIsEnabled                ,


-- ** isEqual #method:isEqual#
#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
    EncodingProfileIsEqualMethodInfo        ,
#endif
    encodingProfileIsEqual                  ,


-- ** setAllowDynamicOutput #method:setAllowDynamicOutput#
#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
    EncodingProfileSetAllowDynamicOutputMethodInfo,
#endif
    encodingProfileSetAllowDynamicOutput    ,


-- ** setDescription #method:setDescription#
#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
    EncodingProfileSetDescriptionMethodInfo ,
#endif
    encodingProfileSetDescription           ,


-- ** setEnabled #method:setEnabled#
#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
    EncodingProfileSetEnabledMethodInfo     ,
#endif
    encodingProfileSetEnabled               ,


-- ** setFormat #method:setFormat#
#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
    EncodingProfileSetFormatMethodInfo      ,
#endif
    encodingProfileSetFormat                ,


-- ** setName #method:setName#
#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
    EncodingProfileSetNameMethodInfo        ,
#endif
    encodingProfileSetName                  ,


-- ** setPresence #method:setPresence#
#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
    EncodingProfileSetPresenceMethodInfo    ,
#endif
    encodingProfileSetPresence              ,


-- ** setPreset #method:setPreset#
#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
    EncodingProfileSetPresetMethodInfo      ,
#endif
    encodingProfileSetPreset                ,


-- ** setPresetName #method:setPresetName#
#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
    EncodingProfileSetPresetNameMethodInfo  ,
#endif
    encodingProfileSetPresetName            ,


-- ** setRestriction #method:setRestriction#
#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
    EncodingProfileSetRestrictionMethodInfo ,
#endif
    encodingProfileSetRestriction           ,




 -- * Properties
-- ** restrictionCaps #attr:restrictionCaps#
#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
    EncodingProfileRestrictionCapsPropertyInfo,
#endif
    clearEncodingProfileRestrictionCaps     ,
    constructEncodingProfileRestrictionCaps ,
#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
    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.GError as B.GError
import qualified Data.GI.Base.GVariant as B.GVariant
import qualified Data.GI.Base.GParamSpec as B.GParamSpec
import qualified Data.GI.Base.CallStack as B.CallStack
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 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

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
    

class GObject o => IsEncodingProfile o
#if MIN_VERSION_base(4,9,0)
instance {-# OVERLAPPABLE #-} (GObject a, O.UnknownAncestorError EncodingProfile a) =>
    IsEncodingProfile a
#endif
instance IsEncodingProfile EncodingProfile
instance GObject.Object.IsObject EncodingProfile

toEncodingProfile :: (MonadIO m, IsEncodingProfile o) => o -> m EncodingProfile
toEncodingProfile = liftIO . unsafeCastTo EncodingProfile

noEncodingProfile :: Maybe EncodingProfile
noEncodingProfile = Nothing

#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
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 "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 "replaceData" o = GObject.Object.ObjectReplaceDataMethodInfo
    ResolveEncodingProfileMethod "replaceQdata" o = GObject.Object.ObjectReplaceQdataMethodInfo
    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) => O.IsLabelProxy t (EncodingProfile -> p) where
    fromLabelProxy _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)

#if MIN_VERSION_base(4,9,0)
instance (info ~ ResolveEncodingProfileMethod t EncodingProfile, O.MethodInfo info EncodingProfile p) => O.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

#endif

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

getEncodingProfileRestrictionCaps :: (MonadIO m, IsEncodingProfile o) => o -> m (Maybe Gst.Caps.Caps)
getEncodingProfileRestrictionCaps obj = liftIO $ getObjectPropertyBoxed obj "restriction-caps" Gst.Caps.Caps

setEncodingProfileRestrictionCaps :: (MonadIO m, IsEncodingProfile o) => o -> Gst.Caps.Caps -> m ()
setEncodingProfileRestrictionCaps obj val = liftIO $ setObjectPropertyBoxed obj "restriction-caps" (Just val)

constructEncodingProfileRestrictionCaps :: (IsEncodingProfile o) => Gst.Caps.Caps -> IO (GValueConstruct o)
constructEncodingProfileRestrictionCaps val = constructObjectPropertyBoxed "restriction-caps" (Just val)

clearEncodingProfileRestrictionCaps :: (MonadIO m, IsEncodingProfile o) => o -> m ()
clearEncodingProfileRestrictionCaps obj = liftIO $ setObjectPropertyBoxed obj "restriction-caps" (Nothing :: Maybe Gst.Caps.Caps)

#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
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 defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
instance O.HasAttributeList EncodingProfile
type instance O.AttributeList EncodingProfile = EncodingProfileAttributeList
type EncodingProfileAttributeList = ('[ '("restrictionCaps", EncodingProfileRestrictionCapsPropertyInfo)] :: [(Symbol, *)])
#endif

#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
encodingProfileRestrictionCaps :: AttrLabelProxy "restrictionCaps"
encodingProfileRestrictionCaps = AttrLabelProxy

#endif

#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
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 defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
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 defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
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 defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
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 defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
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 defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
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 defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
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 defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
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 defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
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 defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
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 defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
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 defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
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 defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
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 defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
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 defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
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 defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
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 = False, 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' -}
    -> T.Text
    {- ^ /@description@/: the description to set on the profile -}
    -> m ()
encodingProfileSetDescription profile description = liftIO $ do
    profile' <- unsafeManagedPtrCastPtr profile
    description' <- textToCString description
    gst_encoding_profile_set_description profile' description'
    touchManagedPtr profile
    freeMem description'
    return ()

#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
data EncodingProfileSetDescriptionMethodInfo
instance (signature ~ (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.
-}
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 defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
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 defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
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 = False, 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' -}
    -> T.Text
    {- ^ /@name@/: the name to set on the profile -}
    -> m ()
encodingProfileSetName profile name = liftIO $ do
    profile' <- unsafeManagedPtrCastPtr profile
    name' <- textToCString name
    gst_encoding_profile_set_name profile' name'
    touchManagedPtr profile
    freeMem name'
    return ()

#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
data EncodingProfileSetNameMethodInfo
instance (signature ~ (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 defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
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 defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
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 = False, 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' -}
    -> T.Text
    {- ^ /@presetName@/: The name of the preset to use in this /@profile@/. -}
    -> m ()
encodingProfileSetPresetName profile presetName = liftIO $ do
    profile' <- unsafeManagedPtrCastPtr profile
    presetName' <- textToCString presetName
    gst_encoding_profile_set_preset_name profile' presetName'
    touchManagedPtr profile
    freeMem presetName'
    return ()

#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
data EncodingProfileSetPresetNameMethodInfo
instance (signature ~ (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 = False, 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' -}
    -> Gst.Caps.Caps
    {- ^ /@restriction@/: the restriction to apply -}
    -> m ()
encodingProfileSetRestriction profile restriction = liftIO $ do
    profile' <- unsafeManagedPtrCastPtr profile
    restriction' <- B.ManagedPtr.disownBoxed restriction
    gst_encoding_profile_set_restriction profile' restriction'
    touchManagedPtr profile
    touchManagedPtr restriction
    return ()

#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
data EncodingProfileSetRestrictionMethodInfo
instance (signature ~ (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 = False, argDoc = Documentation {rawDocText = Just "(allow-none): 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 -}
    -> T.Text
    {- ^ /@profilename@/: (allow-none): 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
    profilename' <- textToCString profilename
    maybeCategory <- case category of
        Nothing -> return nullPtr
        Just jCategory -> do
            jCategory' <- textToCString jCategory
            return jCategory'
    result <- gst_encoding_profile_find targetname' profilename' maybeCategory
    checkUnexpectedReturnNULL "encodingProfileFind" result
    result' <- (wrapObject EncodingProfile) result
    freeMem targetname'
    freeMem profilename'
    freeMem maybeCategory
    return result'

#if defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
#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 defined(ENABLE_OVERLOADING) && !defined(__HADDOCK_VERSION__)
#endif