identity: Non-live upstream have no max latency
authorNicolas Dufresne <nicolas.dufresne@collabora.com>
Sat, 20 Jul 2019 01:57:09 +0000 (21:57 -0400)
committerTim-Philipp Müller <tim@centricular.com>
Thu, 8 Aug 2019 22:27:10 +0000 (23:27 +0100)
sync=TRUE implementation changes the latency query of a non-live
upstream into live, though it wrongly set the upstream max latency to 0.
As non-live sources won't loose data if we wait longer, this should have
been reported as have no max latency limite (-1).

plugins/elements/gstidentity.c

index bf6ba40..8da7cf0 100644 (file)
@@ -976,8 +976,12 @@ gst_identity_query (GstBaseTransform * base, GstPadDirection direction,
     GST_OBJECT_LOCK (identity);
     if (live)
       identity->upstream_latency = min;
-    else
+    else {
       identity->upstream_latency = 0;
+      /* if we interface a non-live source, then we know there is no
+       * limit in the maximum latency */
+      max = -1;
+    }
     GST_OBJECT_UNLOCK (identity);
 
     gst_query_set_latency (query, live || identity->sync, min, max);