Wiring discard rate of audio FEC/RED packets up to StatsReport.
BUG=webrtc:7903 Change-Id: I0325725be354ab89cfce1d3564936fe5ff93d303 Reviewed-on: https://chromium-review.googlesource.com/559339 Reviewed-by: Tommi <tommi@webrtc.org> Reviewed-by: Henrik Boström <hbos@webrtc.org> Reviewed-by: Henrik Lundin <henrik.lundin@webrtc.org> Commit-Queue: Minyue Li <minyue@webrtc.org> Cr-Commit-Position: refs/heads/master@{#19560}
This commit is contained in:
parent
1a92d0de49
commit
0e320ec5ba
@ -590,6 +590,8 @@ const char* StatsReport::Value::display_name() const {
|
||||
return "googRtt";
|
||||
case kStatsValueNameSecondaryDecodedRate:
|
||||
return "googSecondaryDecodedRate";
|
||||
case kStatsValueNameSecondaryDiscardedRate:
|
||||
return "googSecondaryDiscardedRate";
|
||||
case kStatsValueNameSendPacketsDiscarded:
|
||||
return "packetsDiscardedOnSend";
|
||||
case kStatsValueNameSpeechExpandRate:
|
||||
|
||||
@ -210,6 +210,7 @@ class StatsReport {
|
||||
kStatsValueNameRetransmitBitrate,
|
||||
kStatsValueNameRtt,
|
||||
kStatsValueNameSecondaryDecodedRate,
|
||||
kStatsValueNameSecondaryDiscardedRate,
|
||||
kStatsValueNameSendPacketsDiscarded,
|
||||
kStatsValueNameSpeechExpandRate,
|
||||
kStatsValueNameSrtpCipher,
|
||||
|
||||
@ -199,6 +199,7 @@ webrtc::AudioReceiveStream::Stats AudioReceiveStream::GetStats() const {
|
||||
stats.expand_rate = Q14ToFloat(ns.currentExpandRate);
|
||||
stats.speech_expand_rate = Q14ToFloat(ns.currentSpeechExpandRate);
|
||||
stats.secondary_decoded_rate = Q14ToFloat(ns.currentSecondaryDecodedRate);
|
||||
stats.secondary_discarded_rate = Q14ToFloat(ns.currentSecondaryDiscardedRate);
|
||||
stats.accelerate_rate = Q14ToFloat(ns.currentAccelerateRate);
|
||||
stats.preemptive_expand_rate = Q14ToFloat(ns.currentPreemptiveRate);
|
||||
|
||||
|
||||
@ -327,6 +327,8 @@ TEST(AudioReceiveStreamTest, GetStats) {
|
||||
stats.speech_expand_rate);
|
||||
EXPECT_EQ(Q14ToFloat(kNetworkStats.currentSecondaryDecodedRate),
|
||||
stats.secondary_decoded_rate);
|
||||
EXPECT_EQ(Q14ToFloat(kNetworkStats.currentSecondaryDiscardedRate),
|
||||
stats.secondary_discarded_rate);
|
||||
EXPECT_EQ(Q14ToFloat(kNetworkStats.currentAccelerateRate),
|
||||
stats.accelerate_rate);
|
||||
EXPECT_EQ(Q14ToFloat(kNetworkStats.currentPreemptiveRate),
|
||||
|
||||
@ -64,6 +64,7 @@ class AudioReceiveStream {
|
||||
float expand_rate = 0.0f;
|
||||
float speech_expand_rate = 0.0f;
|
||||
float secondary_decoded_rate = 0.0f;
|
||||
float secondary_discarded_rate = 0.0f;
|
||||
float accelerate_rate = 0.0f;
|
||||
float preemptive_expand_rate = 0.0f;
|
||||
int32_t decoding_calls_to_silence_generator = 0;
|
||||
|
||||
@ -393,7 +393,10 @@ struct NetworkStatistics {
|
||||
uint16_t currentAccelerateRate;
|
||||
// fraction of data coming from secondary decoding (in Q14)
|
||||
uint16_t currentSecondaryDecodedRate;
|
||||
// fraction of secondary data that is discarded (in Q14).
|
||||
// Fraction of secondary data, including FEC and RED, that is discarded (in
|
||||
// Q14). Discarding of secondary data can be caused by the reception of the
|
||||
// primary data, obsoleting the secondary data. It can also be caused by early
|
||||
// or late arrival of secondary data.
|
||||
uint16_t currentSecondaryDiscardedRate;
|
||||
// clock-drift in parts-per-million (negative or positive)
|
||||
int32_t clockDriftPPM;
|
||||
|
||||
@ -658,6 +658,7 @@ struct VoiceReceiverInfo : public MediaReceiverInfo {
|
||||
expand_rate(0),
|
||||
speech_expand_rate(0),
|
||||
secondary_decoded_rate(0),
|
||||
secondary_discarded_rate(0),
|
||||
accelerate_rate(0),
|
||||
preemptive_expand_rate(0),
|
||||
decoding_calls_to_silence_generator(0),
|
||||
@ -693,6 +694,12 @@ struct VoiceReceiverInfo : public MediaReceiverInfo {
|
||||
float speech_expand_rate;
|
||||
// fraction of data out of secondary decoding, including FEC and RED.
|
||||
float secondary_decoded_rate;
|
||||
// Fraction of secondary data, including FEC and RED, that is discarded.
|
||||
// Discarding of secondary data can be caused by the reception of the primary
|
||||
// data, obsoleting the secondary data. It can also be caused by early
|
||||
// or late arrival of secondary data. This metric is the percentage of
|
||||
// discarded secondary data since last query of receiver info.
|
||||
float secondary_discarded_rate;
|
||||
// Fraction of data removed through time compression.
|
||||
float accelerate_rate;
|
||||
// Fraction of data inserted through time stretching.
|
||||
|
||||
@ -2288,6 +2288,7 @@ bool WebRtcVoiceMediaChannel::GetStats(VoiceMediaInfo* info) {
|
||||
rinfo.expand_rate = stats.expand_rate;
|
||||
rinfo.speech_expand_rate = stats.speech_expand_rate;
|
||||
rinfo.secondary_decoded_rate = stats.secondary_decoded_rate;
|
||||
rinfo.secondary_discarded_rate = stats.secondary_discarded_rate;
|
||||
rinfo.accelerate_rate = stats.accelerate_rate;
|
||||
rinfo.preemptive_expand_rate = stats.preemptive_expand_rate;
|
||||
rinfo.decoding_calls_to_silence_generator =
|
||||
|
||||
@ -601,6 +601,7 @@ class WebRtcVoiceEngineTestFake : public testing::Test {
|
||||
stats.expand_rate = 5.67f;
|
||||
stats.speech_expand_rate = 8.90f;
|
||||
stats.secondary_decoded_rate = 1.23f;
|
||||
stats.secondary_discarded_rate = 0.12f;
|
||||
stats.accelerate_rate = 4.56f;
|
||||
stats.preemptive_expand_rate = 7.89f;
|
||||
stats.decoding_calls_to_silence_generator = 12;
|
||||
@ -639,6 +640,7 @@ class WebRtcVoiceEngineTestFake : public testing::Test {
|
||||
EXPECT_EQ(info.expand_rate, stats.expand_rate);
|
||||
EXPECT_EQ(info.speech_expand_rate, stats.speech_expand_rate);
|
||||
EXPECT_EQ(info.secondary_decoded_rate, stats.secondary_decoded_rate);
|
||||
EXPECT_EQ(info.secondary_discarded_rate, stats.secondary_discarded_rate);
|
||||
EXPECT_EQ(info.accelerate_rate, stats.accelerate_rate);
|
||||
EXPECT_EQ(info.preemptive_expand_rate, stats.preemptive_expand_rate);
|
||||
EXPECT_EQ(info.decoding_calls_to_silence_generator,
|
||||
|
||||
@ -142,6 +142,8 @@ void ExtractStats(const cricket::VoiceReceiverInfo& info, StatsReport* report) {
|
||||
{ StatsReport::kStatsValueNameExpandRate, info.expand_rate },
|
||||
{ StatsReport::kStatsValueNameSecondaryDecodedRate,
|
||||
info.secondary_decoded_rate },
|
||||
{ StatsReport::kStatsValueNameSecondaryDiscardedRate,
|
||||
info.secondary_discarded_rate },
|
||||
{ StatsReport::kStatsValueNameSpeechExpandRate, info.speech_expand_rate },
|
||||
{ StatsReport::kStatsValueNameAccelerateRate, info.accelerate_rate },
|
||||
{ StatsReport::kStatsValueNamePreemptiveExpandRate,
|
||||
|
||||
@ -332,6 +332,11 @@ void VerifyVoiceReceiverInfoReport(
|
||||
EXPECT_TRUE(GetValue(report, StatsReport::kStatsValueNameSecondaryDecodedRate,
|
||||
&value_in_report));
|
||||
EXPECT_EQ(rtc::ToString<float>(info.secondary_decoded_rate), value_in_report);
|
||||
EXPECT_TRUE(GetValue(report,
|
||||
StatsReport::kStatsValueNameSecondaryDiscardedRate,
|
||||
&value_in_report));
|
||||
EXPECT_EQ(rtc::ToString<float>(info.secondary_discarded_rate),
|
||||
value_in_report);
|
||||
EXPECT_TRUE(GetValue(
|
||||
report, StatsReport::kStatsValueNamePacketsReceived, &value_in_report));
|
||||
EXPECT_EQ(rtc::ToString<int>(info.packets_rcvd), value_in_report);
|
||||
@ -483,6 +488,7 @@ void InitVoiceReceiverInfo(cricket::VoiceReceiverInfo* voice_receiver_info) {
|
||||
voice_receiver_info->secondary_decoded_rate = 123;
|
||||
voice_receiver_info->accelerate_rate = 124;
|
||||
voice_receiver_info->preemptive_expand_rate = 125;
|
||||
voice_receiver_info->secondary_discarded_rate = 126;
|
||||
}
|
||||
|
||||
class StatsCollectorForTest : public webrtc::StatsCollector {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user