{-# 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"), [decorateStreamId]("GI.Gst.Objects.Element#g:method:decorateStreamId"), [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"), [getChildByNameRecurse]("GI.Gst.Interfaces.ChildProxy#g:method:getChildByNameRecurse"), [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.Kind as DK
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 Data.Word as DW
import qualified Data.Int as DI
import qualified System.Posix.Types as SPT
import qualified Foreign.C.Types as FCT

-- Workaround for https://gitlab.haskell.org/ghc/ghc/-/issues/23392
#if MIN_VERSION_base(4,18,0)
import qualified GI.GES.Callbacks as GES.Callbacks
import {-# SOURCE #-} qualified GI.GES.Enums as GES.Enums
import {-# SOURCE #-} qualified GI.GES.Flags as GES.Flags
import {-# SOURCE #-} qualified GI.GES.Interfaces.Extractable as GES.Extractable
import {-# SOURCE #-} qualified GI.GES.Interfaces.MetaContainer as GES.MetaContainer
import {-# SOURCE #-} qualified GI.GES.Objects.Asset as GES.Asset
import {-# SOURCE #-} qualified GI.GES.Objects.BaseEffect as GES.BaseEffect
import {-# SOURCE #-} qualified GI.GES.Objects.Clip as GES.Clip
import {-# SOURCE #-} qualified GI.GES.Objects.Container as GES.Container
import {-# SOURCE #-} qualified GI.GES.Objects.Group as GES.Group
import {-# SOURCE #-} qualified GI.GES.Objects.Layer as GES.Layer
import {-# SOURCE #-} qualified GI.GES.Objects.Marker as GES.Marker
import {-# SOURCE #-} qualified GI.GES.Objects.MarkerList as GES.MarkerList
import {-# SOURCE #-} qualified GI.GES.Objects.Operation as GES.Operation
import {-# SOURCE #-} qualified GI.GES.Objects.Timeline as GES.Timeline
import {-# SOURCE #-} qualified GI.GES.Objects.TimelineElement as GES.TimelineElement
import {-# SOURCE #-} qualified GI.GES.Objects.Track as GES.Track
import {-# SOURCE #-} qualified GI.GES.Objects.TrackElement as GES.TrackElement
import qualified GI.GLib.Callbacks as GLib.Callbacks
import qualified GI.GLib.Structs.Date as GLib.Date
import qualified GI.GObject.Objects.InitiallyUnowned as GObject.InitiallyUnowned
import qualified GI.GObject.Objects.Object as GObject.Object
import qualified GI.Gio.Callbacks as Gio.Callbacks
import qualified GI.Gio.Interfaces.AsyncInitable as Gio.AsyncInitable
import qualified GI.Gio.Interfaces.AsyncResult as Gio.AsyncResult
import qualified GI.Gio.Interfaces.Initable as Gio.Initable
import qualified GI.Gio.Objects.Cancellable as Gio.Cancellable
import qualified GI.Gst.Interfaces.ChildProxy as Gst.ChildProxy
import qualified GI.Gst.Objects.Bin as Gst.Bin
import qualified GI.Gst.Objects.ControlBinding as Gst.ControlBinding
import qualified GI.Gst.Objects.ControlSource as Gst.ControlSource
import qualified GI.Gst.Objects.Element as Gst.Element
import qualified GI.Gst.Objects.Object as Gst.Object
import qualified GI.Gst.Objects.Pad as Gst.Pad
import qualified GI.Gst.Structs.Caps as Gst.Caps
import qualified GI.Gst.Structs.DateTime as Gst.DateTime

#else
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

#endif

-- | Memory-managed wrapper type.
newtype VideoTrack = VideoTrack (SP.ManagedPtr VideoTrack)
    deriving (VideoTrack -> VideoTrack -> Bool
(VideoTrack -> VideoTrack -> Bool)
-> (VideoTrack -> VideoTrack -> Bool) -> Eq VideoTrack
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: VideoTrack -> VideoTrack -> Bool
== :: VideoTrack -> VideoTrack -> Bool
$c/= :: VideoTrack -> VideoTrack -> Bool
/= :: 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 = IO VideoTrack -> m VideoTrack
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO VideoTrack -> m VideoTrack)
-> (o -> IO VideoTrack) -> o -> m VideoTrack
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ManagedPtr VideoTrack -> VideoTrack) -> o -> IO VideoTrack
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 = Ptr GValue -> Ptr VideoTrack -> IO ()
forall a. GObject a => Ptr GValue -> Ptr a -> IO ()
B.GValue.set_object Ptr GValue
gv (Ptr VideoTrack
forall a. Ptr a
FP.nullPtr :: FP.Ptr VideoTrack)
    gvalueSet_ Ptr GValue
gv (P.Just VideoTrack
obj) = VideoTrack -> (Ptr VideoTrack -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
B.ManagedPtr.withManagedPtr VideoTrack
obj (Ptr GValue -> Ptr VideoTrack -> IO ()
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 <- Ptr GValue -> IO (Ptr VideoTrack)
forall a. GObject a => Ptr GValue -> IO (Ptr a)
B.GValue.get_object Ptr GValue
gv :: IO (FP.Ptr VideoTrack)
        if Ptr VideoTrack
ptr Ptr VideoTrack -> Ptr VideoTrack -> Bool
forall a. Eq a => a -> a -> Bool
/= Ptr VideoTrack
forall a. Ptr a
FP.nullPtr
        then VideoTrack -> Maybe VideoTrack
forall a. a -> Maybe a
P.Just (VideoTrack -> Maybe VideoTrack)
-> IO VideoTrack -> IO (Maybe VideoTrack)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (ManagedPtr VideoTrack -> VideoTrack)
-> Ptr VideoTrack -> IO VideoTrack
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 Maybe VideoTrack -> IO (Maybe VideoTrack)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe VideoTrack
forall a. Maybe a
P.Nothing
        
    

#if defined(ENABLE_OVERLOADING)
type family ResolveVideoTrackMethod (t :: Symbol) (o :: DK.Type) :: DK.Type 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 "decorateStreamId" o = Gst.Element.ElementDecorateStreamIdMethodInfo
    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 "getChildByNameRecurse" o = Gst.ChildProxy.ChildProxyGetChildByNameRecurseMethodInfo
    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, DK.Type)])
#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, DK.Type)])

#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  = IO VideoTrack -> m VideoTrack
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO VideoTrack -> m VideoTrack) -> IO VideoTrack -> m VideoTrack
forall a b. (a -> b) -> a -> b
$ do
    Ptr VideoTrack
result <- IO (Ptr VideoTrack)
ges_video_track_new
    Text -> Ptr VideoTrack -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"videoTrackNew" Ptr VideoTrack
result
    VideoTrack
result' <- ((ManagedPtr VideoTrack -> VideoTrack)
-> Ptr VideoTrack -> IO VideoTrack
forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
newObject ManagedPtr VideoTrack -> VideoTrack
VideoTrack) Ptr VideoTrack
result
    VideoTrack -> IO VideoTrack
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return VideoTrack
result'

#if defined(ENABLE_OVERLOADING)
#endif