rtsp-stream: make use of blocked_running_time in query_position
authorMathieu Duponchelle <mathieu@centricular.com>
Thu, 8 Oct 2020 20:17:16 +0000 (22:17 +0200)
committerMathieu Duponchelle <mathieu@centricular.com>
Thu, 8 Oct 2020 20:28:04 +0000 (22:28 +0200)
When blocking, the sink element will not have received a buffer
yet and the position query will fail. Instead, we make use of
the running time of the buffer we blocked on.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-rtsp-server/-/merge_requests/160>

gst/rtsp-server/rtsp-stream.c

index 5da7105..7585a0c 100644 (file)
@@ -5428,6 +5428,13 @@ gst_rtsp_stream_query_position (GstRTSPStream * stream, gint64 * position)
   priv = stream->priv;
 
   g_mutex_lock (&priv->lock);
+
+  if (priv->blocking && GST_CLOCK_TIME_IS_VALID (priv->blocked_running_time)) {
+    *position = priv->blocked_running_time;
+    g_mutex_unlock (&priv->lock);
+    return TRUE;
+  }
+
   /* depending on the transport type, it should query corresponding sink */
   if (priv->configured_protocols & GST_RTSP_LOWER_TRANS_UDP)
     sink = priv->udpsink[0];