{- | Copyright : Will Thompson, Iñaki García Etxebarria and Jonas Platte License : LGPL-2.1 Maintainer : Iñaki García Etxebarria (inaki@blueleaf.cc) Provides useful functions and a base class for video sinks. GstVideoSink will configure the default base sink to drop frames that arrive later than 20ms as this is considered the default threshold for observing out-of-sync frames. -} #define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \ && !defined(__HADDOCK_VERSION__)) module GI.GstVideo.Objects.VideoSink ( -- * Exported types VideoSink(..) , IsVideoSink , toVideoSink , noVideoSink , -- * Methods -- ** centerRect #method:centerRect# videoSinkCenterRect , -- * Properties -- ** showPrerollFrame #attr:showPrerollFrame# {- | Whether to show video frames during preroll. If set to 'False', video frames will only be rendered in PLAYING state. -} #if ENABLE_OVERLOADING VideoSinkShowPrerollFramePropertyInfo , #endif constructVideoSinkShowPrerollFrame , getVideoSinkShowPrerollFrame , setVideoSinkShowPrerollFrame , #if ENABLE_OVERLOADING videoSinkShowPrerollFrame , #endif ) where import Data.GI.Base.ShortPrelude import qualified Data.GI.Base.ShortPrelude as SP import qualified Data.GI.Base.Overloading as O import qualified Prelude as P import qualified Data.GI.Base.Attributes as GI.Attributes import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr import qualified Data.GI.Base.GClosure as B.GClosure import qualified Data.GI.Base.GError as B.GError import qualified Data.GI.Base.GVariant as B.GVariant import qualified Data.GI.Base.GValue as B.GValue import qualified Data.GI.Base.GParamSpec as B.GParamSpec import qualified Data.GI.Base.CallStack as B.CallStack import qualified Data.GI.Base.Properties as B.Properties import qualified Data.Text as T import qualified Data.ByteString.Char8 as B import qualified Data.Map as Map import qualified Foreign.Ptr as FP import qualified GHC.OverloadedLabels as OL import qualified GI.GObject.Objects.Object as GObject.Object import qualified GI.Gst.Objects.Element as Gst.Element import qualified GI.Gst.Objects.Object as Gst.Object import qualified GI.GstBase.Objects.BaseSink as GstBase.BaseSink import {-# SOURCE #-} qualified GI.GstVideo.Structs.VideoRectangle as GstVideo.VideoRectangle -- | Memory-managed wrapper type. newtype VideoSink = VideoSink (ManagedPtr VideoSink) foreign import ccall "gst_video_sink_get_type" c_gst_video_sink_get_type :: IO GType instance GObject VideoSink where gobjectType = c_gst_video_sink_get_type -- | Type class for types which can be safely cast to `VideoSink`, for instance with `toVideoSink`. class (GObject o, O.IsDescendantOf VideoSink o) => IsVideoSink o instance (GObject o, O.IsDescendantOf VideoSink o) => IsVideoSink o instance O.HasParentTypes VideoSink type instance O.ParentTypes VideoSink = '[GstBase.BaseSink.BaseSink, Gst.Element.Element, Gst.Object.Object, GObject.Object.Object] -- | Cast to `VideoSink`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`. toVideoSink :: (MonadIO m, IsVideoSink o) => o -> m VideoSink toVideoSink = liftIO . unsafeCastTo VideoSink -- | A convenience alias for `Nothing` :: `Maybe` `VideoSink`. noVideoSink :: Maybe VideoSink noVideoSink = Nothing #if ENABLE_OVERLOADING type family ResolveVideoSinkMethod (t :: Symbol) (o :: *) :: * where ResolveVideoSinkMethod "abortState" o = Gst.Element.ElementAbortStateMethodInfo ResolveVideoSinkMethod "addControlBinding" o = Gst.Object.ObjectAddControlBindingMethodInfo ResolveVideoSinkMethod "addPad" o = Gst.Element.ElementAddPadMethodInfo ResolveVideoSinkMethod "addPropertyDeepNotifyWatch" o = Gst.Element.ElementAddPropertyDeepNotifyWatchMethodInfo ResolveVideoSinkMethod "addPropertyNotifyWatch" o = Gst.Element.ElementAddPropertyNotifyWatchMethodInfo ResolveVideoSinkMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo ResolveVideoSinkMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo ResolveVideoSinkMethod "callAsync" o = Gst.Element.ElementCallAsyncMethodInfo ResolveVideoSinkMethod "changeState" o = Gst.Element.ElementChangeStateMethodInfo ResolveVideoSinkMethod "continueState" o = Gst.Element.ElementContinueStateMethodInfo ResolveVideoSinkMethod "createAllPads" o = Gst.Element.ElementCreateAllPadsMethodInfo ResolveVideoSinkMethod "defaultError" o = Gst.Object.ObjectDefaultErrorMethodInfo ResolveVideoSinkMethod "doPreroll" o = GstBase.BaseSink.BaseSinkDoPrerollMethodInfo ResolveVideoSinkMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo ResolveVideoSinkMethod "foreachPad" o = Gst.Element.ElementForeachPadMethodInfo ResolveVideoSinkMethod "foreachSinkPad" o = Gst.Element.ElementForeachSinkPadMethodInfo ResolveVideoSinkMethod "foreachSrcPad" o = Gst.Element.ElementForeachSrcPadMethodInfo ResolveVideoSinkMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo ResolveVideoSinkMethod "getv" o = GObject.Object.ObjectGetvMethodInfo ResolveVideoSinkMethod "hasActiveControlBindings" o = Gst.Object.ObjectHasActiveControlBindingsMethodInfo ResolveVideoSinkMethod "hasAncestor" o = Gst.Object.ObjectHasAncestorMethodInfo ResolveVideoSinkMethod "hasAsAncestor" o = Gst.Object.ObjectHasAsAncestorMethodInfo ResolveVideoSinkMethod "hasAsParent" o = Gst.Object.ObjectHasAsParentMethodInfo ResolveVideoSinkMethod "isAsyncEnabled" o = GstBase.BaseSink.BaseSinkIsAsyncEnabledMethodInfo ResolveVideoSinkMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo ResolveVideoSinkMethod "isLastSampleEnabled" o = GstBase.BaseSink.BaseSinkIsLastSampleEnabledMethodInfo ResolveVideoSinkMethod "isLockedState" o = Gst.Element.ElementIsLockedStateMethodInfo ResolveVideoSinkMethod "isQosEnabled" o = GstBase.BaseSink.BaseSinkIsQosEnabledMethodInfo ResolveVideoSinkMethod "iteratePads" o = Gst.Element.ElementIteratePadsMethodInfo ResolveVideoSinkMethod "iterateSinkPads" o = Gst.Element.ElementIterateSinkPadsMethodInfo ResolveVideoSinkMethod "iterateSrcPads" o = Gst.Element.ElementIterateSrcPadsMethodInfo ResolveVideoSinkMethod "link" o = Gst.Element.ElementLinkMethodInfo ResolveVideoSinkMethod "linkFiltered" o = Gst.Element.ElementLinkFilteredMethodInfo ResolveVideoSinkMethod "linkPads" o = Gst.Element.ElementLinkPadsMethodInfo ResolveVideoSinkMethod "linkPadsFiltered" o = Gst.Element.ElementLinkPadsFilteredMethodInfo ResolveVideoSinkMethod "linkPadsFull" o = Gst.Element.ElementLinkPadsFullMethodInfo ResolveVideoSinkMethod "lostState" o = Gst.Element.ElementLostStateMethodInfo ResolveVideoSinkMethod "messageFull" o = Gst.Element.ElementMessageFullMethodInfo ResolveVideoSinkMethod "messageFullWithDetails" o = Gst.Element.ElementMessageFullWithDetailsMethodInfo ResolveVideoSinkMethod "noMorePads" o = Gst.Element.ElementNoMorePadsMethodInfo ResolveVideoSinkMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo ResolveVideoSinkMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo ResolveVideoSinkMethod "postMessage" o = Gst.Element.ElementPostMessageMethodInfo ResolveVideoSinkMethod "provideClock" o = Gst.Element.ElementProvideClockMethodInfo ResolveVideoSinkMethod "query" o = Gst.Element.ElementQueryMethodInfo ResolveVideoSinkMethod "queryConvert" o = Gst.Element.ElementQueryConvertMethodInfo ResolveVideoSinkMethod "queryDuration" o = Gst.Element.ElementQueryDurationMethodInfo ResolveVideoSinkMethod "queryLatency" o = GstBase.BaseSink.BaseSinkQueryLatencyMethodInfo ResolveVideoSinkMethod "queryPosition" o = Gst.Element.ElementQueryPositionMethodInfo ResolveVideoSinkMethod "ref" o = Gst.Object.ObjectRefMethodInfo ResolveVideoSinkMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo ResolveVideoSinkMethod "releaseRequestPad" o = Gst.Element.ElementReleaseRequestPadMethodInfo ResolveVideoSinkMethod "removeControlBinding" o = Gst.Object.ObjectRemoveControlBindingMethodInfo ResolveVideoSinkMethod "removePad" o = Gst.Element.ElementRemovePadMethodInfo ResolveVideoSinkMethod "removePropertyNotifyWatch" o = Gst.Element.ElementRemovePropertyNotifyWatchMethodInfo ResolveVideoSinkMethod "requestPad" o = Gst.Element.ElementRequestPadMethodInfo ResolveVideoSinkMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo ResolveVideoSinkMethod "seek" o = Gst.Element.ElementSeekMethodInfo ResolveVideoSinkMethod "seekSimple" o = Gst.Element.ElementSeekSimpleMethodInfo ResolveVideoSinkMethod "sendEvent" o = Gst.Element.ElementSendEventMethodInfo ResolveVideoSinkMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo ResolveVideoSinkMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo ResolveVideoSinkMethod "suggestNextSync" o = Gst.Object.ObjectSuggestNextSyncMethodInfo ResolveVideoSinkMethod "syncStateWithParent" o = Gst.Element.ElementSyncStateWithParentMethodInfo ResolveVideoSinkMethod "syncValues" o = Gst.Object.ObjectSyncValuesMethodInfo ResolveVideoSinkMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo ResolveVideoSinkMethod "unlink" o = Gst.Element.ElementUnlinkMethodInfo ResolveVideoSinkMethod "unlinkPads" o = Gst.Element.ElementUnlinkPadsMethodInfo ResolveVideoSinkMethod "unparent" o = Gst.Object.ObjectUnparentMethodInfo ResolveVideoSinkMethod "unref" o = Gst.Object.ObjectUnrefMethodInfo ResolveVideoSinkMethod "wait" o = GstBase.BaseSink.BaseSinkWaitMethodInfo ResolveVideoSinkMethod "waitClock" o = GstBase.BaseSink.BaseSinkWaitClockMethodInfo ResolveVideoSinkMethod "waitPreroll" o = GstBase.BaseSink.BaseSinkWaitPrerollMethodInfo ResolveVideoSinkMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo ResolveVideoSinkMethod "getBaseTime" o = Gst.Element.ElementGetBaseTimeMethodInfo ResolveVideoSinkMethod "getBlocksize" o = GstBase.BaseSink.BaseSinkGetBlocksizeMethodInfo ResolveVideoSinkMethod "getBus" o = Gst.Element.ElementGetBusMethodInfo ResolveVideoSinkMethod "getClock" o = Gst.Element.ElementGetClockMethodInfo ResolveVideoSinkMethod "getCompatiblePad" o = Gst.Element.ElementGetCompatiblePadMethodInfo ResolveVideoSinkMethod "getCompatiblePadTemplate" o = Gst.Element.ElementGetCompatiblePadTemplateMethodInfo ResolveVideoSinkMethod "getContext" o = Gst.Element.ElementGetContextMethodInfo ResolveVideoSinkMethod "getContextUnlocked" o = Gst.Element.ElementGetContextUnlockedMethodInfo ResolveVideoSinkMethod "getContexts" o = Gst.Element.ElementGetContextsMethodInfo ResolveVideoSinkMethod "getControlBinding" o = Gst.Object.ObjectGetControlBindingMethodInfo ResolveVideoSinkMethod "getControlRate" o = Gst.Object.ObjectGetControlRateMethodInfo ResolveVideoSinkMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo ResolveVideoSinkMethod "getDropOutOfSegment" o = GstBase.BaseSink.BaseSinkGetDropOutOfSegmentMethodInfo ResolveVideoSinkMethod "getFactory" o = Gst.Element.ElementGetFactoryMethodInfo ResolveVideoSinkMethod "getGValueArray" o = Gst.Object.ObjectGetGValueArrayMethodInfo ResolveVideoSinkMethod "getLastSample" o = GstBase.BaseSink.BaseSinkGetLastSampleMethodInfo ResolveVideoSinkMethod "getLatency" o = GstBase.BaseSink.BaseSinkGetLatencyMethodInfo ResolveVideoSinkMethod "getMaxBitrate" o = GstBase.BaseSink.BaseSinkGetMaxBitrateMethodInfo ResolveVideoSinkMethod "getMaxLateness" o = GstBase.BaseSink.BaseSinkGetMaxLatenessMethodInfo ResolveVideoSinkMethod "getMetadata" o = Gst.Element.ElementGetMetadataMethodInfo ResolveVideoSinkMethod "getName" o = Gst.Object.ObjectGetNameMethodInfo ResolveVideoSinkMethod "getPadTemplate" o = Gst.Element.ElementGetPadTemplateMethodInfo ResolveVideoSinkMethod "getPadTemplateList" o = Gst.Element.ElementGetPadTemplateListMethodInfo ResolveVideoSinkMethod "getParent" o = Gst.Object.ObjectGetParentMethodInfo ResolveVideoSinkMethod "getPathString" o = Gst.Object.ObjectGetPathStringMethodInfo ResolveVideoSinkMethod "getProcessingDeadline" o = GstBase.BaseSink.BaseSinkGetProcessingDeadlineMethodInfo ResolveVideoSinkMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo ResolveVideoSinkMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo ResolveVideoSinkMethod "getRenderDelay" o = GstBase.BaseSink.BaseSinkGetRenderDelayMethodInfo ResolveVideoSinkMethod "getRequestPad" o = Gst.Element.ElementGetRequestPadMethodInfo ResolveVideoSinkMethod "getStartTime" o = Gst.Element.ElementGetStartTimeMethodInfo ResolveVideoSinkMethod "getState" o = Gst.Element.ElementGetStateMethodInfo ResolveVideoSinkMethod "getStaticPad" o = Gst.Element.ElementGetStaticPadMethodInfo ResolveVideoSinkMethod "getSync" o = GstBase.BaseSink.BaseSinkGetSyncMethodInfo ResolveVideoSinkMethod "getThrottleTime" o = GstBase.BaseSink.BaseSinkGetThrottleTimeMethodInfo ResolveVideoSinkMethod "getTsOffset" o = GstBase.BaseSink.BaseSinkGetTsOffsetMethodInfo ResolveVideoSinkMethod "getValue" o = Gst.Object.ObjectGetValueMethodInfo ResolveVideoSinkMethod "setAsyncEnabled" o = GstBase.BaseSink.BaseSinkSetAsyncEnabledMethodInfo ResolveVideoSinkMethod "setBaseTime" o = Gst.Element.ElementSetBaseTimeMethodInfo ResolveVideoSinkMethod "setBlocksize" o = GstBase.BaseSink.BaseSinkSetBlocksizeMethodInfo ResolveVideoSinkMethod "setBus" o = Gst.Element.ElementSetBusMethodInfo ResolveVideoSinkMethod "setClock" o = Gst.Element.ElementSetClockMethodInfo ResolveVideoSinkMethod "setContext" o = Gst.Element.ElementSetContextMethodInfo ResolveVideoSinkMethod "setControlBindingDisabled" o = Gst.Object.ObjectSetControlBindingDisabledMethodInfo ResolveVideoSinkMethod "setControlBindingsDisabled" o = Gst.Object.ObjectSetControlBindingsDisabledMethodInfo ResolveVideoSinkMethod "setControlRate" o = Gst.Object.ObjectSetControlRateMethodInfo ResolveVideoSinkMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo ResolveVideoSinkMethod "setDropOutOfSegment" o = GstBase.BaseSink.BaseSinkSetDropOutOfSegmentMethodInfo ResolveVideoSinkMethod "setLastSampleEnabled" o = GstBase.BaseSink.BaseSinkSetLastSampleEnabledMethodInfo ResolveVideoSinkMethod "setLockedState" o = Gst.Element.ElementSetLockedStateMethodInfo ResolveVideoSinkMethod "setMaxBitrate" o = GstBase.BaseSink.BaseSinkSetMaxBitrateMethodInfo ResolveVideoSinkMethod "setMaxLateness" o = GstBase.BaseSink.BaseSinkSetMaxLatenessMethodInfo ResolveVideoSinkMethod "setName" o = Gst.Object.ObjectSetNameMethodInfo ResolveVideoSinkMethod "setParent" o = Gst.Object.ObjectSetParentMethodInfo ResolveVideoSinkMethod "setProcessingDeadline" o = GstBase.BaseSink.BaseSinkSetProcessingDeadlineMethodInfo ResolveVideoSinkMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo ResolveVideoSinkMethod "setQosEnabled" o = GstBase.BaseSink.BaseSinkSetQosEnabledMethodInfo ResolveVideoSinkMethod "setRenderDelay" o = GstBase.BaseSink.BaseSinkSetRenderDelayMethodInfo ResolveVideoSinkMethod "setStartTime" o = Gst.Element.ElementSetStartTimeMethodInfo ResolveVideoSinkMethod "setState" o = Gst.Element.ElementSetStateMethodInfo ResolveVideoSinkMethod "setSync" o = GstBase.BaseSink.BaseSinkSetSyncMethodInfo ResolveVideoSinkMethod "setThrottleTime" o = GstBase.BaseSink.BaseSinkSetThrottleTimeMethodInfo ResolveVideoSinkMethod "setTsOffset" o = GstBase.BaseSink.BaseSinkSetTsOffsetMethodInfo ResolveVideoSinkMethod l o = O.MethodResolutionFailed l o instance (info ~ ResolveVideoSinkMethod t VideoSink, O.MethodInfo info VideoSink p) => OL.IsLabel t (VideoSink -> p) where #if MIN_VERSION_base(4,10,0) fromLabel = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info) #else fromLabel _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info) #endif #endif -- VVV Prop "show-preroll-frame" -- Type: TBasicType TBoolean -- Flags: [PropertyReadable,PropertyWritable,PropertyConstruct] -- Nullable: (Nothing,Nothing) {- | Get the value of the “@show-preroll-frame@” property. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.get' videoSink #showPrerollFrame @ -} getVideoSinkShowPrerollFrame :: (MonadIO m, IsVideoSink o) => o -> m Bool getVideoSinkShowPrerollFrame obj = liftIO $ B.Properties.getObjectPropertyBool obj "show-preroll-frame" {- | Set the value of the “@show-preroll-frame@” property. When is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.set' videoSink [ #showPrerollFrame 'Data.GI.Base.Attributes.:=' value ] @ -} setVideoSinkShowPrerollFrame :: (MonadIO m, IsVideoSink o) => o -> Bool -> m () setVideoSinkShowPrerollFrame obj val = liftIO $ B.Properties.setObjectPropertyBool obj "show-preroll-frame" val {- | Construct a `GValueConstruct` with valid value for the “@show-preroll-frame@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`. -} constructVideoSinkShowPrerollFrame :: (IsVideoSink o) => Bool -> IO (GValueConstruct o) constructVideoSinkShowPrerollFrame val = B.Properties.constructObjectPropertyBool "show-preroll-frame" val #if ENABLE_OVERLOADING data VideoSinkShowPrerollFramePropertyInfo instance AttrInfo VideoSinkShowPrerollFramePropertyInfo where type AttrAllowedOps VideoSinkShowPrerollFramePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet] type AttrSetTypeConstraint VideoSinkShowPrerollFramePropertyInfo = (~) Bool type AttrBaseTypeConstraint VideoSinkShowPrerollFramePropertyInfo = IsVideoSink type AttrGetType VideoSinkShowPrerollFramePropertyInfo = Bool type AttrLabel VideoSinkShowPrerollFramePropertyInfo = "show-preroll-frame" type AttrOrigin VideoSinkShowPrerollFramePropertyInfo = VideoSink attrGet _ = getVideoSinkShowPrerollFrame attrSet _ = setVideoSinkShowPrerollFrame attrConstruct _ = constructVideoSinkShowPrerollFrame attrClear _ = undefined #endif #if ENABLE_OVERLOADING instance O.HasAttributeList VideoSink type instance O.AttributeList VideoSink = VideoSinkAttributeList type VideoSinkAttributeList = ('[ '("async", GstBase.BaseSink.BaseSinkAsyncPropertyInfo), '("blocksize", GstBase.BaseSink.BaseSinkBlocksizePropertyInfo), '("enableLastSample", GstBase.BaseSink.BaseSinkEnableLastSamplePropertyInfo), '("lastSample", GstBase.BaseSink.BaseSinkLastSamplePropertyInfo), '("maxBitrate", GstBase.BaseSink.BaseSinkMaxBitratePropertyInfo), '("maxLateness", GstBase.BaseSink.BaseSinkMaxLatenessPropertyInfo), '("name", Gst.Object.ObjectNamePropertyInfo), '("parent", Gst.Object.ObjectParentPropertyInfo), '("processingDeadline", GstBase.BaseSink.BaseSinkProcessingDeadlinePropertyInfo), '("qos", GstBase.BaseSink.BaseSinkQosPropertyInfo), '("renderDelay", GstBase.BaseSink.BaseSinkRenderDelayPropertyInfo), '("showPrerollFrame", VideoSinkShowPrerollFramePropertyInfo), '("sync", GstBase.BaseSink.BaseSinkSyncPropertyInfo), '("throttleTime", GstBase.BaseSink.BaseSinkThrottleTimePropertyInfo), '("tsOffset", GstBase.BaseSink.BaseSinkTsOffsetPropertyInfo)] :: [(Symbol, *)]) #endif #if ENABLE_OVERLOADING videoSinkShowPrerollFrame :: AttrLabelProxy "showPrerollFrame" videoSinkShowPrerollFrame = AttrLabelProxy #endif #if ENABLE_OVERLOADING type instance O.SignalList VideoSink = VideoSinkSignalList type VideoSinkSignalList = ('[ '("deepNotify", Gst.Object.ObjectDeepNotifySignalInfo), '("noMorePads", Gst.Element.ElementNoMorePadsSignalInfo), '("notify", GObject.Object.ObjectNotifySignalInfo), '("padAdded", Gst.Element.ElementPadAddedSignalInfo), '("padRemoved", Gst.Element.ElementPadRemovedSignalInfo)] :: [(Symbol, *)]) #endif -- method VideoSink::center_rect -- method type : MemberFunction -- Args : [Arg {argCName = "src", argType = TInterface (Name {namespace = "GstVideo", name = "VideoRectangle"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GstVideoRectangle describing the source area", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "dst", argType = TInterface (Name {namespace = "GstVideo", name = "VideoRectangle"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GstVideoRectangle describing the destination area", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "result", argType = TInterface (Name {namespace = "GstVideo", name = "VideoRectangle"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a pointer to a #GstVideoRectangle which will receive the result area", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "scaling", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #gboolean indicating if scaling should be applied or not", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "gst_video_sink_center_rect" gst_video_sink_center_rect :: Ptr GstVideo.VideoRectangle.VideoRectangle -> -- src : TInterface (Name {namespace = "GstVideo", name = "VideoRectangle"}) Ptr GstVideo.VideoRectangle.VideoRectangle -> -- dst : TInterface (Name {namespace = "GstVideo", name = "VideoRectangle"}) Ptr GstVideo.VideoRectangle.VideoRectangle -> -- result : TInterface (Name {namespace = "GstVideo", name = "VideoRectangle"}) CInt -> -- scaling : TBasicType TBoolean IO () {- | Takes /@src@/ rectangle and position it at the center of /@dst@/ rectangle with or without /@scaling@/. It handles clipping if the /@src@/ rectangle is bigger than the /@dst@/ one and /@scaling@/ is set to FALSE. -} videoSinkCenterRect :: (B.CallStack.HasCallStack, MonadIO m) => GstVideo.VideoRectangle.VideoRectangle {- ^ /@src@/: the 'GI.GstVideo.Structs.VideoRectangle.VideoRectangle' describing the source area -} -> GstVideo.VideoRectangle.VideoRectangle {- ^ /@dst@/: the 'GI.GstVideo.Structs.VideoRectangle.VideoRectangle' describing the destination area -} -> GstVideo.VideoRectangle.VideoRectangle {- ^ /@result@/: a pointer to a 'GI.GstVideo.Structs.VideoRectangle.VideoRectangle' which will receive the result area -} -> Bool {- ^ /@scaling@/: a 'Bool' indicating if scaling should be applied or not -} -> m () videoSinkCenterRect src dst result_ scaling = liftIO $ do src' <- unsafeManagedPtrGetPtr src dst' <- unsafeManagedPtrGetPtr dst result_' <- unsafeManagedPtrGetPtr result_ let scaling' = (fromIntegral . fromEnum) scaling gst_video_sink_center_rect src' dst' result_' scaling' touchManagedPtr src touchManagedPtr dst touchManagedPtr result_ return () #if ENABLE_OVERLOADING #endif