Add and modify a few ANA stats. This CL adds seperate counters for ANA frame length increases and decreases, which gives more insight into what actions are taken. In addition, a new stat is added to track the sum of the uplink packet loss fraction that is set by the ANA FEC controller. BUG=webrtc:8127 Review-Url: https://codereview.webrtc.org/3007243002 Cr-Original-Commit-Position: refs/heads/master@{#19756} Cr-Mirrored-From: https://chromium.googlesource.com/external/webrtc Cr-Mirrored-Commit: 0d0b9121282c3f63aaaa242779122f5b0c5db96c
diff --git a/api/audio_codecs/audio_encoder.h b/api/audio_codecs/audio_encoder.h index a77894b..a1f36ae 100644 --- a/api/audio_codecs/audio_encoder.h +++ b/api/audio_codecs/audio_encoder.h
@@ -48,10 +48,17 @@ // call. If this value is not set, it indicates that the FEC controller is // disabled. rtc::Optional<uint32_t> fec_action_counter; - // Number of actions taken by the ANA frame length controller since the start - // of the call. If this value is not set, it indicates that the frame length - // controller is disabled. - rtc::Optional<uint32_t> frame_length_action_counter; + // Number of times the ANA frame length controller decided to increase the + // frame length since the start of the call. If this value is not set, it + // indicates that the frame length controller is disabled. + rtc::Optional<uint32_t> frame_length_increase_counter; + // Number of times the ANA frame length controller decided to decrease the + // frame length since the start of the call. If this value is not set, it + // indicates that the frame length controller is disabled. + rtc::Optional<uint32_t> frame_length_decrease_counter; + // The uplink packet loss fractions as set by the ANA FEC controller. If this + // value is not set, it indicates that the ANA FEC controller is not active. + rtc::Optional<float> uplink_packet_loss_fraction; }; // This is the interface class for encoders in AudioCoding module. Each codec
diff --git a/api/statstypes.cc b/api/statstypes.cc index 67bf49e..687b6b2 100644 --- a/api/statstypes.cc +++ b/api/statstypes.cc
@@ -594,8 +594,12 @@ return "googAnaDtxActionCounter"; case kStatsValueNameAnaFecActionCounter: return "googAnaFecActionCounter"; - case kStatsValueNameAnaFrameLengthActionCounter: - return "googAnaFrameLengthActionCounter"; + case kStatsValueNameAnaFrameLengthIncreaseCounter: + return "googAnaFrameLengthIncreaseCounter"; + case kStatsValueNameAnaFrameLengthDecreaseCounter: + return "googAnaFrameLengthDecreaseCounter"; + case kStatsValueNameAnaUplinkPacketLossFraction: + return "googAnaUplinkPacketLossFraction"; case kStatsValueNameRetransmitBitrate: return "googRetransmitBitrate"; case kStatsValueNameRtt:
diff --git a/api/statstypes.h b/api/statstypes.h index 219995e..378b014 100644 --- a/api/statstypes.h +++ b/api/statstypes.h
@@ -212,7 +212,9 @@ kStatsValueNameAnaChannelActionCounter, kStatsValueNameAnaDtxActionCounter, kStatsValueNameAnaFecActionCounter, - kStatsValueNameAnaFrameLengthActionCounter, + kStatsValueNameAnaFrameLengthIncreaseCounter, + kStatsValueNameAnaFrameLengthDecreaseCounter, + kStatsValueNameAnaUplinkPacketLossFraction, kStatsValueNameRetransmitBitrate, kStatsValueNameRtt, kStatsValueNameSecondaryDecodedRate,
diff --git a/media/engine/webrtcvoiceengine_unittest.cc b/media/engine/webrtcvoiceengine_unittest.cc index 67fde12..edb861e 100644 --- a/media/engine/webrtcvoiceengine_unittest.cc +++ b/media/engine/webrtcvoiceengine_unittest.cc
@@ -550,8 +550,12 @@ stats.ana_statistics.channel_action_counter = rtc::Optional<uint32_t>(432); stats.ana_statistics.dtx_action_counter = rtc::Optional<uint32_t>(543); stats.ana_statistics.fec_action_counter = rtc::Optional<uint32_t>(654); - stats.ana_statistics.frame_length_action_counter = + stats.ana_statistics.frame_length_increase_counter = rtc::Optional<uint32_t>(765); + stats.ana_statistics.frame_length_decrease_counter = + rtc::Optional<uint32_t>(876); + stats.ana_statistics.uplink_packet_loss_fraction = + rtc::Optional<float>(987.0); stats.typing_noise_detected = true; return stats; } @@ -591,8 +595,12 @@ stats.ana_statistics.dtx_action_counter); EXPECT_EQ(info.ana_statistics.fec_action_counter, stats.ana_statistics.fec_action_counter); - EXPECT_EQ(info.ana_statistics.frame_length_action_counter, - stats.ana_statistics.frame_length_action_counter); + EXPECT_EQ(info.ana_statistics.frame_length_increase_counter, + stats.ana_statistics.frame_length_increase_counter); + EXPECT_EQ(info.ana_statistics.frame_length_decrease_counter, + stats.ana_statistics.frame_length_decrease_counter); + EXPECT_EQ(info.ana_statistics.uplink_packet_loss_fraction, + stats.ana_statistics.uplink_packet_loss_fraction); EXPECT_EQ(info.typing_noise_detected, stats.typing_noise_detected && is_sending); }
diff --git a/modules/audio_coding/audio_network_adaptor/audio_network_adaptor_impl_unittest.cc b/modules/audio_coding/audio_network_adaptor/audio_network_adaptor_impl_unittest.cc index c29b1e8..5695a38 100644 --- a/modules/audio_coding/audio_network_adaptor/audio_network_adaptor_impl_unittest.cc +++ b/modules/audio_coding/audio_network_adaptor/audio_network_adaptor_impl_unittest.cc
@@ -298,8 +298,12 @@ default_stats.channel_action_counter); EXPECT_EQ(ana_stats.dtx_action_counter, default_stats.dtx_action_counter); EXPECT_EQ(ana_stats.fec_action_counter, default_stats.fec_action_counter); - EXPECT_EQ(ana_stats.frame_length_action_counter, - default_stats.frame_length_action_counter); + EXPECT_EQ(ana_stats.frame_length_increase_counter, + default_stats.frame_length_increase_counter); + EXPECT_EQ(ana_stats.frame_length_decrease_counter, + default_stats.frame_length_decrease_counter); + EXPECT_EQ(ana_stats.uplink_packet_loss_fraction, + default_stats.uplink_packet_loss_fraction); } } // namespace webrtc
diff --git a/pc/statscollector.cc b/pc/statscollector.cc index b964283..a14967a 100644 --- a/pc/statscollector.cc +++ b/pc/statscollector.cc
@@ -240,9 +240,17 @@ report->AddInt(StatsReport::kStatsValueNameAnaFecActionCounter, *info.ana_statistics.fec_action_counter); } - if (info.ana_statistics.frame_length_action_counter) { - report->AddInt(StatsReport::kStatsValueNameAnaFrameLengthActionCounter, - *info.ana_statistics.frame_length_action_counter); + if (info.ana_statistics.frame_length_increase_counter) { + report->AddInt(StatsReport::kStatsValueNameAnaFrameLengthIncreaseCounter, + *info.ana_statistics.frame_length_increase_counter); + } + if (info.ana_statistics.frame_length_decrease_counter) { + report->AddInt(StatsReport::kStatsValueNameAnaFrameLengthDecreaseCounter, + *info.ana_statistics.frame_length_decrease_counter); + } + if (info.ana_statistics.uplink_packet_loss_fraction) { + report->AddFloat(StatsReport::kStatsValueNameAnaUplinkPacketLossFraction, + *info.ana_statistics.uplink_packet_loss_fraction); } }
diff --git a/pc/statscollector_unittest.cc b/pc/statscollector_unittest.cc index 5734676..6597e95 100644 --- a/pc/statscollector_unittest.cc +++ b/pc/statscollector_unittest.cc
@@ -454,13 +454,27 @@ ASSERT_TRUE(sinfo.ana_statistics.fec_action_counter); EXPECT_EQ(rtc::ToString<uint32_t>(*sinfo.ana_statistics.fec_action_counter), value_in_report); - EXPECT_TRUE(GetValue(report, - StatsReport::kStatsValueNameAnaFrameLengthActionCounter, - &value_in_report)); - ASSERT_TRUE(sinfo.ana_statistics.frame_length_action_counter); + EXPECT_TRUE(GetValue( + report, StatsReport::kStatsValueNameAnaFrameLengthIncreaseCounter, + &value_in_report)); + ASSERT_TRUE(sinfo.ana_statistics.frame_length_increase_counter); EXPECT_EQ(rtc::ToString<uint32_t>( - *sinfo.ana_statistics.frame_length_action_counter), + *sinfo.ana_statistics.frame_length_increase_counter), value_in_report); + EXPECT_TRUE(GetValue( + report, StatsReport::kStatsValueNameAnaFrameLengthDecreaseCounter, + &value_in_report)); + ASSERT_TRUE(sinfo.ana_statistics.frame_length_decrease_counter); + EXPECT_EQ(rtc::ToString<uint32_t>( + *sinfo.ana_statistics.frame_length_decrease_counter), + value_in_report); + EXPECT_TRUE(GetValue(report, + StatsReport::kStatsValueNameAnaUplinkPacketLossFraction, + &value_in_report)); + ASSERT_TRUE(sinfo.ana_statistics.uplink_packet_loss_fraction); + EXPECT_EQ( + rtc::ToString<float>(*sinfo.ana_statistics.uplink_packet_loss_fraction), + value_in_report); } // Helper methods to avoid duplication of code. @@ -489,8 +503,12 @@ rtc::Optional<uint32_t>(115); voice_sender_info->ana_statistics.fec_action_counter = rtc::Optional<uint32_t>(116); - voice_sender_info->ana_statistics.frame_length_action_counter = + voice_sender_info->ana_statistics.frame_length_increase_counter = rtc::Optional<uint32_t>(117); + voice_sender_info->ana_statistics.frame_length_decrease_counter = + rtc::Optional<uint32_t>(118); + voice_sender_info->ana_statistics.uplink_packet_loss_fraction = + rtc::Optional<float>(119.0); } void UpdateVoiceSenderInfoFromAudioTrack(