mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-02-06 22:42:35 +00:00
aggregator: review code related to time level
Add a comment for when the state matters. Use a local var for priv in update_time_level() to improve readability. Move the our_latency local var below the query results checks.
This commit is contained in:
parent
23692ee688
commit
a083391fb5
1 changed files with 28 additions and 26 deletions
|
@ -217,6 +217,9 @@ struct _GstAggregatorPadPrivate
|
||||||
GQueue data; /* buffers, events and queries */
|
GQueue data; /* buffers, events and queries */
|
||||||
GstBuffer *clipped_buffer;
|
GstBuffer *clipped_buffer;
|
||||||
guint num_buffers;
|
guint num_buffers;
|
||||||
|
|
||||||
|
/* used to track fill state of queues, only used with live-src and when
|
||||||
|
* latency property is set to > 0 */
|
||||||
GstClockTime head_position;
|
GstClockTime head_position;
|
||||||
GstClockTime tail_position;
|
GstClockTime tail_position;
|
||||||
GstClockTime head_time; /* running time */
|
GstClockTime head_time; /* running time */
|
||||||
|
@ -1317,38 +1320,37 @@ gst_aggregator_flush_start (GstAggregator * self, GstAggregatorPad * aggpad,
|
||||||
static void
|
static void
|
||||||
update_time_level (GstAggregatorPad * aggpad, gboolean head)
|
update_time_level (GstAggregatorPad * aggpad, gboolean head)
|
||||||
{
|
{
|
||||||
if (head) {
|
GstAggregatorPadPrivate *priv = aggpad->priv;
|
||||||
if (GST_CLOCK_TIME_IS_VALID (aggpad->priv->head_position) &&
|
|
||||||
aggpad->priv->head_segment.format == GST_FORMAT_TIME)
|
|
||||||
aggpad->priv->head_time =
|
|
||||||
gst_segment_to_running_time (&aggpad->priv->head_segment,
|
|
||||||
GST_FORMAT_TIME, aggpad->priv->head_position);
|
|
||||||
else
|
|
||||||
aggpad->priv->head_time = GST_CLOCK_TIME_NONE;
|
|
||||||
|
|
||||||
if (!GST_CLOCK_TIME_IS_VALID (aggpad->priv->tail_time))
|
if (head) {
|
||||||
aggpad->priv->tail_time = aggpad->priv->head_time;
|
if (GST_CLOCK_TIME_IS_VALID (priv->head_position) &&
|
||||||
} else {
|
priv->head_segment.format == GST_FORMAT_TIME)
|
||||||
if (GST_CLOCK_TIME_IS_VALID (aggpad->priv->tail_position) &&
|
priv->head_time = gst_segment_to_running_time (&priv->head_segment,
|
||||||
aggpad->segment.format == GST_FORMAT_TIME)
|
GST_FORMAT_TIME, priv->head_position);
|
||||||
aggpad->priv->tail_time =
|
|
||||||
gst_segment_to_running_time (&aggpad->segment,
|
|
||||||
GST_FORMAT_TIME, aggpad->priv->tail_position);
|
|
||||||
else
|
else
|
||||||
aggpad->priv->tail_time = aggpad->priv->head_time;
|
priv->head_time = GST_CLOCK_TIME_NONE;
|
||||||
|
|
||||||
|
if (!GST_CLOCK_TIME_IS_VALID (priv->tail_time))
|
||||||
|
priv->tail_time = priv->head_time;
|
||||||
|
} else {
|
||||||
|
if (GST_CLOCK_TIME_IS_VALID (priv->tail_position) &&
|
||||||
|
aggpad->segment.format == GST_FORMAT_TIME)
|
||||||
|
priv->tail_time = gst_segment_to_running_time (&aggpad->segment,
|
||||||
|
GST_FORMAT_TIME, priv->tail_position);
|
||||||
|
else
|
||||||
|
priv->tail_time = priv->head_time;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (aggpad->priv->head_time == GST_CLOCK_TIME_NONE ||
|
if (priv->head_time == GST_CLOCK_TIME_NONE ||
|
||||||
aggpad->priv->tail_time == GST_CLOCK_TIME_NONE) {
|
priv->tail_time == GST_CLOCK_TIME_NONE) {
|
||||||
aggpad->priv->time_level = 0;
|
priv->time_level = 0;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (aggpad->priv->tail_time > aggpad->priv->head_time)
|
if (priv->tail_time > priv->head_time)
|
||||||
aggpad->priv->time_level = 0;
|
priv->time_level = 0;
|
||||||
else
|
else
|
||||||
aggpad->priv->time_level = aggpad->priv->head_time -
|
priv->time_level = priv->head_time - priv->tail_time;
|
||||||
aggpad->priv->tail_time;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1716,8 +1718,6 @@ gst_aggregator_query_latency_unlocked (GstAggregator * self, GstQuery * query)
|
||||||
|
|
||||||
gst_query_parse_latency (query, &live, &min, &max);
|
gst_query_parse_latency (query, &live, &min, &max);
|
||||||
|
|
||||||
our_latency = self->priv->latency;
|
|
||||||
|
|
||||||
if (G_UNLIKELY (!GST_CLOCK_TIME_IS_VALID (min))) {
|
if (G_UNLIKELY (!GST_CLOCK_TIME_IS_VALID (min))) {
|
||||||
GST_ERROR_OBJECT (self, "Invalid minimum latency %" GST_TIME_FORMAT
|
GST_ERROR_OBJECT (self, "Invalid minimum latency %" GST_TIME_FORMAT
|
||||||
". Please file a bug at " PACKAGE_BUGREPORT ".", GST_TIME_ARGS (min));
|
". Please file a bug at " PACKAGE_BUGREPORT ".", GST_TIME_ARGS (min));
|
||||||
|
@ -1732,6 +1732,8 @@ gst_aggregator_query_latency_unlocked (GstAggregator * self, GstQuery * query)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
our_latency = self->priv->latency;
|
||||||
|
|
||||||
self->priv->peer_latency_live = live;
|
self->priv->peer_latency_live = live;
|
||||||
self->priv->peer_latency_min = min;
|
self->priv->peer_latency_min = min;
|
||||||
self->priv->peer_latency_max = max;
|
self->priv->peer_latency_max = max;
|
||||||
|
|
Loading…
Reference in a new issue