From 31f4509e262ce8e6982ef5f9edecf51dd2f77357 Mon Sep 17 00:00:00 2001 From: Thulinma Date: Mon, 30 Sep 2013 13:24:28 +0200 Subject: [PATCH] Optimized performance of DTSC::File::atKeyFrame --- lib/dtsc.cpp | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/lib/dtsc.cpp b/lib/dtsc.cpp index 8a011b67..9c212d9b 100644 --- a/lib/dtsc.cpp +++ b/lib/dtsc.cpp @@ -1011,20 +1011,16 @@ bool DTSC::File::atKeyframe(){ if (getJSON().isMember("keyframe")){ return true; } - bool inHeader = false; + long long int bTime = jsonbuffer["time"].asInt(); for (std::set::iterator selectIt = selectedTracks.begin(); selectIt != selectedTracks.end(); selectIt++){ - for (JSON::ObjIter oIt = metadata["tracks"].ObjBegin(); oIt != metadata["tracks"].ObjEnd(); oIt++){ - if (oIt->second["trackid"].asInt() == (*selectIt)){ - for (JSON::ArrIter aIt = oIt->second["keys"].ArrBegin(); aIt != oIt->second["keys"].ArrEnd(); aIt++){ - if ((*aIt)["time"].asInt() == jsonbuffer["time"].asInt()){ - inHeader = true; - break; - } - } + JSON::Value & keys = getTrackById((*selectIt))["keys"]; + for (JSON::ArrIter aIt = keys.ArrBegin(); aIt != keys.ArrEnd(); aIt++){ + if ((*aIt)["time"].asInt() == bTime){ + return true; } } } - return inHeader; + return false; } void DTSC::File::selectTracks(std::set & tracks){