aggregator: If upstream has no max latency but the subclass has, take the subclass...
authorSebastian Dröge <sebastian@centricular.com>
Fri, 6 Feb 2015 09:36:28 +0000 (10:36 +0100)
committerTim-Philipp Müller <tim@centricular.com>
Sat, 2 Dec 2017 15:10:26 +0000 (15:10 +0000)
libs/gst/base/gstaggregator.c

index 9f29bec..5fe1913 100644 (file)
@@ -1163,8 +1163,8 @@ gst_aggregator_get_latency_unlocked (GstAggregator * self, gboolean * live,
     max += self->priv->sub_latency_max;
 
   our_latency = self->priv->latency;
-  if (GST_CLOCK_TIME_IS_VALID (our_latency))
-    min += our_latency;
+  else if (GST_CLOCK_TIME_IS_VALID (self->priv->sub_latency_max))
+    max = self->priv->sub_latency_max;
 
   if (live)
     *live = self->priv->latency_live;
@@ -1221,6 +1221,8 @@ gst_aggregator_query_latency (GstAggregator * self, GstQuery * query)
   if (GST_CLOCK_TIME_IS_VALID (self->priv->sub_latency_max)
       && GST_CLOCK_TIME_IS_VALID (data.max))
     data.max += self->priv->sub_latency_max;
+  else if (GST_CLOCK_TIME_IS_VALID (self->priv->sub_latency_max))
+    data.max = self->priv->sub_latency_max;
 
   if (data.live && GST_CLOCK_TIME_IS_VALID (our_latency) && data.min > data.max) {
     GST_ELEMENT_WARNING (self, CORE, NEGOTIATION,