diff --git a/lib/dtsc.h b/lib/dtsc.h index bede047e..1dc8bf8e 100644 --- a/lib/dtsc.h +++ b/lib/dtsc.h @@ -282,6 +282,7 @@ namespace DTSC { Track(); Track(JSON::Value & trackRef); Track(Scan & trackRef); + void clearParts(); inline operator bool() const { return (parts.size() && keySizes.size() && (keySizes.size() == keys.size())); diff --git a/lib/dtscmeta.cpp b/lib/dtscmeta.cpp index 6f82daf5..77b48851 100644 --- a/lib/dtscmeta.cpp +++ b/lib/dtscmeta.cpp @@ -1297,6 +1297,10 @@ namespace DTSC { fragments.rbegin()->setSize(fragments.rbegin()->getSize() + packDataSize); } + void Track::clearParts(){ + while (fragments.size() > 1){removeFirstKey();} + } + /// Removes the first buffered key, including any fragments it was part of void Track::removeFirstKey(){ HIGH_MSG("Erasing key %d:%lu", trackID, keys[0].getNumber()); diff --git a/src/io.cpp b/src/io.cpp index 0decc495..d29c7a34 100644 --- a/src/io.cpp +++ b/src/io.cpp @@ -316,6 +316,9 @@ namespace Mist { if (myMeta.live){ myMeta.update(pack); + for (std::map::iterator it = myMeta.tracks.begin(); it != myMeta.tracks.end(); it++) { + it->second.clearParts(); + } } //End of brain melt