| Top |
struct GstVideoAggregatorPad {
GstAggregatorPad parent;
GstVideoInfo info;
GstBuffer *buffer;
/* The caps on the pad may not match the buffer above because of two reasons:
* 1) When caps change, the info above will get updated, but the buffer might
* not since it might be pending on the GstAggregatorPad
* 2) We might reject the new buffer in fill_queues() and reuse a previous
* buffer which has older GstVideoInfo
* Hence, we need to maintain a GstVideoInfo for mapping buffers separately */
GstVideoInfo buffer_vinfo;
GstVideoFrame *aggregated_frame;
/* properties */
guint zorder;
gboolean ignore_eos;
};
GstAggregatorPad |
||
GstVideoInfo |
The GstVideoInfo currently set on the pad |
|
GstBuffer * |
||
GstVideoInfo |
The GstVideoInfo representing the type contained
in |
|
GstVideoFrame * |
The GstVideoFrame ready to be used for aggregation inside the aggregate_frames vmethod. |
|
The zorder of this pad |
||
struct GstVideoAggregatorPadClass {
GstAggregatorPadClass parent_class;
gboolean (*set_info) (GstVideoAggregatorPad * pad,
GstVideoAggregator * videoaggregator,
GstVideoInfo * current_info,
GstVideoInfo * wanted_info);
gboolean (*prepare_frame) (GstVideoAggregatorPad * pad,
GstVideoAggregator * videoaggregator);
void (*clean_frame) (GstVideoAggregatorPad * pad,
GstVideoAggregator * videoaggregator);
gpointer _gst_reserved[GST_PADDING_LARGE];
};
set_info
: Lets subclass set a converter on the pad,
right after a new format has been negotiated.
prepare_frame
: Prepare the frame from the pad buffer (if any)
and sets it to aggregated_frame
clean_frame
: clean the frame previously prepared in prepare_frame