adaptivedemux: Error out if downloading a segment failed too often in live mode
authorSebastian Dröge <sebastian@centricular.com>
Fri, 5 Jun 2015 09:26:11 +0000 (11:26 +0200)
committerSebastian Dröge <sebastian@centricular.com>
Fri, 5 Jun 2015 09:26:11 +0000 (11:26 +0200)
It's true that we shouldn't consider errors fatal immediately, but if we
always ignore them we will loop infinitely on live streams with segments
that can't be downloaded at all.

gst-libs/gst/adaptivedemux/gstadaptivedemux.c

index 6286273..854aefc 100644 (file)
@@ -1896,9 +1896,11 @@ gst_adaptive_demux_stream_download_fragment (GstAdaptiveDemuxStream * stream)
     if (ret != GST_FLOW_OK) {
       /* TODO check if we are truly stoping */
       if (ret != GST_FLOW_ERROR && gst_adaptive_demux_is_live (demux)) {
-        /* looks like there is no way of knowing when a live stream has ended
-         * Have to assume we are falling behind and cause a manifest reload */
-        return GST_FLOW_EOS;
+        if (++stream->download_error_count <= MAX_DOWNLOAD_ERROR_COUNT) {
+          /* looks like there is no way of knowing when a live stream has ended
+           * Have to assume we are falling behind and cause a manifest reload */
+          return GST_FLOW_EOS;
+        }
       }
     }
   }