packages feed

gi-gstvideo-0.1.6.13: GI/GstVideo/Objects/VideoSink.hs


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

module GI.GstVideo.Objects.VideoSink
    ( 

-- * Exported types
    VideoSink(..)                           ,
    VideoSinkK                              ,
    toVideoSink                             ,
    noVideoSink                             ,


 -- * Methods
-- ** videoSinkCenterRect
    videoSinkCenterRect                     ,




 -- * Properties
-- ** ShowPrerollFrame
    VideoSinkShowPrerollFramePropertyInfo   ,
    constructVideoSinkShowPrerollFrame      ,
    getVideoSinkShowPrerollFrame            ,
    setVideoSinkShowPrerollFrame            ,




    ) where

import Prelude ()
import Data.GI.Base.ShortPrelude

import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map

import GI.GstVideo.Types
import GI.GstVideo.Callbacks
import qualified GI.GObject as GObject
import qualified GI.Gst as Gst
import qualified GI.GstBase as GstBase

newtype VideoSink = VideoSink (ForeignPtr VideoSink)
foreign import ccall "gst_video_sink_get_type"
    c_gst_video_sink_get_type :: IO GType

type instance ParentTypes VideoSink = VideoSinkParentTypes
type VideoSinkParentTypes = '[GstBase.BaseSink, Gst.Element, Gst.Object, GObject.Object]

instance GObject VideoSink where
    gobjectIsInitiallyUnowned _ = True
    gobjectType _ = c_gst_video_sink_get_type
    

class GObject o => VideoSinkK o
instance (GObject o, IsDescendantOf VideoSink o) => VideoSinkK o

toVideoSink :: VideoSinkK o => o -> IO VideoSink
toVideoSink = unsafeCastTo VideoSink

noVideoSink :: Maybe VideoSink
noVideoSink = Nothing

