aggregator: add latency query handling
authorMatthew Waters <matthew@centricular.com>
Mon, 6 Oct 2014 10:46:24 +0000 (21:46 +1100)
committerMatthew Waters <matthew@centricular.com>
Thu, 9 Oct 2014 12:52:11 +0000 (23:52 +1100)
gst-libs/gst/video/gstvideoaggregator.c

index 1edb4b9..8f46b7b 100644 (file)
@@ -1325,87 +1325,6 @@ gst_videoaggregator_query_duration (GstVideoAggregator * vagg, GstQuery * query)
 }
 
 static gboolean
-gst_videoaggregator_query_latency (GstVideoAggregator * vagg, GstQuery * query)
-{
-  GstClockTime min, max;
-  gboolean live;
-  gboolean res;
-  GstIterator *it;
-  gboolean done;
-  GValue item = { 0 };
-
-  res = TRUE;
-  done = FALSE;
-  live = FALSE;
-  min = 0;
-  max = GST_CLOCK_TIME_NONE;
-
-  /* Take maximum of all latency values */
-  it = gst_element_iterate_sink_pads (GST_ELEMENT_CAST (vagg));
-  while (!done) {
-    switch (gst_iterator_next (it, &item)) {
-      case GST_ITERATOR_DONE:
-        done = TRUE;
-        break;
-      case GST_ITERATOR_OK:
-      {
-        GstPad *pad = g_value_get_object (&item);
-        GstQuery *peerquery;
-        GstClockTime min_cur, max_cur;
-        gboolean live_cur;
-
-        peerquery = gst_query_new_latency ();
-
-        /* Ask peer for latency */
-        res &= gst_pad_peer_query (pad, peerquery);
-
-        /* take max from all valid return values */
-        if (res) {
-          gst_query_parse_latency (peerquery, &live_cur, &min_cur, &max_cur);
-
-          if (min_cur > min)
-            min = min_cur;
-
-          if (max_cur != GST_CLOCK_TIME_NONE &&
-              ((max != GST_CLOCK_TIME_NONE && max_cur > max) ||
-                  (max == GST_CLOCK_TIME_NONE)))
-            max = max_cur;
-
-          live = live || live_cur;
-        }
-
-        gst_query_unref (peerquery);
-        g_value_reset (&item);
-        break;
-      }
-      case GST_ITERATOR_RESYNC:
-        live = FALSE;
-        min = 0;
-        max = GST_CLOCK_TIME_NONE;
-        res = TRUE;
-        gst_iterator_resync (it);
-        break;
-      default:
-        res = FALSE;
-        done = TRUE;
-        break;
-    }
-  }
-  g_value_unset (&item);
-  gst_iterator_free (it);
-
-  if (res) {
-    /* store the results */
-    GST_DEBUG_OBJECT (vagg, "Calculated total latency: live %s, min %"
-        GST_TIME_FORMAT ", max %" GST_TIME_FORMAT,
-        (live ? "yes" : "no"), GST_TIME_ARGS (min), GST_TIME_ARGS (max));
-    gst_query_set_latency (query, live, min, max);
-  }
-
-  return res;
-}
-
-static gboolean
 gst_videoaggregator_src_query (GstAggregator * agg, GstQuery * query)
 {
   GstVideoAggregator *vagg = GST_VIDEO_AGGREGATOR (agg);
@@ -1434,8 +1353,6 @@ gst_videoaggregator_src_query (GstAggregator * agg, GstQuery * query)
       res = gst_videoaggregator_query_duration (vagg, query);
       break;
     case GST_QUERY_LATENCY:
-      res = gst_videoaggregator_query_latency (vagg, query);
-      break;
     case GST_QUERY_CAPS:
       res =
           GST_AGGREGATOR_CLASS (gst_videoaggregator_parent_class)->src_query