{-# LANGUAGE TypeApplications #-}


-- | Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
-- License    : LGPL-2.1
-- Maintainer : Iñaki García Etxebarria
-- 
-- An implementation of GstPad that can be used with t'GI.GstVideo.Objects.VideoAggregator.VideoAggregator'.
-- 
-- See t'GI.GstVideo.Objects.VideoAggregator.VideoAggregator' for more details.
-- 
-- /Since: 1.16/

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

module GI.GstVideo.Objects.VideoAggregatorConvertPad
    ( 

-- * Exported types
    VideoAggregatorConvertPad(..)           ,
    IsVideoAggregatorConvertPad             ,
    toVideoAggregatorConvertPad             ,


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

#if defined(ENABLE_OVERLOADING)
    ResolveVideoAggregatorConvertPadMethod  ,
#endif


-- ** updateConversionInfo #method:updateConversionInfo#

#if defined(ENABLE_OVERLOADING)
    VideoAggregatorConvertPadUpdateConversionInfoMethodInfo,
#endif
    videoAggregatorConvertPadUpdateConversionInfo,




 -- * Properties
-- ** converterConfig #attr:converterConfig#
-- | /No description available in the introspection data./

#if defined(ENABLE_OVERLOADING)
    VideoAggregatorConvertPadConverterConfigPropertyInfo,
#endif
    clearVideoAggregatorConvertPadConverterConfig,
    constructVideoAggregatorConvertPadConverterConfig,
    getVideoAggregatorConvertPadConverterConfig,
    setVideoAggregatorConvertPadConverterConfig,
#if defined(ENABLE_OVERLOADING)
    videoAggregatorConvertPadConverterConfig,
#endif




    ) where

import Data.GI.Base.ShortPrelude
import qualified Data.GI.Base.ShortPrelude as SP
import qualified Data.GI.Base.Overloading as O
import qualified Prelude as P

import qualified Data.GI.Base.Attributes as GI.Attributes
import qualified Data.GI.Base.BasicTypes as B.Types
import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr
import qualified Data.GI.Base.GClosure as B.GClosure
import qualified Data.GI.Base.GError as B.GError
import qualified Data.GI.Base.GVariant as B.GVariant
import qualified Data.GI.Base.GValue as B.GValue
import qualified Data.GI.Base.GParamSpec as B.GParamSpec
import qualified Data.GI.Base.CallStack as B.CallStack
import qualified Data.GI.Base.Properties as B.Properties
import qualified Data.GI.Base.Signals as B.Signals
import qualified Control.Monad.IO.Class as MIO
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.Objects.Object as Gst.Object
import qualified GI.Gst.Objects.Pad as Gst.Pad
import qualified GI.Gst.Structs.Structure as Gst.Structure
import qualified GI.GstBase.Objects.AggregatorPad as GstBase.AggregatorPad
import {-# SOURCE #-} qualified GI.GstVideo.Objects.VideoAggregatorPad as GstVideo.VideoAggregatorPad

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

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

foreign import ccall "gst_video_aggregator_convert_pad_get_type"
    c_gst_video_aggregator_convert_pad_get_type :: IO B.Types.GType

instance B.Types.TypedObject VideoAggregatorConvertPad where
    glibType :: IO GType
glibType = IO GType
c_gst_video_aggregator_convert_pad_get_type

instance B.Types.GObject VideoAggregatorConvertPad

-- | Convert 'VideoAggregatorConvertPad' to and from 'Data.GI.Base.GValue.GValue' with 'Data.GI.Base.GValue.toGValue' and 'Data.GI.Base.GValue.fromGValue'.
instance B.GValue.IsGValue VideoAggregatorConvertPad where
    toGValue :: VideoAggregatorConvertPad -> IO GValue
toGValue VideoAggregatorConvertPad
o = do
        GType
gtype <- IO GType
c_gst_video_aggregator_convert_pad_get_type
        VideoAggregatorConvertPad
-> (Ptr VideoAggregatorConvertPad -> IO GValue) -> IO GValue
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
B.ManagedPtr.withManagedPtr VideoAggregatorConvertPad
o (GType
-> (GValue -> Ptr VideoAggregatorConvertPad -> IO ())
-> Ptr VideoAggregatorConvertPad
-> IO GValue
forall a. GType -> (GValue -> a -> IO ()) -> a -> IO GValue
B.GValue.buildGValue GType
gtype GValue -> Ptr VideoAggregatorConvertPad -> IO ()
forall a. GObject a => GValue -> Ptr a -> IO ()
B.GValue.set_object)
        
    fromGValue :: GValue -> IO VideoAggregatorConvertPad
fromGValue GValue
gv = do
        Ptr VideoAggregatorConvertPad
ptr <- GValue -> IO (Ptr VideoAggregatorConvertPad)
forall b. GObject b => GValue -> IO (Ptr b)
B.GValue.get_object GValue
gv :: IO (Ptr VideoAggregatorConvertPad)
        (ManagedPtr VideoAggregatorConvertPad -> VideoAggregatorConvertPad)
-> Ptr VideoAggregatorConvertPad -> IO VideoAggregatorConvertPad
forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
B.ManagedPtr.newObject ManagedPtr VideoAggregatorConvertPad -> VideoAggregatorConvertPad
VideoAggregatorConvertPad Ptr VideoAggregatorConvertPad
ptr
        
    

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

instance O.HasParentTypes VideoAggregatorConvertPad
type instance O.ParentTypes VideoAggregatorConvertPad = '[GstVideo.VideoAggregatorPad.VideoAggregatorPad, GstBase.AggregatorPad.AggregatorPad, Gst.Pad.Pad, Gst.Object.Object, GObject.Object.Object]

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

#if defined(ENABLE_OVERLOADING)
type family ResolveVideoAggregatorConvertPadMethod (t :: Symbol) (o :: *) :: * where
    ResolveVideoAggregatorConvertPadMethod "activateMode" o = Gst.Pad.PadActivateModeMethodInfo
    ResolveVideoAggregatorConvertPadMethod "addControlBinding" o = Gst.Object.ObjectAddControlBindingMethodInfo
    ResolveVideoAggregatorConvertPadMethod "addProbe" o = Gst.Pad.PadAddProbeMethodInfo
    ResolveVideoAggregatorConvertPadMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveVideoAggregatorConvertPadMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveVideoAggregatorConvertPadMethod "canLink" o = Gst.Pad.PadCanLinkMethodInfo
    ResolveVideoAggregatorConvertPadMethod "chain" o = Gst.Pad.PadChainMethodInfo
    ResolveVideoAggregatorConvertPadMethod "chainList" o = Gst.Pad.PadChainListMethodInfo
    ResolveVideoAggregatorConvertPadMethod "checkReconfigure" o = Gst.Pad.PadCheckReconfigureMethodInfo
    ResolveVideoAggregatorConvertPadMethod "createStreamId" o = Gst.Pad.PadCreateStreamIdMethodInfo
    ResolveVideoAggregatorConvertPadMethod "defaultError" o = Gst.Object.ObjectDefaultErrorMethodInfo
    ResolveVideoAggregatorConvertPadMethod "dropBuffer" o = GstBase.AggregatorPad.AggregatorPadDropBufferMethodInfo
    ResolveVideoAggregatorConvertPadMethod "eventDefault" o = Gst.Pad.PadEventDefaultMethodInfo
    ResolveVideoAggregatorConvertPadMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveVideoAggregatorConvertPadMethod "forward" o = Gst.Pad.PadForwardMethodInfo
    ResolveVideoAggregatorConvertPadMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveVideoAggregatorConvertPadMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
    ResolveVideoAggregatorConvertPadMethod "hasActiveControlBindings" o = Gst.Object.ObjectHasActiveControlBindingsMethodInfo
    ResolveVideoAggregatorConvertPadMethod "hasAncestor" o = Gst.Object.ObjectHasAncestorMethodInfo
    ResolveVideoAggregatorConvertPadMethod "hasAsAncestor" o = Gst.Object.ObjectHasAsAncestorMethodInfo
    ResolveVideoAggregatorConvertPadMethod "hasAsParent" o = Gst.Object.ObjectHasAsParentMethodInfo
    ResolveVideoAggregatorConvertPadMethod "hasBuffer" o = GstBase.AggregatorPad.AggregatorPadHasBufferMethodInfo
    ResolveVideoAggregatorConvertPadMethod "hasCurrentBuffer" o = GstVideo.VideoAggregatorPad.VideoAggregatorPadHasCurrentBufferMethodInfo
    ResolveVideoAggregatorConvertPadMethod "hasCurrentCaps" o = Gst.Pad.PadHasCurrentCapsMethodInfo
    ResolveVideoAggregatorConvertPadMethod "isActive" o = Gst.Pad.PadIsActiveMethodInfo
    ResolveVideoAggregatorConvertPadMethod "isBlocked" o = Gst.Pad.PadIsBlockedMethodInfo
    ResolveVideoAggregatorConvertPadMethod "isBlocking" o = Gst.Pad.PadIsBlockingMethodInfo
    ResolveVideoAggregatorConvertPadMethod "isEos" o = GstBase.AggregatorPad.AggregatorPadIsEosMethodInfo
    ResolveVideoAggregatorConvertPadMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveVideoAggregatorConvertPadMethod "isLinked" o = Gst.Pad.PadIsLinkedMethodInfo
    ResolveVideoAggregatorConvertPadMethod "iterateInternalLinks" o = Gst.Pad.PadIterateInternalLinksMethodInfo
    ResolveVideoAggregatorConvertPadMethod "iterateInternalLinksDefault" o = Gst.Pad.PadIterateInternalLinksDefaultMethodInfo
    ResolveVideoAggregatorConvertPadMethod "link" o = Gst.Pad.PadLinkMethodInfo
    ResolveVideoAggregatorConvertPadMethod "linkFull" o = Gst.Pad.PadLinkFullMethodInfo
    ResolveVideoAggregatorConvertPadMethod "linkMaybeGhosting" o = Gst.Pad.PadLinkMaybeGhostingMethodInfo
    ResolveVideoAggregatorConvertPadMethod "linkMaybeGhostingFull" o = Gst.Pad.PadLinkMaybeGhostingFullMethodInfo
    ResolveVideoAggregatorConvertPadMethod "markReconfigure" o = Gst.Pad.PadMarkReconfigureMethodInfo
    ResolveVideoAggregatorConvertPadMethod "needsReconfigure" o = Gst.Pad.PadNeedsReconfigureMethodInfo
    ResolveVideoAggregatorConvertPadMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveVideoAggregatorConvertPadMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveVideoAggregatorConvertPadMethod "pauseTask" o = Gst.Pad.PadPauseTaskMethodInfo
    ResolveVideoAggregatorConvertPadMethod "peekBuffer" o = GstBase.AggregatorPad.AggregatorPadPeekBufferMethodInfo
    ResolveVideoAggregatorConvertPadMethod "peerQuery" o = Gst.Pad.PadPeerQueryMethodInfo
    ResolveVideoAggregatorConvertPadMethod "peerQueryAcceptCaps" o = Gst.Pad.PadPeerQueryAcceptCapsMethodInfo
    ResolveVideoAggregatorConvertPadMethod "peerQueryCaps" o = Gst.Pad.PadPeerQueryCapsMethodInfo
    ResolveVideoAggregatorConvertPadMethod "peerQueryConvert" o = Gst.Pad.PadPeerQueryConvertMethodInfo
    ResolveVideoAggregatorConvertPadMethod "peerQueryDuration" o = Gst.Pad.PadPeerQueryDurationMethodInfo
    ResolveVideoAggregatorConvertPadMethod "peerQueryPosition" o = Gst.Pad.PadPeerQueryPositionMethodInfo
    ResolveVideoAggregatorConvertPadMethod "popBuffer" o = GstBase.AggregatorPad.AggregatorPadPopBufferMethodInfo
    ResolveVideoAggregatorConvertPadMethod "proxyQueryAcceptCaps" o = Gst.Pad.PadProxyQueryAcceptCapsMethodInfo
    ResolveVideoAggregatorConvertPadMethod "proxyQueryCaps" o = Gst.Pad.PadProxyQueryCapsMethodInfo
    ResolveVideoAggregatorConvertPadMethod "pullRange" o = Gst.Pad.PadPullRangeMethodInfo
    ResolveVideoAggregatorConvertPadMethod "push" o = Gst.Pad.PadPushMethodInfo
    ResolveVideoAggregatorConvertPadMethod "pushEvent" o = Gst.Pad.PadPushEventMethodInfo
    ResolveVideoAggregatorConvertPadMethod "pushList" o = Gst.Pad.PadPushListMethodInfo
    ResolveVideoAggregatorConvertPadMethod "query" o = Gst.Pad.PadQueryMethodInfo
    ResolveVideoAggregatorConvertPadMethod "queryAcceptCaps" o = Gst.Pad.PadQueryAcceptCapsMethodInfo
    ResolveVideoAggregatorConvertPadMethod "queryCaps" o = Gst.Pad.PadQueryCapsMethodInfo
    ResolveVideoAggregatorConvertPadMethod "queryConvert" o = Gst.Pad.PadQueryConvertMethodInfo
    ResolveVideoAggregatorConvertPadMethod "queryDefault" o = Gst.Pad.PadQueryDefaultMethodInfo
    ResolveVideoAggregatorConvertPadMethod "queryDuration" o = Gst.Pad.PadQueryDurationMethodInfo
    ResolveVideoAggregatorConvertPadMethod "queryPosition" o = Gst.Pad.PadQueryPositionMethodInfo
    ResolveVideoAggregatorConvertPadMethod "ref" o = Gst.Object.ObjectRefMethodInfo
    ResolveVideoAggregatorConvertPadMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveVideoAggregatorConvertPadMethod "removeControlBinding" o = Gst.Object.ObjectRemoveControlBindingMethodInfo
    ResolveVideoAggregatorConvertPadMethod "removeProbe" o = Gst.Pad.PadRemoveProbeMethodInfo
    ResolveVideoAggregatorConvertPadMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolveVideoAggregatorConvertPadMethod "sendEvent" o = Gst.Pad.PadSendEventMethodInfo
    ResolveVideoAggregatorConvertPadMethod "startTask" o = Gst.Pad.PadStartTaskMethodInfo
    ResolveVideoAggregatorConvertPadMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolveVideoAggregatorConvertPadMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolveVideoAggregatorConvertPadMethod "stickyEventsForeach" o = Gst.Pad.PadStickyEventsForeachMethodInfo
    ResolveVideoAggregatorConvertPadMethod "stopTask" o = Gst.Pad.PadStopTaskMethodInfo
    ResolveVideoAggregatorConvertPadMethod "storeStickyEvent" o = Gst.Pad.PadStoreStickyEventMethodInfo
    ResolveVideoAggregatorConvertPadMethod "suggestNextSync" o = Gst.Object.ObjectSuggestNextSyncMethodInfo
    ResolveVideoAggregatorConvertPadMethod "syncValues" o = Gst.Object.ObjectSyncValuesMethodInfo
    ResolveVideoAggregatorConvertPadMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolveVideoAggregatorConvertPadMethod "unlink" o = Gst.Pad.PadUnlinkMethodInfo
    ResolveVideoAggregatorConvertPadMethod "unparent" o = Gst.Object.ObjectUnparentMethodInfo
    ResolveVideoAggregatorConvertPadMethod "unref" o = Gst.Object.ObjectUnrefMethodInfo
    ResolveVideoAggregatorConvertPadMethod "updateConversionInfo" o = VideoAggregatorConvertPadUpdateConversionInfoMethodInfo
    ResolveVideoAggregatorConvertPadMethod "useFixedCaps" o = Gst.Pad.PadUseFixedCapsMethodInfo
    ResolveVideoAggregatorConvertPadMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolveVideoAggregatorConvertPadMethod "getAllowedCaps" o = Gst.Pad.PadGetAllowedCapsMethodInfo
    ResolveVideoAggregatorConvertPadMethod "getControlBinding" o = Gst.Object.ObjectGetControlBindingMethodInfo
    ResolveVideoAggregatorConvertPadMethod "getControlRate" o = Gst.Object.ObjectGetControlRateMethodInfo
    ResolveVideoAggregatorConvertPadMethod "getCurrentBuffer" o = GstVideo.VideoAggregatorPad.VideoAggregatorPadGetCurrentBufferMethodInfo
    ResolveVideoAggregatorConvertPadMethod "getCurrentCaps" o = Gst.Pad.PadGetCurrentCapsMethodInfo
    ResolveVideoAggregatorConvertPadMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolveVideoAggregatorConvertPadMethod "getDirection" o = Gst.Pad.PadGetDirectionMethodInfo
    ResolveVideoAggregatorConvertPadMethod "getElementPrivate" o = Gst.Pad.PadGetElementPrivateMethodInfo
    ResolveVideoAggregatorConvertPadMethod "getGValueArray" o = Gst.Object.ObjectGetGValueArrayMethodInfo
    ResolveVideoAggregatorConvertPadMethod "getLastFlowReturn" o = Gst.Pad.PadGetLastFlowReturnMethodInfo
    ResolveVideoAggregatorConvertPadMethod "getName" o = Gst.Object.ObjectGetNameMethodInfo
    ResolveVideoAggregatorConvertPadMethod "getOffset" o = Gst.Pad.PadGetOffsetMethodInfo
    ResolveVideoAggregatorConvertPadMethod "getPadTemplate" o = Gst.Pad.PadGetPadTemplateMethodInfo
    ResolveVideoAggregatorConvertPadMethod "getPadTemplateCaps" o = Gst.Pad.PadGetPadTemplateCapsMethodInfo
    ResolveVideoAggregatorConvertPadMethod "getParent" o = Gst.Object.ObjectGetParentMethodInfo
    ResolveVideoAggregatorConvertPadMethod "getParentElement" o = Gst.Pad.PadGetParentElementMethodInfo
    ResolveVideoAggregatorConvertPadMethod "getPathString" o = Gst.Object.ObjectGetPathStringMethodInfo
    ResolveVideoAggregatorConvertPadMethod "getPeer" o = Gst.Pad.PadGetPeerMethodInfo
    ResolveVideoAggregatorConvertPadMethod "getPreparedFrame" o = GstVideo.VideoAggregatorPad.VideoAggregatorPadGetPreparedFrameMethodInfo
    ResolveVideoAggregatorConvertPadMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveVideoAggregatorConvertPadMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveVideoAggregatorConvertPadMethod "getRange" o = Gst.Pad.PadGetRangeMethodInfo
    ResolveVideoAggregatorConvertPadMethod "getStickyEvent" o = Gst.Pad.PadGetStickyEventMethodInfo
    ResolveVideoAggregatorConvertPadMethod "getStream" o = Gst.Pad.PadGetStreamMethodInfo
    ResolveVideoAggregatorConvertPadMethod "getStreamId" o = Gst.Pad.PadGetStreamIdMethodInfo
    ResolveVideoAggregatorConvertPadMethod "getTaskState" o = Gst.Pad.PadGetTaskStateMethodInfo
    ResolveVideoAggregatorConvertPadMethod "getValue" o = Gst.Object.ObjectGetValueMethodInfo
    ResolveVideoAggregatorConvertPadMethod "setActivateFunctionFull" o = Gst.Pad.PadSetActivateFunctionFullMethodInfo
    ResolveVideoAggregatorConvertPadMethod "setActivatemodeFunctionFull" o = Gst.Pad.PadSetActivatemodeFunctionFullMethodInfo
    ResolveVideoAggregatorConvertPadMethod "setActive" o = Gst.Pad.PadSetActiveMethodInfo
    ResolveVideoAggregatorConvertPadMethod "setChainFunctionFull" o = Gst.Pad.PadSetChainFunctionFullMethodInfo
    ResolveVideoAggregatorConvertPadMethod "setChainListFunctionFull" o = Gst.Pad.PadSetChainListFunctionFullMethodInfo
    ResolveVideoAggregatorConvertPadMethod "setControlBindingDisabled" o = Gst.Object.ObjectSetControlBindingDisabledMethodInfo
    ResolveVideoAggregatorConvertPadMethod "setControlBindingsDisabled" o = Gst.Object.ObjectSetControlBindingsDisabledMethodInfo
    ResolveVideoAggregatorConvertPadMethod "setControlRate" o = Gst.Object.ObjectSetControlRateMethodInfo
    ResolveVideoAggregatorConvertPadMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveVideoAggregatorConvertPadMethod "setDataFull" o = GObject.Object.ObjectSetDataFullMethodInfo
    ResolveVideoAggregatorConvertPadMethod "setElementPrivate" o = Gst.Pad.PadSetElementPrivateMethodInfo
    ResolveVideoAggregatorConvertPadMethod "setEventFullFunctionFull" o = Gst.Pad.PadSetEventFullFunctionFullMethodInfo
    ResolveVideoAggregatorConvertPadMethod "setEventFunctionFull" o = Gst.Pad.PadSetEventFunctionFullMethodInfo
    ResolveVideoAggregatorConvertPadMethod "setGetrangeFunctionFull" o = Gst.Pad.PadSetGetrangeFunctionFullMethodInfo
    ResolveVideoAggregatorConvertPadMethod "setIterateInternalLinksFunctionFull" o = Gst.Pad.PadSetIterateInternalLinksFunctionFullMethodInfo
    ResolveVideoAggregatorConvertPadMethod "setLinkFunctionFull" o = Gst.Pad.PadSetLinkFunctionFullMethodInfo
    ResolveVideoAggregatorConvertPadMethod "setName" o = Gst.Object.ObjectSetNameMethodInfo
    ResolveVideoAggregatorConvertPadMethod "setNeedsAlpha" o = GstVideo.VideoAggregatorPad.VideoAggregatorPadSetNeedsAlphaMethodInfo
    ResolveVideoAggregatorConvertPadMethod "setOffset" o = Gst.Pad.PadSetOffsetMethodInfo
    ResolveVideoAggregatorConvertPadMethod "setParent" o = Gst.Object.ObjectSetParentMethodInfo
    ResolveVideoAggregatorConvertPadMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveVideoAggregatorConvertPadMethod "setQueryFunctionFull" o = Gst.Pad.PadSetQueryFunctionFullMethodInfo
    ResolveVideoAggregatorConvertPadMethod "setUnlinkFunctionFull" o = Gst.Pad.PadSetUnlinkFunctionFullMethodInfo
    ResolveVideoAggregatorConvertPadMethod l o = O.MethodResolutionFailed l o

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

#endif

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

-- | Get the value of the “@converter-config@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' videoAggregatorConvertPad #converterConfig
-- @
getVideoAggregatorConvertPadConverterConfig :: (MonadIO m, IsVideoAggregatorConvertPad o) => o -> m (Maybe Gst.Structure.Structure)
getVideoAggregatorConvertPadConverterConfig :: o -> m (Maybe Structure)
getVideoAggregatorConvertPadConverterConfig o
obj = IO (Maybe Structure) -> m (Maybe Structure)
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Maybe Structure) -> m (Maybe Structure))
-> IO (Maybe Structure) -> m (Maybe Structure)
forall a b. (a -> b) -> a -> b
$ o
-> String
-> (ManagedPtr Structure -> Structure)
-> IO (Maybe Structure)
forall a b.
(GObject a, GBoxed b) =>
a -> String -> (ManagedPtr b -> b) -> IO (Maybe b)
B.Properties.getObjectPropertyBoxed o
obj String
"converter-config" ManagedPtr Structure -> Structure
Gst.Structure.Structure

