6QString getBitrateStr(
long long bitsPerSecond){
7 static constexpr std::string_view units =
"kMG";
9 float num = bitsPerSecond;
12 for(
unsigned i = 0; num > 1000 && i < units.size(); i++){
17 return QString::number(num,
'f', 2) +
" " + unit +
"bps";
39 for(
const auto& i :
reports.get()){
40 total += i.item.bitsPerSecond;
41 tooltip += QString::number(i.ssrc, 16)
42 +
" (" + QString::fromStdString(i.item.type) +
"): "
43 + getBitrateStr(i.item.bitsPerSecond) +
"\n";
46 if(tooltip.endsWith(
'\n'))
51 setText(getBitrateStr(total));
57 static constexpr std::string_view prefix =
"stats tx_send";
61 line.remove_prefix(prefix.size());
64 if(ssrc_sv.substr(0, 2) ==
"0x")
65 ssrc_sv.remove_prefix(2);
81 for(
const auto& r :
reports.get()){
steady_clock::duration duration
std::string_view tokenize(std::string_view &str, char delim, char quot)
Tokenizer for string_view.
bool parse_num(std::string_view sv, T &res, int base=10)
bool sv_is_prefix(std::string_view haystack, std::string_view needle)