type family ResolveVideoSinkMethod (t :: Symbol) (o :: *) :: * where
    ResolveVideoSinkMethod "abortState" o = Gst.ElementAbortStateMethodInfo
    ResolveVideoSinkMethod "addControlBinding" o = Gst.ObjectAddControlBindingMethodInfo
    ResolveVideoSinkMethod "addPad" o = Gst.ElementAddPadMethodInfo
    ResolveVideoSinkMethod "bindProperty" o = GObject.ObjectBindPropertyMethodInfo
    ResolveVideoSinkMethod "bindPropertyFull" o = GObject.ObjectBindPropertyFullMethodInfo
    ResolveVideoSinkMethod "changeState" o = Gst.ElementChangeStateMethodInfo
    ResolveVideoSinkMethod "continueState" o = Gst.ElementContinueStateMethodInfo
    ResolveVideoSinkMethod "createAllPads" o = Gst.ElementCreateAllPadsMethodInfo
    ResolveVideoSinkMethod "defaultError" o = Gst.ObjectDefaultErrorMethodInfo
    ResolveVideoSinkMethod "doPreroll" o = GstBase.BaseSinkDoPrerollMethodInfo
    ResolveVideoSinkMethod "forceFloating" o = GObject.ObjectForceFloatingMethodInfo
    ResolveVideoSinkMethod "freezeNotify" o = GObject.ObjectFreezeNotifyMethodInfo
    ResolveVideoSinkMethod "hasActiveControlBindings" o = Gst.ObjectHasActiveControlBindingsMethodInfo
    ResolveVideoSinkMethod "hasAncestor" o = Gst.ObjectHasAncestorMethodInfo
    ResolveVideoSinkMethod "hasAsAncestor" o = Gst.ObjectHasAsAncestorMethodInfo
    ResolveVideoSinkMethod "hasAsParent" o = Gst.ObjectHasAsParentMethodInfo
    ResolveVideoSinkMethod "isAsyncEnabled" o = GstBase.BaseSinkIsAsyncEnabledMethodInfo
    ResolveVideoSinkMethod "isFloating" o = GObject.ObjectIsFloatingMethodInfo
    ResolveVideoSinkMethod "isLastSampleEnabled" o = GstBase.BaseSinkIsLastSampleEnabledMethodInfo
    ResolveVideoSinkMethod "isLockedState" o = Gst.ElementIsLockedStateMethodInfo
    ResolveVideoSinkMethod "isQosEnabled" o = GstBase.BaseSinkIsQosEnabledMethodInfo
    ResolveVideoSinkMethod "iteratePads" o = Gst.ElementIteratePadsMethodInfo
    ResolveVideoSinkMethod "iterateSinkPads" o = Gst.ElementIterateSinkPadsMethodInfo
    ResolveVideoSinkMethod "iterateSrcPads" o = Gst.ElementIterateSrcPadsMethodInfo
    ResolveVideoSinkMethod "link" o = Gst.ElementLinkMethodInfo
    ResolveVideoSinkMethod "linkFiltered" o = Gst.ElementLinkFilteredMethodInfo
    ResolveVideoSinkMethod "linkPads" o = Gst.ElementLinkPadsMethodInfo
    ResolveVideoSinkMethod "linkPadsFiltered" o = Gst.ElementLinkPadsFilteredMethodInfo
    ResolveVideoSinkMethod "linkPadsFull" o = Gst.ElementLinkPadsFullMethodInfo
    ResolveVideoSinkMethod "lostState" o = Gst.ElementLostStateMethodInfo
    ResolveVideoSinkMethod "messageFull" o = Gst.ElementMessageFullMethodInfo
    ResolveVideoSinkMethod "noMorePads" o = Gst.ElementNoMorePadsMethodInfo
    ResolveVideoSinkMethod "notify" o = GObject.ObjectNotifyMethodInfo
    ResolveVideoSinkMethod "notifyByPspec" o = GObject.ObjectNotifyByPspecMethodInfo
    ResolveVideoSinkMethod "postMessage" o = Gst.ElementPostMessageMethodInfo
    ResolveVideoSinkMethod "provideClock" o = Gst.ElementProvideClockMethodInfo
    ResolveVideoSinkMethod "query" o = Gst.ElementQueryMethodInfo
    ResolveVideoSinkMethod "queryConvert" o = Gst.ElementQueryConvertMethodInfo
    ResolveVideoSinkMethod "queryDuration" o = Gst.ElementQueryDurationMethodInfo
    ResolveVideoSinkMethod "queryLatency" o = GstBase.BaseSinkQueryLatencyMethodInfo
    ResolveVideoSinkMethod "queryPosition" o = Gst.ElementQueryPositionMethodInfo
    ResolveVideoSinkMethod "refSink" o = GObject.ObjectRefSinkMethodInfo
    ResolveVideoSinkMethod "releaseRequestPad" o = Gst.ElementReleaseRequestPadMethodInfo
    ResolveVideoSinkMethod "removeControlBinding" o = Gst.ObjectRemoveControlBindingMethodInfo
    ResolveVideoSinkMethod "removePad" o = Gst.ElementRemovePadMethodInfo
    ResolveVideoSinkMethod "replaceData" o = GObject.ObjectReplaceDataMethodInfo
    ResolveVideoSinkMethod "replaceQdata" o = GObject.ObjectReplaceQdataMethodInfo
    ResolveVideoSinkMethod "requestPad" o = Gst.ElementRequestPadMethodInfo
    ResolveVideoSinkMethod "runDispose" o = GObject.ObjectRunDisposeMethodInfo
    ResolveVideoSinkMethod "seek" o = Gst.ElementSeekMethodInfo
    ResolveVideoSinkMethod "seekSimple" o = Gst.ElementSeekSimpleMethodInfo
    ResolveVideoSinkMethod "sendEvent" o = Gst.ElementSendEventMethodInfo
    ResolveVideoSinkMethod "stealData" o = GObject.ObjectStealDataMethodInfo
    ResolveVideoSinkMethod "stealQdata" o = GObject.ObjectStealQdataMethodInfo
    ResolveVideoSinkMethod "suggestNextSync" o = Gst.ObjectSuggestNextSyncMethodInfo
    ResolveVideoSinkMethod "syncStateWithParent" o = Gst.ElementSyncStateWithParentMethodInfo
    ResolveVideoSinkMethod "syncValues" o = Gst.ObjectSyncValuesMethodInfo
    ResolveVideoSinkMethod "thawNotify" o = GObject.ObjectThawNotifyMethodInfo
    ResolveVideoSinkMethod "unlink" o = Gst.ElementUnlinkMethodInfo
    ResolveVideoSinkMethod "unlinkPads" o = Gst.ElementUnlinkPadsMethodInfo
    ResolveVideoSinkMethod "unparent" o = Gst.ObjectUnparentMethodInfo
    ResolveVideoSinkMethod "wait" o = GstBase.BaseSinkWaitMethodInfo
    ResolveVideoSinkMethod "waitClock" o = GstBase.BaseSinkWaitClockMethodInfo
    ResolveVideoSinkMethod "waitPreroll" o = GstBase.BaseSinkWaitPrerollMethodInfo
    ResolveVideoSinkMethod "watchClosure" o = GObject.ObjectWatchClosureMethodInfo
    ResolveVideoSinkMethod "getBaseTime" o = Gst.ElementGetBaseTimeMethodInfo
    ResolveVideoSinkMethod "getBlocksize" o = GstBase.BaseSinkGetBlocksizeMethodInfo
    ResolveVideoSinkMethod "getBus" o = Gst.ElementGetBusMethodInfo
    ResolveVideoSinkMethod "getClock" o = Gst.ElementGetClockMethodInfo
    ResolveVideoSinkMethod "getCompatiblePad" o = Gst.ElementGetCompatiblePadMethodInfo
    ResolveVideoSinkMethod "getCompatiblePadTemplate" o = Gst.ElementGetCompatiblePadTemplateMethodInfo
    ResolveVideoSinkMethod "getControlBinding" o = Gst.ObjectGetControlBindingMethodInfo
    ResolveVideoSinkMethod "getControlRate" o = Gst.ObjectGetControlRateMethodInfo
    ResolveVideoSinkMethod "getData" o = GObject.ObjectGetDataMethodInfo
    ResolveVideoSinkMethod "getFactory" o = Gst.ElementGetFactoryMethodInfo
    ResolveVideoSinkMethod "getGValueArray" o = Gst.ObjectGetGValueArrayMethodInfo
    ResolveVideoSinkMethod "getLastSample" o = GstBase.BaseSinkGetLastSampleMethodInfo
    ResolveVideoSinkMethod "getLatency" o = GstBase.BaseSinkGetLatencyMethodInfo
    ResolveVideoSinkMethod "getMaxBitrate" o = GstBase.BaseSinkGetMaxBitrateMethodInfo
    ResolveVideoSinkMethod "getMaxLateness" o = GstBase.BaseSinkGetMaxLatenessMethodInfo
    ResolveVideoSinkMethod "getName" o = Gst.ObjectGetNameMethodInfo
    ResolveVideoSinkMethod "getParent" o = Gst.ObjectGetParentMethodInfo
    ResolveVideoSinkMethod "getPathString" o = Gst.ObjectGetPathStringMethodInfo
    ResolveVideoSinkMethod "getProperty" o = GObject.ObjectGetPropertyMethodInfo
    ResolveVideoSinkMethod "getQdata" o = GObject.ObjectGetQdataMethodInfo
    ResolveVideoSinkMethod "getRenderDelay" o = GstBase.BaseSinkGetRenderDelayMethodInfo
    ResolveVideoSinkMethod "getRequestPad" o = Gst.ElementGetRequestPadMethodInfo
    ResolveVideoSinkMethod "getStartTime" o = Gst.ElementGetStartTimeMethodInfo
    ResolveVideoSinkMethod "getState" o = Gst.ElementGetStateMethodInfo
    ResolveVideoSinkMethod "getStaticPad" o = Gst.ElementGetStaticPadMethodInfo
    ResolveVideoSinkMethod "getSync" o = GstBase.BaseSinkGetSyncMethodInfo
    ResolveVideoSinkMethod "getThrottleTime" o = GstBase.BaseSinkGetThrottleTimeMethodInfo
    ResolveVideoSinkMethod "getTsOffset" o = GstBase.BaseSinkGetTsOffsetMethodInfo
    ResolveVideoSinkMethod "getValue" o = Gst.ObjectGetValueMethodInfo
    ResolveVideoSinkMethod "getValueArray" o = Gst.ObjectGetValueArrayMethodInfo
    ResolveVideoSinkMethod "setAsyncEnabled" o = GstBase.BaseSinkSetAsyncEnabledMethodInfo
    ResolveVideoSinkMethod "setBaseTime" o = Gst.ElementSetBaseTimeMethodInfo
    ResolveVideoSinkMethod "setBlocksize" o = GstBase.BaseSinkSetBlocksizeMethodInfo
    ResolveVideoSinkMethod "setBus" o = Gst.ElementSetBusMethodInfo
    ResolveVideoSinkMethod "setClock" o = Gst.ElementSetClockMethodInfo
    ResolveVideoSinkMethod "setContext" o = Gst.ElementSetContextMethodInfo
    ResolveVideoSinkMethod "setControlBindingDisabled" o = Gst.ObjectSetControlBindingDisabledMethodInfo
    ResolveVideoSinkMethod "setControlBindingsDisabled" o = Gst.ObjectSetControlBindingsDisabledMethodInfo
    ResolveVideoSinkMethod "setControlRate" o = Gst.ObjectSetControlRateMethodInfo
    ResolveVideoSinkMethod "setData" o = GObject.ObjectSetDataMethodInfo
    ResolveVideoSinkMethod "setLastSampleEnabled" o = GstBase.BaseSinkSetLastSampleEnabledMethodInfo
    ResolveVideoSinkMethod "setLockedState" o = Gst.ElementSetLockedStateMethodInfo
    ResolveVideoSinkMethod "setMaxBitrate" o = GstBase.BaseSinkSetMaxBitrateMethodInfo
    ResolveVideoSinkMethod "setMaxLateness" o = GstBase.BaseSinkSetMaxLatenessMethodInfo
    ResolveVideoSinkMethod "setName" o = Gst.ObjectSetNameMethodInfo
    ResolveVideoSinkMethod "setParent" o = Gst.ObjectSetParentMethodInfo
    ResolveVideoSinkMethod "setProperty" o = GObject.ObjectSetPropertyMethodInfo
    ResolveVideoSinkMethod "setQosEnabled" o = GstBase.BaseSinkSetQosEnabledMethodInfo
    ResolveVideoSinkMethod "setRenderDelay" o = GstBase.BaseSinkSetRenderDelayMethodInfo
    ResolveVideoSinkMethod "setStartTime" o = Gst.ElementSetStartTimeMethodInfo
    ResolveVideoSinkMethod "setState" o = Gst.ElementSetStateMethodInfo
    ResolveVideoSinkMethod "setSync" o = GstBase.BaseSinkSetSyncMethodInfo
    ResolveVideoSinkMethod "setThrottleTime" o = GstBase.BaseSinkSetThrottleTimeMethodInfo
    ResolveVideoSinkMethod "setTsOffset" o = GstBase.BaseSinkSetTsOffsetMethodInfo
    ResolveVideoSinkMethod l o = MethodResolutionFailed l o

