Improved memory usage for VoD files. Temporarily breaks compatibility with Smooth and MP4.

This commit is contained in:
Erik Zandvliet 2013-09-15 10:40:17 +02:00
parent 21b25a12ea
commit 6e9f797847
2 changed files with 21 additions and 12 deletions

View file

@ -82,8 +82,15 @@ int main(int argc, char** argv){
DTSC::File source = DTSC::File(conf.getString("filename"));
JSON::Value meta = source.getMeta();
std::string tmp = meta.toNetPacked();
for (JSON::ObjIter oIt = meta["tracks"].ObjBegin(); oIt != meta["tracks"].ObjEnd(); oIt++){
for (JSON::ArrIter aIt = oIt->second["keys"].ArrBegin(); aIt != oIt->second["keys"].ArrEnd(); aIt++){
(*aIt).removeMember("parts");
}
}
//send the header
meta.netPrepare();
in_out.SendNow(meta.toNetPacked());
if ( !(meta.isMember("keytime") && meta.isMember("keybpos") && meta.isMember("keynum") && meta.isMember("keylen") && meta.isMember("frags"))
@ -98,6 +105,8 @@ int main(int argc, char** argv){
return 1;
}
std::cerr << meta.toNetPacked().size() << std::endl;
JSON::Value pausemark;
pausemark["datatype"] = "pause_marker";
pausemark["time"] = (long long int)0;

View file

@ -141,9 +141,9 @@ namespace Converters {
meta["tracks"][currentID]["keys"][newNum - 1]["len"] = F.getJSON()["time"].asInt() - meta["tracks"][currentID]["keys"][newNum - 1]["time"].asInt();
meta["tracks"][currentID]["keys"][newNum - 1]["size"] = trackData[currentID].totalSize;
trackData[currentID].totalSize = 0;
for (int i = 0; i < trackData[currentID].parts.size(); i++){
meta["tracks"][currentID]["keys"][newNum - 1]["parts"].append(trackData[currentID].parts[i]);
}
std::string encodeVec = JSON::encodeVector( trackData[currentID].parts );
meta["tracks"][currentID]["keys"][newNum - 1]["parts"] = encodeVec;
meta["tracks"][currentID]["keys"][newNum - 1]["partsize"] = (long long int)trackData[currentID].parts.size();
trackData[currentID].parts.clear();
}
}
@ -158,9 +158,9 @@ namespace Converters {
meta["tracks"][currentID]["keys"][newNum - 1]["len"] = F.getJSON()["time"].asInt() - meta["tracks"][currentID]["keys"][newNum - 1]["time"].asInt();
meta["tracks"][currentID]["keys"][newNum - 1]["size"] = trackData[currentID].totalSize;
trackData[currentID].totalSize = 0;
for (int i = 0; i < trackData[currentID].parts.size(); i++){
meta["tracks"][currentID]["keys"][newNum - 1]["parts"].append(trackData[currentID].parts[i]);
}
std::string encodeVec = JSON::encodeVector( trackData[currentID].parts );
meta["tracks"][currentID]["keys"][newNum - 1]["parts"] = encodeVec;
meta["tracks"][currentID]["keys"][newNum - 1]["partsize"] = (long long int)trackData[currentID].parts.size();
trackData[currentID].parts.clear();
}
}
@ -201,15 +201,15 @@ namespace Converters {
meta["tracks"][it->first]["keys"][tmp - 1]["len"] = it->second.lastms;
}
meta["tracks"][it->first]["keys"][tmp - 1]["size"] = it->second.totalSize;
for (int i = 0; i < trackData[it->first].parts.size(); i++){
meta["tracks"][it->first]["keys"][tmp - 1]["parts"].append(it->second.parts[i]);
}
std::string encodeVec = JSON::encodeVector( trackData[currentID].parts );
meta["tracks"][currentID]["keys"][tmp - 1]["parts"] = encodeVec;
meta["tracks"][currentID]["keys"][tmp - 1]["partsize"] = (long long int)trackData[currentID].parts.size();
}else{
meta["tracks"][it->first]["keys"][tmp]["len"] = it->second.lastms;
meta["tracks"][it->first]["keys"][tmp]["size"] = it->second.totalSize;
for (int i = 0; i < trackData[it->first].parts.size(); i++){
meta["tracks"][it->first]["keys"][tmp]["parts"].append(it->second.parts[i]);
}
std::string encodeVec = JSON::encodeVector( trackData[currentID].parts );
meta["tracks"][currentID]["keys"][tmp - 1]["parts"] = encodeVec;
meta["tracks"][currentID]["keys"][tmp - 1]["partsize"] = (long long int)trackData[currentID].parts.size();
}
//calculate fragments
meta["tracks"][it->first]["frags"].null();