VideoAggregator

VideoAggregator can accept AYUV, ARGB and BGRA video streams. For each of the requested sink pads it will compare the incoming geometry and framerate to define the output parameters. Indeed output video frames will have the geometry of the biggest incoming video stream and the framerate of the fastest incoming one.

VideoAggregator will do colorspace conversion.

Zorder for each input stream can be configured on the #GstVideoAggregatorPad.

Members

Functions

getExecutionTaskPool
gst.task_pool.TaskPool getExecutionTaskPool()

The returned #GstTaskPool is used internally for performing parallel video format conversions/scaling/etc during the #GstVideoAggregatorPadClass::prepare_frame_start() process. Subclasses can add their own operation to perform using the returned #GstTaskPool during #GstVideoAggregatorClass::aggregate_frames().

Inherited Members

From Aggregator

finishBuffer
gst.types.FlowReturn finishBuffer(gst.buffer.Buffer buffer)

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.

finishBufferList
gst.types.FlowReturn finishBufferList(gst.buffer_list.BufferList bufferlist)

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

getAllocator
void getAllocator(gst.allocator.Allocator allocator, gst.allocation_params.AllocationParams params)

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

getBufferPool
gst.buffer_pool.BufferPool getBufferPool()
getForceLive
bool getForceLive()

Subclasses may use the return value to inform whether they should return gst.types.FlowReturn.Eos from their aggregate implementation.

getIgnoreInactivePads
bool getIgnoreInactivePads()
getLatency
gst.types.ClockTime getLatency()

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

negotiate
bool negotiate()

Negotiates src pad caps with downstream elements. Unmarks GST_PAD_FLAG_NEED_RECONFIGURE in any case. But marks it again if #GstAggregatorClass::negotiate fails.

peekNextSample
gst.sample.Sample peekNextSample(gstbase.aggregator_pad.AggregatorPad pad)

Use this function to determine what input buffers will be aggregated to produce the next output buffer. This should only be called from a #GstAggregator::samples-selected handler, and can be used to precisely control aggregating parameters for a given set of input samples.

selectedSamples
void selectedSamples(gst.types.ClockTime pts, gst.types.ClockTime dts, gst.types.ClockTime duration, gst.structure.Structure info)

Subclasses should call this when they have prepared the buffers they will aggregate for each of their sink pads, but before using any of the properties of the pads that govern *how* aggregation should be performed, for example z-index for video aggregators.

setForceLive
void setForceLive(bool forceLive)

Subclasses should call this at construction time in order for self to aggregate on a timeout even when no live source is connected.

setIgnoreInactivePads
void setIgnoreInactivePads(bool ignore)

Subclasses should call this when they don't want to time out waiting for a pad that hasn't yet received any buffers in live mode.

setLatency
void setLatency(gst.types.ClockTime minLatency, gst.types.ClockTime maxLatency)

Lets #GstAggregator 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 if the values changed.

setSrcCaps
void setSrcCaps(gst.caps.Caps caps)

Sets the caps to be used on the src pad.

simpleGetNextTime
gst.types.ClockTime simpleGetNextTime()

This is a simple #GstAggregatorClass::get_next_time implementation that just looks at the #GstSegment on the srcpad of the aggregator and bases the next time on the running time there.

updateSegment
void updateSegment(gst.segment.Segment segment)

Subclasses should use this to update the segment on their source pad, instead of directly pushing new segment events downstream.

connectSamplesSelected
ulong connectSamplesSelected(T callback, Flag!"After" after)

Connect to SamplesSelected signal.