videoaggregator: Hide some more fields from the API
+ Add some documentation
This commit is contained in:
parent
cb5c563b36
commit
aa25d0ab4c
@ -69,6 +69,9 @@ struct _GstVideoAggregatorPadPrivate
|
|||||||
/* caps used for conversion if needed */
|
/* caps used for conversion if needed */
|
||||||
GstVideoInfo conversion_info;
|
GstVideoInfo conversion_info;
|
||||||
GstBuffer *converted_buffer;
|
GstBuffer *converted_buffer;
|
||||||
|
|
||||||
|
GstClockTime start_time;
|
||||||
|
GstClockTime end_time;
|
||||||
};
|
};
|
||||||
|
|
||||||
G_DEFINE_TYPE (GstVideoAggregatorPad, gst_videoaggregator_pad,
|
G_DEFINE_TYPE (GstVideoAggregatorPad, gst_videoaggregator_pad,
|
||||||
@ -129,8 +132,8 @@ _flush_pad (GstAggregatorPad * aggpad, GstAggregator * aggregator)
|
|||||||
|
|
||||||
gst_videoaggregator_reset_qos (vagg);
|
gst_videoaggregator_reset_qos (vagg);
|
||||||
gst_buffer_replace (&pad->buffer, NULL);
|
gst_buffer_replace (&pad->buffer, NULL);
|
||||||
pad->start_time = -1;
|
pad->priv->start_time = -1;
|
||||||
pad->end_time = -1;
|
pad->priv->end_time = -1;
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
@ -914,8 +917,8 @@ gst_videoaggregator_reset (GstVideoAggregator * vagg)
|
|||||||
GstVideoAggregatorPad *p = l->data;
|
GstVideoAggregatorPad *p = l->data;
|
||||||
|
|
||||||
gst_buffer_replace (&p->buffer, NULL);
|
gst_buffer_replace (&p->buffer, NULL);
|
||||||
p->start_time = -1;
|
p->priv->start_time = -1;
|
||||||
p->end_time = -1;
|
p->priv->end_time = -1;
|
||||||
|
|
||||||
gst_video_info_init (&p->info);
|
gst_video_info_init (&p->info);
|
||||||
}
|
}
|
||||||
@ -1022,7 +1025,7 @@ gst_videoaggregator_fill_queues (GstVideoAggregator * vagg,
|
|||||||
end_time *= ABS (agg->segment.rate);
|
end_time *= ABS (agg->segment.rate);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pad->end_time != -1 && pad->end_time > end_time
|
if (pad->priv->end_time != -1 && pad->priv->end_time > end_time
|
||||||
&& !bpad->unresponsive) {
|
&& !bpad->unresponsive) {
|
||||||
GST_DEBUG_OBJECT (pad, "Buffer from the past, dropping");
|
GST_DEBUG_OBJECT (pad, "Buffer from the past, dropping");
|
||||||
gst_buffer_unref (buf);
|
gst_buffer_unref (buf);
|
||||||
@ -1038,8 +1041,8 @@ gst_videoaggregator_fill_queues (GstVideoAggregator * vagg,
|
|||||||
GST_TIME_ARGS (start_time));
|
GST_TIME_ARGS (start_time));
|
||||||
gst_buffer_replace (&pad->buffer, buf);
|
gst_buffer_replace (&pad->buffer, buf);
|
||||||
pad->buffer_vinfo = *vinfo;
|
pad->buffer_vinfo = *vinfo;
|
||||||
pad->start_time = start_time;
|
pad->priv->start_time = start_time;
|
||||||
pad->end_time = end_time;
|
pad->priv->end_time = end_time;
|
||||||
|
|
||||||
gst_buffer_unref (buf);
|
gst_buffer_unref (buf);
|
||||||
buf = gst_aggregator_pad_steal_buffer (bpad);
|
buf = gst_aggregator_pad_steal_buffer (bpad);
|
||||||
@ -1065,9 +1068,9 @@ gst_videoaggregator_fill_queues (GstVideoAggregator * vagg,
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (!bpad->unresponsive && pad->end_time != -1) {
|
if (!bpad->unresponsive && pad->priv->end_time != -1) {
|
||||||
if (pad->end_time <= output_start_time) {
|
if (pad->priv->end_time <= output_start_time) {
|
||||||
pad->start_time = pad->end_time = -1;
|
pad->priv->start_time = pad->priv->end_time = -1;
|
||||||
if (is_eos) {
|
if (is_eos) {
|
||||||
GST_DEBUG ("I just need more data");
|
GST_DEBUG ("I just need more data");
|
||||||
need_more_data = TRUE;
|
need_more_data = TRUE;
|
||||||
@ -1517,7 +1520,7 @@ gst_videoaggregator_sink_clip (GstAggregator * agg,
|
|||||||
end_time *= ABS (agg->segment.rate);
|
end_time *= ABS (agg->segment.rate);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (bpad->buffer != NULL && end_time < pad->end_time) {
|
if (bpad->buffer != NULL && end_time < pad->priv->end_time) {
|
||||||
gst_buffer_unref (buf);
|
gst_buffer_unref (buf);
|
||||||
*outbuf = NULL;
|
*outbuf = NULL;
|
||||||
return GST_FLOW_OK;
|
return GST_FLOW_OK;
|
||||||
@ -1543,12 +1546,12 @@ gst_videoaggregator_flush (GstAggregator * agg)
|
|||||||
/* Convert to the output segment rate */
|
/* Convert to the output segment rate */
|
||||||
if (ABS (agg->segment.rate) != abs_rate) {
|
if (ABS (agg->segment.rate) != abs_rate) {
|
||||||
if (ABS (agg->segment.rate) != 1.0 && p->buffer) {
|
if (ABS (agg->segment.rate) != 1.0 && p->buffer) {
|
||||||
p->start_time /= ABS (agg->segment.rate);
|
p->priv->start_time /= ABS (agg->segment.rate);
|
||||||
p->end_time /= ABS (agg->segment.rate);
|
p->priv->end_time /= ABS (agg->segment.rate);
|
||||||
}
|
}
|
||||||
if (abs_rate != 1.0 && p->buffer) {
|
if (abs_rate != 1.0 && p->buffer) {
|
||||||
p->start_time *= abs_rate;
|
p->priv->start_time *= abs_rate;
|
||||||
p->end_time *= abs_rate;
|
p->priv->end_time *= abs_rate;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1650,8 +1653,8 @@ gst_videoaggregator_request_new_pad (GstElement * element,
|
|||||||
|
|
||||||
GST_OBJECT_LOCK (vagg);
|
GST_OBJECT_LOCK (vagg);
|
||||||
vaggpad->zorder = GST_ELEMENT (vagg)->numsinkpads;
|
vaggpad->zorder = GST_ELEMENT (vagg)->numsinkpads;
|
||||||
vaggpad->start_time = -1;
|
vaggpad->priv->start_time = -1;
|
||||||
vaggpad->end_time = -1;
|
vaggpad->priv->end_time = -1;
|
||||||
element->sinkpads = g_list_sort (element->sinkpads,
|
element->sinkpads = g_list_sort (element->sinkpads,
|
||||||
(GCompareFunc) pad_zorder_compare);
|
(GCompareFunc) pad_zorder_compare);
|
||||||
GST_OBJECT_UNLOCK (vagg);
|
GST_OBJECT_UNLOCK (vagg);
|
||||||
|
@ -47,28 +47,27 @@ typedef struct _GstVideoAggregatorPadPrivate GstVideoAggregatorPadPrivate;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* GstVideoAggregatorPad:
|
* GstVideoAggregatorPad:
|
||||||
*
|
* @info: The #GstVideoInfo currently set on the pad
|
||||||
* The opaque #GstVideoAggregatorPad structure.
|
* @buffer_vinfo: The #GstVideoInfo representing the type contained
|
||||||
|
* in @buffer
|
||||||
|
* @aggregated_frame: The #GstVideoFrame ready to be used for aggregation
|
||||||
|
* inside the aggregate_frames vmethod.
|
||||||
|
* @zorder: The zorder of this pad
|
||||||
*/
|
*/
|
||||||
struct _GstVideoAggregatorPad
|
struct _GstVideoAggregatorPad
|
||||||
{
|
{
|
||||||
GstAggregatorPad parent;
|
GstAggregatorPad parent;
|
||||||
|
|
||||||
/* < private > */
|
|
||||||
|
|
||||||
/* caps */
|
|
||||||
GstVideoInfo info;
|
GstVideoInfo info;
|
||||||
|
|
||||||
/* properties */
|
|
||||||
guint zorder;
|
|
||||||
|
|
||||||
GstBuffer *buffer;
|
GstBuffer *buffer;
|
||||||
GstVideoInfo buffer_vinfo;
|
GstVideoInfo buffer_vinfo;
|
||||||
|
|
||||||
GstClockTime start_time;
|
|
||||||
GstClockTime end_time;
|
|
||||||
GstVideoFrame *aggregated_frame;
|
GstVideoFrame *aggregated_frame;
|
||||||
|
|
||||||
|
/* properties */
|
||||||
|
guint zorder;
|
||||||
|
|
||||||
/* < private > */
|
/* < private > */
|
||||||
GstVideoAggregatorPadPrivate *priv;
|
GstVideoAggregatorPadPrivate *priv;
|
||||||
gpointer _gst_reserved[GST_PADDING];
|
gpointer _gst_reserved[GST_PADDING];
|
||||||
|
Loading…
x
Reference in New Issue
Block a user