From 055866e2fb33f5e23849931fffc36530989cf407 Mon Sep 17 00:00:00 2001 From: Thulinma Date: Fri, 10 Jun 2016 14:20:17 +0200 Subject: [PATCH] Tweaked seek/isReadyForPlay implementations, fix HLS support for large key durations. --- src/input/input_buffer.cpp | 5 ++++- src/output/output.cpp | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/input/input_buffer.cpp b/src/input/input_buffer.cpp index a7e9592b..d8313ce4 100644 --- a/src/input/input_buffer.cpp +++ b/src/input/input_buffer.cpp @@ -208,9 +208,12 @@ namespace Mist { } bool inputBuffer::removeKey(unsigned int tid) { - if ((myMeta.tracks[tid].keys.size() < 2 || myMeta.tracks[tid].fragments.size() < 2) && config->is_active) { + //Make sure we have at least 3 whole fragments at all times, + //unless we're shutting down the whole buffer right now + if (myMeta.tracks[tid].fragments.size() < 5 && config->is_active) { return false; } + //If we're shutting down, and this track is empty, abort if (!myMeta.tracks[tid].keys.size()) { return false; } diff --git a/src/output/output.cpp b/src/output/output.cpp index 9f5f7ed9..fe1dc432 100644 --- a/src/output/output.cpp +++ b/src/output/output.cpp @@ -129,7 +129,7 @@ namespace Mist { selectDefaultTracks(); } unsigned int mainTrack = getMainSelectedTrack(); - if (mainTrack && myMeta.tracks.count(mainTrack) && myMeta.tracks[mainTrack].keys.size() >= 2){ + if (mainTrack && myMeta.tracks.count(mainTrack) && (myMeta.tracks[mainTrack].keys.size() >= 2 || myMeta.tracks[mainTrack].lastms - myMeta.tracks[mainTrack].firstms > 5000)){ return true; }else{ HIGH_MSG("NOT READY YET (%lu tracks, %lu = %lu keys)", myMeta.tracks.size(), getMainSelectedTrack(), myMeta.tracks[getMainSelectedTrack()].keys.size());