Top |
GObject ╰── GInitiallyUnowned ╰── GstObject ╰── GstElement ╰── GstAggregator ╰── GstVideoAggregator
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.
struct GstVideoAggregatorClass { GstCaps * (*update_caps) (GstVideoAggregator * videoaggregator, GstCaps * caps, GstCaps * filter_caps); GstCaps * (*fixate_caps) (GstVideoAggregator * videoaggregator, GstCaps * caps); GstFlowReturn (*aggregate_frames) (GstVideoAggregator * videoaggregator, GstBuffer * outbuffer); GstFlowReturn (*get_output_buffer) (GstVideoAggregator * videoaggregator, GstBuffer ** outbuffer); gboolean (*negotiated_caps) (GstVideoAggregator * videoaggregator, GstCaps * caps); void (*find_best_format) (GstVideoAggregator * vagg, GstCaps * downstream_caps, GstVideoInfo * best_info, gboolean * at_least_one_alpha); GstCaps *sink_non_alpha_caps; };
Optional.
Lets subclasses update the GstCaps representing
the src pad caps before usage. Return |
||
Fixate and return the src pad caps provided. The function takes
ownership of |
||
Lets subclasses aggregate frames that are ready. Subclasses
should iterate the GstElement.sinkpads and use the already
mapped GstVideoFrame from GstVideoAggregatorPad.aggregated_frame
or directly use the GstBuffer from GstVideoAggregatorPad.buffer
if it needs to map the buffer in a special way. The result of the
aggregation should land in |
||
Optional.
Lets subclasses provide a GstBuffer to be used as |
||
Optional. Notifies subclasses what caps format has been negotiated |
||
Optional. Lets subclasses decide of the best common format to use. |
||
GstCaps * |