-- | Set the value of the “@converter-config@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' videoAggregatorConvertPad [ #converterConfig 'Data.GI.Base.Attributes.:=' value ]
-- @
setVideoAggregatorConvertPadConverterConfig :: (MonadIO m, IsVideoAggregatorConvertPad o) => o -> Gst.Structure.Structure -> m ()
setVideoAggregatorConvertPadConverterConfig :: o -> Structure -> m ()
setVideoAggregatorConvertPadConverterConfig o
obj Structure
val = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ o -> String -> Maybe Structure -> IO ()
forall a b.
(GObject a, GBoxed b) =>
a -> String -> Maybe b -> IO ()
B.Properties.setObjectPropertyBoxed o
obj String
"converter-config" (Structure -> Maybe Structure
forall a. a -> Maybe a
Just Structure
val)

-- | Construct a `GValueConstruct` with valid value for the “@converter-config@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
constructVideoAggregatorConvertPadConverterConfig :: (IsVideoAggregatorConvertPad o, MIO.MonadIO m) => Gst.Structure.Structure -> m (GValueConstruct o)
constructVideoAggregatorConvertPadConverterConfig :: Structure -> m (GValueConstruct o)
constructVideoAggregatorConvertPadConverterConfig Structure
val = IO (GValueConstruct o) -> m (GValueConstruct o)
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO (GValueConstruct o) -> m (GValueConstruct o))
-> IO (GValueConstruct o) -> m (GValueConstruct o)
forall a b. (a -> b) -> a -> b
$ String -> Maybe Structure -> IO (GValueConstruct o)
forall a o. GBoxed a => String -> Maybe a -> IO (GValueConstruct o)
B.Properties.constructObjectPropertyBoxed String
"converter-config" (Structure -> Maybe Structure
forall a. a -> Maybe a
P.Just Structure
val)

