{-# LANGUAGE TypeApplications #-}


-- | Copyright  : Will Thompson and Iñaki García Etxebarria
-- License    : LGPL-2.1
-- Maintainer : Iñaki García Etxebarria
-- 
-- A t'GI.GES.Objects.VideoTrack.VideoTrack' is a default video t'GI.GES.Objects.Track.Track', with a
-- @/GES_TRACK_TYPE_VIDEO/@ [Track:trackType]("GI.GES.Objects.Track#g:attr:trackType") and \"video\/x-raw(ANY)\"
-- [Track:caps]("GI.GES.Objects.Track#g:attr:caps").
-- 
-- By default, a video track will have its [Track:restrictionCaps]("GI.GES.Objects.Track#g:attr:restrictionCaps")
-- set to \"video\/x-raw\" with the following properties:
-- 
-- * width: 1280
-- * height: 720
-- * framerate: 30\/1
-- 
-- 
-- These fields are needed for negotiation purposes, but you can change
-- their values if you wish. It is advised that you do so using
-- 'GI.GES.Objects.Track.trackUpdateRestrictionCaps' with new values for the fields you
-- wish to change, and any additional fields you may want to add. Unlike
-- using 'GI.GES.Objects.Track.trackSetRestrictionCaps', this will ensure that these
-- default fields will at least have some value set.

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

module GI.GES.Objects.VideoTrack
    ( 

-- * Exported types
    VideoTrack(..)                          ,
    IsVideoTrack                            ,
    toVideoTrack                            ,


 -- * Methods
-- | 
-- 
--  === __Click to display all available methods, including inherited ones__
-- ==== Methods
-- [abortState]("GI.Gst.Objects.Element#g:method:abortState"), [add]("GI.Gst.Objects.Bin#g:method:add"), [addControlBinding]("GI.Gst.Objects.Object#g:method:addControlBinding"), [addElement]("GI.GES.Objects.Track#g:method:addElement"), [addElementFull]("GI.GES.Objects.Track#g:method:addElementFull"), [addMetasFromString]("GI.GES.Interfaces.MetaContainer#g:method:addMetasFromString"), [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"), [checkMetaRegistered]("GI.GES.Interfaces.MetaContainer#g:method:checkMetaRegistered"), [childAdded]("GI.Gst.Interfaces.ChildProxy#g:method:childAdded"), [childRemoved]("GI.Gst.Interfaces.ChildProxy#g:method:childRemoved"), [commit]("GI.GES.Objects.Track#g:method:commit"), [continueState]("GI.Gst.Objects.Element#g:method:continueState"), [createAllPads]("GI.Gst.Objects.Element#g:method:createAllPads"), [defaultError]("GI.Gst.Objects.Object#g:method:defaultError"), [findUnlinkedPad]("GI.Gst.Objects.Bin#g:method:findUnlinkedPad"), [forceFloating]("GI.GObject.Objects.Object#g:method:forceFloating"), [foreach]("GI.GES.Interfaces.MetaContainer#g:method:foreach"), [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"), [isLockedState]("GI.Gst.Objects.Element#g:method:isLockedState"), [iterateAllByElementFactoryName]("GI.Gst.Objects.Bin#g:method:iterateAllByElementFactoryName"), [iterateAllByInterface]("GI.Gst.Objects.Bin#g:method:iterateAllByInterface"), [iterateElements]("GI.Gst.Objects.Bin#g:method:iterateElements"), [iteratePads]("GI.Gst.Objects.Element#g:method:iteratePads"), [iterateRecurse]("GI.Gst.Objects.Bin#g:method:iterateRecurse"), [iterateSinkPads]("GI.Gst.Objects.Element#g:method:iterateSinkPads"), [iterateSinks]("GI.Gst.Objects.Bin#g:method:iterateSinks"), [iterateSorted]("GI.Gst.Objects.Bin#g:method:iterateSorted"), [iterateSources]("GI.Gst.Objects.Bin#g:method:iterateSources"), [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"), [lookup]("GI.Gst.Interfaces.ChildProxy#g:method:lookup"), [lostState]("GI.Gst.Objects.Element#g:method:lostState"), [messageFull]("GI.Gst.Objects.Element#g:method:messageFull"), [messageFullWithDetails]("GI.Gst.Objects.Element#g:method:messageFullWithDetails"), [metasToString]("GI.GES.Interfaces.MetaContainer#g:method:metasToString"), [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"), [recalculateLatency]("GI.Gst.Objects.Bin#g:method:recalculateLatency"), [ref]("GI.Gst.Objects.Object#g:method:ref"), [refSink]("GI.GObject.Objects.Object#g:method:refSink"), [registerMeta]("GI.GES.Interfaces.MetaContainer#g:method:registerMeta"), [registerMetaBoolean]("GI.GES.Interfaces.MetaContainer#g:method:registerMetaBoolean"), [registerMetaDate]("GI.GES.Interfaces.MetaContainer#g:method:registerMetaDate"), [registerMetaDateTime]("GI.GES.Interfaces.MetaContainer#g:method:registerMetaDateTime"), [registerMetaDouble]("GI.GES.Interfaces.MetaContainer#g:method:registerMetaDouble"), [registerMetaFloat]("GI.GES.Interfaces.MetaContainer#g:method:registerMetaFloat"), [registerMetaInt]("GI.GES.Interfaces.MetaContainer#g:method:registerMetaInt"), [registerMetaInt64]("GI.GES.Interfaces.MetaContainer#g:method:registerMetaInt64"), [registerMetaString]("GI.GES.Interfaces.MetaContainer#g:method:registerMetaString"), [registerMetaUint]("GI.GES.Interfaces.MetaContainer#g:method:registerMetaUint"), [registerMetaUint64]("GI.GES.Interfaces.MetaContainer#g:method:registerMetaUint64"), [registerStaticMeta]("GI.GES.Interfaces.MetaContainer#g:method:registerStaticMeta"), [releaseRequestPad]("GI.Gst.Objects.Element#g:method:releaseRequestPad"), [remove]("GI.Gst.Objects.Bin#g:method:remove"), [removeControlBinding]("GI.Gst.Objects.Object#g:method:removeControlBinding"), [removeElement]("GI.GES.Objects.Track#g:method:removeElement"), [removeElementFull]("GI.GES.Objects.Track#g:method:removeElementFull"), [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"), [syncChildrenStates]("GI.Gst.Objects.Bin#g:method:syncChildrenStates"), [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"), [updateRestrictionCaps]("GI.GES.Objects.Track#g:method:updateRestrictionCaps"), [watchClosure]("GI.GObject.Objects.Object#g:method:watchClosure").
-- 
-- ==== Getters
-- [getBaseTime]("GI.Gst.Objects.Element#g:method:getBaseTime"), [getBoolean]("GI.GES.Interfaces.MetaContainer#g:method:getBoolean"), [getBus]("GI.Gst.Objects.Element#g:method:getBus"), [getByInterface]("GI.Gst.Objects.Bin#g:method:getByInterface"), [getByName]("GI.Gst.Objects.Bin#g:method:getByName"), [getByNameRecurseUp]("GI.Gst.Objects.Bin#g:method:getByNameRecurseUp"), [getCaps]("GI.GES.Objects.Track#g:method:getCaps"), [getChildByIndex]("GI.Gst.Interfaces.ChildProxy#g:method:getChildByIndex"), [getChildByName]("GI.Gst.Interfaces.ChildProxy#g:method:getChildByName"), [getChildrenCount]("GI.Gst.Interfaces.ChildProxy#g:method:getChildrenCount"), [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"), [getDate]("GI.GES.Interfaces.MetaContainer#g:method:getDate"), [getDateTime]("GI.GES.Interfaces.MetaContainer#g:method:getDateTime"), [getDouble]("GI.GES.Interfaces.MetaContainer#g:method:getDouble"), [getElements]("GI.GES.Objects.Track#g:method:getElements"), [getFactory]("GI.Gst.Objects.Element#g:method:getFactory"), [getFloat]("GI.GES.Interfaces.MetaContainer#g:method:getFloat"), [getGValueArray]("GI.Gst.Objects.Object#g:method:getGValueArray"), [getInt]("GI.GES.Interfaces.MetaContainer#g:method:getInt"), [getInt64]("GI.GES.Interfaces.MetaContainer#g:method:getInt64"), [getMarkerList]("GI.GES.Interfaces.MetaContainer#g:method:getMarkerList"), [getMeta]("GI.GES.Interfaces.MetaContainer#g:method:getMeta"), [getMetadata]("GI.Gst.Objects.Element#g:method:getMetadata"), [getMixing]("GI.GES.Objects.Track#g:method:getMixing"), [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"), [getRestrictionCaps]("GI.GES.Objects.Track#g:method:getRestrictionCaps"), [getStartTime]("GI.Gst.Objects.Element#g:method:getStartTime"), [getState]("GI.Gst.Objects.Element#g:method:getState"), [getStaticPad]("GI.Gst.Objects.Element#g:method:getStaticPad"), [getString]("GI.GES.Interfaces.MetaContainer#g:method:getString"), [getSuppressedFlags]("GI.Gst.Objects.Bin#g:method:getSuppressedFlags"), [getTimeline]("GI.GES.Objects.Track#g:method:getTimeline"), [getUint]("GI.GES.Interfaces.MetaContainer#g:method:getUint"), [getUint64]("GI.GES.Interfaces.MetaContainer#g:method:getUint64"), [getValue]("GI.Gst.Objects.Object#g:method:getValue").
-- 
-- ==== Setters
-- [setBaseTime]("GI.Gst.Objects.Element#g:method:setBaseTime"), [setBoolean]("GI.GES.Interfaces.MetaContainer#g:method:setBoolean"), [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"), [setDate]("GI.GES.Interfaces.MetaContainer#g:method:setDate"), [setDateTime]("GI.GES.Interfaces.MetaContainer#g:method:setDateTime"), [setDouble]("GI.GES.Interfaces.MetaContainer#g:method:setDouble"), [setFloat]("GI.GES.Interfaces.MetaContainer#g:method:setFloat"), [setInt]("GI.GES.Interfaces.MetaContainer#g:method:setInt"), [setInt64]("GI.GES.Interfaces.MetaContainer#g:method:setInt64"), [setLockedState]("GI.Gst.Objects.Element#g:method:setLockedState"), [setMarkerList]("GI.GES.Interfaces.MetaContainer#g:method:setMarkerList"), [setMeta]("GI.GES.Interfaces.MetaContainer#g:method:setMeta"), [setMixing]("GI.GES.Objects.Track#g:method:setMixing"), [setName]("GI.Gst.Objects.Object#g:method:setName"), [setParent]("GI.Gst.Objects.Object#g:method:setParent"), [setProperty]("GI.GObject.Objects.Object#g:method:setProperty"), [setRestrictionCaps]("GI.GES.Objects.Track#g:method:setRestrictionCaps"), [setStartTime]("GI.Gst.Objects.Element#g:method:setStartTime"), [setState]("GI.Gst.Objects.Element#g:method:setState"), [setString]("GI.GES.Interfaces.MetaContainer#g:method:setString"), [setSuppressedFlags]("GI.Gst.Objects.Bin#g:method:setSuppressedFlags"), [setTimeline]("GI.GES.Objects.Track#g:method:setTimeline"), [setUint]("GI.GES.Interfaces.MetaContainer#g:method:setUint"), [setUint64]("GI.GES.Interfaces.MetaContainer#g:method:setUint64").

#if defined(ENABLE_OVERLOADING)
    ResolveVideoTrackMethod                 ,
#endif

-- ** new #method:new#

    videoTrackNew                           ,




    ) 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 {-# SOURCE #-} qualified GI.GES.Interfaces.MetaContainer as GES.MetaContainer
import {-# SOURCE #-} qualified GI.GES.Objects.Track as GES.Track
import qualified GI.GObject.Objects.Object as GObject.Object
import qualified GI.Gst.Interfaces.ChildProxy as Gst.ChildProxy
import qualified GI.Gst.Objects.Bin as Gst.Bin
import qualified GI.Gst.Objects.Element as Gst.Element
import qualified GI.Gst.Objects.Object as Gst.Object

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

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

foreign import ccall "ges_video_track_get_type"
    c_ges_video_track_get_type :: IO B.Types.GType

instance B.Types.TypedObject VideoTrack where
    glibType :: IO GType
glibType = IO GType
c_ges_video_track_get_type

instance B.Types.GObject VideoTrack

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

instance O.HasParentTypes VideoTrack
type instance O.ParentTypes VideoTrack = '[GES.Track.Track, Gst.Bin.Bin, Gst.Element.Element, Gst.Object.Object, GObject.Object.Object, GES.MetaContainer.MetaContainer, Gst.ChildProxy.ChildProxy]

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

-- | Convert 'VideoTrack' 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 VideoTrack) where
    gvalueGType_ :: IO GType
gvalueGType_ = IO GType
c_ges_video_track_get_type
    gvalueSet_ :: Ptr GValue -> Maybe VideoTrack -> IO ()
gvalueSet_ Ptr GValue
gv Maybe VideoTrack
P.Nothing = forall a. GObject a => Ptr GValue -> Ptr a -> IO ()
B.GValue.set_object Ptr GValue
gv (forall a. Ptr a
FP.nullPtr :: FP.Ptr VideoTrack)
    gvalueSet_ Ptr GValue
gv (P.Just VideoTrack
obj) = forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
B.ManagedPtr.withManagedPtr VideoTrack
obj (forall a. GObject a => Ptr GValue -> Ptr a -> IO ()
B.GValue.set_object Ptr GValue
gv)
    gvalueGet_ :: Ptr GValue -> IO (Maybe VideoTrack)
gvalueGet_ Ptr GValue
gv = do
        Ptr VideoTrack
ptr <- forall a. GObject a => Ptr GValue -> IO (Ptr a)
B.GValue.get_object Ptr GValue
gv :: IO (FP.Ptr VideoTrack)
        if Ptr VideoTrack
ptr forall a. Eq a => a -> a -> Bool
/= forall a. Ptr a
FP.nullPtr
        then forall a. a -> Maybe a
P.Just forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
B.ManagedPtr.newObject ManagedPtr VideoTrack -> VideoTrack
VideoTrack Ptr VideoTrack
ptr
        else forall (m :: * -> *) a. Monad m => a -> m a
return forall a. Maybe a
P.Nothing
        
    

#if defined(ENABLE_OVERLOADING)
type family ResolveVideoTrackMethod (t :: Symbol) (o :: *) :: * where
    ResolveVideoTrackMethod "abortState" o = Gst.Element.ElementAbortStateMethodInfo
    ResolveVideoTrackMethod "add" o = Gst.Bin.BinAddMethodInfo
    ResolveVideoTrackMethod "addControlBinding" o = Gst.Object.ObjectAddControlBindingMethodInfo
    ResolveVideoTrackMethod "addElement" o = GES.Track.TrackAddElementMethodInfo
    ResolveVideoTrackMethod "addElementFull" o = GES.Track.TrackAddElementFullMethodInfo
    ResolveVideoTrackMethod "addMetasFromString" o = GES.MetaContainer.MetaContainerAddMetasFromStringMethodInfo
    ResolveVideoTrackMethod "addPad" o = Gst.Element.ElementAddPadMethodInfo
    ResolveVideoTrackMethod "addPropertyDeepNotifyWatch" o = Gst.Element.ElementAddPropertyDeepNotifyWatchMethodInfo
    ResolveVideoTrackMethod "addPropertyNotifyWatch" o = Gst.Element.ElementAddPropertyNotifyWatchMethodInfo
    ResolveVideoTrackMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveVideoTrackMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveVideoTrackMethod "callAsync" o = Gst.Element.ElementCallAsyncMethodInfo
    ResolveVideoTrackMethod "changeState" o = Gst.Element.ElementChangeStateMethodInfo
    ResolveVideoTrackMethod "checkMetaRegistered" o = GES.MetaContainer.MetaContainerCheckMetaRegisteredMethodInfo
    ResolveVideoTrackMethod "childAdded" o = Gst.ChildProxy.ChildProxyChildAddedMethodInfo
    ResolveVideoTrackMethod "childRemoved" o = Gst.ChildProxy.ChildProxyChildRemovedMethodInfo
    ResolveVideoTrackMethod "commit" o = GES.Track.TrackCommitMethodInfo
    ResolveVideoTrackMethod "continueState" o = Gst.Element.ElementContinueStateMethodInfo
    ResolveVideoTrackMethod "createAllPads" o = Gst.Element.ElementCreateAllPadsMethodInfo
    ResolveVideoTrackMethod "defaultError" o = Gst.Object.ObjectDefaultErrorMethodInfo
    ResolveVideoTrackMethod "findUnlinkedPad" o = Gst.Bin.BinFindUnlinkedPadMethodInfo
    ResolveVideoTrackMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveVideoTrackMethod "foreach" o = GES.MetaContainer.MetaContainerForeachMethodInfo
    ResolveVideoTrackMethod "foreachPad" o = Gst.Element.ElementForeachPadMethodInfo
    ResolveVideoTrackMethod "foreachSinkPad" o = Gst.Element.ElementForeachSinkPadMethodInfo
    ResolveVideoTrackMethod "foreachSrcPad" o = Gst.Element.ElementForeachSrcPadMethodInfo
    ResolveVideoTrackMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveVideoTrackMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
    ResolveVideoTrackMethod "hasActiveControlBindings" o = Gst.Object.ObjectHasActiveControlBindingsMethodInfo
    ResolveVideoTrackMethod "hasAncestor" o = Gst.Object.ObjectHasAncestorMethodInfo
    ResolveVideoTrackMethod "hasAsAncestor" o = Gst.Object.ObjectHasAsAncestorMethodInfo
    ResolveVideoTrackMethod "hasAsParent" o = Gst.Object.ObjectHasAsParentMethodInfo
    ResolveVideoTrackMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveVideoTrackMethod "isLockedState" o = Gst.Element.ElementIsLockedStateMethodInfo
    ResolveVideoTrackMethod "iterateAllByElementFactoryName" o = Gst.Bin.BinIterateAllByElementFactoryNameMethodInfo
    ResolveVideoTrackMethod "iterateAllByInterface" o = Gst.Bin.BinIterateAllByInterfaceMethodInfo
    ResolveVideoTrackMethod "iterateElements" o = Gst.Bin.BinIterateElementsMethodInfo
    ResolveVideoTrackMethod "iteratePads" o = Gst.Element.ElementIteratePadsMethodInfo
    ResolveVideoTrackMethod "iterateRecurse" o = Gst.Bin.BinIterateRecurseMethodInfo
    ResolveVideoTrackMethod "iterateSinkPads" o = Gst.Element.ElementIterateSinkPadsMethodInfo
    ResolveVideoTrackMethod "iterateSinks" o = Gst.Bin.BinIterateSinksMethodInfo
    ResolveVideoTrackMethod "iterateSorted" o = Gst.Bin.BinIterateSortedMethodInfo
    ResolveVideoTrackMethod "iterateSources" o = Gst.Bin.BinIterateSourcesMethodInfo
    ResolveVideoTrackMethod "iterateSrcPads" o = Gst.Element.ElementIterateSrcPadsMethodInfo
    ResolveVideoTrackMethod "link" o = Gst.Element.ElementLinkMethodInfo
    ResolveVideoTrackMethod "linkFiltered" o = Gst.Element.ElementLinkFilteredMethodInfo
    ResolveVideoTrackMethod "linkPads" o = Gst.Element.ElementLinkPadsMethodInfo
    ResolveVideoTrackMethod "linkPadsFiltered" o = Gst.Element.ElementLinkPadsFilteredMethodInfo
    ResolveVideoTrackMethod "linkPadsFull" o = Gst.Element.ElementLinkPadsFullMethodInfo
    ResolveVideoTrackMethod "lookup" o = Gst.ChildProxy.ChildProxyLookupMethodInfo
    ResolveVideoTrackMethod "lostState" o = Gst.Element.ElementLostStateMethodInfo
    ResolveVideoTrackMethod "messageFull" o = Gst.Element.ElementMessageFullMethodInfo
    ResolveVideoTrackMethod "messageFullWithDetails" o = Gst.Element.ElementMessageFullWithDetailsMethodInfo
    ResolveVideoTrackMethod "metasToString" o = GES.MetaContainer.MetaContainerMetasToStringMethodInfo
    ResolveVideoTrackMethod "noMorePads" o = Gst.Element.ElementNoMorePadsMethodInfo
    ResolveVideoTrackMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveVideoTrackMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveVideoTrackMethod "postMessage" o = Gst.Element.ElementPostMessageMethodInfo
    ResolveVideoTrackMethod "provideClock" o = Gst.Element.ElementProvideClockMethodInfo
    ResolveVideoTrackMethod "query" o = Gst.Element.ElementQueryMethodInfo
    ResolveVideoTrackMethod "queryConvert" o = Gst.Element.ElementQueryConvertMethodInfo
    ResolveVideoTrackMethod "queryDuration" o = Gst.Element.ElementQueryDurationMethodInfo
    ResolveVideoTrackMethod "queryPosition" o = Gst.Element.ElementQueryPositionMethodInfo
    ResolveVideoTrackMethod "recalculateLatency" o = Gst.Bin.BinRecalculateLatencyMethodInfo
    ResolveVideoTrackMethod "ref" o = Gst.Object.ObjectRefMethodInfo
    ResolveVideoTrackMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveVideoTrackMethod "registerMeta" o = GES.MetaContainer.MetaContainerRegisterMetaMethodInfo
    ResolveVideoTrackMethod "registerMetaBoolean" o = GES.MetaContainer.MetaContainerRegisterMetaBooleanMethodInfo
    ResolveVideoTrackMethod "registerMetaDate" o = GES.MetaContainer.MetaContainerRegisterMetaDateMethodInfo
    ResolveVideoTrackMethod "registerMetaDateTime" o = GES.MetaContainer.MetaContainerRegisterMetaDateTimeMethodInfo
    ResolveVideoTrackMethod "registerMetaDouble" o = GES.MetaContainer.MetaContainerRegisterMetaDoubleMethodInfo
    ResolveVideoTrackMethod "registerMetaFloat" o = GES.MetaContainer.MetaContainerRegisterMetaFloatMethodInfo
    ResolveVideoTrackMethod "registerMetaInt" o = GES.MetaContainer.MetaContainerRegisterMetaIntMethodInfo
    ResolveVideoTrackMethod "registerMetaInt64" o = GES.MetaContainer.MetaContainerRegisterMetaInt64MethodInfo
    ResolveVideoTrackMethod "registerMetaString" o = GES.MetaContainer.MetaContainerRegisterMetaStringMethodInfo
    ResolveVideoTrackMethod "registerMetaUint" o = GES.MetaContainer.MetaContainerRegisterMetaUintMethodInfo
    ResolveVideoTrackMethod "registerMetaUint64" o = GES.MetaContainer.MetaContainerRegisterMetaUint64MethodInfo
    ResolveVideoTrackMethod "registerStaticMeta" o = GES.MetaContainer.MetaContainerRegisterStaticMetaMethodInfo
    ResolveVideoTrackMethod "releaseRequestPad" o = Gst.Element.ElementReleaseRequestPadMethodInfo
    ResolveVideoTrackMethod "remove" o = Gst.Bin.BinRemoveMethodInfo
    ResolveVideoTrackMethod "removeControlBinding" o = Gst.Object.ObjectRemoveControlBindingMethodInfo
    ResolveVideoTrackMethod "removeElement" o = GES.Track.TrackRemoveElementMethodInfo
    ResolveVideoTrackMethod "removeElementFull" o = GES.Track.TrackRemoveElementFullMethodInfo
    ResolveVideoTrackMethod "removePad" o = Gst.Element.ElementRemovePadMethodInfo
    ResolveVideoTrackMethod "removePropertyNotifyWatch" o = Gst.Element.ElementRemovePropertyNotifyWatchMethodInfo
    ResolveVideoTrackMethod "requestPad" o = Gst.Element.ElementRequestPadMethodInfo
    ResolveVideoTrackMethod "requestPadSimple" o = Gst.Element.ElementRequestPadSimpleMethodInfo
    ResolveVideoTrackMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolveVideoTrackMethod "seek" o = Gst.Element.ElementSeekMethodInfo
    ResolveVideoTrackMethod "seekSimple" o = Gst.Element.ElementSeekSimpleMethodInfo
    ResolveVideoTrackMethod "sendEvent" o = Gst.Element.ElementSendEventMethodInfo
    ResolveVideoTrackMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolveVideoTrackMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolveVideoTrackMethod "suggestNextSync" o = Gst.Object.ObjectSuggestNextSyncMethodInfo
    ResolveVideoTrackMethod "syncChildrenStates" o = Gst.Bin.BinSyncChildrenStatesMethodInfo
    ResolveVideoTrackMethod "syncStateWithParent" o = Gst.Element.ElementSyncStateWithParentMethodInfo
    ResolveVideoTrackMethod "syncValues" o = Gst.Object.ObjectSyncValuesMethodInfo
    ResolveVideoTrackMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolveVideoTrackMethod "unlink" o = Gst.Element.ElementUnlinkMethodInfo
    ResolveVideoTrackMethod "unlinkPads" o = Gst.Element.ElementUnlinkPadsMethodInfo
    ResolveVideoTrackMethod "unparent" o = Gst.Object.ObjectUnparentMethodInfo
    ResolveVideoTrackMethod "unref" o = Gst.Object.ObjectUnrefMethodInfo
    ResolveVideoTrackMethod "updateRestrictionCaps" o = GES.Track.TrackUpdateRestrictionCapsMethodInfo
    ResolveVideoTrackMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolveVideoTrackMethod "getBaseTime" o = Gst.Element.ElementGetBaseTimeMethodInfo
    ResolveVideoTrackMethod "getBoolean" o = GES.MetaContainer.MetaContainerGetBooleanMethodInfo
    ResolveVideoTrackMethod "getBus" o = Gst.Element.ElementGetBusMethodInfo
    ResolveVideoTrackMethod "getByInterface" o = Gst.Bin.BinGetByInterfaceMethodInfo
    ResolveVideoTrackMethod "getByName" o = Gst.Bin.BinGetByNameMethodInfo
    ResolveVideoTrackMethod "getByNameRecurseUp" o = Gst.Bin.BinGetByNameRecurseUpMethodInfo
    ResolveVideoTrackMethod "getCaps" o = GES.Track.TrackGetCapsMethodInfo
    ResolveVideoTrackMethod "getChildByIndex" o = Gst.ChildProxy.ChildProxyGetChildByIndexMethodInfo
    ResolveVideoTrackMethod "getChildByName" o = Gst.ChildProxy.ChildProxyGetChildByNameMethodInfo
    ResolveVideoTrackMethod "getChildrenCount" o = Gst.ChildProxy.ChildProxyGetChildrenCountMethodInfo
    ResolveVideoTrackMethod "getClock" o = Gst.Element.ElementGetClockMethodInfo
    ResolveVideoTrackMethod "getCompatiblePad" o = Gst.Element.ElementGetCompatiblePadMethodInfo
    ResolveVideoTrackMethod "getCompatiblePadTemplate" o = Gst.Element.ElementGetCompatiblePadTemplateMethodInfo
    ResolveVideoTrackMethod "getContext" o = Gst.Element.ElementGetContextMethodInfo
    ResolveVideoTrackMethod "getContextUnlocked" o = Gst.Element.ElementGetContextUnlockedMethodInfo
    ResolveVideoTrackMethod "getContexts" o = Gst.Element.ElementGetContextsMethodInfo
    ResolveVideoTrackMethod "getControlBinding" o = Gst.Object.ObjectGetControlBindingMethodInfo
    ResolveVideoTrackMethod "getControlRate" o = Gst.Object.ObjectGetControlRateMethodInfo
    ResolveVideoTrackMethod "getCurrentClockTime" o = Gst.Element.ElementGetCurrentClockTimeMethodInfo
    ResolveVideoTrackMethod "getCurrentRunningTime" o = Gst.Element.ElementGetCurrentRunningTimeMethodInfo
    ResolveVideoTrackMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolveVideoTrackMethod "getDate" o = GES.MetaContainer.MetaContainerGetDateMethodInfo
    ResolveVideoTrackMethod "getDateTime" o = GES.MetaContainer.MetaContainerGetDateTimeMethodInfo
    ResolveVideoTrackMethod "getDouble" o = GES.MetaContainer.MetaContainerGetDoubleMethodInfo
    ResolveVideoTrackMethod "getElements" o = GES.Track.TrackGetElementsMethodInfo
    ResolveVideoTrackMethod "getFactory" o = Gst.Element.ElementGetFactoryMethodInfo
    ResolveVideoTrackMethod "getFloat" o = GES.MetaContainer.MetaContainerGetFloatMethodInfo
    ResolveVideoTrackMethod "getGValueArray" o = Gst.Object.ObjectGetGValueArrayMethodInfo
    ResolveVideoTrackMethod "getInt" o = GES.MetaContainer.MetaContainerGetIntMethodInfo
    ResolveVideoTrackMethod "getInt64" o = GES.MetaContainer.MetaContainerGetInt64MethodInfo
    ResolveVideoTrackMethod "getMarkerList" o = GES.MetaContainer.MetaContainerGetMarkerListMethodInfo
    ResolveVideoTrackMethod "getMeta" o = GES.MetaContainer.MetaContainerGetMetaMethodInfo
    ResolveVideoTrackMethod "getMetadata" o = Gst.Element.ElementGetMetadataMethodInfo
    ResolveVideoTrackMethod "getMixing" o = GES.Track.TrackGetMixingMethodInfo
    ResolveVideoTrackMethod "getName" o = Gst.Object.ObjectGetNameMethodInfo
    ResolveVideoTrackMethod "getPadTemplate" o = Gst.Element.ElementGetPadTemplateMethodInfo
    ResolveVideoTrackMethod "getPadTemplateList" o = Gst.Element.ElementGetPadTemplateListMethodInfo
    ResolveVideoTrackMethod "getParent" o = Gst.Object.ObjectGetParentMethodInfo
    ResolveVideoTrackMethod "getPathString" o = Gst.Object.ObjectGetPathStringMethodInfo
    ResolveVideoTrackMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveVideoTrackMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveVideoTrackMethod "getRequestPad" o = Gst.Element.ElementGetRequestPadMethodInfo
    ResolveVideoTrackMethod "getRestrictionCaps" o = GES.Track.TrackGetRestrictionCapsMethodInfo
    ResolveVideoTrackMethod "getStartTime" o = Gst.Element.ElementGetStartTimeMethodInfo
    ResolveVideoTrackMethod "getState" o = Gst.Element.ElementGetStateMethodInfo
    ResolveVideoTrackMethod "getStaticPad" o = Gst.Element.ElementGetStaticPadMethodInfo
    ResolveVideoTrackMethod "getString" o = GES.MetaContainer.MetaContainerGetStringMethodInfo
    ResolveVideoTrackMethod "getSuppressedFlags" o = Gst.Bin.BinGetSuppressedFlagsMethodInfo
    ResolveVideoTrackMethod "getTimeline" o = GES.Track.TrackGetTimelineMethodInfo
    ResolveVideoTrackMethod "getUint" o = GES.MetaContainer.MetaContainerGetUintMethodInfo
    ResolveVideoTrackMethod "getUint64" o = GES.MetaContainer.MetaContainerGetUint64MethodInfo
    ResolveVideoTrackMethod "getValue" o = Gst.Object.ObjectGetValueMethodInfo
    ResolveVideoTrackMethod "setBaseTime" o = Gst.Element.ElementSetBaseTimeMethodInfo
    ResolveVideoTrackMethod "setBoolean" o = GES.MetaContainer.MetaContainerSetBooleanMethodInfo
    ResolveVideoTrackMethod "setBus" o = Gst.Element.ElementSetBusMethodInfo
    ResolveVideoTrackMethod "setClock" o = Gst.Element.ElementSetClockMethodInfo
    ResolveVideoTrackMethod "setContext" o = Gst.Element.ElementSetContextMethodInfo
    ResolveVideoTrackMethod "setControlBindingDisabled" o = Gst.Object.ObjectSetControlBindingDisabledMethodInfo
    ResolveVideoTrackMethod "setControlBindingsDisabled" o = Gst.Object.ObjectSetControlBindingsDisabledMethodInfo
    ResolveVideoTrackMethod "setControlRate" o = Gst.Object.ObjectSetControlRateMethodInfo
    ResolveVideoTrackMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveVideoTrackMethod "setDataFull" o = GObject.Object.ObjectSetDataFullMethodInfo
    ResolveVideoTrackMethod "setDate" o = GES.MetaContainer.MetaContainerSetDateMethodInfo
    ResolveVideoTrackMethod "setDateTime" o = GES.MetaContainer.MetaContainerSetDateTimeMethodInfo
    ResolveVideoTrackMethod "setDouble" o = GES.MetaContainer.MetaContainerSetDoubleMethodInfo
    ResolveVideoTrackMethod "setFloat" o = GES.MetaContainer.MetaContainerSetFloatMethodInfo
    ResolveVideoTrackMethod "setInt" o = GES.MetaContainer.MetaContainerSetIntMethodInfo
    ResolveVideoTrackMethod "setInt64" o = GES.MetaContainer.MetaContainerSetInt64MethodInfo
    ResolveVideoTrackMethod "setLockedState" o = Gst.Element.ElementSetLockedStateMethodInfo
    ResolveVideoTrackMethod "setMarkerList" o = GES.MetaContainer.MetaContainerSetMarkerListMethodInfo
    ResolveVideoTrackMethod "setMeta" o = GES.MetaContainer.MetaContainerSetMetaMethodInfo
    ResolveVideoTrackMethod "setMixing" o = GES.Track.TrackSetMixingMethodInfo
    ResolveVideoTrackMethod "setName" o = Gst.Object.ObjectSetNameMethodInfo
    ResolveVideoTrackMethod "setParent" o = Gst.Object.ObjectSetParentMethodInfo
    ResolveVideoTrackMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveVideoTrackMethod "setRestrictionCaps" o = GES.Track.TrackSetRestrictionCapsMethodInfo
    ResolveVideoTrackMethod "setStartTime" o = Gst.Element.ElementSetStartTimeMethodInfo
    ResolveVideoTrackMethod "setState" o = Gst.Element.ElementSetStateMethodInfo
    ResolveVideoTrackMethod "setString" o = GES.MetaContainer.MetaContainerSetStringMethodInfo
    ResolveVideoTrackMethod "setSuppressedFlags" o = Gst.Bin.BinSetSuppressedFlagsMethodInfo
    ResolveVideoTrackMethod "setTimeline" o = GES.Track.TrackSetTimelineMethodInfo
    ResolveVideoTrackMethod "setUint" o = GES.MetaContainer.MetaContainerSetUintMethodInfo
    ResolveVideoTrackMethod "setUint64" o = GES.MetaContainer.MetaContainerSetUint64MethodInfo
    ResolveVideoTrackMethod l o = O.MethodResolutionFailed l o

instance (info ~ ResolveVideoTrackMethod t VideoTrack, O.OverloadedMethod info VideoTrack p) => OL.IsLabel t (VideoTrack -> 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 ~ ResolveVideoTrackMethod t VideoTrack, O.OverloadedMethod info VideoTrack p, R.HasField t VideoTrack p) => R.HasField t VideoTrack p where
    getField = O.overloadedMethod @info

#endif

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

#endif

#if defined(ENABLE_OVERLOADING)
instance O.HasAttributeList VideoTrack
type instance O.AttributeList VideoTrack = VideoTrackAttributeList
type VideoTrackAttributeList = ('[ '("asyncHandling", Gst.Bin.BinAsyncHandlingPropertyInfo), '("caps", GES.Track.TrackCapsPropertyInfo), '("duration", GES.Track.TrackDurationPropertyInfo), '("id", GES.Track.TrackIdPropertyInfo), '("messageForward", Gst.Bin.BinMessageForwardPropertyInfo), '("mixing", GES.Track.TrackMixingPropertyInfo), '("name", Gst.Object.ObjectNamePropertyInfo), '("parent", Gst.Object.ObjectParentPropertyInfo), '("restrictionCaps", GES.Track.TrackRestrictionCapsPropertyInfo), '("trackType", GES.Track.TrackTrackTypePropertyInfo)] :: [(Symbol, *)])
#endif

#if defined(ENABLE_OVERLOADING)
#endif

#if defined(ENABLE_OVERLOADING)
type instance O.SignalList VideoTrack = VideoTrackSignalList
type VideoTrackSignalList = ('[ '("childAdded", Gst.ChildProxy.ChildProxyChildAddedSignalInfo), '("childRemoved", Gst.ChildProxy.ChildProxyChildRemovedSignalInfo), '("commited", GES.Track.TrackCommitedSignalInfo), '("deepElementAdded", Gst.Bin.BinDeepElementAddedSignalInfo), '("deepElementRemoved", Gst.Bin.BinDeepElementRemovedSignalInfo), '("deepNotify", Gst.Object.ObjectDeepNotifySignalInfo), '("doLatency", Gst.Bin.BinDoLatencySignalInfo), '("elementAdded", Gst.Bin.BinElementAddedSignalInfo), '("elementRemoved", Gst.Bin.BinElementRemovedSignalInfo), '("noMorePads", Gst.Element.ElementNoMorePadsSignalInfo), '("notify", GObject.Object.ObjectNotifySignalInfo), '("notifyMeta", GES.MetaContainer.MetaContainerNotifyMetaSignalInfo), '("padAdded", Gst.Element.ElementPadAddedSignalInfo), '("padRemoved", Gst.Element.ElementPadRemovedSignalInfo), '("trackElementAdded", GES.Track.TrackTrackElementAddedSignalInfo), '("trackElementRemoved", GES.Track.TrackTrackElementRemovedSignalInfo)] :: [(Symbol, *)])

#endif

-- method VideoTrack::new
-- method type : Constructor
-- Args: []
-- Lengths: []
-- returnType: Just (TInterface Name { namespace = "GES" , name = "VideoTrack" })
-- throws : False
-- Skip return : False

foreign import ccall "ges_video_track_new" ges_video_track_new :: 
    IO (Ptr VideoTrack)

-- | Creates a new video track, with a @/GES_TRACK_TYPE_VIDEO/@
-- [Track:trackType]("GI.GES.Objects.Track#g:attr:trackType") and \"video\/x-raw(ANY)\" [Track:caps]("GI.GES.Objects.Track#g:attr:caps"), and
-- \"video\/x-raw\" [Track:restrictionCaps]("GI.GES.Objects.Track#g:attr:restrictionCaps") with the properties:
-- 
-- * width: 1280
-- * height: 720
-- * framerate: 30\/1
-- 
-- 
-- You should use 'GI.GES.Objects.Track.trackUpdateRestrictionCaps' if you wish to
-- modify these fields, or add additional ones.
videoTrackNew ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    m VideoTrack
    -- ^ __Returns:__ The newly created video track.
videoTrackNew :: forall (m :: * -> *). (HasCallStack, MonadIO m) => m VideoTrack
videoTrackNew  = forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO forall a b. (a -> b) -> a -> b
$ do
    Ptr VideoTrack
result <- IO (Ptr VideoTrack)
ges_video_track_new
    forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"videoTrackNew" Ptr VideoTrack
result
    VideoTrack
result' <- (forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
newObject ManagedPtr VideoTrack -> VideoTrack
VideoTrack) Ptr VideoTrack
result
    forall (m :: * -> *) a. Monad m => a -> m a
return VideoTrack
result'

#if defined(ENABLE_OVERLOADING)
#endif