From 526feda14881461eab66b2ae6662b8494315274e Mon Sep 17 00:00:00 2001 From: Erik Zandvliet Date: Thu, 27 Jun 2013 13:06:09 +0200 Subject: [PATCH] Small updates and fixes to the dtsc library. --- lib/dtsc.cpp | 11 +++++++---- lib/dtsc.h | 2 +- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/lib/dtsc.cpp b/lib/dtsc.cpp index f13eff08..6f4c0a32 100644 --- a/lib/dtsc.cpp +++ b/lib/dtsc.cpp @@ -212,15 +212,16 @@ void DTSC::Stream::addPacket(JSON::Value & newPack){ JSON::Value key; key["time"] = newPack["time"]; if (keySize){ - key["num"] = (*(metadata["tracks"][trackMapping[newPos.trackID]]["keys"].ArrEnd()--))["num"].asInt() + 1; + key["num"] = metadata["tracks"][trackMapping[newPos.trackID]]["keys"][keySize -1]["num"].asInt() + 1; }else{ key["num"] = 1; } + metadata["tracks"][trackMapping[newPos.trackID]]["keys"].append(key); } unsigned int timeBuffered = 0; if (keySize > 1){ //increase buffer size if no keyframes available or too little time available - timeBuffered = (buffers.end()--)->second["time"].asInt() - buffers.begin()->second["time"].asInt(); + timeBuffered = buffers.rbegin()->second["time"].asInt() - buffers.begin()->second["time"].asInt(); } if (buffercount > 1 && (keyframes.size() < 2 || timeBuffered < buffertime)){ buffercount++; @@ -612,8 +613,10 @@ void DTSC::File::readHeader(int pos){ } //if there is another header, read it and replace metadata with that one. if (metadata.isMember("moreheader") && metadata["moreheader"].asInt() > 0){ - readHeader(metadata["moreheader"].asInt()); - return; + if (metadata["moreheader"].asInt() < getBytePosEOF()){ + readHeader(metadata["moreheader"].asInt()); + return; + } } metadata["vod"] = true; metadata.netPrepare(); diff --git a/lib/dtsc.h b/lib/dtsc.h index 362f1bc3..cfb26265 100644 --- a/lib/dtsc.h +++ b/lib/dtsc.h @@ -207,7 +207,7 @@ namespace DTSC { void setBufferTime(unsigned int ms); bool isNewest(DTSC::livePos & pos); DTSC::livePos getNext(DTSC::livePos & pos, std::set & allowedTracks); - private: + private: std::map buffers; std::map > keyframes; void addPacket(JSON::Value & newPack);