-- | Set the value of the “@converter-config@” 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' #converterConfig
-- @
clearVideoAggregatorConvertPadConverterConfig :: (MonadIO m, IsVideoAggregatorConvertPad o) => o -> m ()
clearVideoAggregatorConvertPadConverterConfig :: o -> m ()
clearVideoAggregatorConvertPadConverterConfig o
obj = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ o -> String -> Maybe Structure -> IO ()
forall a b.
(GObject a, GBoxed b) =>
a -> String -> Maybe b -> IO ()
B.Properties.setObjectPropertyBoxed o
obj String
"converter-config" (Maybe Structure
forall a. Maybe a
Nothing :: Maybe Gst.Structure.Structure)

#if defined(ENABLE_OVERLOADING)
data VideoAggregatorConvertPadConverterConfigPropertyInfo
instance AttrInfo VideoAggregatorConvertPadConverterConfigPropertyInfo where
    type AttrAllowedOps VideoAggregatorConvertPadConverterConfigPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet, 'AttrClear]
    type AttrBaseTypeConstraint VideoAggregatorConvertPadConverterConfigPropertyInfo = IsVideoAggregatorConvertPad
    type AttrSetTypeConstraint VideoAggregatorConvertPadConverterConfigPropertyInfo = (~) Gst.Structure.Structure
    type AttrTransferTypeConstraint VideoAggregatorConvertPadConverterConfigPropertyInfo = (~) Gst.Structure.Structure
    type AttrTransferType VideoAggregatorConvertPadConverterConfigPropertyInfo = Gst.Structure.Structure
    type AttrGetType VideoAggregatorConvertPadConverterConfigPropertyInfo = (Maybe Gst.Structure.Structure)
    type AttrLabel VideoAggregatorConvertPadConverterConfigPropertyInfo = "converter-config"
    type AttrOrigin VideoAggregatorConvertPadConverterConfigPropertyInfo = VideoAggregatorConvertPad
    attrGet = getVideoAggregatorConvertPadConverterConfig
    attrSet = setVideoAggregatorConvertPadConverterConfig
    attrTransfer _ v = do
        return v
    attrConstruct = constructVideoAggregatorConvertPadConverterConfig
    attrClear = clearVideoAggregatorConvertPadConverterConfig
