diff --git a/lib/dtsc.h b/lib/dtsc.h index a486c406..d4a92af7 100644 --- a/lib/dtsc.h +++ b/lib/dtsc.h @@ -302,6 +302,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 449526f3..48ca7174 100644 --- a/lib/dtscmeta.cpp +++ b/lib/dtscmeta.cpp @@ -1351,6 +1351,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 d9fd12d9..ece62c48 100644 --- a/src/io.cpp +++ b/src/io.cpp @@ -381,6 +381,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