gi-gstbase-1.0.16: GStreamerBase bindings

CopyrightWill Thompson Iñaki García Etxebarria and Jonas Platte
LicenseLGPL-2.1
MaintainerIñaki García Etxebarria (garetxe@gmail.com)
Safe HaskellNone
LanguageHaskell2010

GI.GstBase.Objects.Aggregator

Contents

Description

Manages a set of pads with the purpose of aggregating their buffers. Control is given to the subclass when all pads have data.

  • Base class for mixers and muxers. Subclasses should at least implement the AggregatorClass.aggregate() virtual method.
  • Installs a PadChainFunction, a PadEventFullFunction and a PadQueryFunction to queue all serialized data packets per sink pad. Subclasses should not overwrite those, but instead implement AggregatorClass.sink_event() and AggregatorClass.sink_query() as needed.
  • When data is queued on all pads, the aggregate vmethod is called.
  • One can peek at the data on any given GstAggregatorPad with the gst_aggregator_pad_peek_buffer () method, and remove it from the pad with the gst_aggregator_pad_pop_buffer () method. When a buffer has been taken with pop_buffer (), a new buffer can be queued on that pad.
  • If the subclass wishes to push a buffer downstream in its aggregate implementation, it should do so through the gst_aggregator_finish_buffer () method. This method will take care of sending and ordering mandatory events such as stream start, caps and segment.
  • Same goes for EOS events, which should not be pushed directly by the subclass, it should instead return GST_FLOW_EOS in its aggregate implementation.
  • Note that the aggregator logic regarding gap event handling is to turn these into gap buffers with matching PTS and duration. It will also flag these buffers with GST_BUFFER_FLAG_GAP and GST_BUFFER_FLAG_DROPPABLE to ease their identification and subsequent processing.
  • Subclasses must use (a subclass of) AggregatorPad for both their sink and source pads. See elementClassAddStaticPadTemplateWithGtype.

This class used to live in gst-plugins-bad and was moved to core.

Synopsis

Exported types

newtype Aggregator Source #

Memory-managed wrapper type.

class GObject o => IsAggregator o Source #

Type class for types which can be safely cast to Aggregator, for instance with toAggregator.

toAggregator :: (MonadIO m, IsAggregator o) => o -> m Aggregator Source #

Cast to Aggregator, for types for which this is known to be safe. For general casts, use castTo.

Methods

finishBuffer

aggregatorFinishBuffer Source #

Arguments

:: (HasCallStack, MonadIO m, IsAggregator a) 
=> a

aggregator: The Aggregator

-> Buffer

buffer: the Buffer to push.

-> m FlowReturn 

This method will push the provided output buffer downstream. If needed, mandatory events such as stream-start, caps, and segment events will be sent before pushing the buffer.

getAllocator

aggregatorGetAllocator Source #

Arguments

:: (HasCallStack, MonadIO m, IsAggregator a) 
=> a

self: a Aggregator

-> m (Allocator, AllocationParams) 

Lets Aggregator sub-classes get the memory allocator acquired by the base class and its params.

Unref the allocator after use it.

getBufferPool

aggregatorGetBufferPool Source #

Arguments

:: (HasCallStack, MonadIO m, IsAggregator a) 
=> a

self: a Aggregator

-> m BufferPool

Returns: the instance of the BufferPool used by trans; free it after use it

No description available in the introspection data.

getLatency

aggregatorGetLatency Source #

Arguments

:: (HasCallStack, MonadIO m, IsAggregator a) 
=> a

self: a Aggregator

-> m Word64

Returns: The latency or CLOCK_TIME_NONE if the element does not sync

Retrieves the latency values reported by self in response to the latency query, or CLOCK_TIME_NONE if there is not live source connected and the element will not wait for the clock.

Typically only called by subclasses.

setLatency

aggregatorSetLatency Source #

Arguments

:: (HasCallStack, MonadIO m, IsAggregator a) 
=> a

self: a Aggregator

-> Word64

minLatency: minimum latency

-> Word64

maxLatency: maximum latency

-> m () 

Lets Aggregator sub-classes tell the baseclass what their internal latency is. Will also post a LATENCY message on the bus so the pipeline can reconfigure its global latency.

setSrcCaps

aggregatorSetSrcCaps Source #

Arguments

:: (HasCallStack, MonadIO m, IsAggregator a) 
=> a

self: The Aggregator

-> Caps

caps: The Caps to set on the src pad.

-> m () 

Sets the caps to be used on the src pad.

Properties

latency

No description available in the introspection data.

constructAggregatorLatency :: IsAggregator o => Word64 -> IO (GValueConstruct o) Source #

Construct a GValueConstruct with valid value for the “latency” property. This is rarely needed directly, but it is used by new.

getAggregatorLatency :: (MonadIO m, IsAggregator o) => o -> m Word64 Source #

Get the value of the “latency” property. When overloading is enabled, this is equivalent to

get aggregator #latency

setAggregatorLatency :: (MonadIO m, IsAggregator o) => o -> Word64 -> m () Source #

Set the value of the “latency” property. When overloading is enabled, this is equivalent to

set aggregator [ #latency := value ]

startTime

No description available in the introspection data.

constructAggregatorStartTime :: IsAggregator o => Word64 -> IO (GValueConstruct o) Source #

Construct a GValueConstruct with valid value for the “start-time” property. This is rarely needed directly, but it is used by new.

getAggregatorStartTime :: (MonadIO m, IsAggregator o) => o -> m Word64 Source #

Get the value of the “start-time” property. When overloading is enabled, this is equivalent to

get aggregator #startTime

setAggregatorStartTime :: (MonadIO m, IsAggregator o) => o -> Word64 -> m () Source #

Set the value of the “start-time” property. When overloading is enabled, this is equivalent to

set aggregator [ #startTime := value ]