rtspsrc: fix requested range
authorMathieu Duponchelle <mathieu@centricular.com>
Tue, 11 Feb 2020 20:52:41 +0000 (21:52 +0100)
committerGStreamer Merge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Wed, 12 Feb 2020 05:47:54 +0000 (05:47 +0000)
When the server replies with a range "now-", it is presumed to
be a "live" stream and we should request a similar range.

This was the case prior to my refactoring to make use of
gst_rtsp_range_to_string in 5f1a732bc7b76a6f1b8aa5f26b6e76fbca0261c7,
this commit restores the behaviour for that case.

gst/rtsp/gstrtspsrc.c

index a61d299..a0c58c9 100644 (file)
@@ -8378,10 +8378,20 @@ gen_range_header (GstRTSPSrc * src, GstSegment * segment)
     g_date_time_unref (prime_epoch);
   } else {
     range.unit = GST_RTSP_RANGE_NPT;
-    range.min.type = GST_RTSP_TIME_SECONDS;
-    range.min.seconds = begin_seconds;
-    range.max.type = GST_RTSP_TIME_SECONDS;
-    range.max.seconds = end_seconds;
+
+    if (src->range && src->range->min.type == GST_RTSP_TIME_NOW) {
+      range.min.type = GST_RTSP_TIME_NOW;
+    } else {
+      range.min.type = GST_RTSP_TIME_SECONDS;
+      range.min.seconds = begin_seconds;
+    }
+
+    if (src->range && src->range->max.type == GST_RTSP_TIME_END) {
+      range.max.type = GST_RTSP_TIME_END;
+    } else {
+      range.max.type = GST_RTSP_TIME_SECONDS;
+      range.max.seconds = end_seconds;
+    }
   }
 
   /* Don't set end bounds when not required to */