{-# LANGUAGE TypeApplications #-}


-- | Copyright  : Will Thompson and Iñaki García Etxebarria
-- License    : LGPL-2.1
-- Maintainer : Iñaki García Etxebarria
-- 
-- Provides useful functions and a base class for video filters.
-- 
-- The videofilter will by default enable QoS on the parent GstBaseTransform
-- to implement frame dropping.

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

module GI.GstVideo.Objects.VideoFilter
    ( 

-- * Exported types
    VideoFilter(..)                         ,
    IsVideoFilter                           ,
    toVideoFilter                           ,


 -- * Methods
-- | 
-- 
--  === __Click to display all available methods, including inherited ones__
-- ==== Methods
-- [abortState]("GI.Gst.Objects.Element#g:method:abortState"), [addControlBinding]("GI.Gst.Objects.Object#g:method:addControlBinding"), [addPad]("GI.Gst.Objects.Element#g:method:addPad"), [addPropertyDeepNotifyWatch]("GI.Gst.Objects.Element#g:method:addPropertyDeepNotifyWatch"), [addPropertyNotifyWatch]("GI.Gst.Objects.Element#g:method:addPropertyNotifyWatch"), [bindProperty]("GI.GObject.Objects.Object#g:method:bindProperty"), [bindPropertyFull]("GI.GObject.Objects.Object#g:method:bindPropertyFull"), [callAsync]("GI.Gst.Objects.Element#g:method:callAsync"), [changeState]("GI.Gst.Objects.Element#g:method:changeState"), [continueState]("GI.Gst.Objects.Element#g:method:continueState"), [createAllPads]("GI.Gst.Objects.Element#g:method:createAllPads"), [defaultError]("GI.Gst.Objects.Object#g:method:defaultError"), [forceFloating]("GI.GObject.Objects.Object#g:method:forceFloating"), [foreachPad]("GI.Gst.Objects.Element#g:method:foreachPad"), [foreachSinkPad]("GI.Gst.Objects.Element#g:method:foreachSinkPad"), [foreachSrcPad]("GI.Gst.Objects.Element#g:method:foreachSrcPad"), [freezeNotify]("GI.GObject.Objects.Object#g:method:freezeNotify"), [getv]("GI.GObject.Objects.Object#g:method:getv"), [hasActiveControlBindings]("GI.Gst.Objects.Object#g:method:hasActiveControlBindings"), [hasAncestor]("GI.Gst.Objects.Object#g:method:hasAncestor"), [hasAsAncestor]("GI.Gst.Objects.Object#g:method:hasAsAncestor"), [hasAsParent]("GI.Gst.Objects.Object#g:method:hasAsParent"), [isFloating]("GI.GObject.Objects.Object#g:method:isFloating"), [isInPlace]("GI.GstBase.Objects.BaseTransform#g:method:isInPlace"), [isLockedState]("GI.Gst.Objects.Element#g:method:isLockedState"), [isPassthrough]("GI.GstBase.Objects.BaseTransform#g:method:isPassthrough"), [isQosEnabled]("GI.GstBase.Objects.BaseTransform#g:method:isQosEnabled"), [iteratePads]("GI.Gst.Objects.Element#g:method:iteratePads"), [iterateSinkPads]("GI.Gst.Objects.Element#g:method:iterateSinkPads"), [iterateSrcPads]("GI.Gst.Objects.Element#g:method:iterateSrcPads"), [link]("GI.Gst.Objects.Element#g:method:link"), [linkFiltered]("GI.Gst.Objects.Element#g:method:linkFiltered"), [linkPads]("GI.Gst.Objects.Element#g:method:linkPads"), [linkPadsFiltered]("GI.Gst.Objects.Element#g:method:linkPadsFiltered"), [linkPadsFull]("GI.Gst.Objects.Element#g:method:linkPadsFull"), [lostState]("GI.Gst.Objects.Element#g:method:lostState"), [messageFull]("GI.Gst.Objects.Element#g:method:messageFull"), [messageFullWithDetails]("GI.Gst.Objects.Element#g:method:messageFullWithDetails"), [noMorePads]("GI.Gst.Objects.Element#g:method:noMorePads"), [notify]("GI.GObject.Objects.Object#g:method:notify"), [notifyByPspec]("GI.GObject.Objects.Object#g:method:notifyByPspec"), [postMessage]("GI.Gst.Objects.Element#g:method:postMessage"), [provideClock]("GI.Gst.Objects.Element#g:method:provideClock"), [query]("GI.Gst.Objects.Element#g:method:query"), [queryConvert]("GI.Gst.Objects.Element#g:method:queryConvert"), [queryDuration]("GI.Gst.Objects.Element#g:method:queryDuration"), [queryPosition]("GI.Gst.Objects.Element#g:method:queryPosition"), [reconfigure]("GI.GstBase.Objects.BaseTransform#g:method:reconfigure"), [reconfigureSink]("GI.GstBase.Objects.BaseTransform#g:method:reconfigureSink"), [reconfigureSrc]("GI.GstBase.Objects.BaseTransform#g:method:reconfigureSrc"), [ref]("GI.Gst.Objects.Object#g:method:ref"), [refSink]("GI.GObject.Objects.Object#g:method:refSink"), [releaseRequestPad]("GI.Gst.Objects.Element#g:method:releaseRequestPad"), [removeControlBinding]("GI.Gst.Objects.Object#g:method:removeControlBinding"), [removePad]("GI.Gst.Objects.Element#g:method:removePad"), [removePropertyNotifyWatch]("GI.Gst.Objects.Element#g:method:removePropertyNotifyWatch"), [requestPad]("GI.Gst.Objects.Element#g:method:requestPad"), [requestPadSimple]("GI.Gst.Objects.Element#g:method:requestPadSimple"), [runDispose]("GI.GObject.Objects.Object#g:method:runDispose"), [seek]("GI.Gst.Objects.Element#g:method:seek"), [seekSimple]("GI.Gst.Objects.Element#g:method:seekSimple"), [sendEvent]("GI.Gst.Objects.Element#g:method:sendEvent"), [stealData]("GI.GObject.Objects.Object#g:method:stealData"), [stealQdata]("GI.GObject.Objects.Object#g:method:stealQdata"), [suggestNextSync]("GI.Gst.Objects.Object#g:method:suggestNextSync"), [syncStateWithParent]("GI.Gst.Objects.Element#g:method:syncStateWithParent"), [syncValues]("GI.Gst.Objects.Object#g:method:syncValues"), [thawNotify]("GI.GObject.Objects.Object#g:method:thawNotify"), [unlink]("GI.Gst.Objects.Element#g:method:unlink"), [unlinkPads]("GI.Gst.Objects.Element#g:method:unlinkPads"), [unparent]("GI.Gst.Objects.Object#g:method:unparent"), [unref]("GI.Gst.Objects.Object#g:method:unref"), [updateQos]("GI.GstBase.Objects.BaseTransform#g:method:updateQos"), [updateSrcCaps]("GI.GstBase.Objects.BaseTransform#g:method:updateSrcCaps"), [watchClosure]("GI.GObject.Objects.Object#g:method:watchClosure").
-- 
-- ==== Getters
-- [getAllocator]("GI.GstBase.Objects.BaseTransform#g:method:getAllocator"), [getBaseTime]("GI.Gst.Objects.Element#g:method:getBaseTime"), [getBufferPool]("GI.GstBase.Objects.BaseTransform#g:method:getBufferPool"), [getBus]("GI.Gst.Objects.Element#g:method:getBus"), [getClock]("GI.Gst.Objects.Element#g:method:getClock"), [getCompatiblePad]("GI.Gst.Objects.Element#g:method:getCompatiblePad"), [getCompatiblePadTemplate]("GI.Gst.Objects.Element#g:method:getCompatiblePadTemplate"), [getContext]("GI.Gst.Objects.Element#g:method:getContext"), [getContextUnlocked]("GI.Gst.Objects.Element#g:method:getContextUnlocked"), [getContexts]("GI.Gst.Objects.Element#g:method:getContexts"), [getControlBinding]("GI.Gst.Objects.Object#g:method:getControlBinding"), [getControlRate]("GI.Gst.Objects.Object#g:method:getControlRate"), [getCurrentClockTime]("GI.Gst.Objects.Element#g:method:getCurrentClockTime"), [getCurrentRunningTime]("GI.Gst.Objects.Element#g:method:getCurrentRunningTime"), [getData]("GI.GObject.Objects.Object#g:method:getData"), [getFactory]("GI.Gst.Objects.Element#g:method:getFactory"), [getGValueArray]("GI.Gst.Objects.Object#g:method:getGValueArray"), [getMetadata]("GI.Gst.Objects.Element#g:method:getMetadata"), [getName]("GI.Gst.Objects.Object#g:method:getName"), [getPadTemplate]("GI.Gst.Objects.Element#g:method:getPadTemplate"), [getPadTemplateList]("GI.Gst.Objects.Element#g:method:getPadTemplateList"), [getParent]("GI.Gst.Objects.Object#g:method:getParent"), [getPathString]("GI.Gst.Objects.Object#g:method:getPathString"), [getProperty]("GI.GObject.Objects.Object#g:method:getProperty"), [getQdata]("GI.GObject.Objects.Object#g:method:getQdata"), [getRequestPad]("GI.Gst.Objects.Element#g:method:getRequestPad"), [getStartTime]("GI.Gst.Objects.Element#g:method:getStartTime"), [getState]("GI.Gst.Objects.Element#g:method:getState"), [getStaticPad]("GI.Gst.Objects.Element#g:method:getStaticPad"), [getValue]("GI.Gst.Objects.Object#g:method:getValue").
-- 
-- ==== Setters
-- [setBaseTime]("GI.Gst.Objects.Element#g:method:setBaseTime"), [setBus]("GI.Gst.Objects.Element#g:method:setBus"), [setClock]("GI.Gst.Objects.Element#g:method:setClock"), [setContext]("GI.Gst.Objects.Element#g:method:setContext"), [setControlBindingDisabled]("GI.Gst.Objects.Object#g:method:setControlBindingDisabled"), [setControlBindingsDisabled]("GI.Gst.Objects.Object#g:method:setControlBindingsDisabled"), [setControlRate]("GI.Gst.Objects.Object#g:method:setControlRate"), [setData]("GI.GObject.Objects.Object#g:method:setData"), [setDataFull]("GI.GObject.Objects.Object#g:method:setDataFull"), [setGapAware]("GI.GstBase.Objects.BaseTransform#g:method:setGapAware"), [setInPlace]("GI.GstBase.Objects.BaseTransform#g:method:setInPlace"), [setLockedState]("GI.Gst.Objects.Element#g:method:setLockedState"), [setName]("GI.Gst.Objects.Object#g:method:setName"), [setParent]("GI.Gst.Objects.Object#g:method:setParent"), [setPassthrough]("GI.GstBase.Objects.BaseTransform#g:method:setPassthrough"), [setPreferPassthrough]("GI.GstBase.Objects.BaseTransform#g:method:setPreferPassthrough"), [setProperty]("GI.GObject.Objects.Object#g:method:setProperty"), [setQosEnabled]("GI.GstBase.Objects.BaseTransform#g:method:setQosEnabled"), [setStartTime]("GI.Gst.Objects.Element#g:method:setStartTime"), [setState]("GI.Gst.Objects.Element#g:method:setState").

#if defined(ENABLE_OVERLOADING)
    ResolveVideoFilterMethod                ,
#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.GArray as B.GArray
import qualified Data.GI.Base.GClosure as B.GClosure
import qualified Data.GI.Base.GError as B.GError
import qualified Data.GI.Base.GHashTable as B.GHT
import qualified Data.GI.Base.GVariant as B.GVariant
import qualified Data.GI.Base.GValue as B.GValue
import qualified Data.GI.Base.GParamSpec as B.GParamSpec
import qualified Data.GI.Base.CallStack as B.CallStack
import qualified Data.GI.Base.Properties as B.Properties
import qualified Data.GI.Base.Signals as B.Signals
import qualified Control.Monad.IO.Class as MIO
import qualified Data.Coerce as Coerce
import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map
import qualified Foreign.Ptr as FP
import qualified GHC.OverloadedLabels as OL
import qualified GHC.Records as R

import qualified GI.GObject.Objects.Object as GObject.Object
import qualified GI.Gst.Objects.Element as Gst.Element
import qualified GI.Gst.Objects.Object as Gst.Object
import qualified GI.GstBase.Objects.BaseTransform as GstBase.BaseTransform

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

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

foreign import ccall "gst_video_filter_get_type"
    c_gst_video_filter_get_type :: IO B.Types.GType

instance B.Types.TypedObject VideoFilter where
    glibType :: IO GType
glibType = IO GType
c_gst_video_filter_get_type

instance B.Types.GObject VideoFilter

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

instance O.HasParentTypes VideoFilter
type instance O.ParentTypes VideoFilter = '[GstBase.BaseTransform.BaseTransform, Gst.Element.Element, Gst.Object.Object, GObject.Object.Object]

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

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

#if defined(ENABLE_OVERLOADING)
type family ResolveVideoFilterMethod (t :: Symbol) (o :: *) :: * where
    ResolveVideoFilterMethod "abortState" o = Gst.Element.ElementAbortStateMethodInfo
    ResolveVideoFilterMethod "addControlBinding" o = Gst.Object.ObjectAddControlBindingMethodInfo
    ResolveVideoFilterMethod "addPad" o = Gst.Element.ElementAddPadMethodInfo
    ResolveVideoFilterMethod "addPropertyDeepNotifyWatch" o = Gst.Element.ElementAddPropertyDeepNotifyWatchMethodInfo
    ResolveVideoFilterMethod "addPropertyNotifyWatch" o = Gst.Element.ElementAddPropertyNotifyWatchMethodInfo
    ResolveVideoFilterMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveVideoFilterMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveVideoFilterMethod "callAsync" o = Gst.Element.ElementCallAsyncMethodInfo
    ResolveVideoFilterMethod "changeState" o = Gst.Element.ElementChangeStateMethodInfo
    ResolveVideoFilterMethod "continueState" o = Gst.Element.ElementContinueStateMethodInfo
    ResolveVideoFilterMethod "createAllPads" o = Gst.Element.ElementCreateAllPadsMethodInfo
    ResolveVideoFilterMethod "defaultError" o = Gst.Object.ObjectDefaultErrorMethodInfo
    ResolveVideoFilterMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveVideoFilterMethod "foreachPad" o = Gst.Element.ElementForeachPadMethodInfo
    ResolveVideoFilterMethod "foreachSinkPad" o = Gst.Element.ElementForeachSinkPadMethodInfo
    ResolveVideoFilterMethod "foreachSrcPad" o = Gst.Element.ElementForeachSrcPadMethodInfo
    ResolveVideoFilterMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveVideoFilterMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
    ResolveVideoFilterMethod "hasActiveControlBindings" o = Gst.Object.ObjectHasActiveControlBindingsMethodInfo
    ResolveVideoFilterMethod "hasAncestor" o = Gst.Object.ObjectHasAncestorMethodInfo
    ResolveVideoFilterMethod "hasAsAncestor" o = Gst.Object.ObjectHasAsAncestorMethodInfo
    ResolveVideoFilterMethod "hasAsParent" o = Gst.Object.ObjectHasAsParentMethodInfo
    ResolveVideoFilterMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveVideoFilterMethod "isInPlace" o = GstBase.BaseTransform.BaseTransformIsInPlaceMethodInfo
    ResolveVideoFilterMethod "isLockedState" o = Gst.Element.ElementIsLockedStateMethodInfo
    ResolveVideoFilterMethod "isPassthrough" o = GstBase.BaseTransform.BaseTransformIsPassthroughMethodInfo
    ResolveVideoFilterMethod "isQosEnabled" o = GstBase.BaseTransform.BaseTransformIsQosEnabledMethodInfo
    ResolveVideoFilterMethod "iteratePads" o = Gst.Element.ElementIteratePadsMethodInfo
    ResolveVideoFilterMethod "iterateSinkPads" o = Gst.Element.ElementIterateSinkPadsMethodInfo
    ResolveVideoFilterMethod "iterateSrcPads" o = Gst.Element.ElementIterateSrcPadsMethodInfo
    ResolveVideoFilterMethod "link" o = Gst.Element.ElementLinkMethodInfo
    ResolveVideoFilterMethod "linkFiltered" o = Gst.Element.ElementLinkFilteredMethodInfo
    ResolveVideoFilterMethod "linkPads" o = Gst.Element.ElementLinkPadsMethodInfo
    ResolveVideoFilterMethod "linkPadsFiltered" o = Gst.Element.ElementLinkPadsFilteredMethodInfo
    ResolveVideoFilterMethod "linkPadsFull" o = Gst.Element.ElementLinkPadsFullMethodInfo
    ResolveVideoFilterMethod "lostState" o = Gst.Element.ElementLostStateMethodInfo
    ResolveVideoFilterMethod "messageFull" o = Gst.Element.ElementMessageFullMethodInfo
    ResolveVideoFilterMethod "messageFullWithDetails" o = Gst.Element.ElementMessageFullWithDetailsMethodInfo
    ResolveVideoFilterMethod "noMorePads" o = Gst.Element.ElementNoMorePadsMethodInfo
    ResolveVideoFilterMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveVideoFilterMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveVideoFilterMethod "postMessage" o = Gst.Element.ElementPostMessageMethodInfo
    ResolveVideoFilterMethod "provideClock" o = Gst.Element.ElementProvideClockMethodInfo
    ResolveVideoFilterMethod "query" o = Gst.Element.ElementQueryMethodInfo
    ResolveVideoFilterMethod "queryConvert" o = Gst.Element.ElementQueryConvertMethodInfo
    ResolveVideoFilterMethod "queryDuration" o = Gst.Element.ElementQueryDurationMethodInfo
    ResolveVideoFilterMethod "queryPosition" o = Gst.Element.ElementQueryPositionMethodInfo
    ResolveVideoFilterMethod "reconfigure" o = GstBase.BaseTransform.BaseTransformReconfigureMethodInfo
    ResolveVideoFilterMethod "reconfigureSink" o = GstBase.BaseTransform.BaseTransformReconfigureSinkMethodInfo
    ResolveVideoFilterMethod "reconfigureSrc" o = GstBase.BaseTransform.BaseTransformReconfigureSrcMethodInfo
    ResolveVideoFilterMethod "ref" o = Gst.Object.ObjectRefMethodInfo
    ResolveVideoFilterMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveVideoFilterMethod "releaseRequestPad" o = Gst.Element.ElementReleaseRequestPadMethodInfo
    ResolveVideoFilterMethod "removeControlBinding" o = Gst.Object.ObjectRemoveControlBindingMethodInfo
    ResolveVideoFilterMethod "removePad" o = Gst.Element.ElementRemovePadMethodInfo
    ResolveVideoFilterMethod "removePropertyNotifyWatch" o = Gst.Element.ElementRemovePropertyNotifyWatchMethodInfo
    ResolveVideoFilterMethod "requestPad" o = Gst.Element.ElementRequestPadMethodInfo
    ResolveVideoFilterMethod "requestPadSimple" o = Gst.Element.ElementRequestPadSimpleMethodInfo
    ResolveVideoFilterMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolveVideoFilterMethod "seek" o = Gst.Element.ElementSeekMethodInfo
    ResolveVideoFilterMethod "seekSimple" o = Gst.Element.ElementSeekSimpleMethodInfo
    ResolveVideoFilterMethod "sendEvent" o = Gst.Element.ElementSendEventMethodInfo
    ResolveVideoFilterMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolveVideoFilterMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolveVideoFilterMethod "suggestNextSync" o = Gst.Object.ObjectSuggestNextSyncMethodInfo
    ResolveVideoFilterMethod "syncStateWithParent" o = Gst.Element.ElementSyncStateWithParentMethodInfo
    ResolveVideoFilterMethod "syncValues" o = Gst.Object.ObjectSyncValuesMethodInfo
    ResolveVideoFilterMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolveVideoFilterMethod "unlink" o = Gst.Element.ElementUnlinkMethodInfo
    ResolveVideoFilterMethod "unlinkPads" o = Gst.Element.ElementUnlinkPadsMethodInfo
    ResolveVideoFilterMethod "unparent" o = Gst.Object.ObjectUnparentMethodInfo
    ResolveVideoFilterMethod "unref" o = Gst.Object.ObjectUnrefMethodInfo
    ResolveVideoFilterMethod "updateQos" o = GstBase.BaseTransform.BaseTransformUpdateQosMethodInfo
    ResolveVideoFilterMethod "updateSrcCaps" o = GstBase.BaseTransform.BaseTransformUpdateSrcCapsMethodInfo
    ResolveVideoFilterMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolveVideoFilterMethod "getAllocator" o = GstBase.BaseTransform.BaseTransformGetAllocatorMethodInfo
    ResolveVideoFilterMethod "getBaseTime" o = Gst.Element.ElementGetBaseTimeMethodInfo
    ResolveVideoFilterMethod "getBufferPool" o = GstBase.BaseTransform.BaseTransformGetBufferPoolMethodInfo
    ResolveVideoFilterMethod "getBus" o = Gst.Element.ElementGetBusMethodInfo
    ResolveVideoFilterMethod "getClock" o = Gst.Element.ElementGetClockMethodInfo
    ResolveVideoFilterMethod "getCompatiblePad" o = Gst.Element.ElementGetCompatiblePadMethodInfo
    ResolveVideoFilterMethod "getCompatiblePadTemplate" o = Gst.Element.ElementGetCompatiblePadTemplateMethodInfo
    ResolveVideoFilterMethod "getContext" o = Gst.Element.ElementGetContextMethodInfo
    ResolveVideoFilterMethod "getContextUnlocked" o = Gst.Element.ElementGetContextUnlockedMethodInfo
    ResolveVideoFilterMethod "getContexts" o = Gst.Element.ElementGetContextsMethodInfo
    ResolveVideoFilterMethod "getControlBinding" o = Gst.Object.ObjectGetControlBindingMethodInfo
    ResolveVideoFilterMethod "getControlRate" o = Gst.Object.ObjectGetControlRateMethodInfo
    ResolveVideoFilterMethod "getCurrentClockTime" o = Gst.Element.ElementGetCurrentClockTimeMethodInfo
    ResolveVideoFilterMethod "getCurrentRunningTime" o = Gst.Element.ElementGetCurrentRunningTimeMethodInfo
    ResolveVideoFilterMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolveVideoFilterMethod "getFactory" o = Gst.Element.ElementGetFactoryMethodInfo
    ResolveVideoFilterMethod "getGValueArray" o = Gst.Object.ObjectGetGValueArrayMethodInfo
    ResolveVideoFilterMethod "getMetadata" o = Gst.Element.ElementGetMetadataMethodInfo
    ResolveVideoFilterMethod "getName" o = Gst.Object.ObjectGetNameMethodInfo
    ResolveVideoFilterMethod "getPadTemplate" o = Gst.Element.ElementGetPadTemplateMethodInfo
    ResolveVideoFilterMethod "getPadTemplateList" o = Gst.Element.ElementGetPadTemplateListMethodInfo
    ResolveVideoFilterMethod "getParent" o = Gst.Object.ObjectGetParentMethodInfo
    ResolveVideoFilterMethod "getPathString" o = Gst.Object.ObjectGetPathStringMethodInfo
    ResolveVideoFilterMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveVideoFilterMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveVideoFilterMethod "getRequestPad" o = Gst.Element.ElementGetRequestPadMethodInfo
    ResolveVideoFilterMethod "getStartTime" o = Gst.Element.ElementGetStartTimeMethodInfo
    ResolveVideoFilterMethod "getState" o = Gst.Element.ElementGetStateMethodInfo
    ResolveVideoFilterMethod "getStaticPad" o = Gst.Element.ElementGetStaticPadMethodInfo
    ResolveVideoFilterMethod "getValue" o = Gst.Object.ObjectGetValueMethodInfo
    ResolveVideoFilterMethod "setBaseTime" o = Gst.Element.ElementSetBaseTimeMethodInfo
    ResolveVideoFilterMethod "setBus" o = Gst.Element.ElementSetBusMethodInfo
    ResolveVideoFilterMethod "setClock" o = Gst.Element.ElementSetClockMethodInfo
    ResolveVideoFilterMethod "setContext" o = Gst.Element.ElementSetContextMethodInfo
    ResolveVideoFilterMethod "setControlBindingDisabled" o = Gst.Object.ObjectSetControlBindingDisabledMethodInfo
    ResolveVideoFilterMethod "setControlBindingsDisabled" o = Gst.Object.ObjectSetControlBindingsDisabledMethodInfo
    ResolveVideoFilterMethod "setControlRate" o = Gst.Object.ObjectSetControlRateMethodInfo
    ResolveVideoFilterMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveVideoFilterMethod "setDataFull" o = GObject.Object.ObjectSetDataFullMethodInfo
    ResolveVideoFilterMethod "setGapAware" o = GstBase.BaseTransform.BaseTransformSetGapAwareMethodInfo
    ResolveVideoFilterMethod "setInPlace" o = GstBase.BaseTransform.BaseTransformSetInPlaceMethodInfo
    ResolveVideoFilterMethod "setLockedState" o = Gst.Element.ElementSetLockedStateMethodInfo
    ResolveVideoFilterMethod "setName" o = Gst.Object.ObjectSetNameMethodInfo
    ResolveVideoFilterMethod "setParent" o = Gst.Object.ObjectSetParentMethodInfo
    ResolveVideoFilterMethod "setPassthrough" o = GstBase.BaseTransform.BaseTransformSetPassthroughMethodInfo
    ResolveVideoFilterMethod "setPreferPassthrough" o = GstBase.BaseTransform.BaseTransformSetPreferPassthroughMethodInfo
    ResolveVideoFilterMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveVideoFilterMethod "setQosEnabled" o = GstBase.BaseTransform.BaseTransformSetQosEnabledMethodInfo
    ResolveVideoFilterMethod "setStartTime" o = Gst.Element.ElementSetStartTimeMethodInfo
    ResolveVideoFilterMethod "setState" o = Gst.Element.ElementSetStateMethodInfo
    ResolveVideoFilterMethod l o = O.MethodResolutionFailed l o

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

#if MIN_VERSION_base(4,13,0)
instance (info ~ ResolveVideoFilterMethod t VideoFilter, O.OverloadedMethod info VideoFilter p, R.HasField t VideoFilter p) => R.HasField t VideoFilter p where
    getField = O.overloadedMethod @info

#endif

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

#endif

#if defined(ENABLE_OVERLOADING)
instance O.HasAttributeList VideoFilter
type instance O.AttributeList VideoFilter = VideoFilterAttributeList
type VideoFilterAttributeList = ('[ '("name", Gst.Object.ObjectNamePropertyInfo), '("parent", Gst.Object.ObjectParentPropertyInfo), '("qos", GstBase.BaseTransform.BaseTransformQosPropertyInfo)] :: [(Symbol, *)])
#endif

#if defined(ENABLE_OVERLOADING)
#endif

#if defined(ENABLE_OVERLOADING)
type instance O.SignalList VideoFilter = VideoFilterSignalList
type VideoFilterSignalList = ('[ '("deepNotify", Gst.Object.ObjectDeepNotifySignalInfo), '("noMorePads", Gst.Element.ElementNoMorePadsSignalInfo), '("notify", GObject.Object.ObjectNotifySignalInfo), '("padAdded", Gst.Element.ElementPadAddedSignalInfo), '("padRemoved", Gst.Element.ElementPadRemovedSignalInfo)] :: [(Symbol, *)])

#endif