videoaggregator: fix up QoS handling for live sources
authorMatthew Waters <matthew@centricular.com>
Mon, 17 Nov 2014 03:05:01 +0000 (14:05 +1100)
committerMatthew Waters <matthew@centricular.com>
Mon, 17 Nov 2014 11:39:07 +0000 (22:39 +1100)
Only attempt adaptive drop when we are not live

https://bugzilla.gnome.org/show_bug.cgi?id=739996

gst-libs/gst/video/gstvideoaggregator.c

index 115bde2..83ac15b 100644 (file)
@@ -749,15 +749,19 @@ static void
 gst_videoaggregator_update_qos (GstVideoAggregator * vagg, gdouble proportion,
     GstClockTimeDiff diff, GstClockTime timestamp)
 {
+  gboolean live;
+
   GST_DEBUG_OBJECT (vagg,
       "Updating QoS: proportion %lf, diff %s%" GST_TIME_FORMAT ", timestamp %"
       GST_TIME_FORMAT, proportion, (diff < 0) ? "-" : "",
       GST_TIME_ARGS (ABS (diff)), GST_TIME_ARGS (timestamp));
 
   GST_OBJECT_LOCK (vagg);
+  gst_aggregator_get_latency (GST_AGGREGATOR (vagg), &live, NULL, NULL);
+
   vagg->priv->proportion = proportion;
   if (G_LIKELY (timestamp != GST_CLOCK_TIME_NONE)) {
-    if (G_UNLIKELY (diff > 0))
+    if (!live && G_UNLIKELY (diff > 0))
       vagg->priv->earliest_time =
           timestamp + 2 * diff + gst_util_uint64_scale_int_round (GST_SECOND,
           GST_VIDEO_INFO_FPS_D (&vagg->info),