Calculate both average and peak bit rates
This commit is contained in:
parent
761fbdc944
commit
cba0c0b38b
2 changed files with 19 additions and 4 deletions
|
@ -292,6 +292,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;
|
||||||
|
|
|
@ -1098,6 +1098,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;
|
||||||
|
@ -1126,6 +1127,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();
|
||||||
|
@ -1180,6 +1182,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();
|
||||||
|
@ -1263,10 +1266,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);
|
||||||
|
@ -1377,6 +1384,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;
|
||||||
}
|
}
|
||||||
|
@ -1517,6 +1525,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;
|
||||||
}
|
}
|
||||||
|
@ -1632,7 +1641,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;
|
||||||
|
@ -1721,6 +1730,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);
|
||||||
|
@ -1802,6 +1813,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);
|
||||||
|
@ -1973,6 +1986,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;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue