gi-gstvideo-1.0.18: GI/GstVideo/Objects/VideoDecoder.hs
{- |
Copyright : Will Thompson, Iñaki García Etxebarria and Jonas Platte
License : LGPL-2.1
Maintainer : Iñaki García Etxebarria (inaki@blueleaf.cc)
This base class is for video decoders turning encoded data into raw video
frames.
The GstVideoDecoder base class and derived subclasses should cooperate as
follows:
== Configuration
* Initially, GstVideoDecoder calls /@start@/ when the decoder element
is activated, which allows the subclass to perform any global setup.
* GstVideoDecoder calls /@setFormat@/ to inform the subclass of caps
describing input video data that it is about to receive, including
possibly configuration data.
While unlikely, it might be called more than once, if changing input
parameters require reconfiguration.
* Incoming data buffers are processed as needed, described in Data
Processing below.
* GstVideoDecoder calls /@stop@/ at end of all processing.
== Data processing
* The base class gathers input data, and optionally allows subclass
to parse this into subsequently manageable chunks, typically
corresponding to and referred to as \'frames\'.
* Each input frame is provided in turn to the subclass\' /@handleFrame@/
callback.
The ownership of the frame is given to the /@handleFrame@/ callback.
* If codec processing results in decoded data, the subclass should call
/@gstVideoDecoderFinishFrame@/ to have decoded data pushed.
downstream. Otherwise, the subclass must call
/@gstVideoDecoderDropFrame@/, to allow the base class to do timestamp
and offset tracking, and possibly to requeue the frame for a later
attempt in the case of reverse playback.
== Shutdown phase
* The GstVideoDecoder class calls /@stop@/ to inform the subclass that data
parsing will be stopped.
== Additional Notes
* Seeking\/Flushing
* When the pipeline is seeked or otherwise flushed, the subclass is
informed via a call to its /@reset@/ callback, with the hard parameter
set to true. This indicates the subclass should drop any internal data
queues and timestamps and prepare for a fresh set of buffers to arrive
for parsing and decoding.
* End Of Stream
* At end-of-stream, the subclass /@parse@/ function may be called some final
times with the at_eos parameter set to true, indicating that the element
should not expect any more data to be arriving, and it should parse and
remaining frames and call 'GI.GstVideo.Objects.VideoDecoder.videoDecoderHaveFrame' if possible.
The subclass is responsible for providing pad template caps for
source and sink pads. The pads need to be named \"sink\" and \"src\". It also
needs to provide information about the ouptput caps, when they are known.
This may be when the base class calls the subclass\' /@setFormat@/ function,
though it might be during decoding, before calling
/@gstVideoDecoderFinishFrame@/. This is done via
/@gstVideoDecoderSetOutputState@/
The subclass is also responsible for providing (presentation) timestamps
(likely based on corresponding input ones). If that is not applicable
or possible, the base class provides limited framerate based interpolation.
Similarly, the base class provides some limited (legacy) seeking support
if specifically requested by the subclass, as full-fledged support
should rather be left to upstream demuxer, parser or alike. This simple
approach caters for seeking and duration reporting using estimated input
bitrates. To enable it, a subclass should call
/@gstVideoDecoderSetEstimateRate@/ to enable handling of incoming
byte-streams.
The base class provides some support for reverse playback, in particular
in case incoming data is not packetized or upstream does not provide
fragments on keyframe boundaries. However, the subclass should then be
prepared for the parsing and frame processing stage to occur separately
(in normal forward processing, the latter immediately follows the former),
The subclass also needs to ensure the parsing stage properly marks
keyframes, unless it knows the upstream elements will do so properly for
incoming data.
The bare minimum that a functional subclass needs to implement is:
* Provide pad templates
* Inform the base class of output caps via
/@gstVideoDecoderSetOutputState@/
* Parse input data, if it is not considered packetized from upstream
Data will be provided to /@parse@/ which should invoke
/@gstVideoDecoderAddToFrame@/ and /@gstVideoDecoderHaveFrame@/ to
separate the data belonging to each video frame.
* Accept data in /@handleFrame@/ and provide decoded results to
/@gstVideoDecoderFinishFrame@/, or call /@gstVideoDecoderDropFrame@/.
-}
#define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \
&& !defined(__HADDOCK_VERSION__))
module GI.GstVideo.Objects.VideoDecoder
(
-- * Exported types
VideoDecoder(..) ,
IsVideoDecoder ,
toVideoDecoder ,
noVideoDecoder ,
-- * Methods
-- ** addToFrame #method:addToFrame#
#if ENABLE_OVERLOADING
VideoDecoderAddToFrameMethodInfo ,
#endif
videoDecoderAddToFrame ,
-- ** allocateOutputBuffer #method:allocateOutputBuffer#
#if ENABLE_OVERLOADING
VideoDecoderAllocateOutputBufferMethodInfo,
#endif
videoDecoderAllocateOutputBuffer ,
-- ** allocateOutputFrame #method:allocateOutputFrame#
#if ENABLE_OVERLOADING
VideoDecoderAllocateOutputFrameMethodInfo,
#endif
videoDecoderAllocateOutputFrame ,
-- ** allocateOutputFrameWithParams #method:allocateOutputFrameWithParams#
#if ENABLE_OVERLOADING
VideoDecoderAllocateOutputFrameWithParamsMethodInfo,
#endif
videoDecoderAllocateOutputFrameWithParams,
-- ** dropFrame #method:dropFrame#
#if ENABLE_OVERLOADING
VideoDecoderDropFrameMethodInfo ,
#endif
videoDecoderDropFrame ,
-- ** finishFrame #method:finishFrame#
#if ENABLE_OVERLOADING
VideoDecoderFinishFrameMethodInfo ,
#endif
videoDecoderFinishFrame ,
-- ** getAllocator #method:getAllocator#
#if ENABLE_OVERLOADING
VideoDecoderGetAllocatorMethodInfo ,
#endif
videoDecoderGetAllocator ,
-- ** getBufferPool #method:getBufferPool#
#if ENABLE_OVERLOADING
VideoDecoderGetBufferPoolMethodInfo ,
#endif
videoDecoderGetBufferPool ,
-- ** getEstimateRate #method:getEstimateRate#
#if ENABLE_OVERLOADING
VideoDecoderGetEstimateRateMethodInfo ,
#endif
videoDecoderGetEstimateRate ,
-- ** getFrame #method:getFrame#
#if ENABLE_OVERLOADING
VideoDecoderGetFrameMethodInfo ,
#endif
videoDecoderGetFrame ,
-- ** getFrames #method:getFrames#
#if ENABLE_OVERLOADING
VideoDecoderGetFramesMethodInfo ,
#endif
videoDecoderGetFrames ,
-- ** getLatency #method:getLatency#
#if ENABLE_OVERLOADING
VideoDecoderGetLatencyMethodInfo ,
#endif
videoDecoderGetLatency ,
-- ** getMaxDecodeTime #method:getMaxDecodeTime#
#if ENABLE_OVERLOADING
VideoDecoderGetMaxDecodeTimeMethodInfo ,
#endif
videoDecoderGetMaxDecodeTime ,
-- ** getMaxErrors #method:getMaxErrors#
#if ENABLE_OVERLOADING
VideoDecoderGetMaxErrorsMethodInfo ,
#endif
videoDecoderGetMaxErrors ,
-- ** getNeedsFormat #method:getNeedsFormat#
#if ENABLE_OVERLOADING
VideoDecoderGetNeedsFormatMethodInfo ,
#endif
videoDecoderGetNeedsFormat ,
-- ** getOldestFrame #method:getOldestFrame#
#if ENABLE_OVERLOADING
VideoDecoderGetOldestFrameMethodInfo ,
#endif
videoDecoderGetOldestFrame ,
-- ** getOutputState #method:getOutputState#
#if ENABLE_OVERLOADING
VideoDecoderGetOutputStateMethodInfo ,
#endif
videoDecoderGetOutputState ,
-- ** getPacketized #method:getPacketized#
#if ENABLE_OVERLOADING
VideoDecoderGetPacketizedMethodInfo ,
#endif
videoDecoderGetPacketized ,
-- ** getPendingFrameSize #method:getPendingFrameSize#
#if ENABLE_OVERLOADING
VideoDecoderGetPendingFrameSizeMethodInfo,
#endif
videoDecoderGetPendingFrameSize ,
-- ** getQosProportion #method:getQosProportion#
#if ENABLE_OVERLOADING
VideoDecoderGetQosProportionMethodInfo ,
#endif
videoDecoderGetQosProportion ,
-- ** haveFrame #method:haveFrame#
#if ENABLE_OVERLOADING
VideoDecoderHaveFrameMethodInfo ,
#endif
videoDecoderHaveFrame ,
-- ** mergeTags #method:mergeTags#
#if ENABLE_OVERLOADING
VideoDecoderMergeTagsMethodInfo ,
#endif
videoDecoderMergeTags ,
-- ** negotiate #method:negotiate#
#if ENABLE_OVERLOADING
VideoDecoderNegotiateMethodInfo ,
#endif
videoDecoderNegotiate ,
-- ** proxyGetcaps #method:proxyGetcaps#
#if ENABLE_OVERLOADING
VideoDecoderProxyGetcapsMethodInfo ,
#endif
videoDecoderProxyGetcaps ,
-- ** releaseFrame #method:releaseFrame#
#if ENABLE_OVERLOADING
VideoDecoderReleaseFrameMethodInfo ,
#endif
videoDecoderReleaseFrame ,
-- ** setEstimateRate #method:setEstimateRate#
#if ENABLE_OVERLOADING
VideoDecoderSetEstimateRateMethodInfo ,
#endif
videoDecoderSetEstimateRate ,
-- ** setInterlacedOutputState #method:setInterlacedOutputState#
#if ENABLE_OVERLOADING
VideoDecoderSetInterlacedOutputStateMethodInfo,
#endif
videoDecoderSetInterlacedOutputState ,
-- ** setLatency #method:setLatency#
#if ENABLE_OVERLOADING
VideoDecoderSetLatencyMethodInfo ,
#endif
videoDecoderSetLatency ,
-- ** setMaxErrors #method:setMaxErrors#
#if ENABLE_OVERLOADING
VideoDecoderSetMaxErrorsMethodInfo ,
#endif
videoDecoderSetMaxErrors ,
-- ** setNeedsFormat #method:setNeedsFormat#
#if ENABLE_OVERLOADING
VideoDecoderSetNeedsFormatMethodInfo ,
#endif
videoDecoderSetNeedsFormat ,
-- ** setOutputState #method:setOutputState#
#if ENABLE_OVERLOADING
VideoDecoderSetOutputStateMethodInfo ,
#endif
videoDecoderSetOutputState ,
-- ** setPacketized #method:setPacketized#
#if ENABLE_OVERLOADING
VideoDecoderSetPacketizedMethodInfo ,
#endif
videoDecoderSetPacketized ,
-- ** setUseDefaultPadAcceptcaps #method:setUseDefaultPadAcceptcaps#
#if ENABLE_OVERLOADING
VideoDecoderSetUseDefaultPadAcceptcapsMethodInfo,
#endif
videoDecoderSetUseDefaultPadAcceptcaps ,
) 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.Enums as Gst.Enums
import qualified GI.Gst.Objects.Allocator as Gst.Allocator
import qualified GI.Gst.Objects.BufferPool as Gst.BufferPool
import qualified GI.Gst.Objects.Element as Gst.Element
import qualified GI.Gst.Objects.Object as Gst.Object
import qualified GI.Gst.Structs.AllocationParams as Gst.AllocationParams
import qualified GI.Gst.Structs.Buffer as Gst.Buffer
import qualified GI.Gst.Structs.BufferPoolAcquireParams as Gst.BufferPoolAcquireParams
import qualified GI.Gst.Structs.Caps as Gst.Caps
import qualified GI.Gst.Structs.TagList as Gst.TagList
import {-# SOURCE #-} qualified GI.GstVideo.Enums as GstVideo.Enums
import {-# SOURCE #-} qualified GI.GstVideo.Structs.VideoCodecFrame as GstVideo.VideoCodecFrame
import {-# SOURCE #-} qualified GI.GstVideo.Structs.VideoCodecState as GstVideo.VideoCodecState
-- | Memory-managed wrapper type.
newtype VideoDecoder = VideoDecoder (ManagedPtr VideoDecoder)
foreign import ccall "gst_video_decoder_get_type"
c_gst_video_decoder_get_type :: IO GType
instance GObject VideoDecoder where
gobjectType = c_gst_video_decoder_get_type
-- | Type class for types which can be safely cast to `VideoDecoder`, for instance with `toVideoDecoder`.
class (GObject o, O.IsDescendantOf VideoDecoder o) => IsVideoDecoder o
instance (GObject o, O.IsDescendantOf VideoDecoder o) => IsVideoDecoder o
instance O.HasParentTypes VideoDecoder
type instance O.ParentTypes VideoDecoder = '[Gst.Element.Element, Gst.Object.Object, GObject.Object.Object]
-- | Cast to `VideoDecoder`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`.
toVideoDecoder :: (MonadIO m, IsVideoDecoder o) => o -> m VideoDecoder
toVideoDecoder = liftIO . unsafeCastTo VideoDecoder
-- | A convenience alias for `Nothing` :: `Maybe` `VideoDecoder`.
noVideoDecoder :: Maybe VideoDecoder
noVideoDecoder = Nothing
#if ENABLE_OVERLOADING
type family ResolveVideoDecoderMethod (t :: Symbol) (o :: *) :: * where
ResolveVideoDecoderMethod "abortState" o = Gst.Element.ElementAbortStateMethodInfo
ResolveVideoDecoderMethod "addControlBinding" o = Gst.Object.ObjectAddControlBindingMethodInfo
ResolveVideoDecoderMethod "addPad" o = Gst.Element.ElementAddPadMethodInfo
ResolveVideoDecoderMethod "addPropertyDeepNotifyWatch" o = Gst.Element.ElementAddPropertyDeepNotifyWatchMethodInfo
ResolveVideoDecoderMethod "addPropertyNotifyWatch" o = Gst.Element.ElementAddPropertyNotifyWatchMethodInfo
ResolveVideoDecoderMethod "addToFrame" o = VideoDecoderAddToFrameMethodInfo
ResolveVideoDecoderMethod "allocateOutputBuffer" o = VideoDecoderAllocateOutputBufferMethodInfo
ResolveVideoDecoderMethod "allocateOutputFrame" o = VideoDecoderAllocateOutputFrameMethodInfo
ResolveVideoDecoderMethod "allocateOutputFrameWithParams" o = VideoDecoderAllocateOutputFrameWithParamsMethodInfo
ResolveVideoDecoderMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
ResolveVideoDecoderMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
ResolveVideoDecoderMethod "callAsync" o = Gst.Element.ElementCallAsyncMethodInfo
ResolveVideoDecoderMethod "changeState" o = Gst.Element.ElementChangeStateMethodInfo
ResolveVideoDecoderMethod "continueState" o = Gst.Element.ElementContinueStateMethodInfo
ResolveVideoDecoderMethod "createAllPads" o = Gst.Element.ElementCreateAllPadsMethodInfo
ResolveVideoDecoderMethod "defaultError" o = Gst.Object.ObjectDefaultErrorMethodInfo
ResolveVideoDecoderMethod "dropFrame" o = VideoDecoderDropFrameMethodInfo
ResolveVideoDecoderMethod "finishFrame" o = VideoDecoderFinishFrameMethodInfo
ResolveVideoDecoderMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
ResolveVideoDecoderMethod "foreachPad" o = Gst.Element.ElementForeachPadMethodInfo
ResolveVideoDecoderMethod "foreachSinkPad" o = Gst.Element.ElementForeachSinkPadMethodInfo
ResolveVideoDecoderMethod "foreachSrcPad" o = Gst.Element.ElementForeachSrcPadMethodInfo
ResolveVideoDecoderMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
ResolveVideoDecoderMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
ResolveVideoDecoderMethod "hasActiveControlBindings" o = Gst.Object.ObjectHasActiveControlBindingsMethodInfo
ResolveVideoDecoderMethod "hasAncestor" o = Gst.Object.ObjectHasAncestorMethodInfo
ResolveVideoDecoderMethod "hasAsAncestor" o = Gst.Object.ObjectHasAsAncestorMethodInfo
ResolveVideoDecoderMethod "hasAsParent" o = Gst.Object.ObjectHasAsParentMethodInfo
ResolveVideoDecoderMethod "haveFrame" o = VideoDecoderHaveFrameMethodInfo
ResolveVideoDecoderMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
ResolveVideoDecoderMethod "isLockedState" o = Gst.Element.ElementIsLockedStateMethodInfo
ResolveVideoDecoderMethod "iteratePads" o = Gst.Element.ElementIteratePadsMethodInfo
ResolveVideoDecoderMethod "iterateSinkPads" o = Gst.Element.ElementIterateSinkPadsMethodInfo
ResolveVideoDecoderMethod "iterateSrcPads" o = Gst.Element.ElementIterateSrcPadsMethodInfo
ResolveVideoDecoderMethod "link" o = Gst.Element.ElementLinkMethodInfo
ResolveVideoDecoderMethod "linkFiltered" o = Gst.Element.ElementLinkFilteredMethodInfo
ResolveVideoDecoderMethod "linkPads" o = Gst.Element.ElementLinkPadsMethodInfo
ResolveVideoDecoderMethod "linkPadsFiltered" o = Gst.Element.ElementLinkPadsFilteredMethodInfo
ResolveVideoDecoderMethod "linkPadsFull" o = Gst.Element.ElementLinkPadsFullMethodInfo
ResolveVideoDecoderMethod "lostState" o = Gst.Element.ElementLostStateMethodInfo
ResolveVideoDecoderMethod "mergeTags" o = VideoDecoderMergeTagsMethodInfo
ResolveVideoDecoderMethod "messageFull" o = Gst.Element.ElementMessageFullMethodInfo
ResolveVideoDecoderMethod "messageFullWithDetails" o = Gst.Element.ElementMessageFullWithDetailsMethodInfo
ResolveVideoDecoderMethod "negotiate" o = VideoDecoderNegotiateMethodInfo
ResolveVideoDecoderMethod "noMorePads" o = Gst.Element.ElementNoMorePadsMethodInfo
ResolveVideoDecoderMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
ResolveVideoDecoderMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
ResolveVideoDecoderMethod "postMessage" o = Gst.Element.ElementPostMessageMethodInfo
ResolveVideoDecoderMethod "provideClock" o = Gst.Element.ElementProvideClockMethodInfo
ResolveVideoDecoderMethod "proxyGetcaps" o = VideoDecoderProxyGetcapsMethodInfo
ResolveVideoDecoderMethod "query" o = Gst.Element.ElementQueryMethodInfo
ResolveVideoDecoderMethod "queryConvert" o = Gst.Element.ElementQueryConvertMethodInfo
ResolveVideoDecoderMethod "queryDuration" o = Gst.Element.ElementQueryDurationMethodInfo
ResolveVideoDecoderMethod "queryPosition" o = Gst.Element.ElementQueryPositionMethodInfo
ResolveVideoDecoderMethod "ref" o = Gst.Object.ObjectRefMethodInfo
ResolveVideoDecoderMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
ResolveVideoDecoderMethod "releaseFrame" o = VideoDecoderReleaseFrameMethodInfo
ResolveVideoDecoderMethod "releaseRequestPad" o = Gst.Element.ElementReleaseRequestPadMethodInfo
ResolveVideoDecoderMethod "removeControlBinding" o = Gst.Object.ObjectRemoveControlBindingMethodInfo
ResolveVideoDecoderMethod "removePad" o = Gst.Element.ElementRemovePadMethodInfo
ResolveVideoDecoderMethod "removePropertyNotifyWatch" o = Gst.Element.ElementRemovePropertyNotifyWatchMethodInfo
ResolveVideoDecoderMethod "requestPad" o = Gst.Element.ElementRequestPadMethodInfo
ResolveVideoDecoderMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
ResolveVideoDecoderMethod "seek" o = Gst.Element.ElementSeekMethodInfo
ResolveVideoDecoderMethod "seekSimple" o = Gst.Element.ElementSeekSimpleMethodInfo
ResolveVideoDecoderMethod "sendEvent" o = Gst.Element.ElementSendEventMethodInfo
ResolveVideoDecoderMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
ResolveVideoDecoderMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
ResolveVideoDecoderMethod "suggestNextSync" o = Gst.Object.ObjectSuggestNextSyncMethodInfo
ResolveVideoDecoderMethod "syncStateWithParent" o = Gst.Element.ElementSyncStateWithParentMethodInfo
ResolveVideoDecoderMethod "syncValues" o = Gst.Object.ObjectSyncValuesMethodInfo
ResolveVideoDecoderMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
ResolveVideoDecoderMethod "unlink" o = Gst.Element.ElementUnlinkMethodInfo
ResolveVideoDecoderMethod "unlinkPads" o = Gst.Element.ElementUnlinkPadsMethodInfo
ResolveVideoDecoderMethod "unparent" o = Gst.Object.ObjectUnparentMethodInfo
ResolveVideoDecoderMethod "unref" o = Gst.Object.ObjectUnrefMethodInfo
ResolveVideoDecoderMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
ResolveVideoDecoderMethod "getAllocator" o = VideoDecoderGetAllocatorMethodInfo
ResolveVideoDecoderMethod "getBaseTime" o = Gst.Element.ElementGetBaseTimeMethodInfo
ResolveVideoDecoderMethod "getBufferPool" o = VideoDecoderGetBufferPoolMethodInfo
ResolveVideoDecoderMethod "getBus" o = Gst.Element.ElementGetBusMethodInfo
ResolveVideoDecoderMethod "getClock" o = Gst.Element.ElementGetClockMethodInfo
ResolveVideoDecoderMethod "getCompatiblePad" o = Gst.Element.ElementGetCompatiblePadMethodInfo
ResolveVideoDecoderMethod "getCompatiblePadTemplate" o = Gst.Element.ElementGetCompatiblePadTemplateMethodInfo
ResolveVideoDecoderMethod "getContext" o = Gst.Element.ElementGetContextMethodInfo
ResolveVideoDecoderMethod "getContextUnlocked" o = Gst.Element.ElementGetContextUnlockedMethodInfo
ResolveVideoDecoderMethod "getContexts" o = Gst.Element.ElementGetContextsMethodInfo
ResolveVideoDecoderMethod "getControlBinding" o = Gst.Object.ObjectGetControlBindingMethodInfo
ResolveVideoDecoderMethod "getControlRate" o = Gst.Object.ObjectGetControlRateMethodInfo
ResolveVideoDecoderMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
ResolveVideoDecoderMethod "getEstimateRate" o = VideoDecoderGetEstimateRateMethodInfo
ResolveVideoDecoderMethod "getFactory" o = Gst.Element.ElementGetFactoryMethodInfo
ResolveVideoDecoderMethod "getFrame" o = VideoDecoderGetFrameMethodInfo
ResolveVideoDecoderMethod "getFrames" o = VideoDecoderGetFramesMethodInfo
ResolveVideoDecoderMethod "getGValueArray" o = Gst.Object.ObjectGetGValueArrayMethodInfo
ResolveVideoDecoderMethod "getLatency" o = VideoDecoderGetLatencyMethodInfo
ResolveVideoDecoderMethod "getMaxDecodeTime" o = VideoDecoderGetMaxDecodeTimeMethodInfo
ResolveVideoDecoderMethod "getMaxErrors" o = VideoDecoderGetMaxErrorsMethodInfo
ResolveVideoDecoderMethod "getMetadata" o = Gst.Element.ElementGetMetadataMethodInfo
ResolveVideoDecoderMethod "getName" o = Gst.Object.ObjectGetNameMethodInfo
ResolveVideoDecoderMethod "getNeedsFormat" o = VideoDecoderGetNeedsFormatMethodInfo
ResolveVideoDecoderMethod "getOldestFrame" o = VideoDecoderGetOldestFrameMethodInfo
ResolveVideoDecoderMethod "getOutputState" o = VideoDecoderGetOutputStateMethodInfo
ResolveVideoDecoderMethod "getPacketized" o = VideoDecoderGetPacketizedMethodInfo
ResolveVideoDecoderMethod "getPadTemplate" o = Gst.Element.ElementGetPadTemplateMethodInfo
ResolveVideoDecoderMethod "getPadTemplateList" o = Gst.Element.ElementGetPadTemplateListMethodInfo
ResolveVideoDecoderMethod "getParent" o = Gst.Object.ObjectGetParentMethodInfo
ResolveVideoDecoderMethod "getPathString" o = Gst.Object.ObjectGetPathStringMethodInfo
ResolveVideoDecoderMethod "getPendingFrameSize" o = VideoDecoderGetPendingFrameSizeMethodInfo
ResolveVideoDecoderMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
ResolveVideoDecoderMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
ResolveVideoDecoderMethod "getQosProportion" o = VideoDecoderGetQosProportionMethodInfo
ResolveVideoDecoderMethod "getRequestPad" o = Gst.Element.ElementGetRequestPadMethodInfo
ResolveVideoDecoderMethod "getStartTime" o = Gst.Element.ElementGetStartTimeMethodInfo
ResolveVideoDecoderMethod "getState" o = Gst.Element.ElementGetStateMethodInfo
ResolveVideoDecoderMethod "getStaticPad" o = Gst.Element.ElementGetStaticPadMethodInfo
ResolveVideoDecoderMethod "getValue" o = Gst.Object.ObjectGetValueMethodInfo
ResolveVideoDecoderMethod "setBaseTime" o = Gst.Element.ElementSetBaseTimeMethodInfo
ResolveVideoDecoderMethod "setBus" o = Gst.Element.ElementSetBusMethodInfo
ResolveVideoDecoderMethod "setClock" o = Gst.Element.ElementSetClockMethodInfo
ResolveVideoDecoderMethod "setContext" o = Gst.Element.ElementSetContextMethodInfo
ResolveVideoDecoderMethod "setControlBindingDisabled" o = Gst.Object.ObjectSetControlBindingDisabledMethodInfo
ResolveVideoDecoderMethod "setControlBindingsDisabled" o = Gst.Object.ObjectSetControlBindingsDisabledMethodInfo
ResolveVideoDecoderMethod "setControlRate" o = Gst.Object.ObjectSetControlRateMethodInfo
ResolveVideoDecoderMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
ResolveVideoDecoderMethod "setEstimateRate" o = VideoDecoderSetEstimateRateMethodInfo
ResolveVideoDecoderMethod "setInterlacedOutputState" o = VideoDecoderSetInterlacedOutputStateMethodInfo
ResolveVideoDecoderMethod "setLatency" o = VideoDecoderSetLatencyMethodInfo
ResolveVideoDecoderMethod "setLockedState" o = Gst.Element.ElementSetLockedStateMethodInfo
ResolveVideoDecoderMethod "setMaxErrors" o = VideoDecoderSetMaxErrorsMethodInfo
ResolveVideoDecoderMethod "setName" o = Gst.Object.ObjectSetNameMethodInfo
ResolveVideoDecoderMethod "setNeedsFormat" o = VideoDecoderSetNeedsFormatMethodInfo
ResolveVideoDecoderMethod "setOutputState" o = VideoDecoderSetOutputStateMethodInfo
ResolveVideoDecoderMethod "setPacketized" o = VideoDecoderSetPacketizedMethodInfo
ResolveVideoDecoderMethod "setParent" o = Gst.Object.ObjectSetParentMethodInfo
ResolveVideoDecoderMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
ResolveVideoDecoderMethod "setStartTime" o = Gst.Element.ElementSetStartTimeMethodInfo
ResolveVideoDecoderMethod "setState" o = Gst.Element.ElementSetStateMethodInfo
ResolveVideoDecoderMethod "setUseDefaultPadAcceptcaps" o = VideoDecoderSetUseDefaultPadAcceptcapsMethodInfo
ResolveVideoDecoderMethod l o = O.MethodResolutionFailed l o
instance (info ~ ResolveVideoDecoderMethod t VideoDecoder, O.MethodInfo info VideoDecoder p) => OL.IsLabel t (VideoDecoder -> 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
#if ENABLE_OVERLOADING
instance O.HasAttributeList VideoDecoder
type instance O.AttributeList VideoDecoder = VideoDecoderAttributeList
type VideoDecoderAttributeList = ('[ '("name", Gst.Object.ObjectNamePropertyInfo), '("parent", Gst.Object.ObjectParentPropertyInfo)] :: [(Symbol, *)])
#endif
#if ENABLE_OVERLOADING
#endif
#if ENABLE_OVERLOADING
type instance O.SignalList VideoDecoder = VideoDecoderSignalList
type VideoDecoderSignalList = ('[ '("deepNotify", Gst.Object.ObjectDeepNotifySignalInfo), '("noMorePads", Gst.Element.ElementNoMorePadsSignalInfo), '("notify", GObject.Object.ObjectNotifySignalInfo), '("padAdded", Gst.Element.ElementPadAddedSignalInfo), '("padRemoved", Gst.Element.ElementPadRemovedSignalInfo)] :: [(Symbol, *)])
#endif
-- method VideoDecoder::add_to_frame
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "decoder", argType = TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstVideoDecoder", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "n_bytes", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the number of bytes to add", 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_decoder_add_to_frame" gst_video_decoder_add_to_frame ::
Ptr VideoDecoder -> -- decoder : TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"})
Int32 -> -- n_bytes : TBasicType TInt
IO ()
{- |
Removes next /@nBytes@/ of input data and adds it to currently parsed frame.
-}
videoDecoderAddToFrame ::
(B.CallStack.HasCallStack, MonadIO m, IsVideoDecoder a) =>
a
{- ^ /@decoder@/: a 'GI.GstVideo.Objects.VideoDecoder.VideoDecoder' -}
-> Int32
{- ^ /@nBytes@/: the number of bytes to add -}
-> m ()
videoDecoderAddToFrame decoder nBytes = liftIO $ do
decoder' <- unsafeManagedPtrCastPtr decoder
gst_video_decoder_add_to_frame decoder' nBytes
touchManagedPtr decoder
return ()
#if ENABLE_OVERLOADING
data VideoDecoderAddToFrameMethodInfo
instance (signature ~ (Int32 -> m ()), MonadIO m, IsVideoDecoder a) => O.MethodInfo VideoDecoderAddToFrameMethodInfo a signature where
overloadedMethod _ = videoDecoderAddToFrame
#endif
-- method VideoDecoder::allocate_output_buffer
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "decoder", argType = TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstVideoDecoder", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Gst", name = "Buffer"}))
-- throws : False
-- Skip return : False
foreign import ccall "gst_video_decoder_allocate_output_buffer" gst_video_decoder_allocate_output_buffer ::
Ptr VideoDecoder -> -- decoder : TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"})
IO (Ptr Gst.Buffer.Buffer)
{- |
Helper function that allocates a buffer to hold a video frame for /@decoder@/\'s
current 'GI.GstVideo.Structs.VideoCodecState.VideoCodecState'.
You should use 'GI.GstVideo.Objects.VideoDecoder.videoDecoderAllocateOutputFrame' instead of this
function, if possible at all.
-}
videoDecoderAllocateOutputBuffer ::
(B.CallStack.HasCallStack, MonadIO m, IsVideoDecoder a) =>
a
{- ^ /@decoder@/: a 'GI.GstVideo.Objects.VideoDecoder.VideoDecoder' -}
-> m Gst.Buffer.Buffer
{- ^ __Returns:__ allocated buffer, or NULL if no buffer could be
allocated (e.g. when downstream is flushing or shutting down) -}
videoDecoderAllocateOutputBuffer decoder = liftIO $ do
decoder' <- unsafeManagedPtrCastPtr decoder
result <- gst_video_decoder_allocate_output_buffer decoder'
checkUnexpectedReturnNULL "videoDecoderAllocateOutputBuffer" result
result' <- (wrapBoxed Gst.Buffer.Buffer) result
touchManagedPtr decoder
return result'
#if ENABLE_OVERLOADING
data VideoDecoderAllocateOutputBufferMethodInfo
instance (signature ~ (m Gst.Buffer.Buffer), MonadIO m, IsVideoDecoder a) => O.MethodInfo VideoDecoderAllocateOutputBufferMethodInfo a signature where
overloadedMethod _ = videoDecoderAllocateOutputBuffer
#endif
-- method VideoDecoder::allocate_output_frame
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "decoder", argType = TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstVideoDecoder", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "frame", argType = TInterface (Name {namespace = "GstVideo", name = "VideoCodecFrame"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstVideoCodecFrame", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Gst", name = "FlowReturn"}))
-- throws : False
-- Skip return : False
foreign import ccall "gst_video_decoder_allocate_output_frame" gst_video_decoder_allocate_output_frame ::
Ptr VideoDecoder -> -- decoder : TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"})
Ptr GstVideo.VideoCodecFrame.VideoCodecFrame -> -- frame : TInterface (Name {namespace = "GstVideo", name = "VideoCodecFrame"})
IO CInt
{- |
Helper function that allocates a buffer to hold a video frame for /@decoder@/\'s
current 'GI.GstVideo.Structs.VideoCodecState.VideoCodecState'. Subclass should already have configured video
state and set src pad caps.
The buffer allocated here is owned by the frame and you should only
keep references to the frame, not the buffer.
-}
videoDecoderAllocateOutputFrame ::
(B.CallStack.HasCallStack, MonadIO m, IsVideoDecoder a) =>
a
{- ^ /@decoder@/: a 'GI.GstVideo.Objects.VideoDecoder.VideoDecoder' -}
-> GstVideo.VideoCodecFrame.VideoCodecFrame
{- ^ /@frame@/: a 'GI.GstVideo.Structs.VideoCodecFrame.VideoCodecFrame' -}
-> m Gst.Enums.FlowReturn
{- ^ __Returns:__ 'GI.Gst.Enums.FlowReturnOk' if an output buffer could be allocated -}
videoDecoderAllocateOutputFrame decoder frame = liftIO $ do
decoder' <- unsafeManagedPtrCastPtr decoder
frame' <- unsafeManagedPtrGetPtr frame
result <- gst_video_decoder_allocate_output_frame decoder' frame'
let result' = (toEnum . fromIntegral) result
touchManagedPtr decoder
touchManagedPtr frame
return result'
#if ENABLE_OVERLOADING
data VideoDecoderAllocateOutputFrameMethodInfo
instance (signature ~ (GstVideo.VideoCodecFrame.VideoCodecFrame -> m Gst.Enums.FlowReturn), MonadIO m, IsVideoDecoder a) => O.MethodInfo VideoDecoderAllocateOutputFrameMethodInfo a signature where
overloadedMethod _ = videoDecoderAllocateOutputFrame
#endif
-- method VideoDecoder::allocate_output_frame_with_params
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "decoder", argType = TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstVideoDecoder", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "frame", argType = TInterface (Name {namespace = "GstVideo", name = "VideoCodecFrame"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstVideoCodecFrame", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "params", argType = TInterface (Name {namespace = "Gst", name = "BufferPoolAcquireParams"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstBufferPoolAcquireParams", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Gst", name = "FlowReturn"}))
-- throws : False
-- Skip return : False
foreign import ccall "gst_video_decoder_allocate_output_frame_with_params" gst_video_decoder_allocate_output_frame_with_params ::
Ptr VideoDecoder -> -- decoder : TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"})
Ptr GstVideo.VideoCodecFrame.VideoCodecFrame -> -- frame : TInterface (Name {namespace = "GstVideo", name = "VideoCodecFrame"})
Ptr Gst.BufferPoolAcquireParams.BufferPoolAcquireParams -> -- params : TInterface (Name {namespace = "Gst", name = "BufferPoolAcquireParams"})
IO CInt
{- |
Same as @/gst_video_decoder_allocate_output_frame/@ except it allows passing
'GI.Gst.Structs.BufferPoolAcquireParams.BufferPoolAcquireParams' to the sub call gst_buffer_pool_acquire_buffer.
/Since: 1.12/
-}
videoDecoderAllocateOutputFrameWithParams ::
(B.CallStack.HasCallStack, MonadIO m, IsVideoDecoder a) =>
a
{- ^ /@decoder@/: a 'GI.GstVideo.Objects.VideoDecoder.VideoDecoder' -}
-> GstVideo.VideoCodecFrame.VideoCodecFrame
{- ^ /@frame@/: a 'GI.GstVideo.Structs.VideoCodecFrame.VideoCodecFrame' -}
-> Gst.BufferPoolAcquireParams.BufferPoolAcquireParams
{- ^ /@params@/: a 'GI.Gst.Structs.BufferPoolAcquireParams.BufferPoolAcquireParams' -}
-> m Gst.Enums.FlowReturn
{- ^ __Returns:__ 'GI.Gst.Enums.FlowReturnOk' if an output buffer could be allocated -}
videoDecoderAllocateOutputFrameWithParams decoder frame params = liftIO $ do
decoder' <- unsafeManagedPtrCastPtr decoder
frame' <- unsafeManagedPtrGetPtr frame
params' <- unsafeManagedPtrGetPtr params
result <- gst_video_decoder_allocate_output_frame_with_params decoder' frame' params'
let result' = (toEnum . fromIntegral) result
touchManagedPtr decoder
touchManagedPtr frame
touchManagedPtr params
return result'
#if ENABLE_OVERLOADING
data VideoDecoderAllocateOutputFrameWithParamsMethodInfo
instance (signature ~ (GstVideo.VideoCodecFrame.VideoCodecFrame -> Gst.BufferPoolAcquireParams.BufferPoolAcquireParams -> m Gst.Enums.FlowReturn), MonadIO m, IsVideoDecoder a) => O.MethodInfo VideoDecoderAllocateOutputFrameWithParamsMethodInfo a signature where
overloadedMethod _ = videoDecoderAllocateOutputFrameWithParams
#endif
-- method VideoDecoder::drop_frame
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "dec", argType = TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstVideoDecoder", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "frame", argType = TInterface (Name {namespace = "GstVideo", name = "VideoCodecFrame"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GstVideoCodecFrame to drop", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Gst", name = "FlowReturn"}))
-- throws : False
-- Skip return : False
foreign import ccall "gst_video_decoder_drop_frame" gst_video_decoder_drop_frame ::
Ptr VideoDecoder -> -- dec : TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"})
Ptr GstVideo.VideoCodecFrame.VideoCodecFrame -> -- frame : TInterface (Name {namespace = "GstVideo", name = "VideoCodecFrame"})
IO CInt
{- |
Similar to 'GI.GstVideo.Objects.VideoDecoder.videoDecoderFinishFrame', but drops /@frame@/ in any
case and posts a QoS message with the frame\'s details on the bus.
In any case, the frame is considered finished and released.
-}
videoDecoderDropFrame ::
(B.CallStack.HasCallStack, MonadIO m, IsVideoDecoder a) =>
a
{- ^ /@dec@/: a 'GI.GstVideo.Objects.VideoDecoder.VideoDecoder' -}
-> GstVideo.VideoCodecFrame.VideoCodecFrame
{- ^ /@frame@/: the 'GI.GstVideo.Structs.VideoCodecFrame.VideoCodecFrame' to drop -}
-> m Gst.Enums.FlowReturn
{- ^ __Returns:__ a 'GI.Gst.Enums.FlowReturn', usually GST_FLOW_OK. -}
videoDecoderDropFrame dec frame = liftIO $ do
dec' <- unsafeManagedPtrCastPtr dec
frame' <- B.ManagedPtr.disownBoxed frame
result <- gst_video_decoder_drop_frame dec' frame'
let result' = (toEnum . fromIntegral) result
touchManagedPtr dec
touchManagedPtr frame
return result'
#if ENABLE_OVERLOADING
data VideoDecoderDropFrameMethodInfo
instance (signature ~ (GstVideo.VideoCodecFrame.VideoCodecFrame -> m Gst.Enums.FlowReturn), MonadIO m, IsVideoDecoder a) => O.MethodInfo VideoDecoderDropFrameMethodInfo a signature where
overloadedMethod _ = videoDecoderDropFrame
#endif
-- method VideoDecoder::finish_frame
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "decoder", argType = TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstVideoDecoder", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "frame", argType = TInterface (Name {namespace = "GstVideo", name = "VideoCodecFrame"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a decoded #GstVideoCodecFrame", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Gst", name = "FlowReturn"}))
-- throws : False
-- Skip return : False
foreign import ccall "gst_video_decoder_finish_frame" gst_video_decoder_finish_frame ::
Ptr VideoDecoder -> -- decoder : TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"})
Ptr GstVideo.VideoCodecFrame.VideoCodecFrame -> -- frame : TInterface (Name {namespace = "GstVideo", name = "VideoCodecFrame"})
IO CInt
{- |
/@frame@/ should have a valid decoded data buffer, whose metadata fields
are then appropriately set according to frame data and pushed downstream.
If no output data is provided, /@frame@/ is considered skipped.
In any case, the frame is considered finished and released.
After calling this function the output buffer of the frame is to be
considered read-only. This function will also change the metadata
of the buffer.
-}
videoDecoderFinishFrame ::
(B.CallStack.HasCallStack, MonadIO m, IsVideoDecoder a) =>
a
{- ^ /@decoder@/: a 'GI.GstVideo.Objects.VideoDecoder.VideoDecoder' -}
-> GstVideo.VideoCodecFrame.VideoCodecFrame
{- ^ /@frame@/: a decoded 'GI.GstVideo.Structs.VideoCodecFrame.VideoCodecFrame' -}
-> m Gst.Enums.FlowReturn
{- ^ __Returns:__ a 'GI.Gst.Enums.FlowReturn' resulting from sending data downstream -}
videoDecoderFinishFrame decoder frame = liftIO $ do
decoder' <- unsafeManagedPtrCastPtr decoder
frame' <- B.ManagedPtr.disownBoxed frame
result <- gst_video_decoder_finish_frame decoder' frame'
let result' = (toEnum . fromIntegral) result
touchManagedPtr decoder
touchManagedPtr frame
return result'
#if ENABLE_OVERLOADING
data VideoDecoderFinishFrameMethodInfo
instance (signature ~ (GstVideo.VideoCodecFrame.VideoCodecFrame -> m Gst.Enums.FlowReturn), MonadIO m, IsVideoDecoder a) => O.MethodInfo VideoDecoderFinishFrameMethodInfo a signature where
overloadedMethod _ = videoDecoderFinishFrame
#endif
-- method VideoDecoder::get_allocator
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "decoder", argType = TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstVideoDecoder", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "allocator", argType = TInterface (Name {namespace = "Gst", name = "Allocator"}), direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GstAllocator\nused", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "params", argType = TInterface (Name {namespace = "Gst", name = "AllocationParams"}), direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the\n#GstAllocationParams of @allocator", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferEverything}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False
foreign import ccall "gst_video_decoder_get_allocator" gst_video_decoder_get_allocator ::
Ptr VideoDecoder -> -- decoder : TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"})
Ptr (Ptr Gst.Allocator.Allocator) -> -- allocator : TInterface (Name {namespace = "Gst", name = "Allocator"})
Ptr Gst.AllocationParams.AllocationParams -> -- params : TInterface (Name {namespace = "Gst", name = "AllocationParams"})
IO ()
{- |
Lets 'GI.GstVideo.Objects.VideoDecoder.VideoDecoder' sub-classes to know the memory /@allocator@/
used by the base class and its /@params@/.
Unref the /@allocator@/ after use it.
-}
videoDecoderGetAllocator ::
(B.CallStack.HasCallStack, MonadIO m, IsVideoDecoder a) =>
a
{- ^ /@decoder@/: a 'GI.GstVideo.Objects.VideoDecoder.VideoDecoder' -}
-> m ((Gst.Allocator.Allocator, Gst.AllocationParams.AllocationParams))
videoDecoderGetAllocator decoder = liftIO $ do
decoder' <- unsafeManagedPtrCastPtr decoder
allocator <- allocMem :: IO (Ptr (Ptr Gst.Allocator.Allocator))
params <- callocBoxedBytes 64 :: IO (Ptr Gst.AllocationParams.AllocationParams)
gst_video_decoder_get_allocator decoder' allocator params
allocator' <- peek allocator
allocator'' <- (wrapObject Gst.Allocator.Allocator) allocator'
params' <- (wrapBoxed Gst.AllocationParams.AllocationParams) params
touchManagedPtr decoder
freeMem allocator
return (allocator'', params')
#if ENABLE_OVERLOADING
data VideoDecoderGetAllocatorMethodInfo
instance (signature ~ (m ((Gst.Allocator.Allocator, Gst.AllocationParams.AllocationParams))), MonadIO m, IsVideoDecoder a) => O.MethodInfo VideoDecoderGetAllocatorMethodInfo a signature where
overloadedMethod _ = videoDecoderGetAllocator
#endif
-- method VideoDecoder::get_buffer_pool
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "decoder", argType = TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstVideoDecoder", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Gst", name = "BufferPool"}))
-- throws : False
-- Skip return : False
foreign import ccall "gst_video_decoder_get_buffer_pool" gst_video_decoder_get_buffer_pool ::
Ptr VideoDecoder -> -- decoder : TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"})
IO (Ptr Gst.BufferPool.BufferPool)
{- |
/No description available in the introspection data./
-}
videoDecoderGetBufferPool ::
(B.CallStack.HasCallStack, MonadIO m, IsVideoDecoder a) =>
a
{- ^ /@decoder@/: a 'GI.GstVideo.Objects.VideoDecoder.VideoDecoder' -}
-> m Gst.BufferPool.BufferPool
{- ^ __Returns:__ the instance of the 'GI.Gst.Objects.BufferPool.BufferPool' used
by the decoder; free it after use it -}
videoDecoderGetBufferPool decoder = liftIO $ do
decoder' <- unsafeManagedPtrCastPtr decoder
result <- gst_video_decoder_get_buffer_pool decoder'
checkUnexpectedReturnNULL "videoDecoderGetBufferPool" result
result' <- (wrapObject Gst.BufferPool.BufferPool) result
touchManagedPtr decoder
return result'
#if ENABLE_OVERLOADING
data VideoDecoderGetBufferPoolMethodInfo
instance (signature ~ (m Gst.BufferPool.BufferPool), MonadIO m, IsVideoDecoder a) => O.MethodInfo VideoDecoderGetBufferPoolMethodInfo a signature where
overloadedMethod _ = videoDecoderGetBufferPool
#endif
-- method VideoDecoder::get_estimate_rate
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "dec", argType = TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstVideoDecoder", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TInt)
-- throws : False
-- Skip return : False
foreign import ccall "gst_video_decoder_get_estimate_rate" gst_video_decoder_get_estimate_rate ::
Ptr VideoDecoder -> -- dec : TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"})
IO Int32
{- |
/No description available in the introspection data./
-}
videoDecoderGetEstimateRate ::
(B.CallStack.HasCallStack, MonadIO m, IsVideoDecoder a) =>
a
{- ^ /@dec@/: a 'GI.GstVideo.Objects.VideoDecoder.VideoDecoder' -}
-> m Int32
{- ^ __Returns:__ currently configured byte to time conversion setting -}
videoDecoderGetEstimateRate dec = liftIO $ do
dec' <- unsafeManagedPtrCastPtr dec
result <- gst_video_decoder_get_estimate_rate dec'
touchManagedPtr dec
return result
#if ENABLE_OVERLOADING
data VideoDecoderGetEstimateRateMethodInfo
instance (signature ~ (m Int32), MonadIO m, IsVideoDecoder a) => O.MethodInfo VideoDecoderGetEstimateRateMethodInfo a signature where
overloadedMethod _ = videoDecoderGetEstimateRate
#endif
-- method VideoDecoder::get_frame
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "decoder", argType = TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstVideoDecoder", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "frame_number", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "system_frame_number of a frame", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "GstVideo", name = "VideoCodecFrame"}))
-- throws : False
-- Skip return : False
foreign import ccall "gst_video_decoder_get_frame" gst_video_decoder_get_frame ::
Ptr VideoDecoder -> -- decoder : TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"})
Int32 -> -- frame_number : TBasicType TInt
IO (Ptr GstVideo.VideoCodecFrame.VideoCodecFrame)
{- |
Get a pending unfinished 'GI.GstVideo.Structs.VideoCodecFrame.VideoCodecFrame'
-}
videoDecoderGetFrame ::
(B.CallStack.HasCallStack, MonadIO m, IsVideoDecoder a) =>
a
{- ^ /@decoder@/: a 'GI.GstVideo.Objects.VideoDecoder.VideoDecoder' -}
-> Int32
{- ^ /@frameNumber@/: system_frame_number of a frame -}
-> m GstVideo.VideoCodecFrame.VideoCodecFrame
{- ^ __Returns:__ pending unfinished 'GI.GstVideo.Structs.VideoCodecFrame.VideoCodecFrame' identified by /@frameNumber@/. -}
videoDecoderGetFrame decoder frameNumber = liftIO $ do
decoder' <- unsafeManagedPtrCastPtr decoder
result <- gst_video_decoder_get_frame decoder' frameNumber
checkUnexpectedReturnNULL "videoDecoderGetFrame" result
result' <- (wrapBoxed GstVideo.VideoCodecFrame.VideoCodecFrame) result
touchManagedPtr decoder
return result'
#if ENABLE_OVERLOADING
data VideoDecoderGetFrameMethodInfo
instance (signature ~ (Int32 -> m GstVideo.VideoCodecFrame.VideoCodecFrame), MonadIO m, IsVideoDecoder a) => O.MethodInfo VideoDecoderGetFrameMethodInfo a signature where
overloadedMethod _ = videoDecoderGetFrame
#endif
-- method VideoDecoder::get_frames
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "decoder", argType = TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstVideoDecoder", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TGList (TInterface (Name {namespace = "GstVideo", name = "VideoCodecFrame"})))
-- throws : False
-- Skip return : False
foreign import ccall "gst_video_decoder_get_frames" gst_video_decoder_get_frames ::
Ptr VideoDecoder -> -- decoder : TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"})
IO (Ptr (GList (Ptr GstVideo.VideoCodecFrame.VideoCodecFrame)))
{- |
Get all pending unfinished 'GI.GstVideo.Structs.VideoCodecFrame.VideoCodecFrame'
-}
videoDecoderGetFrames ::
(B.CallStack.HasCallStack, MonadIO m, IsVideoDecoder a) =>
a
{- ^ /@decoder@/: a 'GI.GstVideo.Objects.VideoDecoder.VideoDecoder' -}
-> m [GstVideo.VideoCodecFrame.VideoCodecFrame]
{- ^ __Returns:__ pending unfinished 'GI.GstVideo.Structs.VideoCodecFrame.VideoCodecFrame'. -}
videoDecoderGetFrames decoder = liftIO $ do
decoder' <- unsafeManagedPtrCastPtr decoder
result <- gst_video_decoder_get_frames decoder'
result' <- unpackGList result
result'' <- mapM (wrapBoxed GstVideo.VideoCodecFrame.VideoCodecFrame) result'
g_list_free result
touchManagedPtr decoder
return result''
#if ENABLE_OVERLOADING
data VideoDecoderGetFramesMethodInfo
instance (signature ~ (m [GstVideo.VideoCodecFrame.VideoCodecFrame]), MonadIO m, IsVideoDecoder a) => O.MethodInfo VideoDecoderGetFramesMethodInfo a signature where
overloadedMethod _ = videoDecoderGetFrames
#endif
-- method VideoDecoder::get_latency
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "decoder", argType = TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstVideoDecoder", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "min_latency", argType = TBasicType TUInt64, direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "address of variable in which to store the\n configured minimum latency, or %NULL", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "max_latency", argType = TBasicType TUInt64, direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "address of variable in which to store the\n configured mximum latency, or %NULL", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False
foreign import ccall "gst_video_decoder_get_latency" gst_video_decoder_get_latency ::
Ptr VideoDecoder -> -- decoder : TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"})
Ptr Word64 -> -- min_latency : TBasicType TUInt64
Ptr Word64 -> -- max_latency : TBasicType TUInt64
IO ()
{- |
Query the configured decoder latency. Results will be returned via
/@minLatency@/ and /@maxLatency@/.
-}
videoDecoderGetLatency ::
(B.CallStack.HasCallStack, MonadIO m, IsVideoDecoder a) =>
a
{- ^ /@decoder@/: a 'GI.GstVideo.Objects.VideoDecoder.VideoDecoder' -}
-> m ((Word64, Word64))
videoDecoderGetLatency decoder = liftIO $ do
decoder' <- unsafeManagedPtrCastPtr decoder
minLatency <- allocMem :: IO (Ptr Word64)
maxLatency <- allocMem :: IO (Ptr Word64)
gst_video_decoder_get_latency decoder' minLatency maxLatency
minLatency' <- peek minLatency
maxLatency' <- peek maxLatency
touchManagedPtr decoder
freeMem minLatency
freeMem maxLatency
return (minLatency', maxLatency')
#if ENABLE_OVERLOADING
data VideoDecoderGetLatencyMethodInfo
instance (signature ~ (m ((Word64, Word64))), MonadIO m, IsVideoDecoder a) => O.MethodInfo VideoDecoderGetLatencyMethodInfo a signature where
overloadedMethod _ = videoDecoderGetLatency
#endif
-- method VideoDecoder::get_max_decode_time
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "decoder", argType = TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstVideoDecoder", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "frame", argType = TInterface (Name {namespace = "GstVideo", name = "VideoCodecFrame"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstVideoCodecFrame", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TInt64)
-- throws : False
-- Skip return : False
foreign import ccall "gst_video_decoder_get_max_decode_time" gst_video_decoder_get_max_decode_time ::
Ptr VideoDecoder -> -- decoder : TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"})
Ptr GstVideo.VideoCodecFrame.VideoCodecFrame -> -- frame : TInterface (Name {namespace = "GstVideo", name = "VideoCodecFrame"})
IO Int64
{- |
Determines maximum possible decoding time for /@frame@/ that will
allow it to decode and arrive in time (as determined by QoS events).
In particular, a negative result means decoding in time is no longer possible
and should therefore occur as soon\/skippy as possible.
-}
videoDecoderGetMaxDecodeTime ::
(B.CallStack.HasCallStack, MonadIO m, IsVideoDecoder a) =>
a
{- ^ /@decoder@/: a 'GI.GstVideo.Objects.VideoDecoder.VideoDecoder' -}
-> GstVideo.VideoCodecFrame.VideoCodecFrame
{- ^ /@frame@/: a 'GI.GstVideo.Structs.VideoCodecFrame.VideoCodecFrame' -}
-> m Int64
{- ^ __Returns:__ max decoding time. -}
videoDecoderGetMaxDecodeTime decoder frame = liftIO $ do
decoder' <- unsafeManagedPtrCastPtr decoder
frame' <- unsafeManagedPtrGetPtr frame
result <- gst_video_decoder_get_max_decode_time decoder' frame'
touchManagedPtr decoder
touchManagedPtr frame
return result
#if ENABLE_OVERLOADING
data VideoDecoderGetMaxDecodeTimeMethodInfo
instance (signature ~ (GstVideo.VideoCodecFrame.VideoCodecFrame -> m Int64), MonadIO m, IsVideoDecoder a) => O.MethodInfo VideoDecoderGetMaxDecodeTimeMethodInfo a signature where
overloadedMethod _ = videoDecoderGetMaxDecodeTime
#endif
-- method VideoDecoder::get_max_errors
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "dec", argType = TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstVideoDecoder", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TInt)
-- throws : False
-- Skip return : False
foreign import ccall "gst_video_decoder_get_max_errors" gst_video_decoder_get_max_errors ::
Ptr VideoDecoder -> -- dec : TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"})
IO Int32
{- |
/No description available in the introspection data./
-}
videoDecoderGetMaxErrors ::
(B.CallStack.HasCallStack, MonadIO m, IsVideoDecoder a) =>
a
{- ^ /@dec@/: a 'GI.GstVideo.Objects.VideoDecoder.VideoDecoder' -}
-> m Int32
{- ^ __Returns:__ currently configured decoder tolerated error count. -}
videoDecoderGetMaxErrors dec = liftIO $ do
dec' <- unsafeManagedPtrCastPtr dec
result <- gst_video_decoder_get_max_errors dec'
touchManagedPtr dec
return result
#if ENABLE_OVERLOADING
data VideoDecoderGetMaxErrorsMethodInfo
instance (signature ~ (m Int32), MonadIO m, IsVideoDecoder a) => O.MethodInfo VideoDecoderGetMaxErrorsMethodInfo a signature where
overloadedMethod _ = videoDecoderGetMaxErrors
#endif
-- method VideoDecoder::get_needs_format
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "dec", argType = TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstVideoDecoder", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False
foreign import ccall "gst_video_decoder_get_needs_format" gst_video_decoder_get_needs_format ::
Ptr VideoDecoder -> -- dec : TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"})
IO CInt
{- |
Queries decoder required format handling.
/Since: 1.4/
-}
videoDecoderGetNeedsFormat ::
(B.CallStack.HasCallStack, MonadIO m, IsVideoDecoder a) =>
a
{- ^ /@dec@/: a 'GI.GstVideo.Objects.VideoDecoder.VideoDecoder' -}
-> m Bool
{- ^ __Returns:__ 'True' if required format handling is enabled. -}
videoDecoderGetNeedsFormat dec = liftIO $ do
dec' <- unsafeManagedPtrCastPtr dec
result <- gst_video_decoder_get_needs_format dec'
let result' = (/= 0) result
touchManagedPtr dec
return result'
#if ENABLE_OVERLOADING
data VideoDecoderGetNeedsFormatMethodInfo
instance (signature ~ (m Bool), MonadIO m, IsVideoDecoder a) => O.MethodInfo VideoDecoderGetNeedsFormatMethodInfo a signature where
overloadedMethod _ = videoDecoderGetNeedsFormat
#endif
-- method VideoDecoder::get_oldest_frame
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "decoder", argType = TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstVideoDecoder", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "GstVideo", name = "VideoCodecFrame"}))
-- throws : False
-- Skip return : False
foreign import ccall "gst_video_decoder_get_oldest_frame" gst_video_decoder_get_oldest_frame ::
Ptr VideoDecoder -> -- decoder : TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"})
IO (Ptr GstVideo.VideoCodecFrame.VideoCodecFrame)
{- |
Get the oldest pending unfinished 'GI.GstVideo.Structs.VideoCodecFrame.VideoCodecFrame'
-}
videoDecoderGetOldestFrame ::
(B.CallStack.HasCallStack, MonadIO m, IsVideoDecoder a) =>
a
{- ^ /@decoder@/: a 'GI.GstVideo.Objects.VideoDecoder.VideoDecoder' -}
-> m GstVideo.VideoCodecFrame.VideoCodecFrame
{- ^ __Returns:__ oldest pending unfinished 'GI.GstVideo.Structs.VideoCodecFrame.VideoCodecFrame'. -}
videoDecoderGetOldestFrame decoder = liftIO $ do
decoder' <- unsafeManagedPtrCastPtr decoder
result <- gst_video_decoder_get_oldest_frame decoder'
checkUnexpectedReturnNULL "videoDecoderGetOldestFrame" result
result' <- (wrapBoxed GstVideo.VideoCodecFrame.VideoCodecFrame) result
touchManagedPtr decoder
return result'
#if ENABLE_OVERLOADING
data VideoDecoderGetOldestFrameMethodInfo
instance (signature ~ (m GstVideo.VideoCodecFrame.VideoCodecFrame), MonadIO m, IsVideoDecoder a) => O.MethodInfo VideoDecoderGetOldestFrameMethodInfo a signature where
overloadedMethod _ = videoDecoderGetOldestFrame
#endif
-- method VideoDecoder::get_output_state
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "decoder", argType = TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstVideoDecoder", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "GstVideo", name = "VideoCodecState"}))
-- throws : False
-- Skip return : False
foreign import ccall "gst_video_decoder_get_output_state" gst_video_decoder_get_output_state ::
Ptr VideoDecoder -> -- decoder : TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"})
IO (Ptr GstVideo.VideoCodecState.VideoCodecState)
{- |
Get the 'GI.GstVideo.Structs.VideoCodecState.VideoCodecState' currently describing the output stream.
-}
videoDecoderGetOutputState ::
(B.CallStack.HasCallStack, MonadIO m, IsVideoDecoder a) =>
a
{- ^ /@decoder@/: a 'GI.GstVideo.Objects.VideoDecoder.VideoDecoder' -}
-> m GstVideo.VideoCodecState.VideoCodecState
{- ^ __Returns:__ 'GI.GstVideo.Structs.VideoCodecState.VideoCodecState' describing format of video data. -}
videoDecoderGetOutputState decoder = liftIO $ do
decoder' <- unsafeManagedPtrCastPtr decoder
result <- gst_video_decoder_get_output_state decoder'
checkUnexpectedReturnNULL "videoDecoderGetOutputState" result
result' <- (wrapBoxed GstVideo.VideoCodecState.VideoCodecState) result
touchManagedPtr decoder
return result'
#if ENABLE_OVERLOADING
data VideoDecoderGetOutputStateMethodInfo
instance (signature ~ (m GstVideo.VideoCodecState.VideoCodecState), MonadIO m, IsVideoDecoder a) => O.MethodInfo VideoDecoderGetOutputStateMethodInfo a signature where
overloadedMethod _ = videoDecoderGetOutputState
#endif
-- method VideoDecoder::get_packetized
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "decoder", argType = TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstVideoDecoder", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False
foreign import ccall "gst_video_decoder_get_packetized" gst_video_decoder_get_packetized ::
Ptr VideoDecoder -> -- decoder : TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"})
IO CInt
{- |
Queries whether input data is considered packetized or not by the
base class.
-}
videoDecoderGetPacketized ::
(B.CallStack.HasCallStack, MonadIO m, IsVideoDecoder a) =>
a
{- ^ /@decoder@/: a 'GI.GstVideo.Objects.VideoDecoder.VideoDecoder' -}
-> m Bool
{- ^ __Returns:__ TRUE if input data is considered packetized. -}
videoDecoderGetPacketized decoder = liftIO $ do
decoder' <- unsafeManagedPtrCastPtr decoder
result <- gst_video_decoder_get_packetized decoder'
let result' = (/= 0) result
touchManagedPtr decoder
return result'
#if ENABLE_OVERLOADING
data VideoDecoderGetPacketizedMethodInfo
instance (signature ~ (m Bool), MonadIO m, IsVideoDecoder a) => O.MethodInfo VideoDecoderGetPacketizedMethodInfo a signature where
overloadedMethod _ = videoDecoderGetPacketized
#endif
-- method VideoDecoder::get_pending_frame_size
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "decoder", argType = TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstVideoDecoder", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TUInt64)
-- throws : False
-- Skip return : False
foreign import ccall "gst_video_decoder_get_pending_frame_size" gst_video_decoder_get_pending_frame_size ::
Ptr VideoDecoder -> -- decoder : TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"})
IO Word64
{- |
Returns the number of bytes previously added to the current frame
by calling 'GI.GstVideo.Objects.VideoDecoder.videoDecoderAddToFrame'.
/Since: 1.4/
-}
videoDecoderGetPendingFrameSize ::
(B.CallStack.HasCallStack, MonadIO m, IsVideoDecoder a) =>
a
{- ^ /@decoder@/: a 'GI.GstVideo.Objects.VideoDecoder.VideoDecoder' -}
-> m Word64
{- ^ __Returns:__ The number of bytes pending for the current frame -}
videoDecoderGetPendingFrameSize decoder = liftIO $ do
decoder' <- unsafeManagedPtrCastPtr decoder
result <- gst_video_decoder_get_pending_frame_size decoder'
touchManagedPtr decoder
return result
#if ENABLE_OVERLOADING
data VideoDecoderGetPendingFrameSizeMethodInfo
instance (signature ~ (m Word64), MonadIO m, IsVideoDecoder a) => O.MethodInfo VideoDecoderGetPendingFrameSizeMethodInfo a signature where
overloadedMethod _ = videoDecoderGetPendingFrameSize
#endif
-- method VideoDecoder::get_qos_proportion
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "decoder", argType = TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstVideoDecoder\n current QoS proportion, or %NULL", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TDouble)
-- throws : False
-- Skip return : False
foreign import ccall "gst_video_decoder_get_qos_proportion" gst_video_decoder_get_qos_proportion ::
Ptr VideoDecoder -> -- decoder : TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"})
IO CDouble
{- |
/No description available in the introspection data./
/Since: 1.0.3/
-}
videoDecoderGetQosProportion ::
(B.CallStack.HasCallStack, MonadIO m, IsVideoDecoder a) =>
a
{- ^ /@decoder@/: a 'GI.GstVideo.Objects.VideoDecoder.VideoDecoder'
current QoS proportion, or 'Nothing' -}
-> m Double
{- ^ __Returns:__ The current QoS proportion. -}
videoDecoderGetQosProportion decoder = liftIO $ do
decoder' <- unsafeManagedPtrCastPtr decoder
result <- gst_video_decoder_get_qos_proportion decoder'
let result' = realToFrac result
touchManagedPtr decoder
return result'
#if ENABLE_OVERLOADING
data VideoDecoderGetQosProportionMethodInfo
instance (signature ~ (m Double), MonadIO m, IsVideoDecoder a) => O.MethodInfo VideoDecoderGetQosProportionMethodInfo a signature where
overloadedMethod _ = videoDecoderGetQosProportion
#endif
-- method VideoDecoder::have_frame
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "decoder", argType = TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstVideoDecoder", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Gst", name = "FlowReturn"}))
-- throws : False
-- Skip return : False
foreign import ccall "gst_video_decoder_have_frame" gst_video_decoder_have_frame ::
Ptr VideoDecoder -> -- decoder : TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"})
IO CInt
{- |
Gathers all data collected for currently parsed frame, gathers corresponding
metadata and passes it along for further processing, i.e. /@handleFrame@/.
-}
videoDecoderHaveFrame ::
(B.CallStack.HasCallStack, MonadIO m, IsVideoDecoder a) =>
a
{- ^ /@decoder@/: a 'GI.GstVideo.Objects.VideoDecoder.VideoDecoder' -}
-> m Gst.Enums.FlowReturn
{- ^ __Returns:__ a 'GI.Gst.Enums.FlowReturn' -}
videoDecoderHaveFrame decoder = liftIO $ do
decoder' <- unsafeManagedPtrCastPtr decoder
result <- gst_video_decoder_have_frame decoder'
let result' = (toEnum . fromIntegral) result
touchManagedPtr decoder
return result'
#if ENABLE_OVERLOADING
data VideoDecoderHaveFrameMethodInfo
instance (signature ~ (m Gst.Enums.FlowReturn), MonadIO m, IsVideoDecoder a) => O.MethodInfo VideoDecoderHaveFrameMethodInfo a signature where
overloadedMethod _ = videoDecoderHaveFrame
#endif
-- method VideoDecoder::merge_tags
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "decoder", argType = TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstVideoDecoder", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "tags", argType = TInterface (Name {namespace = "Gst", name = "TagList"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "a #GstTagList to merge, or NULL to unset\n previously-set tags", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "mode", argType = TInterface (Name {namespace = "Gst", name = "TagMergeMode"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GstTagMergeMode to use, usually #GST_TAG_MERGE_REPLACE", 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_decoder_merge_tags" gst_video_decoder_merge_tags ::
Ptr VideoDecoder -> -- decoder : TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"})
Ptr Gst.TagList.TagList -> -- tags : TInterface (Name {namespace = "Gst", name = "TagList"})
CUInt -> -- mode : TInterface (Name {namespace = "Gst", name = "TagMergeMode"})
IO ()
{- |
Sets the audio decoder tags and how they should be merged with any
upstream stream tags. This will override any tags previously-set
with @/gst_audio_decoder_merge_tags()/@.
Note that this is provided for convenience, and the subclass is
not required to use this and can still do tag handling on its own.
MT safe.
-}
videoDecoderMergeTags ::
(B.CallStack.HasCallStack, MonadIO m, IsVideoDecoder a) =>
a
{- ^ /@decoder@/: a 'GI.GstVideo.Objects.VideoDecoder.VideoDecoder' -}
-> Maybe (Gst.TagList.TagList)
{- ^ /@tags@/: a 'GI.Gst.Structs.TagList.TagList' to merge, or NULL to unset
previously-set tags -}
-> Gst.Enums.TagMergeMode
{- ^ /@mode@/: the 'GI.Gst.Enums.TagMergeMode' to use, usually @/GST_TAG_MERGE_REPLACE/@ -}
-> m ()
videoDecoderMergeTags decoder tags mode = liftIO $ do
decoder' <- unsafeManagedPtrCastPtr decoder
maybeTags <- case tags of
Nothing -> return nullPtr
Just jTags -> do
jTags' <- unsafeManagedPtrGetPtr jTags
return jTags'
let mode' = (fromIntegral . fromEnum) mode
gst_video_decoder_merge_tags decoder' maybeTags mode'
touchManagedPtr decoder
whenJust tags touchManagedPtr
return ()
#if ENABLE_OVERLOADING
data VideoDecoderMergeTagsMethodInfo
instance (signature ~ (Maybe (Gst.TagList.TagList) -> Gst.Enums.TagMergeMode -> m ()), MonadIO m, IsVideoDecoder a) => O.MethodInfo VideoDecoderMergeTagsMethodInfo a signature where
overloadedMethod _ = videoDecoderMergeTags
#endif
-- method VideoDecoder::negotiate
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "decoder", argType = TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstVideoDecoder", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False
foreign import ccall "gst_video_decoder_negotiate" gst_video_decoder_negotiate ::
Ptr VideoDecoder -> -- decoder : TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"})
IO CInt
{- |
Negotiate with downstream elements to currently configured 'GI.GstVideo.Structs.VideoCodecState.VideoCodecState'.
Unmark GST_PAD_FLAG_NEED_RECONFIGURE in any case. But mark it again if
negotiate fails.
-}
videoDecoderNegotiate ::
(B.CallStack.HasCallStack, MonadIO m, IsVideoDecoder a) =>
a
{- ^ /@decoder@/: a 'GI.GstVideo.Objects.VideoDecoder.VideoDecoder' -}
-> m Bool
{- ^ __Returns:__ 'True' if the negotiation succeeded, else 'False'. -}
videoDecoderNegotiate decoder = liftIO $ do
decoder' <- unsafeManagedPtrCastPtr decoder
result <- gst_video_decoder_negotiate decoder'
let result' = (/= 0) result
touchManagedPtr decoder
return result'
#if ENABLE_OVERLOADING
data VideoDecoderNegotiateMethodInfo
instance (signature ~ (m Bool), MonadIO m, IsVideoDecoder a) => O.MethodInfo VideoDecoderNegotiateMethodInfo a signature where
overloadedMethod _ = videoDecoderNegotiate
#endif
-- method VideoDecoder::proxy_getcaps
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "decoder", argType = TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstVideoDecoder", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "caps", argType = TInterface (Name {namespace = "Gst", name = "Caps"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "initial caps", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "filter", argType = TInterface (Name {namespace = "Gst", name = "Caps"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "filter caps", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "Gst", name = "Caps"}))
-- throws : False
-- Skip return : False
foreign import ccall "gst_video_decoder_proxy_getcaps" gst_video_decoder_proxy_getcaps ::
Ptr VideoDecoder -> -- decoder : TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"})
Ptr Gst.Caps.Caps -> -- caps : TInterface (Name {namespace = "Gst", name = "Caps"})
Ptr Gst.Caps.Caps -> -- filter : TInterface (Name {namespace = "Gst", name = "Caps"})
IO (Ptr Gst.Caps.Caps)
{- |
Returns caps that express /@caps@/ (or sink template caps if /@caps@/ == NULL)
restricted to resolution\/format\/... combinations supported by downstream
elements.
/Since: 1.6/
-}
videoDecoderProxyGetcaps ::
(B.CallStack.HasCallStack, MonadIO m, IsVideoDecoder a) =>
a
{- ^ /@decoder@/: a 'GI.GstVideo.Objects.VideoDecoder.VideoDecoder' -}
-> Maybe (Gst.Caps.Caps)
{- ^ /@caps@/: initial caps -}
-> Maybe (Gst.Caps.Caps)
{- ^ /@filter@/: filter caps -}
-> m Gst.Caps.Caps
{- ^ __Returns:__ a 'GI.Gst.Structs.Caps.Caps' owned by caller -}
videoDecoderProxyGetcaps decoder caps filter = liftIO $ do
decoder' <- unsafeManagedPtrCastPtr decoder
maybeCaps <- case caps of
Nothing -> return nullPtr
Just jCaps -> do
jCaps' <- unsafeManagedPtrGetPtr jCaps
return jCaps'
maybeFilter <- case filter of
Nothing -> return nullPtr
Just jFilter -> do
jFilter' <- unsafeManagedPtrGetPtr jFilter
return jFilter'
result <- gst_video_decoder_proxy_getcaps decoder' maybeCaps maybeFilter
checkUnexpectedReturnNULL "videoDecoderProxyGetcaps" result
result' <- (wrapBoxed Gst.Caps.Caps) result
touchManagedPtr decoder
whenJust caps touchManagedPtr
whenJust filter touchManagedPtr
return result'
#if ENABLE_OVERLOADING
data VideoDecoderProxyGetcapsMethodInfo
instance (signature ~ (Maybe (Gst.Caps.Caps) -> Maybe (Gst.Caps.Caps) -> m Gst.Caps.Caps), MonadIO m, IsVideoDecoder a) => O.MethodInfo VideoDecoderProxyGetcapsMethodInfo a signature where
overloadedMethod _ = videoDecoderProxyGetcaps
#endif
-- method VideoDecoder::release_frame
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "dec", argType = TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstVideoDecoder", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "frame", argType = TInterface (Name {namespace = "GstVideo", name = "VideoCodecFrame"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GstVideoCodecFrame to release", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False
foreign import ccall "gst_video_decoder_release_frame" gst_video_decoder_release_frame ::
Ptr VideoDecoder -> -- dec : TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"})
Ptr GstVideo.VideoCodecFrame.VideoCodecFrame -> -- frame : TInterface (Name {namespace = "GstVideo", name = "VideoCodecFrame"})
IO ()
{- |
Similar to 'GI.GstVideo.Objects.VideoDecoder.videoDecoderDropFrame', but simply releases /@frame@/
without any processing other than removing it from list of pending frames,
after which it is considered finished and released.
/Since: 1.2.2/
-}
videoDecoderReleaseFrame ::
(B.CallStack.HasCallStack, MonadIO m, IsVideoDecoder a) =>
a
{- ^ /@dec@/: a 'GI.GstVideo.Objects.VideoDecoder.VideoDecoder' -}
-> GstVideo.VideoCodecFrame.VideoCodecFrame
{- ^ /@frame@/: the 'GI.GstVideo.Structs.VideoCodecFrame.VideoCodecFrame' to release -}
-> m ()
videoDecoderReleaseFrame dec frame = liftIO $ do
dec' <- unsafeManagedPtrCastPtr dec
frame' <- B.ManagedPtr.disownBoxed frame
gst_video_decoder_release_frame dec' frame'
touchManagedPtr dec
touchManagedPtr frame
return ()
#if ENABLE_OVERLOADING
data VideoDecoderReleaseFrameMethodInfo
instance (signature ~ (GstVideo.VideoCodecFrame.VideoCodecFrame -> m ()), MonadIO m, IsVideoDecoder a) => O.MethodInfo VideoDecoderReleaseFrameMethodInfo a signature where
overloadedMethod _ = videoDecoderReleaseFrame
#endif
-- method VideoDecoder::set_estimate_rate
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "dec", argType = TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstVideoDecoder", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "enabled", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "whether to enable byte to time conversion", 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_decoder_set_estimate_rate" gst_video_decoder_set_estimate_rate ::
Ptr VideoDecoder -> -- dec : TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"})
CInt -> -- enabled : TBasicType TBoolean
IO ()
{- |
Allows baseclass to perform byte to time estimated conversion.
-}
videoDecoderSetEstimateRate ::
(B.CallStack.HasCallStack, MonadIO m, IsVideoDecoder a) =>
a
{- ^ /@dec@/: a 'GI.GstVideo.Objects.VideoDecoder.VideoDecoder' -}
-> Bool
{- ^ /@enabled@/: whether to enable byte to time conversion -}
-> m ()
videoDecoderSetEstimateRate dec enabled = liftIO $ do
dec' <- unsafeManagedPtrCastPtr dec
let enabled' = (fromIntegral . fromEnum) enabled
gst_video_decoder_set_estimate_rate dec' enabled'
touchManagedPtr dec
return ()
#if ENABLE_OVERLOADING
data VideoDecoderSetEstimateRateMethodInfo
instance (signature ~ (Bool -> m ()), MonadIO m, IsVideoDecoder a) => O.MethodInfo VideoDecoderSetEstimateRateMethodInfo a signature where
overloadedMethod _ = videoDecoderSetEstimateRate
#endif
-- method VideoDecoder::set_interlaced_output_state
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "decoder", argType = TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstVideoDecoder", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "fmt", argType = TInterface (Name {namespace = "GstVideo", name = "VideoFormat"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstVideoFormat", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "mode", argType = TInterface (Name {namespace = "GstVideo", name = "VideoInterlaceMode"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GstVideoInterlaceMode", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "width", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The width in pixels", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "height", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The height in pixels", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "reference", argType = TInterface (Name {namespace = "GstVideo", name = "VideoCodecState"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "An optional reference #GstVideoCodecState", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "GstVideo", name = "VideoCodecState"}))
-- throws : False
-- Skip return : False
foreign import ccall "gst_video_decoder_set_interlaced_output_state" gst_video_decoder_set_interlaced_output_state ::
Ptr VideoDecoder -> -- decoder : TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"})
CUInt -> -- fmt : TInterface (Name {namespace = "GstVideo", name = "VideoFormat"})
CUInt -> -- mode : TInterface (Name {namespace = "GstVideo", name = "VideoInterlaceMode"})
Word32 -> -- width : TBasicType TUInt
Word32 -> -- height : TBasicType TUInt
Ptr GstVideo.VideoCodecState.VideoCodecState -> -- reference : TInterface (Name {namespace = "GstVideo", name = "VideoCodecState"})
IO (Ptr GstVideo.VideoCodecState.VideoCodecState)
{- |
Same as @/gst_video_decoder_set_output_state/@() but also allows you to also set
the interlacing mode.
/Since: 1.16./
-}
videoDecoderSetInterlacedOutputState ::
(B.CallStack.HasCallStack, MonadIO m, IsVideoDecoder a) =>
a
{- ^ /@decoder@/: a 'GI.GstVideo.Objects.VideoDecoder.VideoDecoder' -}
-> GstVideo.Enums.VideoFormat
{- ^ /@fmt@/: a 'GI.GstVideo.Enums.VideoFormat' -}
-> GstVideo.Enums.VideoInterlaceMode
{- ^ /@mode@/: A 'GI.GstVideo.Enums.VideoInterlaceMode' -}
-> Word32
{- ^ /@width@/: The width in pixels -}
-> Word32
{- ^ /@height@/: The height in pixels -}
-> Maybe (GstVideo.VideoCodecState.VideoCodecState)
{- ^ /@reference@/: An optional reference 'GI.GstVideo.Structs.VideoCodecState.VideoCodecState' -}
-> m GstVideo.VideoCodecState.VideoCodecState
{- ^ __Returns:__ the newly configured output state. -}
videoDecoderSetInterlacedOutputState decoder fmt mode width height reference = liftIO $ do
decoder' <- unsafeManagedPtrCastPtr decoder
let fmt' = (fromIntegral . fromEnum) fmt
let mode' = (fromIntegral . fromEnum) mode
maybeReference <- case reference of
Nothing -> return nullPtr
Just jReference -> do
jReference' <- unsafeManagedPtrGetPtr jReference
return jReference'
result <- gst_video_decoder_set_interlaced_output_state decoder' fmt' mode' width height maybeReference
checkUnexpectedReturnNULL "videoDecoderSetInterlacedOutputState" result
result' <- (wrapBoxed GstVideo.VideoCodecState.VideoCodecState) result
touchManagedPtr decoder
whenJust reference touchManagedPtr
return result'
#if ENABLE_OVERLOADING
data VideoDecoderSetInterlacedOutputStateMethodInfo
instance (signature ~ (GstVideo.Enums.VideoFormat -> GstVideo.Enums.VideoInterlaceMode -> Word32 -> Word32 -> Maybe (GstVideo.VideoCodecState.VideoCodecState) -> m GstVideo.VideoCodecState.VideoCodecState), MonadIO m, IsVideoDecoder a) => O.MethodInfo VideoDecoderSetInterlacedOutputStateMethodInfo a signature where
overloadedMethod _ = videoDecoderSetInterlacedOutputState
#endif
-- method VideoDecoder::set_latency
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "decoder", argType = TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstVideoDecoder", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "min_latency", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "minimum latency", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "max_latency", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "maximum latency", 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_decoder_set_latency" gst_video_decoder_set_latency ::
Ptr VideoDecoder -> -- decoder : TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"})
Word64 -> -- min_latency : TBasicType TUInt64
Word64 -> -- max_latency : TBasicType TUInt64
IO ()
{- |
Lets 'GI.GstVideo.Objects.VideoDecoder.VideoDecoder' sub-classes tell the baseclass what the decoder
latency is. Will also post a LATENCY message on the bus so the pipeline
can reconfigure its global latency.
-}
videoDecoderSetLatency ::
(B.CallStack.HasCallStack, MonadIO m, IsVideoDecoder a) =>
a
{- ^ /@decoder@/: a 'GI.GstVideo.Objects.VideoDecoder.VideoDecoder' -}
-> Word64
{- ^ /@minLatency@/: minimum latency -}
-> Word64
{- ^ /@maxLatency@/: maximum latency -}
-> m ()
videoDecoderSetLatency decoder minLatency maxLatency = liftIO $ do
decoder' <- unsafeManagedPtrCastPtr decoder
gst_video_decoder_set_latency decoder' minLatency maxLatency
touchManagedPtr decoder
return ()
#if ENABLE_OVERLOADING
data VideoDecoderSetLatencyMethodInfo
instance (signature ~ (Word64 -> Word64 -> m ()), MonadIO m, IsVideoDecoder a) => O.MethodInfo VideoDecoderSetLatencyMethodInfo a signature where
overloadedMethod _ = videoDecoderSetLatency
#endif
-- method VideoDecoder::set_max_errors
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "dec", argType = TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstVideoDecoder", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "num", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "max tolerated errors", 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_decoder_set_max_errors" gst_video_decoder_set_max_errors ::
Ptr VideoDecoder -> -- dec : TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"})
Int32 -> -- num : TBasicType TInt
IO ()
{- |
Sets numbers of tolerated decoder errors, where a tolerated one is then only
warned about, but more than tolerated will lead to fatal error. You can set
-1 for never returning fatal errors. Default is set to
GST_VIDEO_DECODER_MAX_ERRORS.
The \'-1\' option was added in 1.4
-}
videoDecoderSetMaxErrors ::
(B.CallStack.HasCallStack, MonadIO m, IsVideoDecoder a) =>
a
{- ^ /@dec@/: a 'GI.GstVideo.Objects.VideoDecoder.VideoDecoder' -}
-> Int32
{- ^ /@num@/: max tolerated errors -}
-> m ()
videoDecoderSetMaxErrors dec num = liftIO $ do
dec' <- unsafeManagedPtrCastPtr dec
gst_video_decoder_set_max_errors dec' num
touchManagedPtr dec
return ()
#if ENABLE_OVERLOADING
data VideoDecoderSetMaxErrorsMethodInfo
instance (signature ~ (Int32 -> m ()), MonadIO m, IsVideoDecoder a) => O.MethodInfo VideoDecoderSetMaxErrorsMethodInfo a signature where
overloadedMethod _ = videoDecoderSetMaxErrors
#endif
-- method VideoDecoder::set_needs_format
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "dec", argType = TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstVideoDecoder", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "enabled", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "new state", 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_decoder_set_needs_format" gst_video_decoder_set_needs_format ::
Ptr VideoDecoder -> -- dec : TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"})
CInt -> -- enabled : TBasicType TBoolean
IO ()
{- |
Configures decoder format needs. If enabled, subclass needs to be
negotiated with format caps before it can process any data. It will then
never be handed any data before it has been configured.
Otherwise, it might be handed data without having been configured and
is then expected being able to do so either by default
or based on the input data.
/Since: 1.4/
-}
videoDecoderSetNeedsFormat ::
(B.CallStack.HasCallStack, MonadIO m, IsVideoDecoder a) =>
a
{- ^ /@dec@/: a 'GI.GstVideo.Objects.VideoDecoder.VideoDecoder' -}
-> Bool
{- ^ /@enabled@/: new state -}
-> m ()
videoDecoderSetNeedsFormat dec enabled = liftIO $ do
dec' <- unsafeManagedPtrCastPtr dec
let enabled' = (fromIntegral . fromEnum) enabled
gst_video_decoder_set_needs_format dec' enabled'
touchManagedPtr dec
return ()
#if ENABLE_OVERLOADING
data VideoDecoderSetNeedsFormatMethodInfo
instance (signature ~ (Bool -> m ()), MonadIO m, IsVideoDecoder a) => O.MethodInfo VideoDecoderSetNeedsFormatMethodInfo a signature where
overloadedMethod _ = videoDecoderSetNeedsFormat
#endif
-- method VideoDecoder::set_output_state
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "decoder", argType = TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstVideoDecoder", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "fmt", argType = TInterface (Name {namespace = "GstVideo", name = "VideoFormat"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstVideoFormat", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "width", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The width in pixels", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "height", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The height in pixels", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "reference", argType = TInterface (Name {namespace = "GstVideo", name = "VideoCodecState"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "An optional reference #GstVideoCodecState", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TInterface (Name {namespace = "GstVideo", name = "VideoCodecState"}))
-- throws : False
-- Skip return : False
foreign import ccall "gst_video_decoder_set_output_state" gst_video_decoder_set_output_state ::
Ptr VideoDecoder -> -- decoder : TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"})
CUInt -> -- fmt : TInterface (Name {namespace = "GstVideo", name = "VideoFormat"})
Word32 -> -- width : TBasicType TUInt
Word32 -> -- height : TBasicType TUInt
Ptr GstVideo.VideoCodecState.VideoCodecState -> -- reference : TInterface (Name {namespace = "GstVideo", name = "VideoCodecState"})
IO (Ptr GstVideo.VideoCodecState.VideoCodecState)
{- |
Creates a new 'GI.GstVideo.Structs.VideoCodecState.VideoCodecState' with the specified /@fmt@/, /@width@/ and /@height@/
as the output state for the decoder.
Any previously set output state on /@decoder@/ will be replaced by the newly
created one.
If the subclass wishes to copy over existing fields (like pixel aspec ratio,
or framerate) from an existing 'GI.GstVideo.Structs.VideoCodecState.VideoCodecState', it can be provided as a
/@reference@/.
If the subclass wishes to override some fields from the output state (like
pixel-aspect-ratio or framerate) it can do so on the returned 'GI.GstVideo.Structs.VideoCodecState.VideoCodecState'.
The new output state will only take effect (set on pads and buffers) starting
from the next call to @/gst_video_decoder_finish_frame/@().
-}
videoDecoderSetOutputState ::
(B.CallStack.HasCallStack, MonadIO m, IsVideoDecoder a) =>
a
{- ^ /@decoder@/: a 'GI.GstVideo.Objects.VideoDecoder.VideoDecoder' -}
-> GstVideo.Enums.VideoFormat
{- ^ /@fmt@/: a 'GI.GstVideo.Enums.VideoFormat' -}
-> Word32
{- ^ /@width@/: The width in pixels -}
-> Word32
{- ^ /@height@/: The height in pixels -}
-> Maybe (GstVideo.VideoCodecState.VideoCodecState)
{- ^ /@reference@/: An optional reference 'GI.GstVideo.Structs.VideoCodecState.VideoCodecState' -}
-> m GstVideo.VideoCodecState.VideoCodecState
{- ^ __Returns:__ the newly configured output state. -}
videoDecoderSetOutputState decoder fmt width height reference = liftIO $ do
decoder' <- unsafeManagedPtrCastPtr decoder
let fmt' = (fromIntegral . fromEnum) fmt
maybeReference <- case reference of
Nothing -> return nullPtr
Just jReference -> do
jReference' <- unsafeManagedPtrGetPtr jReference
return jReference'
result <- gst_video_decoder_set_output_state decoder' fmt' width height maybeReference
checkUnexpectedReturnNULL "videoDecoderSetOutputState" result
result' <- (wrapBoxed GstVideo.VideoCodecState.VideoCodecState) result
touchManagedPtr decoder
whenJust reference touchManagedPtr
return result'
#if ENABLE_OVERLOADING
data VideoDecoderSetOutputStateMethodInfo
instance (signature ~ (GstVideo.Enums.VideoFormat -> Word32 -> Word32 -> Maybe (GstVideo.VideoCodecState.VideoCodecState) -> m GstVideo.VideoCodecState.VideoCodecState), MonadIO m, IsVideoDecoder a) => O.MethodInfo VideoDecoderSetOutputStateMethodInfo a signature where
overloadedMethod _ = videoDecoderSetOutputState
#endif
-- method VideoDecoder::set_packetized
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "decoder", argType = TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstVideoDecoder", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "packetized", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "whether the input data should be considered as packetized.", 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_decoder_set_packetized" gst_video_decoder_set_packetized ::
Ptr VideoDecoder -> -- decoder : TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"})
CInt -> -- packetized : TBasicType TBoolean
IO ()
{- |
Allows baseclass to consider input data as packetized or not. If the
input is packetized, then the /@parse@/ method will not be called.
-}
videoDecoderSetPacketized ::
(B.CallStack.HasCallStack, MonadIO m, IsVideoDecoder a) =>
a
{- ^ /@decoder@/: a 'GI.GstVideo.Objects.VideoDecoder.VideoDecoder' -}
-> Bool
{- ^ /@packetized@/: whether the input data should be considered as packetized. -}
-> m ()
videoDecoderSetPacketized decoder packetized = liftIO $ do
decoder' <- unsafeManagedPtrCastPtr decoder
let packetized' = (fromIntegral . fromEnum) packetized
gst_video_decoder_set_packetized decoder' packetized'
touchManagedPtr decoder
return ()
#if ENABLE_OVERLOADING
data VideoDecoderSetPacketizedMethodInfo
instance (signature ~ (Bool -> m ()), MonadIO m, IsVideoDecoder a) => O.MethodInfo VideoDecoderSetPacketizedMethodInfo a signature where
overloadedMethod _ = videoDecoderSetPacketized
#endif
-- method VideoDecoder::set_use_default_pad_acceptcaps
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "decoder", argType = TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstVideoDecoder", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "use", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "if the default pad accept-caps query handling should be used", 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_decoder_set_use_default_pad_acceptcaps" gst_video_decoder_set_use_default_pad_acceptcaps ::
Ptr VideoDecoder -> -- decoder : TInterface (Name {namespace = "GstVideo", name = "VideoDecoder"})
CInt -> -- use : TBasicType TBoolean
IO ()
{- |
Lets 'GI.GstVideo.Objects.VideoDecoder.VideoDecoder' sub-classes decide if they want the sink pad
to use the default pad query handler to reply to accept-caps queries.
By setting this to true it is possible to further customize the default
handler with @/GST_PAD_SET_ACCEPT_INTERSECT/@ and
@/GST_PAD_SET_ACCEPT_TEMPLATE/@
/Since: 1.6/
-}
videoDecoderSetUseDefaultPadAcceptcaps ::
(B.CallStack.HasCallStack, MonadIO m, IsVideoDecoder a) =>
a
{- ^ /@decoder@/: a 'GI.GstVideo.Objects.VideoDecoder.VideoDecoder' -}
-> Bool
{- ^ /@use@/: if the default pad accept-caps query handling should be used -}
-> m ()
videoDecoderSetUseDefaultPadAcceptcaps decoder use = liftIO $ do
decoder' <- unsafeManagedPtrCastPtr decoder
let use' = (fromIntegral . fromEnum) use
gst_video_decoder_set_use_default_pad_acceptcaps decoder' use'
touchManagedPtr decoder
return ()
#if ENABLE_OVERLOADING
data VideoDecoderSetUseDefaultPadAcceptcapsMethodInfo
instance (signature ~ (Bool -> m ()), MonadIO m, IsVideoDecoder a) => O.MethodInfo VideoDecoderSetUseDefaultPadAcceptcapsMethodInfo a signature where
overloadedMethod _ = videoDecoderSetUseDefaultPadAcceptcaps
#endif