Merge branch 'development' into LTS_development

This commit is contained in:
Thulinma 2017-10-24 14:42:24 +02:00
commit 3a8b9e2a8a
3 changed files with 20 additions and 4 deletions

View file

@ -316,6 +316,7 @@ namespace DTSC {
unsigned long long firstms; unsigned long long firstms;
unsigned long long lastms; unsigned long long lastms;
int bps; int bps;
int max_bps;
int missedFrags; int missedFrags;
std::string init; std::string init;
std::string codec; std::string codec;

View file

@ -1128,6 +1128,7 @@ namespace DTSC {
firstms = 0; firstms = 0;
lastms = 0; lastms = 0;
bps = 0; bps = 0;
max_bps = 0;
missedFrags = 0; missedFrags = 0;
rate = 0; rate = 0;
size = 0; size = 0;
@ -1162,6 +1163,7 @@ namespace DTSC {
firstms = trackRef["firstms"].asInt(); firstms = trackRef["firstms"].asInt();
lastms = trackRef["lastms"].asInt(); lastms = trackRef["lastms"].asInt();
bps = trackRef["bps"].asInt(); bps = trackRef["bps"].asInt();
max_bps = trackRef["maxbps"].asInt();
missedFrags = trackRef["missed_frags"].asInt(); missedFrags = trackRef["missed_frags"].asInt();
codec = trackRef["codec"].asStringRef(); codec = trackRef["codec"].asStringRef();
type = trackRef["type"].asStringRef(); type = trackRef["type"].asStringRef();
@ -1224,6 +1226,7 @@ namespace DTSC {
firstms = trackRef.getMember("firstms").asInt(); firstms = trackRef.getMember("firstms").asInt();
lastms = trackRef.getMember("lastms").asInt(); lastms = trackRef.getMember("lastms").asInt();
bps = trackRef.getMember("bps").asInt(); bps = trackRef.getMember("bps").asInt();
max_bps = trackRef.getMember("maxbps").asInt();
missedFrags = trackRef.getMember("missed_frags").asInt(); missedFrags = trackRef.getMember("missed_frags").asInt();
codec = trackRef.getMember("codec").asString(); codec = trackRef.getMember("codec").asString();
type = trackRef.getMember("type").asString(); type = trackRef.getMember("type").asString();
@ -1317,10 +1320,14 @@ namespace DTSC {
newFrag.setNumber(keys[keys.size() - 1].getNumber()); newFrag.setNumber(keys[keys.size() - 1].getNumber());
if (fragments.size()) { if (fragments.size()) {
fragments[fragments.size() - 1].setDuration(packTime - getKey(fragments[fragments.size() - 1].getNumber()).getTime()); fragments[fragments.size() - 1].setDuration(packTime - getKey(fragments[fragments.size() - 1].getNumber()).getTime());
unsigned int newBps = (fragments[fragments.size() - 1].getSize() * 1000) / fragments[fragments.size() - 1].getDuration(); uint64_t totalBytes = 0;
if (newBps > bps){ uint64_t totalDuration = 0;
bps = newBps; for (std::deque<DTSC::Fragment>::iterator it = fragments.begin(); it != fragments.end(); it++){
totalBytes += it->getSize();
totalDuration += it->getDuration();
} }
bps = totalDuration ? (totalBytes * 1000) / totalDuration : 0;
max_bps = std::max(max_bps, (int)((fragments.rbegin()->getSize() * 1000) / fragments.rbegin()->getDuration()));
} }
newFrag.setDuration(0); newFrag.setDuration(0);
newFrag.setSize(0); newFrag.setSize(0);
@ -1431,6 +1438,7 @@ namespace DTSC {
keySizes.clear(); keySizes.clear();
keys.clear(); keys.clear();
bps = 0; bps = 0;
max_bps = 0;
firstms = 0; firstms = 0;
lastms = 0; lastms = 0;
} }
@ -1587,6 +1595,7 @@ namespace DTSC {
str << std::string(indent + 2, ' ') << "Firstms: " << firstms << std::endl; str << std::string(indent + 2, ' ') << "Firstms: " << firstms << std::endl;
str << std::string(indent + 2, ' ') << "Lastms: " << lastms << std::endl; str << std::string(indent + 2, ' ') << "Lastms: " << lastms << std::endl;
str << std::string(indent + 2, ' ') << "Bps: " << bps << std::endl; str << std::string(indent + 2, ' ') << "Bps: " << bps << std::endl;
str << std::string(indent + 2, ' ') << "Peak bps: " << max_bps << std::endl;
if (missedFrags) { if (missedFrags) {
str << std::string(indent + 2, ' ') << "missedFrags: " << missedFrags << std::endl; str << std::string(indent + 2, ' ') << "missedFrags: " << missedFrags << std::endl;
} }
@ -1702,7 +1711,7 @@ namespace DTSC {
///\brief Determines the "packed" size of a track ///\brief Determines the "packed" size of a track
int Track::getSendLen(bool skipDynamic) { int Track::getSendLen(bool skipDynamic) {
int result = 107 + init.size() + codec.size() + type.size() + getWritableIdentifier().size(); int result = 124 + init.size() + codec.size() + type.size() + getWritableIdentifier().size();
if (!skipDynamic){ if (!skipDynamic){
result += fragments.size() * PACKED_FRAGMENT_SIZE + 16; result += fragments.size() * PACKED_FRAGMENT_SIZE + 16;
result += keys.size() * PACKED_KEY_SIZE + 11; result += keys.size() * PACKED_KEY_SIZE + 11;
@ -1799,6 +1808,8 @@ namespace DTSC {
writePointer(p, convertLongLong(lastms), 8); writePointer(p, convertLongLong(lastms), 8);
writePointer(p, "\000\003bps\001", 6); writePointer(p, "\000\003bps\001", 6);
writePointer(p, convertLongLong(bps), 8); writePointer(p, convertLongLong(bps), 8);
writePointer(p, "\000\006maxbps\001", 9);
writePointer(p, convertLongLong(max_bps), 8);
writePointer(p, "\000\004init\002", 7); writePointer(p, "\000\004init\002", 7);
writePointer(p, convertInt(init.size()), 4); writePointer(p, convertInt(init.size()), 4);
writePointer(p, init); writePointer(p, init);
@ -1887,6 +1898,8 @@ namespace DTSC {
conn.SendNow(convertLongLong(lastms), 8); conn.SendNow(convertLongLong(lastms), 8);
conn.SendNow("\000\003bps\001", 6); conn.SendNow("\000\003bps\001", 6);
conn.SendNow(convertLongLong(bps), 8); conn.SendNow(convertLongLong(bps), 8);
conn.SendNow("\000\006maxbps\001", 9);
conn.SendNow(convertLongLong(max_bps), 8);
conn.SendNow("\000\004init\002", 7); conn.SendNow("\000\004init\002", 7);
conn.SendNow(convertInt(init.size()), 4); conn.SendNow(convertInt(init.size()), 4);
conn.SendNow(init); conn.SendNow(init);
@ -2066,6 +2079,7 @@ namespace DTSC {
result["firstms"] = (long long)firstms; result["firstms"] = (long long)firstms;
result["lastms"] = (long long)lastms; result["lastms"] = (long long)lastms;
result["bps"] = bps; result["bps"] = bps;
result["maxbps"] = max_bps;
if (missedFrags) { if (missedFrags) {
result["missed_frags"] = missedFrags; result["missed_frags"] = missedFrags;
} }

View file

@ -609,6 +609,7 @@ std::string HTTP::Parser::allVars(){
std::string ret; std::string ret;
if (!vars.size()){return ret;} if (!vars.size()){return ret;}
for (std::map<std::string, std::string>::iterator it = vars.begin(); it != vars.end(); ++it){ for (std::map<std::string, std::string>::iterator it = vars.begin(); it != vars.end(); ++it){
if (!it->second.size()){continue;}
if (ret.size() > 1){ if (ret.size() > 1){
ret += "&"; ret += "&";
}else{ }else{