#endif

#if defined(ENABLE_OVERLOADING)
instance O.HasAttributeList VideoAggregatorConvertPad
type instance O.AttributeList VideoAggregatorConvertPad = VideoAggregatorConvertPadAttributeList
type VideoAggregatorConvertPadAttributeList = ('[ '("caps", Gst.Pad.PadCapsPropertyInfo), '("converterConfig", VideoAggregatorConvertPadConverterConfigPropertyInfo), '("direction", Gst.Pad.PadDirectionPropertyInfo), '("emitSignals", GstBase.AggregatorPad.AggregatorPadEmitSignalsPropertyInfo), '("name", Gst.Object.ObjectNamePropertyInfo), '("offset", Gst.Pad.PadOffsetPropertyInfo), '("parent", Gst.Object.ObjectParentPropertyInfo), '("repeatAfterEos", GstVideo.VideoAggregatorPad.VideoAggregatorPadRepeatAfterEosPropertyInfo), '("template", Gst.Pad.PadTemplatePropertyInfo), '("zorder", GstVideo.VideoAggregatorPad.VideoAggregatorPadZorderPropertyInfo)] :: [(Symbol, *)])
#endif

#if defined(ENABLE_OVERLOADING)
videoAggregatorConvertPadConverterConfig :: AttrLabelProxy "converterConfig"
videoAggregatorConvertPadConverterConfig = AttrLabelProxy

#endif

#if defined(ENABLE_OVERLOADING)
type instance O.SignalList VideoAggregatorConvertPad = VideoAggregatorConvertPadSignalList
type VideoAggregatorConvertPadSignalList = ('[ '("bufferConsumed", GstBase.AggregatorPad.AggregatorPadBufferConsumedSignalInfo), '("deepNotify", Gst.Object.ObjectDeepNotifySignalInfo), '("linked", Gst.Pad.PadLinkedSignalInfo), '("notify", GObject.Object.ObjectNotifySignalInfo), '("unlinked", Gst.Pad.PadUnlinkedSignalInfo)] :: [(Symbol, *)])

