From 6d319f8e4914909e43f737a13c4f3a464f406655 Mon Sep 17 00:00:00 2001 From: Mathieu Duponchelle Date: Thu, 8 Oct 2020 22:17:16 +0200 Subject: rtsp-stream: make use of blocked_running_time in query_position 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: --- gst/rtsp-server/rtsp-stream.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/gst/rtsp-server/rtsp-stream.c b/gst/rtsp-server/rtsp-stream.c index 5da7105..7585a0c 100644 --- a/gst/rtsp-server/rtsp-stream.c +++ b/gst/rtsp-server/rtsp-stream.c @@ -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]; -- cgit v1.2.3