instance (info ~ ResolveVideoSinkMethod t VideoSink, MethodInfo info VideoSink p) => IsLabelProxy t (VideoSink -> p) where
    fromLabelProxy _ = overloadedMethod (MethodProxy :: MethodProxy info)

#if MIN_VERSION_base(4,9,0)
instance (info ~ ResolveVideoSinkMethod t VideoSink, MethodInfo info VideoSink p) => IsLabel t (VideoSink -> p) where
    fromLabel _ = overloadedMethod (MethodProxy :: MethodProxy info)
#endif

-- VVV Prop "show-preroll-frame"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable,PropertyConstruct]

getVideoSinkShowPrerollFrame :: (MonadIO m, VideoSinkK o) => o -> m Bool
getVideoSinkShowPrerollFrame obj = liftIO $ getObjectPropertyBool obj "show-preroll-frame"

setVideoSinkShowPrerollFrame :: (MonadIO m, VideoSinkK o) => o -> Bool -> m ()
setVideoSinkShowPrerollFrame obj val = liftIO $ setObjectPropertyBool obj "show-preroll-frame" val

constructVideoSinkShowPrerollFrame :: Bool -> IO ([Char], GValue)
constructVideoSinkShowPrerollFrame val = constructObjectPropertyBool "show-preroll-frame" val

