vlc/vlc-3.0 | branch: master | Francois Cartegnie <[email protected]> | Sun Apr 5 20:36:57 2020 +0200| [438fabd5cd68756ab196d7d0387315c63feca697] | committer: Francois Cartegnie
demux: hls: workaround failed update loops (cherry picked from commit 46ff0e4ec29ffbf946c148786fcc487ea7982753) > http://git.videolan.org/gitweb.cgi/vlc/vlc-3.0.git/?a=commit;h=438fabd5cd68756ab196d7d0387315c63feca697 --- modules/demux/hls/playlist/Representation.cpp | 9 ++++++--- modules/demux/hls/playlist/Representation.hpp | 1 + 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/modules/demux/hls/playlist/Representation.cpp b/modules/demux/hls/playlist/Representation.cpp index 9c8c979edb..118545b538 100644 --- a/modules/demux/hls/playlist/Representation.cpp +++ b/modules/demux/hls/playlist/Representation.cpp @@ -42,6 +42,7 @@ Representation::Representation ( BaseAdaptationSet *set ) : { b_live = true; b_loaded = false; + b_failed = false; nextUpdateTime = 0; targetDuration = 0; streamFormat = StreamFormat::UNKNOWN; @@ -133,7 +134,7 @@ void Representation::scheduleNextUpdate(uint64_t number) bool Representation::needsUpdate() const { - return !b_loaded || (isLive() && nextUpdateTime < time(NULL)); + return !b_failed && (!b_loaded || (isLive() && nextUpdateTime < time(NULL))); } bool Representation::runLocalUpdates(SharedResources *res) @@ -143,8 +144,10 @@ bool Representation::runLocalUpdates(SharedResources *res) if(!b_loaded || (isLive() && nextUpdateTime < now)) { M3U8Parser parser(res); - parser.appendSegmentsFromPlaylistURI(playlist->getVLCObject(), this); - b_loaded = true; + if(!parser.appendSegmentsFromPlaylistURI(playlist->getVLCObject(), this)) + b_failed = true; + else + b_loaded = true; return true; } diff --git a/modules/demux/hls/playlist/Representation.hpp b/modules/demux/hls/playlist/Representation.hpp index 8659fe245b..8446750f86 100644 --- a/modules/demux/hls/playlist/Representation.hpp +++ b/modules/demux/hls/playlist/Representation.hpp @@ -57,6 +57,7 @@ namespace hls StreamFormat streamFormat; bool b_live; bool b_loaded; + bool b_failed; time_t nextUpdateTime; time_t targetDuration; Url playlistUrl; _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
