gi-gstbase-1.0.18: GI/GstBase/Objects/BaseSrc.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 is a generic base class for source elements. The following
types of sources are supported:
* random access sources like files
* seekable sources
* live sources
The source can be configured to operate in any 'GI.Gst.Enums.Format' with the
'GI.GstBase.Objects.BaseSrc.baseSrcSetFormat' method. The currently set format determines
the format of the internal 'GI.Gst.Structs.Segment.Segment' and any 'GI.Gst.Enums.EventTypeSegment'
events. The default format for 'GI.GstBase.Objects.BaseSrc.BaseSrc' is 'GI.Gst.Enums.FormatBytes'.
'GI.GstBase.Objects.BaseSrc.BaseSrc' always supports push mode scheduling. If the following
conditions are met, it also supports pull mode scheduling:
* The format is set to 'GI.Gst.Enums.FormatBytes' (default).
* 'GI.GstBase.Structs.BaseSrcClass.BaseSrcClass'.@/is_seekable/@() returns 'True'.
If all the conditions are met for operating in pull mode, 'GI.GstBase.Objects.BaseSrc.BaseSrc' is
automatically seekable in push mode as well. The following conditions must
be met to make the element seekable in push mode when the format is not
'GI.Gst.Enums.FormatBytes':
* 'GI.GstBase.Structs.BaseSrcClass.BaseSrcClass'.@/is_seekable/@() returns 'True'.
* 'GI.GstBase.Structs.BaseSrcClass.BaseSrcClass'.@/query/@() can convert all supported seek formats to the
internal format as set with 'GI.GstBase.Objects.BaseSrc.baseSrcSetFormat'.
* 'GI.GstBase.Structs.BaseSrcClass.BaseSrcClass'.@/do_seek/@() is implemented, performs the seek and returns
'True'.
When the element does not meet the requirements to operate in pull mode, the
offset and length in the 'GI.GstBase.Structs.BaseSrcClass.BaseSrcClass'.@/create/@() method should be ignored.
It is recommended to subclass 'GI.GstBase.Objects.PushSrc.PushSrc' instead, in this situation. If the
element can operate in pull mode but only with specific offsets and
lengths, it is allowed to generate an error when the wrong values are passed
to the 'GI.GstBase.Structs.BaseSrcClass.BaseSrcClass'.@/create/@() function.
'GI.GstBase.Objects.BaseSrc.BaseSrc' has support for live sources. Live sources are sources that when
paused discard data, such as audio or video capture devices. A typical live
source also produces data at a fixed rate and thus provides a clock to publish
this rate.
Use 'GI.GstBase.Objects.BaseSrc.baseSrcSetLive' to activate the live source mode.
A live source does not produce data in the PAUSED state. This means that the
'GI.GstBase.Structs.BaseSrcClass.BaseSrcClass'.@/create/@() method will not be called in PAUSED but only in
PLAYING. To signal the pipeline that the element will not produce data, the
return value from the READY to PAUSED state will be
'GI.Gst.Enums.StateChangeReturnNoPreroll'.
A typical live source will timestamp the buffers it creates with the
current running time of the pipeline. This is one reason why a live source
can only produce data in the PLAYING state, when the clock is actually
distributed and running.
Live sources that synchronize and block on the clock (an audio source, for
example) can use 'GI.GstBase.Objects.BaseSrc.baseSrcWaitPlaying' when the
'GI.GstBase.Structs.BaseSrcClass.BaseSrcClass'.@/create/@() function was interrupted by a state change to
PAUSED.
The 'GI.GstBase.Structs.BaseSrcClass.BaseSrcClass'.@/get_times/@() method can be used to implement pseudo-live
sources. It only makes sense to implement the 'GI.GstBase.Structs.BaseSrcClass.BaseSrcClass'.@/get_times/@()
function if the source is a live source. The 'GI.GstBase.Structs.BaseSrcClass.BaseSrcClass'.@/get_times/@()
function should return timestamps starting from 0, as if it were a non-live
source. The base class will make sure that the timestamps are transformed
into the current running_time. The base source will then wait for the
calculated running_time before pushing out the buffer.
For live sources, the base class will by default report a latency of 0.
For pseudo live sources, the base class will by default measure the difference
between the first buffer timestamp and the start time of get_times and will
report this value as the latency.
Subclasses should override the query function when this behaviour is not
acceptable.
There is only support in 'GI.GstBase.Objects.BaseSrc.BaseSrc' for exactly one source pad, which
should be named \"src\". A source implementation (subclass of 'GI.GstBase.Objects.BaseSrc.BaseSrc')
should install a pad template in its class_init function, like so:
=== /C code/
>
>static void
>my_element_class_init (GstMyElementClass *klass)
>{
> GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass);
> // srctemplate should be a #GstStaticPadTemplate with direction
> // %GST_PAD_SRC and name "src"
> gst_element_class_add_static_pad_template (gstelement_class, &srctemplate);
>
> gst_element_class_set_static_metadata (gstelement_class,
> "Source name",
> "Source",
> "My Source element",
> "The author <my.sink@my.email>");
>}
== Controlled shutdown of live sources in applications
Applications that record from a live source may want to stop recording
in a controlled way, so that the recording is stopped, but the data
already in the pipeline is processed to the end (remember that many live
sources would go on recording forever otherwise). For that to happen the
application needs to make the source stop recording and send an EOS
event down the pipeline. The application would then wait for an
EOS message posted on the pipeline\'s bus to know when all data has
been processed and the pipeline can safely be stopped.
An application may send an EOS event to a source element to make it
perform the EOS logic (send EOS event downstream or post a
'GI.Gst.Flags.MessageTypeSegmentDone' on the bus). This can typically be done
with the 'GI.Gst.Objects.Element.elementSendEvent' function on the element or its parent bin.
After the EOS has been sent to the element, the application should wait for
an EOS message to be posted on the pipeline\'s bus. Once this EOS message is
received, it may safely shut down the entire pipeline.
-}
#define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \
&& !defined(__HADDOCK_VERSION__))
module GI.GstBase.Objects.BaseSrc
(
-- * Exported types
BaseSrc(..) ,
IsBaseSrc ,
toBaseSrc ,
noBaseSrc ,
-- * Methods
-- ** getAllocator #method:getAllocator#
#if ENABLE_OVERLOADING
BaseSrcGetAllocatorMethodInfo ,
#endif
baseSrcGetAllocator ,
-- ** getBlocksize #method:getBlocksize#
#if ENABLE_OVERLOADING
BaseSrcGetBlocksizeMethodInfo ,
#endif
baseSrcGetBlocksize ,
-- ** getBufferPool #method:getBufferPool#
#if ENABLE_OVERLOADING
BaseSrcGetBufferPoolMethodInfo ,
#endif
baseSrcGetBufferPool ,
-- ** getDoTimestamp #method:getDoTimestamp#
#if ENABLE_OVERLOADING
BaseSrcGetDoTimestampMethodInfo ,
#endif
baseSrcGetDoTimestamp ,
-- ** isAsync #method:isAsync#
#if ENABLE_OVERLOADING
BaseSrcIsAsyncMethodInfo ,
#endif
baseSrcIsAsync ,
-- ** isLive #method:isLive#
#if ENABLE_OVERLOADING
BaseSrcIsLiveMethodInfo ,
#endif
baseSrcIsLive ,
-- ** newSeamlessSegment #method:newSeamlessSegment#
#if ENABLE_OVERLOADING
BaseSrcNewSeamlessSegmentMethodInfo ,
#endif
baseSrcNewSeamlessSegment ,
-- ** queryLatency #method:queryLatency#
#if ENABLE_OVERLOADING
BaseSrcQueryLatencyMethodInfo ,
#endif
baseSrcQueryLatency ,
-- ** setAsync #method:setAsync#
#if ENABLE_OVERLOADING
BaseSrcSetAsyncMethodInfo ,
#endif
baseSrcSetAsync ,
-- ** setAutomaticEos #method:setAutomaticEos#
#if ENABLE_OVERLOADING
BaseSrcSetAutomaticEosMethodInfo ,
#endif
baseSrcSetAutomaticEos ,
-- ** setBlocksize #method:setBlocksize#
#if ENABLE_OVERLOADING
BaseSrcSetBlocksizeMethodInfo ,
#endif
baseSrcSetBlocksize ,
-- ** setCaps #method:setCaps#
#if ENABLE_OVERLOADING
BaseSrcSetCapsMethodInfo ,
#endif
baseSrcSetCaps ,
-- ** setDoTimestamp #method:setDoTimestamp#
#if ENABLE_OVERLOADING
BaseSrcSetDoTimestampMethodInfo ,
#endif
baseSrcSetDoTimestamp ,
-- ** setDynamicSize #method:setDynamicSize#
#if ENABLE_OVERLOADING
BaseSrcSetDynamicSizeMethodInfo ,
#endif
baseSrcSetDynamicSize ,
-- ** setFormat #method:setFormat#
#if ENABLE_OVERLOADING
BaseSrcSetFormatMethodInfo ,
#endif
baseSrcSetFormat ,
-- ** setLive #method:setLive#
#if ENABLE_OVERLOADING
BaseSrcSetLiveMethodInfo ,
#endif
baseSrcSetLive ,
-- ** startComplete #method:startComplete#
#if ENABLE_OVERLOADING
BaseSrcStartCompleteMethodInfo ,
#endif
baseSrcStartComplete ,
-- ** startWait #method:startWait#
#if ENABLE_OVERLOADING
BaseSrcStartWaitMethodInfo ,
#endif
baseSrcStartWait ,
-- ** submitBufferList #method:submitBufferList#
#if ENABLE_OVERLOADING
BaseSrcSubmitBufferListMethodInfo ,
#endif
baseSrcSubmitBufferList ,
-- ** waitPlaying #method:waitPlaying#
#if ENABLE_OVERLOADING
BaseSrcWaitPlayingMethodInfo ,
#endif
baseSrcWaitPlaying ,
-- * Properties
-- ** blocksize #attr:blocksize#
{- | /No description available in the introspection data./
-}
#if ENABLE_OVERLOADING
BaseSrcBlocksizePropertyInfo ,
#endif
#if ENABLE_OVERLOADING
baseSrcBlocksize ,
#endif
constructBaseSrcBlocksize ,
getBaseSrcBlocksize ,
setBaseSrcBlocksize ,
-- ** doTimestamp #attr:doTimestamp#
{- | /No description available in the introspection data./
-}
#if ENABLE_OVERLOADING
BaseSrcDoTimestampPropertyInfo ,
#endif
#if ENABLE_OVERLOADING
baseSrcDoTimestamp ,
#endif
constructBaseSrcDoTimestamp ,
getBaseSrcDoTimestamp ,
setBaseSrcDoTimestamp ,
-- ** numBuffers #attr:numBuffers#
{- | /No description available in the introspection data./
-}
#if ENABLE_OVERLOADING
BaseSrcNumBuffersPropertyInfo ,
#endif
#if ENABLE_OVERLOADING
baseSrcNumBuffers ,
#endif
constructBaseSrcNumBuffers ,
getBaseSrcNumBuffers ,
setBaseSrcNumBuffers ,
-- ** typefind #attr:typefind#
{- | /No description available in the introspection data./
-}
#if ENABLE_OVERLOADING
BaseSrcTypefindPropertyInfo ,
#endif
#if ENABLE_OVERLOADING
baseSrcTypefind ,
#endif
constructBaseSrcTypefind ,
getBaseSrcTypefind ,
setBaseSrcTypefind ,
) 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.BufferList as Gst.BufferList
import qualified GI.Gst.Structs.Caps as Gst.Caps
-- | Memory-managed wrapper type.
newtype BaseSrc = BaseSrc (ManagedPtr BaseSrc)
foreign import ccall "gst_base_src_get_type"
c_gst_base_src_get_type :: IO GType
instance GObject BaseSrc where
gobjectType = c_gst_base_src_get_type
-- | Type class for types which can be safely cast to `BaseSrc`, for instance with `toBaseSrc`.
class (GObject o, O.IsDescendantOf BaseSrc o) => IsBaseSrc o
instance (GObject o, O.IsDescendantOf BaseSrc o) => IsBaseSrc o
instance O.HasParentTypes BaseSrc
type instance O.ParentTypes BaseSrc = '[Gst.Element.Element, Gst.Object.Object, GObject.Object.Object]
-- | Cast to `BaseSrc`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`.
toBaseSrc :: (MonadIO m, IsBaseSrc o) => o -> m BaseSrc
toBaseSrc = liftIO . unsafeCastTo BaseSrc
-- | A convenience alias for `Nothing` :: `Maybe` `BaseSrc`.
noBaseSrc :: Maybe BaseSrc
noBaseSrc = Nothing
#if ENABLE_OVERLOADING
type family ResolveBaseSrcMethod (t :: Symbol) (o :: *) :: * where
ResolveBaseSrcMethod "abortState" o = Gst.Element.ElementAbortStateMethodInfo
ResolveBaseSrcMethod "addControlBinding" o = Gst.Object.ObjectAddControlBindingMethodInfo
ResolveBaseSrcMethod "addPad" o = Gst.Element.ElementAddPadMethodInfo
ResolveBaseSrcMethod "addPropertyDeepNotifyWatch" o = Gst.Element.ElementAddPropertyDeepNotifyWatchMethodInfo
ResolveBaseSrcMethod "addPropertyNotifyWatch" o = Gst.Element.ElementAddPropertyNotifyWatchMethodInfo
ResolveBaseSrcMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
ResolveBaseSrcMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
ResolveBaseSrcMethod "callAsync" o = Gst.Element.ElementCallAsyncMethodInfo
ResolveBaseSrcMethod "changeState" o = Gst.Element.ElementChangeStateMethodInfo
ResolveBaseSrcMethod "continueState" o = Gst.Element.ElementContinueStateMethodInfo
ResolveBaseSrcMethod "createAllPads" o = Gst.Element.ElementCreateAllPadsMethodInfo
ResolveBaseSrcMethod "defaultError" o = Gst.Object.ObjectDefaultErrorMethodInfo
ResolveBaseSrcMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
ResolveBaseSrcMethod "foreachPad" o = Gst.Element.ElementForeachPadMethodInfo
ResolveBaseSrcMethod "foreachSinkPad" o = Gst.Element.ElementForeachSinkPadMethodInfo
ResolveBaseSrcMethod "foreachSrcPad" o = Gst.Element.ElementForeachSrcPadMethodInfo
ResolveBaseSrcMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
ResolveBaseSrcMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
ResolveBaseSrcMethod "hasActiveControlBindings" o = Gst.Object.ObjectHasActiveControlBindingsMethodInfo
ResolveBaseSrcMethod "hasAncestor" o = Gst.Object.ObjectHasAncestorMethodInfo
ResolveBaseSrcMethod "hasAsAncestor" o = Gst.Object.ObjectHasAsAncestorMethodInfo
ResolveBaseSrcMethod "hasAsParent" o = Gst.Object.ObjectHasAsParentMethodInfo
ResolveBaseSrcMethod "isAsync" o = BaseSrcIsAsyncMethodInfo
ResolveBaseSrcMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
ResolveBaseSrcMethod "isLive" o = BaseSrcIsLiveMethodInfo
ResolveBaseSrcMethod "isLockedState" o = Gst.Element.ElementIsLockedStateMethodInfo
ResolveBaseSrcMethod "iteratePads" o = Gst.Element.ElementIteratePadsMethodInfo
ResolveBaseSrcMethod "iterateSinkPads" o = Gst.Element.ElementIterateSinkPadsMethodInfo
ResolveBaseSrcMethod "iterateSrcPads" o = Gst.Element.ElementIterateSrcPadsMethodInfo
ResolveBaseSrcMethod "link" o = Gst.Element.ElementLinkMethodInfo
ResolveBaseSrcMethod "linkFiltered" o = Gst.Element.ElementLinkFilteredMethodInfo
ResolveBaseSrcMethod "linkPads" o = Gst.Element.ElementLinkPadsMethodInfo
ResolveBaseSrcMethod "linkPadsFiltered" o = Gst.Element.ElementLinkPadsFilteredMethodInfo
ResolveBaseSrcMethod "linkPadsFull" o = Gst.Element.ElementLinkPadsFullMethodInfo
ResolveBaseSrcMethod "lostState" o = Gst.Element.ElementLostStateMethodInfo
ResolveBaseSrcMethod "messageFull" o = Gst.Element.ElementMessageFullMethodInfo
ResolveBaseSrcMethod "messageFullWithDetails" o = Gst.Element.ElementMessageFullWithDetailsMethodInfo
ResolveBaseSrcMethod "newSeamlessSegment" o = BaseSrcNewSeamlessSegmentMethodInfo
ResolveBaseSrcMethod "noMorePads" o = Gst.Element.ElementNoMorePadsMethodInfo
ResolveBaseSrcMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
ResolveBaseSrcMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
ResolveBaseSrcMethod "postMessage" o = Gst.Element.ElementPostMessageMethodInfo
ResolveBaseSrcMethod "provideClock" o = Gst.Element.ElementProvideClockMethodInfo
ResolveBaseSrcMethod "query" o = Gst.Element.ElementQueryMethodInfo
ResolveBaseSrcMethod "queryConvert" o = Gst.Element.ElementQueryConvertMethodInfo
ResolveBaseSrcMethod "queryDuration" o = Gst.Element.ElementQueryDurationMethodInfo
ResolveBaseSrcMethod "queryLatency" o = BaseSrcQueryLatencyMethodInfo
ResolveBaseSrcMethod "queryPosition" o = Gst.Element.ElementQueryPositionMethodInfo
ResolveBaseSrcMethod "ref" o = Gst.Object.ObjectRefMethodInfo
ResolveBaseSrcMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
ResolveBaseSrcMethod "releaseRequestPad" o = Gst.Element.ElementReleaseRequestPadMethodInfo
ResolveBaseSrcMethod "removeControlBinding" o = Gst.Object.ObjectRemoveControlBindingMethodInfo
ResolveBaseSrcMethod "removePad" o = Gst.Element.ElementRemovePadMethodInfo
ResolveBaseSrcMethod "removePropertyNotifyWatch" o = Gst.Element.ElementRemovePropertyNotifyWatchMethodInfo
ResolveBaseSrcMethod "requestPad" o = Gst.Element.ElementRequestPadMethodInfo
ResolveBaseSrcMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
ResolveBaseSrcMethod "seek" o = Gst.Element.ElementSeekMethodInfo
ResolveBaseSrcMethod "seekSimple" o = Gst.Element.ElementSeekSimpleMethodInfo
ResolveBaseSrcMethod "sendEvent" o = Gst.Element.ElementSendEventMethodInfo
ResolveBaseSrcMethod "startComplete" o = BaseSrcStartCompleteMethodInfo
ResolveBaseSrcMethod "startWait" o = BaseSrcStartWaitMethodInfo
ResolveBaseSrcMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
ResolveBaseSrcMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
ResolveBaseSrcMethod "submitBufferList" o = BaseSrcSubmitBufferListMethodInfo
ResolveBaseSrcMethod "suggestNextSync" o = Gst.Object.ObjectSuggestNextSyncMethodInfo
ResolveBaseSrcMethod "syncStateWithParent" o = Gst.Element.ElementSyncStateWithParentMethodInfo
ResolveBaseSrcMethod "syncValues" o = Gst.Object.ObjectSyncValuesMethodInfo
ResolveBaseSrcMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
ResolveBaseSrcMethod "unlink" o = Gst.Element.ElementUnlinkMethodInfo
ResolveBaseSrcMethod "unlinkPads" o = Gst.Element.ElementUnlinkPadsMethodInfo
ResolveBaseSrcMethod "unparent" o = Gst.Object.ObjectUnparentMethodInfo
ResolveBaseSrcMethod "unref" o = Gst.Object.ObjectUnrefMethodInfo
ResolveBaseSrcMethod "waitPlaying" o = BaseSrcWaitPlayingMethodInfo
ResolveBaseSrcMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
ResolveBaseSrcMethod "getAllocator" o = BaseSrcGetAllocatorMethodInfo
ResolveBaseSrcMethod "getBaseTime" o = Gst.Element.ElementGetBaseTimeMethodInfo
ResolveBaseSrcMethod "getBlocksize" o = BaseSrcGetBlocksizeMethodInfo
ResolveBaseSrcMethod "getBufferPool" o = BaseSrcGetBufferPoolMethodInfo
ResolveBaseSrcMethod "getBus" o = Gst.Element.ElementGetBusMethodInfo
ResolveBaseSrcMethod "getClock" o = Gst.Element.ElementGetClockMethodInfo
ResolveBaseSrcMethod "getCompatiblePad" o = Gst.Element.ElementGetCompatiblePadMethodInfo
ResolveBaseSrcMethod "getCompatiblePadTemplate" o = Gst.Element.ElementGetCompatiblePadTemplateMethodInfo
ResolveBaseSrcMethod "getContext" o = Gst.Element.ElementGetContextMethodInfo
ResolveBaseSrcMethod "getContextUnlocked" o = Gst.Element.ElementGetContextUnlockedMethodInfo
ResolveBaseSrcMethod "getContexts" o = Gst.Element.ElementGetContextsMethodInfo
ResolveBaseSrcMethod "getControlBinding" o = Gst.Object.ObjectGetControlBindingMethodInfo
ResolveBaseSrcMethod "getControlRate" o = Gst.Object.ObjectGetControlRateMethodInfo
ResolveBaseSrcMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
ResolveBaseSrcMethod "getDoTimestamp" o = BaseSrcGetDoTimestampMethodInfo
ResolveBaseSrcMethod "getFactory" o = Gst.Element.ElementGetFactoryMethodInfo
ResolveBaseSrcMethod "getGValueArray" o = Gst.Object.ObjectGetGValueArrayMethodInfo
ResolveBaseSrcMethod "getMetadata" o = Gst.Element.ElementGetMetadataMethodInfo
ResolveBaseSrcMethod "getName" o = Gst.Object.ObjectGetNameMethodInfo
ResolveBaseSrcMethod "getPadTemplate" o = Gst.Element.ElementGetPadTemplateMethodInfo
ResolveBaseSrcMethod "getPadTemplateList" o = Gst.Element.ElementGetPadTemplateListMethodInfo
ResolveBaseSrcMethod "getParent" o = Gst.Object.ObjectGetParentMethodInfo
ResolveBaseSrcMethod "getPathString" o = Gst.Object.ObjectGetPathStringMethodInfo
ResolveBaseSrcMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
ResolveBaseSrcMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
ResolveBaseSrcMethod "getRequestPad" o = Gst.Element.ElementGetRequestPadMethodInfo
ResolveBaseSrcMethod "getStartTime" o = Gst.Element.ElementGetStartTimeMethodInfo
ResolveBaseSrcMethod "getState" o = Gst.Element.ElementGetStateMethodInfo
ResolveBaseSrcMethod "getStaticPad" o = Gst.Element.ElementGetStaticPadMethodInfo
ResolveBaseSrcMethod "getValue" o = Gst.Object.ObjectGetValueMethodInfo
ResolveBaseSrcMethod "setAsync" o = BaseSrcSetAsyncMethodInfo
ResolveBaseSrcMethod "setAutomaticEos" o = BaseSrcSetAutomaticEosMethodInfo
ResolveBaseSrcMethod "setBaseTime" o = Gst.Element.ElementSetBaseTimeMethodInfo
ResolveBaseSrcMethod "setBlocksize" o = BaseSrcSetBlocksizeMethodInfo
ResolveBaseSrcMethod "setBus" o = Gst.Element.ElementSetBusMethodInfo
ResolveBaseSrcMethod "setCaps" o = BaseSrcSetCapsMethodInfo
ResolveBaseSrcMethod "setClock" o = Gst.Element.ElementSetClockMethodInfo
ResolveBaseSrcMethod "setContext" o = Gst.Element.ElementSetContextMethodInfo
ResolveBaseSrcMethod "setControlBindingDisabled" o = Gst.Object.ObjectSetControlBindingDisabledMethodInfo
ResolveBaseSrcMethod "setControlBindingsDisabled" o = Gst.Object.ObjectSetControlBindingsDisabledMethodInfo
ResolveBaseSrcMethod "setControlRate" o = Gst.Object.ObjectSetControlRateMethodInfo
ResolveBaseSrcMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
ResolveBaseSrcMethod "setDoTimestamp" o = BaseSrcSetDoTimestampMethodInfo
ResolveBaseSrcMethod "setDynamicSize" o = BaseSrcSetDynamicSizeMethodInfo
ResolveBaseSrcMethod "setFormat" o = BaseSrcSetFormatMethodInfo
ResolveBaseSrcMethod "setLive" o = BaseSrcSetLiveMethodInfo
ResolveBaseSrcMethod "setLockedState" o = Gst.Element.ElementSetLockedStateMethodInfo
ResolveBaseSrcMethod "setName" o = Gst.Object.ObjectSetNameMethodInfo
ResolveBaseSrcMethod "setParent" o = Gst.Object.ObjectSetParentMethodInfo
ResolveBaseSrcMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
ResolveBaseSrcMethod "setStartTime" o = Gst.Element.ElementSetStartTimeMethodInfo
ResolveBaseSrcMethod "setState" o = Gst.Element.ElementSetStateMethodInfo
ResolveBaseSrcMethod l o = O.MethodResolutionFailed l o
instance (info ~ ResolveBaseSrcMethod t BaseSrc, O.MethodInfo info BaseSrc p) => OL.IsLabel t (BaseSrc -> p) where
#if MIN_VERSION_base(4,10,0)
fromLabel = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)
#else
fromLabel _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info)
#endif
#endif
-- VVV Prop "blocksize"
-- Type: TBasicType TUInt
-- Flags: [PropertyReadable,PropertyWritable]
-- Nullable: (Just False,Just False)
{- |
Get the value of the “@blocksize@” property.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
@
'Data.GI.Base.Attributes.get' baseSrc #blocksize
@
-}
getBaseSrcBlocksize :: (MonadIO m, IsBaseSrc o) => o -> m Word32
getBaseSrcBlocksize obj = liftIO $ B.Properties.getObjectPropertyUInt32 obj "blocksize"
{- |
Set the value of the “@blocksize@” property.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
@
'Data.GI.Base.Attributes.set' baseSrc [ #blocksize 'Data.GI.Base.Attributes.:=' value ]
@
-}
setBaseSrcBlocksize :: (MonadIO m, IsBaseSrc o) => o -> Word32 -> m ()
setBaseSrcBlocksize obj val = liftIO $ B.Properties.setObjectPropertyUInt32 obj "blocksize" val
{- |
Construct a `GValueConstruct` with valid value for the “@blocksize@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
-}
constructBaseSrcBlocksize :: (IsBaseSrc o) => Word32 -> IO (GValueConstruct o)
constructBaseSrcBlocksize val = B.Properties.constructObjectPropertyUInt32 "blocksize" val
#if ENABLE_OVERLOADING
data BaseSrcBlocksizePropertyInfo
instance AttrInfo BaseSrcBlocksizePropertyInfo where
type AttrAllowedOps BaseSrcBlocksizePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
type AttrSetTypeConstraint BaseSrcBlocksizePropertyInfo = (~) Word32
type AttrBaseTypeConstraint BaseSrcBlocksizePropertyInfo = IsBaseSrc
type AttrGetType BaseSrcBlocksizePropertyInfo = Word32
type AttrLabel BaseSrcBlocksizePropertyInfo = "blocksize"
type AttrOrigin BaseSrcBlocksizePropertyInfo = BaseSrc
attrGet _ = getBaseSrcBlocksize
attrSet _ = setBaseSrcBlocksize
attrConstruct _ = constructBaseSrcBlocksize
attrClear _ = undefined
#endif
-- VVV Prop "do-timestamp"
-- Type: TBasicType TBoolean
-- Flags: [PropertyReadable,PropertyWritable]
-- Nullable: (Just False,Just False)
{- |
Get the value of the “@do-timestamp@” property.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
@
'Data.GI.Base.Attributes.get' baseSrc #doTimestamp
@
-}
getBaseSrcDoTimestamp :: (MonadIO m, IsBaseSrc o) => o -> m Bool
getBaseSrcDoTimestamp obj = liftIO $ B.Properties.getObjectPropertyBool obj "do-timestamp"
{- |
Set the value of the “@do-timestamp@” property.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
@
'Data.GI.Base.Attributes.set' baseSrc [ #doTimestamp 'Data.GI.Base.Attributes.:=' value ]
@
-}
setBaseSrcDoTimestamp :: (MonadIO m, IsBaseSrc o) => o -> Bool -> m ()
setBaseSrcDoTimestamp obj val = liftIO $ B.Properties.setObjectPropertyBool obj "do-timestamp" val
{- |
Construct a `GValueConstruct` with valid value for the “@do-timestamp@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
-}
constructBaseSrcDoTimestamp :: (IsBaseSrc o) => Bool -> IO (GValueConstruct o)
constructBaseSrcDoTimestamp val = B.Properties.constructObjectPropertyBool "do-timestamp" val
#if ENABLE_OVERLOADING
data BaseSrcDoTimestampPropertyInfo
instance AttrInfo BaseSrcDoTimestampPropertyInfo where
type AttrAllowedOps BaseSrcDoTimestampPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
type AttrSetTypeConstraint BaseSrcDoTimestampPropertyInfo = (~) Bool
type AttrBaseTypeConstraint BaseSrcDoTimestampPropertyInfo = IsBaseSrc
type AttrGetType BaseSrcDoTimestampPropertyInfo = Bool
type AttrLabel BaseSrcDoTimestampPropertyInfo = "do-timestamp"
type AttrOrigin BaseSrcDoTimestampPropertyInfo = BaseSrc
attrGet _ = getBaseSrcDoTimestamp
attrSet _ = setBaseSrcDoTimestamp
attrConstruct _ = constructBaseSrcDoTimestamp
attrClear _ = undefined
#endif
-- VVV Prop "num-buffers"
-- Type: TBasicType TInt
-- Flags: [PropertyReadable,PropertyWritable]
-- Nullable: (Nothing,Nothing)
{- |
Get the value of the “@num-buffers@” property.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
@
'Data.GI.Base.Attributes.get' baseSrc #numBuffers
@
-}
getBaseSrcNumBuffers :: (MonadIO m, IsBaseSrc o) => o -> m Int32
getBaseSrcNumBuffers obj = liftIO $ B.Properties.getObjectPropertyInt32 obj "num-buffers"
{- |
Set the value of the “@num-buffers@” property.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
@
'Data.GI.Base.Attributes.set' baseSrc [ #numBuffers 'Data.GI.Base.Attributes.:=' value ]
@
-}
setBaseSrcNumBuffers :: (MonadIO m, IsBaseSrc o) => o -> Int32 -> m ()
setBaseSrcNumBuffers obj val = liftIO $ B.Properties.setObjectPropertyInt32 obj "num-buffers" val
{- |
Construct a `GValueConstruct` with valid value for the “@num-buffers@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
-}
constructBaseSrcNumBuffers :: (IsBaseSrc o) => Int32 -> IO (GValueConstruct o)
constructBaseSrcNumBuffers val = B.Properties.constructObjectPropertyInt32 "num-buffers" val
#if ENABLE_OVERLOADING
data BaseSrcNumBuffersPropertyInfo
instance AttrInfo BaseSrcNumBuffersPropertyInfo where
type AttrAllowedOps BaseSrcNumBuffersPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
type AttrSetTypeConstraint BaseSrcNumBuffersPropertyInfo = (~) Int32
type AttrBaseTypeConstraint BaseSrcNumBuffersPropertyInfo = IsBaseSrc
type AttrGetType BaseSrcNumBuffersPropertyInfo = Int32
type AttrLabel BaseSrcNumBuffersPropertyInfo = "num-buffers"
type AttrOrigin BaseSrcNumBuffersPropertyInfo = BaseSrc
attrGet _ = getBaseSrcNumBuffers
attrSet _ = setBaseSrcNumBuffers
attrConstruct _ = constructBaseSrcNumBuffers
attrClear _ = undefined
#endif
-- VVV Prop "typefind"
-- Type: TBasicType TBoolean
-- Flags: [PropertyReadable,PropertyWritable]
-- Nullable: (Nothing,Nothing)
{- |
Get the value of the “@typefind@” property.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
@
'Data.GI.Base.Attributes.get' baseSrc #typefind
@
-}
getBaseSrcTypefind :: (MonadIO m, IsBaseSrc o) => o -> m Bool
getBaseSrcTypefind obj = liftIO $ B.Properties.getObjectPropertyBool obj "typefind"
{- |
Set the value of the “@typefind@” property.
When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
@
'Data.GI.Base.Attributes.set' baseSrc [ #typefind 'Data.GI.Base.Attributes.:=' value ]
@
-}
setBaseSrcTypefind :: (MonadIO m, IsBaseSrc o) => o -> Bool -> m ()
setBaseSrcTypefind obj val = liftIO $ B.Properties.setObjectPropertyBool obj "typefind" val
{- |
Construct a `GValueConstruct` with valid value for the “@typefind@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
-}
constructBaseSrcTypefind :: (IsBaseSrc o) => Bool -> IO (GValueConstruct o)
constructBaseSrcTypefind val = B.Properties.constructObjectPropertyBool "typefind" val
#if ENABLE_OVERLOADING
data BaseSrcTypefindPropertyInfo
instance AttrInfo BaseSrcTypefindPropertyInfo where
type AttrAllowedOps BaseSrcTypefindPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
type AttrSetTypeConstraint BaseSrcTypefindPropertyInfo = (~) Bool
type AttrBaseTypeConstraint BaseSrcTypefindPropertyInfo = IsBaseSrc
type AttrGetType BaseSrcTypefindPropertyInfo = Bool
type AttrLabel BaseSrcTypefindPropertyInfo = "typefind"
type AttrOrigin BaseSrcTypefindPropertyInfo = BaseSrc
attrGet _ = getBaseSrcTypefind
attrSet _ = setBaseSrcTypefind
attrConstruct _ = constructBaseSrcTypefind
attrClear _ = undefined
#endif
#if ENABLE_OVERLOADING
instance O.HasAttributeList BaseSrc
type instance O.AttributeList BaseSrc = BaseSrcAttributeList
type BaseSrcAttributeList = ('[ '("blocksize", BaseSrcBlocksizePropertyInfo), '("doTimestamp", BaseSrcDoTimestampPropertyInfo), '("name", Gst.Object.ObjectNamePropertyInfo), '("numBuffers", BaseSrcNumBuffersPropertyInfo), '("parent", Gst.Object.ObjectParentPropertyInfo), '("typefind", BaseSrcTypefindPropertyInfo)] :: [(Symbol, *)])
#endif
#if ENABLE_OVERLOADING
baseSrcBlocksize :: AttrLabelProxy "blocksize"
baseSrcBlocksize = AttrLabelProxy
baseSrcDoTimestamp :: AttrLabelProxy "doTimestamp"
baseSrcDoTimestamp = AttrLabelProxy
baseSrcNumBuffers :: AttrLabelProxy "numBuffers"
baseSrcNumBuffers = AttrLabelProxy
baseSrcTypefind :: AttrLabelProxy "typefind"
baseSrcTypefind = AttrLabelProxy
#endif
#if ENABLE_OVERLOADING
type instance O.SignalList BaseSrc = BaseSrcSignalList
type BaseSrcSignalList = ('[ '("deepNotify", Gst.Object.ObjectDeepNotifySignalInfo), '("noMorePads", Gst.Element.ElementNoMorePadsSignalInfo), '("notify", GObject.Object.ObjectNotifySignalInfo), '("padAdded", Gst.Element.ElementPadAddedSignalInfo), '("padRemoved", Gst.Element.ElementPadRemovedSignalInfo)] :: [(Symbol, *)])
#endif
-- method BaseSrc::get_allocator
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "src", argType = TInterface (Name {namespace = "GstBase", name = "BaseSrc"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstBaseSrc", 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_base_src_get_allocator" gst_base_src_get_allocator ::
Ptr BaseSrc -> -- src : TInterface (Name {namespace = "GstBase", name = "BaseSrc"})
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.GstBase.Objects.BaseSrc.BaseSrc' sub-classes to know the memory /@allocator@/
used by the base class and its /@params@/.
Unref the /@allocator@/ after usage.
-}
baseSrcGetAllocator ::
(B.CallStack.HasCallStack, MonadIO m, IsBaseSrc a) =>
a
{- ^ /@src@/: a 'GI.GstBase.Objects.BaseSrc.BaseSrc' -}
-> m ((Gst.Allocator.Allocator, Gst.AllocationParams.AllocationParams))
baseSrcGetAllocator src = liftIO $ do
src' <- unsafeManagedPtrCastPtr src
allocator <- allocMem :: IO (Ptr (Ptr Gst.Allocator.Allocator))
params <- callocBoxedBytes 64 :: IO (Ptr Gst.AllocationParams.AllocationParams)
gst_base_src_get_allocator src' allocator params
allocator' <- peek allocator
allocator'' <- (wrapObject Gst.Allocator.Allocator) allocator'
params' <- (wrapBoxed Gst.AllocationParams.AllocationParams) params
touchManagedPtr src
freeMem allocator
return (allocator'', params')
#if ENABLE_OVERLOADING
data BaseSrcGetAllocatorMethodInfo
instance (signature ~ (m ((Gst.Allocator.Allocator, Gst.AllocationParams.AllocationParams))), MonadIO m, IsBaseSrc a) => O.MethodInfo BaseSrcGetAllocatorMethodInfo a signature where
overloadedMethod _ = baseSrcGetAllocator
#endif
-- method BaseSrc::get_blocksize
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "src", argType = TInterface (Name {namespace = "GstBase", name = "BaseSrc"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the source", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Just (TBasicType TUInt)
-- throws : False
-- Skip return : False
foreign import ccall "gst_base_src_get_blocksize" gst_base_src_get_blocksize ::
Ptr BaseSrc -> -- src : TInterface (Name {namespace = "GstBase", name = "BaseSrc"})
IO Word32
{- |
Get the number of bytes that /@src@/ will push out with each buffer.
-}
baseSrcGetBlocksize ::
(B.CallStack.HasCallStack, MonadIO m, IsBaseSrc a) =>
a
{- ^ /@src@/: the source -}
-> m Word32
{- ^ __Returns:__ the number of bytes pushed with each buffer. -}
baseSrcGetBlocksize src = liftIO $ do
src' <- unsafeManagedPtrCastPtr src
result <- gst_base_src_get_blocksize src'
touchManagedPtr src
return result
#if ENABLE_OVERLOADING
data BaseSrcGetBlocksizeMethodInfo
instance (signature ~ (m Word32), MonadIO m, IsBaseSrc a) => O.MethodInfo BaseSrcGetBlocksizeMethodInfo a signature where
overloadedMethod _ = baseSrcGetBlocksize
#endif
-- method BaseSrc::get_buffer_pool
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "src", argType = TInterface (Name {namespace = "GstBase", name = "BaseSrc"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstBaseSrc", 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_base_src_get_buffer_pool" gst_base_src_get_buffer_pool ::
Ptr BaseSrc -> -- src : TInterface (Name {namespace = "GstBase", name = "BaseSrc"})
IO (Ptr Gst.BufferPool.BufferPool)
{- |
/No description available in the introspection data./
-}
baseSrcGetBufferPool ::
(B.CallStack.HasCallStack, MonadIO m, IsBaseSrc a) =>
a
{- ^ /@src@/: a 'GI.GstBase.Objects.BaseSrc.BaseSrc' -}
-> m Gst.BufferPool.BufferPool
{- ^ __Returns:__ the instance of the 'GI.Gst.Objects.BufferPool.BufferPool' used
by the src; unref it after usage. -}
baseSrcGetBufferPool src = liftIO $ do
src' <- unsafeManagedPtrCastPtr src
result <- gst_base_src_get_buffer_pool src'
checkUnexpectedReturnNULL "baseSrcGetBufferPool" result
result' <- (wrapObject Gst.BufferPool.BufferPool) result
touchManagedPtr src
return result'
#if ENABLE_OVERLOADING
data BaseSrcGetBufferPoolMethodInfo
instance (signature ~ (m Gst.BufferPool.BufferPool), MonadIO m, IsBaseSrc a) => O.MethodInfo BaseSrcGetBufferPoolMethodInfo a signature where
overloadedMethod _ = baseSrcGetBufferPool
#endif
-- method BaseSrc::get_do_timestamp
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "src", argType = TInterface (Name {namespace = "GstBase", name = "BaseSrc"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the source", 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_base_src_get_do_timestamp" gst_base_src_get_do_timestamp ::
Ptr BaseSrc -> -- src : TInterface (Name {namespace = "GstBase", name = "BaseSrc"})
IO CInt
{- |
Query if /@src@/ timestamps outgoing buffers based on the current running_time.
-}
baseSrcGetDoTimestamp ::
(B.CallStack.HasCallStack, MonadIO m, IsBaseSrc a) =>
a
{- ^ /@src@/: the source -}
-> m Bool
{- ^ __Returns:__ 'True' if the base class will automatically timestamp outgoing buffers. -}
baseSrcGetDoTimestamp src = liftIO $ do
src' <- unsafeManagedPtrCastPtr src
result <- gst_base_src_get_do_timestamp src'
let result' = (/= 0) result
touchManagedPtr src
return result'
#if ENABLE_OVERLOADING
data BaseSrcGetDoTimestampMethodInfo
instance (signature ~ (m Bool), MonadIO m, IsBaseSrc a) => O.MethodInfo BaseSrcGetDoTimestampMethodInfo a signature where
overloadedMethod _ = baseSrcGetDoTimestamp
#endif
-- method BaseSrc::is_async
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "src", argType = TInterface (Name {namespace = "GstBase", name = "BaseSrc"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "base source instance", 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_base_src_is_async" gst_base_src_is_async ::
Ptr BaseSrc -> -- src : TInterface (Name {namespace = "GstBase", name = "BaseSrc"})
IO CInt
{- |
Get the current async behaviour of /@src@/. See also 'GI.GstBase.Objects.BaseSrc.baseSrcSetAsync'.
-}
baseSrcIsAsync ::
(B.CallStack.HasCallStack, MonadIO m, IsBaseSrc a) =>
a
{- ^ /@src@/: base source instance -}
-> m Bool
{- ^ __Returns:__ 'True' if /@src@/ is operating in async mode. -}
baseSrcIsAsync src = liftIO $ do
src' <- unsafeManagedPtrCastPtr src
result <- gst_base_src_is_async src'
let result' = (/= 0) result
touchManagedPtr src
return result'
#if ENABLE_OVERLOADING
data BaseSrcIsAsyncMethodInfo
instance (signature ~ (m Bool), MonadIO m, IsBaseSrc a) => O.MethodInfo BaseSrcIsAsyncMethodInfo a signature where
overloadedMethod _ = baseSrcIsAsync
#endif
-- method BaseSrc::is_live
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "src", argType = TInterface (Name {namespace = "GstBase", name = "BaseSrc"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "base source instance", 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_base_src_is_live" gst_base_src_is_live ::
Ptr BaseSrc -> -- src : TInterface (Name {namespace = "GstBase", name = "BaseSrc"})
IO CInt
{- |
Check if an element is in live mode.
-}
baseSrcIsLive ::
(B.CallStack.HasCallStack, MonadIO m, IsBaseSrc a) =>
a
{- ^ /@src@/: base source instance -}
-> m Bool
{- ^ __Returns:__ 'True' if element is in live mode. -}
baseSrcIsLive src = liftIO $ do
src' <- unsafeManagedPtrCastPtr src
result <- gst_base_src_is_live src'
let result' = (/= 0) result
touchManagedPtr src
return result'
#if ENABLE_OVERLOADING
data BaseSrcIsLiveMethodInfo
instance (signature ~ (m Bool), MonadIO m, IsBaseSrc a) => O.MethodInfo BaseSrcIsLiveMethodInfo a signature where
overloadedMethod _ = baseSrcIsLive
#endif
-- method BaseSrc::new_seamless_segment
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "src", argType = TInterface (Name {namespace = "GstBase", name = "BaseSrc"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The source", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "start", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The new start value for the segment", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "stop", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "Stop value for the new segment", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "time", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The new time value for the start of the new segment", 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_base_src_new_seamless_segment" gst_base_src_new_seamless_segment ::
Ptr BaseSrc -> -- src : TInterface (Name {namespace = "GstBase", name = "BaseSrc"})
Int64 -> -- start : TBasicType TInt64
Int64 -> -- stop : TBasicType TInt64
Int64 -> -- time : TBasicType TInt64
IO CInt
{- |
Prepare a new seamless segment for emission downstream. This function must
only be called by derived sub-classes, and only from the @/create()/@ function,
as the stream-lock needs to be held.
The format for the new segment will be the current format of the source, as
configured with 'GI.GstBase.Objects.BaseSrc.baseSrcSetFormat'
-}
baseSrcNewSeamlessSegment ::
(B.CallStack.HasCallStack, MonadIO m, IsBaseSrc a) =>
a
{- ^ /@src@/: The source -}
-> Int64
{- ^ /@start@/: The new start value for the segment -}
-> Int64
{- ^ /@stop@/: Stop value for the new segment -}
-> Int64
{- ^ /@time@/: The new time value for the start of the new segment -}
-> m Bool
{- ^ __Returns:__ 'True' if preparation of the seamless segment succeeded. -}
baseSrcNewSeamlessSegment src start stop time = liftIO $ do
src' <- unsafeManagedPtrCastPtr src
result <- gst_base_src_new_seamless_segment src' start stop time
let result' = (/= 0) result
touchManagedPtr src
return result'
#if ENABLE_OVERLOADING
data BaseSrcNewSeamlessSegmentMethodInfo
instance (signature ~ (Int64 -> Int64 -> Int64 -> m Bool), MonadIO m, IsBaseSrc a) => O.MethodInfo BaseSrcNewSeamlessSegmentMethodInfo a signature where
overloadedMethod _ = baseSrcNewSeamlessSegment
#endif
-- method BaseSrc::query_latency
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "src", argType = TInterface (Name {namespace = "GstBase", name = "BaseSrc"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the source", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "live", argType = TBasicType TBoolean, direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "if the source is live", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "min_latency", argType = TBasicType TUInt64, direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the min latency of the source", 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 "the max latency of the source", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
-- Lengths : []
-- returnType : Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False
foreign import ccall "gst_base_src_query_latency" gst_base_src_query_latency ::
Ptr BaseSrc -> -- src : TInterface (Name {namespace = "GstBase", name = "BaseSrc"})
Ptr CInt -> -- live : TBasicType TBoolean
Ptr Word64 -> -- min_latency : TBasicType TUInt64
Ptr Word64 -> -- max_latency : TBasicType TUInt64
IO CInt
{- |
Query the source for the latency parameters. /@live@/ will be 'True' when /@src@/ is
configured as a live source. /@minLatency@/ and /@maxLatency@/ will be set
to the difference between the running time and the timestamp of the first
buffer.
This function is mostly used by subclasses.
-}
baseSrcQueryLatency ::
(B.CallStack.HasCallStack, MonadIO m, IsBaseSrc a) =>
a
{- ^ /@src@/: the source -}
-> m ((Bool, Bool, Word64, Word64))
{- ^ __Returns:__ 'True' if the query succeeded. -}
baseSrcQueryLatency src = liftIO $ do
src' <- unsafeManagedPtrCastPtr src
live <- allocMem :: IO (Ptr CInt)
minLatency <- allocMem :: IO (Ptr Word64)
maxLatency <- allocMem :: IO (Ptr Word64)
result <- gst_base_src_query_latency src' live minLatency maxLatency
let result' = (/= 0) result
live' <- peek live
let live'' = (/= 0) live'
minLatency' <- peek minLatency
maxLatency' <- peek maxLatency
touchManagedPtr src
freeMem live
freeMem minLatency
freeMem maxLatency
return (result', live'', minLatency', maxLatency')
#if ENABLE_OVERLOADING
data BaseSrcQueryLatencyMethodInfo
instance (signature ~ (m ((Bool, Bool, Word64, Word64))), MonadIO m, IsBaseSrc a) => O.MethodInfo BaseSrcQueryLatencyMethodInfo a signature where
overloadedMethod _ = baseSrcQueryLatency
#endif
-- method BaseSrc::set_async
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "src", argType = TInterface (Name {namespace = "GstBase", name = "BaseSrc"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "base source instance", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "async", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "new async mode", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False
foreign import ccall "gst_base_src_set_async" gst_base_src_set_async ::
Ptr BaseSrc -> -- src : TInterface (Name {namespace = "GstBase", name = "BaseSrc"})
CInt -> -- async : TBasicType TBoolean
IO ()
{- |
Configure async behaviour in /@src@/, no state change will block. The open,
close, start, stop, play and pause virtual methods will be executed in a
different thread and are thus allowed to perform blocking operations. Any
blocking operation should be unblocked with the unlock vmethod.
-}
baseSrcSetAsync ::
(B.CallStack.HasCallStack, MonadIO m, IsBaseSrc a) =>
a
{- ^ /@src@/: base source instance -}
-> Bool
{- ^ /@async@/: new async mode -}
-> m ()
baseSrcSetAsync src async = liftIO $ do
src' <- unsafeManagedPtrCastPtr src
let async' = (fromIntegral . fromEnum) async
gst_base_src_set_async src' async'
touchManagedPtr src
return ()
#if ENABLE_OVERLOADING
data BaseSrcSetAsyncMethodInfo
instance (signature ~ (Bool -> m ()), MonadIO m, IsBaseSrc a) => O.MethodInfo BaseSrcSetAsyncMethodInfo a signature where
overloadedMethod _ = baseSrcSetAsync
#endif
-- method BaseSrc::set_automatic_eos
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "src", argType = TInterface (Name {namespace = "GstBase", name = "BaseSrc"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "base source instance", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "automatic_eos", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "automatic eos", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False
foreign import ccall "gst_base_src_set_automatic_eos" gst_base_src_set_automatic_eos ::
Ptr BaseSrc -> -- src : TInterface (Name {namespace = "GstBase", name = "BaseSrc"})
CInt -> -- automatic_eos : TBasicType TBoolean
IO ()
{- |
If /@automaticEos@/ is 'True', /@src@/ will automatically go EOS if a buffer
after the total size is returned. By default this is 'True' but sources
that can\'t return an authoritative size and only know that they\'re EOS
when trying to read more should set this to 'False'.
When /@src@/ operates in 'GI.Gst.Enums.FormatTime', 'GI.GstBase.Objects.BaseSrc.BaseSrc' will send an EOS
when a buffer outside of the currently configured segment is pushed if
/@automaticEos@/ is 'True'. Since 1.16, if /@automaticEos@/ is 'False' an
EOS will be pushed only when the 'GI.GstBase.Objects.BaseSrc.BaseSrc'.@/create/@ implementation
returns 'GI.Gst.Enums.FlowReturnEos'.
/Since: 1.4/
-}
baseSrcSetAutomaticEos ::
(B.CallStack.HasCallStack, MonadIO m, IsBaseSrc a) =>
a
{- ^ /@src@/: base source instance -}
-> Bool
{- ^ /@automaticEos@/: automatic eos -}
-> m ()
baseSrcSetAutomaticEos src automaticEos = liftIO $ do
src' <- unsafeManagedPtrCastPtr src
let automaticEos' = (fromIntegral . fromEnum) automaticEos
gst_base_src_set_automatic_eos src' automaticEos'
touchManagedPtr src
return ()
#if ENABLE_OVERLOADING
data BaseSrcSetAutomaticEosMethodInfo
instance (signature ~ (Bool -> m ()), MonadIO m, IsBaseSrc a) => O.MethodInfo BaseSrcSetAutomaticEosMethodInfo a signature where
overloadedMethod _ = baseSrcSetAutomaticEos
#endif
-- method BaseSrc::set_blocksize
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "src", argType = TInterface (Name {namespace = "GstBase", name = "BaseSrc"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the source", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "blocksize", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the new blocksize in bytes", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False
foreign import ccall "gst_base_src_set_blocksize" gst_base_src_set_blocksize ::
Ptr BaseSrc -> -- src : TInterface (Name {namespace = "GstBase", name = "BaseSrc"})
Word32 -> -- blocksize : TBasicType TUInt
IO ()
{- |
Set the number of bytes that /@src@/ will push out with each buffer. When
/@blocksize@/ is set to -1, a default length will be used.
-}
baseSrcSetBlocksize ::
(B.CallStack.HasCallStack, MonadIO m, IsBaseSrc a) =>
a
{- ^ /@src@/: the source -}
-> Word32
{- ^ /@blocksize@/: the new blocksize in bytes -}
-> m ()
baseSrcSetBlocksize src blocksize = liftIO $ do
src' <- unsafeManagedPtrCastPtr src
gst_base_src_set_blocksize src' blocksize
touchManagedPtr src
return ()
#if ENABLE_OVERLOADING
data BaseSrcSetBlocksizeMethodInfo
instance (signature ~ (Word32 -> m ()), MonadIO m, IsBaseSrc a) => O.MethodInfo BaseSrcSetBlocksizeMethodInfo a signature where
overloadedMethod _ = baseSrcSetBlocksize
#endif
-- method BaseSrc::set_caps
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "src", argType = TInterface (Name {namespace = "GstBase", name = "BaseSrc"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstBaseSrc", 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 = False, argDoc = Documentation {rawDocText = Just "a #GstCaps", 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_base_src_set_caps" gst_base_src_set_caps ::
Ptr BaseSrc -> -- src : TInterface (Name {namespace = "GstBase", name = "BaseSrc"})
Ptr Gst.Caps.Caps -> -- caps : TInterface (Name {namespace = "Gst", name = "Caps"})
IO CInt
{- |
Set new caps on the basesrc source pad.
-}
baseSrcSetCaps ::
(B.CallStack.HasCallStack, MonadIO m, IsBaseSrc a) =>
a
{- ^ /@src@/: a 'GI.GstBase.Objects.BaseSrc.BaseSrc' -}
-> Gst.Caps.Caps
{- ^ /@caps@/: a 'GI.Gst.Structs.Caps.Caps' -}
-> m Bool
{- ^ __Returns:__ 'True' if the caps could be set -}
baseSrcSetCaps src caps = liftIO $ do
src' <- unsafeManagedPtrCastPtr src
caps' <- unsafeManagedPtrGetPtr caps
result <- gst_base_src_set_caps src' caps'
let result' = (/= 0) result
touchManagedPtr src
touchManagedPtr caps
return result'
#if ENABLE_OVERLOADING
data BaseSrcSetCapsMethodInfo
instance (signature ~ (Gst.Caps.Caps -> m Bool), MonadIO m, IsBaseSrc a) => O.MethodInfo BaseSrcSetCapsMethodInfo a signature where
overloadedMethod _ = baseSrcSetCaps
#endif
-- method BaseSrc::set_do_timestamp
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "src", argType = TInterface (Name {namespace = "GstBase", name = "BaseSrc"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the source", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "timestamp", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "enable or disable timestamping", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False
foreign import ccall "gst_base_src_set_do_timestamp" gst_base_src_set_do_timestamp ::
Ptr BaseSrc -> -- src : TInterface (Name {namespace = "GstBase", name = "BaseSrc"})
CInt -> -- timestamp : TBasicType TBoolean
IO ()
{- |
Configure /@src@/ to automatically timestamp outgoing buffers based on the
current running_time of the pipeline. This property is mostly useful for live
sources.
-}
baseSrcSetDoTimestamp ::
(B.CallStack.HasCallStack, MonadIO m, IsBaseSrc a) =>
a
{- ^ /@src@/: the source -}
-> Bool
{- ^ /@timestamp@/: enable or disable timestamping -}
-> m ()
baseSrcSetDoTimestamp src timestamp = liftIO $ do
src' <- unsafeManagedPtrCastPtr src
let timestamp' = (fromIntegral . fromEnum) timestamp
gst_base_src_set_do_timestamp src' timestamp'
touchManagedPtr src
return ()
#if ENABLE_OVERLOADING
data BaseSrcSetDoTimestampMethodInfo
instance (signature ~ (Bool -> m ()), MonadIO m, IsBaseSrc a) => O.MethodInfo BaseSrcSetDoTimestampMethodInfo a signature where
overloadedMethod _ = baseSrcSetDoTimestamp
#endif
-- method BaseSrc::set_dynamic_size
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "src", argType = TInterface (Name {namespace = "GstBase", name = "BaseSrc"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "base source instance", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "dynamic", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "new dynamic size mode", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False
foreign import ccall "gst_base_src_set_dynamic_size" gst_base_src_set_dynamic_size ::
Ptr BaseSrc -> -- src : TInterface (Name {namespace = "GstBase", name = "BaseSrc"})
CInt -> -- dynamic : TBasicType TBoolean
IO ()
{- |
If not /@dynamic@/, size is only updated when needed, such as when trying to
read past current tracked size. Otherwise, size is checked for upon each
read.
-}
baseSrcSetDynamicSize ::
(B.CallStack.HasCallStack, MonadIO m, IsBaseSrc a) =>
a
{- ^ /@src@/: base source instance -}
-> Bool
{- ^ /@dynamic@/: new dynamic size mode -}
-> m ()
baseSrcSetDynamicSize src dynamic = liftIO $ do
src' <- unsafeManagedPtrCastPtr src
let dynamic' = (fromIntegral . fromEnum) dynamic
gst_base_src_set_dynamic_size src' dynamic'
touchManagedPtr src
return ()
#if ENABLE_OVERLOADING
data BaseSrcSetDynamicSizeMethodInfo
instance (signature ~ (Bool -> m ()), MonadIO m, IsBaseSrc a) => O.MethodInfo BaseSrcSetDynamicSizeMethodInfo a signature where
overloadedMethod _ = baseSrcSetDynamicSize
#endif
-- method BaseSrc::set_format
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "src", argType = TInterface (Name {namespace = "GstBase", name = "BaseSrc"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "base source instance", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "format", argType = TInterface (Name {namespace = "Gst", name = "Format"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the format to use", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False
foreign import ccall "gst_base_src_set_format" gst_base_src_set_format ::
Ptr BaseSrc -> -- src : TInterface (Name {namespace = "GstBase", name = "BaseSrc"})
CUInt -> -- format : TInterface (Name {namespace = "Gst", name = "Format"})
IO ()
{- |
Sets the default format of the source. This will be the format used
for sending SEGMENT events and for performing seeks.
If a format of GST_FORMAT_BYTES is set, the element will be able to
operate in pull mode if the 'GI.GstBase.Structs.BaseSrcClass.BaseSrcClass'.@/is_seekable/@() returns 'True'.
This function must only be called in states \< 'GI.Gst.Enums.StatePaused'.
-}
baseSrcSetFormat ::
(B.CallStack.HasCallStack, MonadIO m, IsBaseSrc a) =>
a
{- ^ /@src@/: base source instance -}
-> Gst.Enums.Format
{- ^ /@format@/: the format to use -}
-> m ()
baseSrcSetFormat src format = liftIO $ do
src' <- unsafeManagedPtrCastPtr src
let format' = (fromIntegral . fromEnum) format
gst_base_src_set_format src' format'
touchManagedPtr src
return ()
#if ENABLE_OVERLOADING
data BaseSrcSetFormatMethodInfo
instance (signature ~ (Gst.Enums.Format -> m ()), MonadIO m, IsBaseSrc a) => O.MethodInfo BaseSrcSetFormatMethodInfo a signature where
overloadedMethod _ = baseSrcSetFormat
#endif
-- method BaseSrc::set_live
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "src", argType = TInterface (Name {namespace = "GstBase", name = "BaseSrc"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "base source instance", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "live", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "new live-mode", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False
foreign import ccall "gst_base_src_set_live" gst_base_src_set_live ::
Ptr BaseSrc -> -- src : TInterface (Name {namespace = "GstBase", name = "BaseSrc"})
CInt -> -- live : TBasicType TBoolean
IO ()
{- |
If the element listens to a live source, /@live@/ should
be set to 'True'.
A live source will not produce data in the PAUSED state and
will therefore not be able to participate in the PREROLL phase
of a pipeline. To signal this fact to the application and the
pipeline, the state change return value of the live source will
be GST_STATE_CHANGE_NO_PREROLL.
-}
baseSrcSetLive ::
(B.CallStack.HasCallStack, MonadIO m, IsBaseSrc a) =>
a
{- ^ /@src@/: base source instance -}
-> Bool
{- ^ /@live@/: new live-mode -}
-> m ()
baseSrcSetLive src live = liftIO $ do
src' <- unsafeManagedPtrCastPtr src
let live' = (fromIntegral . fromEnum) live
gst_base_src_set_live src' live'
touchManagedPtr src
return ()
#if ENABLE_OVERLOADING
data BaseSrcSetLiveMethodInfo
instance (signature ~ (Bool -> m ()), MonadIO m, IsBaseSrc a) => O.MethodInfo BaseSrcSetLiveMethodInfo a signature where
overloadedMethod _ = baseSrcSetLive
#endif
-- method BaseSrc::start_complete
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "basesrc", argType = TInterface (Name {namespace = "GstBase", name = "BaseSrc"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "base source instance", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "ret", argType = TInterface (Name {namespace = "Gst", name = "FlowReturn"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstFlowReturn", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False
foreign import ccall "gst_base_src_start_complete" gst_base_src_start_complete ::
Ptr BaseSrc -> -- basesrc : TInterface (Name {namespace = "GstBase", name = "BaseSrc"})
CInt -> -- ret : TInterface (Name {namespace = "Gst", name = "FlowReturn"})
IO ()
{- |
Complete an asynchronous start operation. When the subclass overrides the
start method, it should call 'GI.GstBase.Objects.BaseSrc.baseSrcStartComplete' when the start
operation completes either from the same thread or from an asynchronous
helper thread.
-}
baseSrcStartComplete ::
(B.CallStack.HasCallStack, MonadIO m, IsBaseSrc a) =>
a
{- ^ /@basesrc@/: base source instance -}
-> Gst.Enums.FlowReturn
{- ^ /@ret@/: a 'GI.Gst.Enums.FlowReturn' -}
-> m ()
baseSrcStartComplete basesrc ret = liftIO $ do
basesrc' <- unsafeManagedPtrCastPtr basesrc
let ret' = (fromIntegral . fromEnum) ret
gst_base_src_start_complete basesrc' ret'
touchManagedPtr basesrc
return ()
#if ENABLE_OVERLOADING
data BaseSrcStartCompleteMethodInfo
instance (signature ~ (Gst.Enums.FlowReturn -> m ()), MonadIO m, IsBaseSrc a) => O.MethodInfo BaseSrcStartCompleteMethodInfo a signature where
overloadedMethod _ = baseSrcStartComplete
#endif
-- method BaseSrc::start_wait
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "basesrc", argType = TInterface (Name {namespace = "GstBase", name = "BaseSrc"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "base source instance", 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_base_src_start_wait" gst_base_src_start_wait ::
Ptr BaseSrc -> -- basesrc : TInterface (Name {namespace = "GstBase", name = "BaseSrc"})
IO CInt
{- |
Wait until the start operation completes.
-}
baseSrcStartWait ::
(B.CallStack.HasCallStack, MonadIO m, IsBaseSrc a) =>
a
{- ^ /@basesrc@/: base source instance -}
-> m Gst.Enums.FlowReturn
{- ^ __Returns:__ a 'GI.Gst.Enums.FlowReturn'. -}
baseSrcStartWait basesrc = liftIO $ do
basesrc' <- unsafeManagedPtrCastPtr basesrc
result <- gst_base_src_start_wait basesrc'
let result' = (toEnum . fromIntegral) result
touchManagedPtr basesrc
return result'
#if ENABLE_OVERLOADING
data BaseSrcStartWaitMethodInfo
instance (signature ~ (m Gst.Enums.FlowReturn), MonadIO m, IsBaseSrc a) => O.MethodInfo BaseSrcStartWaitMethodInfo a signature where
overloadedMethod _ = baseSrcStartWait
#endif
-- method BaseSrc::submit_buffer_list
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "src", argType = TInterface (Name {namespace = "GstBase", name = "BaseSrc"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstBaseSrc", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "buffer_list", argType = TInterface (Name {namespace = "Gst", name = "BufferList"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstBufferList", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}]
-- Lengths : []
-- returnType : Nothing
-- throws : False
-- Skip return : False
foreign import ccall "gst_base_src_submit_buffer_list" gst_base_src_submit_buffer_list ::
Ptr BaseSrc -> -- src : TInterface (Name {namespace = "GstBase", name = "BaseSrc"})
Ptr Gst.BufferList.BufferList -> -- buffer_list : TInterface (Name {namespace = "Gst", name = "BufferList"})
IO ()
{- |
Subclasses can call this from their create virtual method implementation
to submit a buffer list to be pushed out later. This is useful in
cases where the create function wants to produce multiple buffers to be
pushed out in one go in form of a 'GI.Gst.Structs.BufferList.BufferList', which can reduce overhead
drastically, especially for packetised inputs (for data streams where
the packetisation\/chunking is not important it is usually more efficient
to return larger buffers instead).
Subclasses that use this function from their create function must return
'GI.Gst.Enums.FlowReturnOk' and no buffer from their create virtual method implementation.
If a buffer is returned after a buffer list has also been submitted via this
function the behaviour is undefined.
Subclasses must only call this function once per create function call and
subclasses must only call this function when the source operates in push
mode.
/Since: 1.14/
-}
baseSrcSubmitBufferList ::
(B.CallStack.HasCallStack, MonadIO m, IsBaseSrc a) =>
a
{- ^ /@src@/: a 'GI.GstBase.Objects.BaseSrc.BaseSrc' -}
-> Gst.BufferList.BufferList
{- ^ /@bufferList@/: a 'GI.Gst.Structs.BufferList.BufferList' -}
-> m ()
baseSrcSubmitBufferList src bufferList = liftIO $ do
src' <- unsafeManagedPtrCastPtr src
bufferList' <- B.ManagedPtr.disownBoxed bufferList
gst_base_src_submit_buffer_list src' bufferList'
touchManagedPtr src
touchManagedPtr bufferList
return ()
#if ENABLE_OVERLOADING
data BaseSrcSubmitBufferListMethodInfo
instance (signature ~ (Gst.BufferList.BufferList -> m ()), MonadIO m, IsBaseSrc a) => O.MethodInfo BaseSrcSubmitBufferListMethodInfo a signature where
overloadedMethod _ = baseSrcSubmitBufferList
#endif
-- method BaseSrc::wait_playing
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "src", argType = TInterface (Name {namespace = "GstBase", name = "BaseSrc"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the src", 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_base_src_wait_playing" gst_base_src_wait_playing ::
Ptr BaseSrc -> -- src : TInterface (Name {namespace = "GstBase", name = "BaseSrc"})
IO CInt
{- |
If the 'GI.GstBase.Structs.BaseSrcClass.BaseSrcClass'.@/create/@() method performs its own synchronisation
against the clock it must unblock when going from PLAYING to the PAUSED state
and call this method before continuing to produce the remaining data.
This function will block until a state change to PLAYING happens (in which
case this function returns 'GI.Gst.Enums.FlowReturnOk') or the processing must be stopped due
to a state change to READY or a FLUSH event (in which case this function
returns 'GI.Gst.Enums.FlowReturnFlushing').
-}
baseSrcWaitPlaying ::
(B.CallStack.HasCallStack, MonadIO m, IsBaseSrc a) =>
a
{- ^ /@src@/: the src -}
-> m Gst.Enums.FlowReturn
{- ^ __Returns:__ 'GI.Gst.Enums.FlowReturnOk' if /@src@/ is PLAYING and processing can
continue. Any other return value should be returned from the create vmethod. -}
baseSrcWaitPlaying src = liftIO $ do
src' <- unsafeManagedPtrCastPtr src
result <- gst_base_src_wait_playing src'
let result' = (toEnum . fromIntegral) result
touchManagedPtr src
return result'
#if ENABLE_OVERLOADING
data BaseSrcWaitPlayingMethodInfo
instance (signature ~ (m Gst.Enums.FlowReturn), MonadIO m, IsBaseSrc a) => O.MethodInfo BaseSrcWaitPlayingMethodInfo a signature where
overloadedMethod _ = baseSrcWaitPlaying
#endif