#endif

-- method VideoAggregatorConvertPad::update_conversion_info
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "pad"
--           , argType =
--               TInterface
--                 Name
--                   { namespace = "GstVideo" , name = "VideoAggregatorConvertPad" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GstVideoAggregatorPad"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gst_video_aggregator_convert_pad_update_conversion_info" gst_video_aggregator_convert_pad_update_conversion_info :: 
    Ptr VideoAggregatorConvertPad ->        -- pad : TInterface (Name {namespace = "GstVideo", name = "VideoAggregatorConvertPad"})
    IO ()

-- | Requests the pad to check and update the converter before the next usage to
-- update for any changes that have happened.
videoAggregatorConvertPadUpdateConversionInfo ::
    (B.CallStack.HasCallStack, MonadIO m, IsVideoAggregatorConvertPad a) =>
    a
    -- ^ /@pad@/: a t'GI.GstVideo.Objects.VideoAggregatorPad.VideoAggregatorPad'
    -> m ()
videoAggregatorConvertPadUpdateConversionInfo :: a -> m ()
videoAggregatorConvertPadUpdateConversionInfo a
pad = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr VideoAggregatorConvertPad
pad' <- a -> IO (Ptr VideoAggregatorConvertPad)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
pad
    Ptr VideoAggregatorConvertPad -> IO ()
gst_video_aggregator_convert_pad_update_conversion_info Ptr VideoAggregatorConvertPad
pad'
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
pad
    () -> IO ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()

#if defined(ENABLE_OVERLOADING)
data VideoAggregatorConvertPadUpdateConversionInfoMethodInfo
instance (signature ~ (m ()), MonadIO m, IsVideoAggregatorConvertPad a) => O.MethodInfo VideoAggregatorConvertPadUpdateConversionInfoMethodInfo a signature where
    overloadedMethod = videoAggregatorConvertPadUpdateConversionInfo

#endif