dashdemux: Handle current SIDX before current position in normal mode like in keyunit...
authorSebastian Dröge <sebastian@centricular.com>
Mon, 10 Apr 2017 15:46:01 +0000 (18:46 +0300)
committerSebastian Dröge <sebastian@centricular.com>
Mon, 10 Apr 2017 15:46:01 +0000 (18:46 +0300)
Otherwise we'll get into an infinite loop here. Now this is still not
correct and will cause a clean error, but at least it won't hang forever
anymore.

ext/dash/gstdashdemux.c

index 93e1900..fe91061 100644 (file)
@@ -2866,10 +2866,15 @@ gst_dash_demux_data_received (GstAdaptiveDemux * demux,
           buffer =
               gst_adapter_take_buffer (dash_stream->sidx_adapter, available);
         } else {
-          buffer =
-              gst_adapter_take_buffer (dash_stream->sidx_adapter,
-              sidx_end_offset - dash_stream->sidx_current_offset);
-          advance = TRUE;
+          if (sidx_end_offset <= dash_stream->sidx_current_offset) {
+            buffer = NULL;
+            gst_adapter_clear (dash_stream->sidx_adapter);
+          } else {
+            buffer =
+                gst_adapter_take_buffer (dash_stream->sidx_adapter,
+                sidx_end_offset - dash_stream->sidx_current_offset);
+            advance = TRUE;
+          }
         }
       }