adaptivedemux: retry download MAX_DOWNLOAD_RETRY_COUNT times before erroring
authorMatthew Waters <matthew@centricular.com>
Fri, 2 Dec 2016 06:51:57 +0000 (17:51 +1100)
committerSebastian Dröge <sebastian@centricular.com>
Thu, 25 May 2017 10:33:35 +0000 (13:33 +0300)
What we want is to retry downloading the fragment on 4xx/5xx errors
however returning EOS will cause waiting for a manifest update for live
(which may be a really long time) or stop everything for non-live.

Change that to only return EOS/ERROR once we've reached the error limit.

https://bugzilla.gnome.org/show_bug.cgi?id=776609

gst-libs/gst/adaptivedemux/gstadaptivedemux.c

index 7cce71e4b4fbde105a86bb740e2f4d1a16ba982f..ba093a7d2736e65f367ee0adf4a605ec2f0bbd58 100644 (file)
@@ -3451,7 +3451,7 @@ again:
     }
 
   flushing:
-    if (++stream->download_error_count <= MAX_DOWNLOAD_ERROR_COUNT) {
+    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 */
       GST_DEBUG_OBJECT (stream->pad, "Converting error of live stream to EOS");