data VideoSinkShowPrerollFramePropertyInfo
instance AttrInfo VideoSinkShowPrerollFramePropertyInfo where
    type AttrAllowedOps VideoSinkShowPrerollFramePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrSetTypeConstraint VideoSinkShowPrerollFramePropertyInfo = (~) Bool
    type AttrBaseTypeConstraint VideoSinkShowPrerollFramePropertyInfo = VideoSinkK
    type AttrGetType VideoSinkShowPrerollFramePropertyInfo = Bool
    type AttrLabel VideoSinkShowPrerollFramePropertyInfo = "show-preroll-frame"
    attrGet _ = getVideoSinkShowPrerollFrame
    attrSet _ = setVideoSinkShowPrerollFrame
    attrConstruct _ = constructVideoSinkShowPrerollFrame

type instance AttributeList VideoSink = VideoSinkAttributeList
type VideoSinkAttributeList = ('[ '("async", GstBase.BaseSinkAsyncPropertyInfo), '("blocksize", GstBase.BaseSinkBlocksizePropertyInfo), '("enableLastSample", GstBase.BaseSinkEnableLastSamplePropertyInfo), '("lastSample", GstBase.BaseSinkLastSamplePropertyInfo), '("maxBitrate", GstBase.BaseSinkMaxBitratePropertyInfo), '("maxLateness", GstBase.BaseSinkMaxLatenessPropertyInfo), '("name", Gst.ObjectNamePropertyInfo), '("parent", Gst.ObjectParentPropertyInfo), '("qos", GstBase.BaseSinkQosPropertyInfo), '("renderDelay", GstBase.BaseSinkRenderDelayPropertyInfo), '("showPrerollFrame", VideoSinkShowPrerollFramePropertyInfo), '("sync", GstBase.BaseSinkSyncPropertyInfo), '("throttleTime", GstBase.BaseSinkThrottleTimePropertyInfo), '("tsOffset", GstBase.BaseSinkTsOffsetPropertyInfo)] :: [(Symbol, *)])

type instance SignalList VideoSink = VideoSinkSignalList
type VideoSinkSignalList = ('[ '("deepNotify", Gst.ObjectDeepNotifySignalInfo), '("noMorePads", Gst.ElementNoMorePadsSignalInfo), '("notify", GObject.ObjectNotifySignalInfo), '("padAdded", Gst.ElementPadAddedSignalInfo), '("padRemoved", Gst.ElementPadRemovedSignalInfo)] :: [(Symbol, *)])

