From a3bce93b7decb93392d625d524611330dae70f44 Mon Sep 17 00:00:00 2001 From: Thulinma Date: Tue, 28 Jan 2014 16:15:00 +0100 Subject: [PATCH] Fixed problems with MistBuffer keeping too much data. --- lib/dtsc.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/dtsc.cpp b/lib/dtsc.cpp index 85c6c84d..c81c516d 100644 --- a/lib/dtsc.cpp +++ b/lib/dtsc.cpp @@ -271,7 +271,8 @@ void DTSC::Stream::addPacket(JSON::Value & newPack){ //throw away buffers if buffer time is met int trid = buffers.begin()->first.trackID; int firstTime = buffers.begin()->first.seekTime; - while (metadata.tracks[trid].keys.size() > 2 && metadata.tracks[trid].keys.rbegin()->getTime() - firstTime > buffertime){ + int lastTime = buffers.rbegin()->first.seekTime - buffertime; + while ((!metadata.tracks[trid].keys.size() && firstTime < lastTime) || (metadata.tracks[trid].keys.size() && metadata.tracks[trid].keys.rbegin()->getTime() < lastTime) || (metadata.tracks[trid].keys.size() > 2 && metadata.tracks[trid].keys.rbegin()->getTime() - firstTime > buffertime)){ cutOneBuffer(); trid = buffers.begin()->first.trackID; firstTime = buffers.begin()->first.seekTime;