-- method VideoSink::center_rect
-- method type : MemberFunction
-- Args : [Arg {argCName = "src", argType = TInterface "GstVideo" "VideoRectangle", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "dst", argType = TInterface "GstVideo" "VideoRectangle", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "result", argType = TInterface "GstVideo" "VideoRectangle", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "scaling", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gst_video_sink_center_rect" gst_video_sink_center_rect :: 
    Ptr VideoRectangle ->                   -- src : TInterface "GstVideo" "VideoRectangle"
    Ptr VideoRectangle ->                   -- dst : TInterface "GstVideo" "VideoRectangle"
    Ptr VideoRectangle ->                   -- result : TInterface "GstVideo" "VideoRectangle"
    CInt ->                                 -- scaling : TBasicType TBoolean
    IO ()


videoSinkCenterRect ::
    (MonadIO m) =>
    VideoRectangle                          -- src
    -> VideoRectangle                       -- dst
    -> VideoRectangle                       -- result_
    -> Bool                                 -- scaling
    -> m ()                                 -- result
videoSinkCenterRect src dst result_ scaling = liftIO $ do
    let src' = unsafeManagedPtrGetPtr src
    let dst' = unsafeManagedPtrGetPtr dst
    let result_' = unsafeManagedPtrGetPtr result_
    let scaling' = (fromIntegral . fromEnum) scaling
    gst_video_sink_center_rect src' dst' result_' scaling'
    touchManagedPtr src
    touchManagedPtr dst
    touchManagedPtr result_
    return ()