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-Commit-Position: refs/heads/master@{#19756}
diff --git a/webrtc/api/audio_codecs/audio_encoder.h b/webrtc/api/audio_codecs/audio_encoder.h
index a77894b..a1f36ae 100644
--- a/webrtc/api/audio_codecs/audio_encoder.h
+++ b/webrtc/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/webrtc/api/statstypes.cc b/webrtc/api/statstypes.cc
index 67bf49e..687b6b2 100644
--- a/webrtc/api/statstypes.cc
+++ b/webrtc/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/webrtc/api/statstypes.h b/webrtc/api/statstypes.h
index 219995e..378b014 100644
--- a/webrtc/api/statstypes.h
+++ b/webrtc/api/statstypes.h
@@ -212,7 +212,9 @@
kStatsValueNameAnaChannelActionCounter,
kStatsValueNameAnaDtxActionCounter,
kStatsValueNameAnaFecActionCounter,
- kStatsValueNameAnaFrameLengthActionCounter,
+ kStatsValueNameAnaFrameLengthIncreaseCounter,
+ kStatsValueNameAnaFrameLengthDecreaseCounter,
+ kStatsValueNameAnaUplinkPacketLossFraction,
kStatsValueNameRetransmitBitrate,
kStatsValueNameRtt,
kStatsValueNameSecondaryDecodedRate,
diff --git a/webrtc/media/engine/webrtcvoiceengine_unittest.cc b/webrtc/media/engine/webrtcvoiceengine_unittest.cc
index 67fde12..edb861e 100644
--- a/webrtc/media/engine/webrtcvoiceengine_unittest.cc
+++ b/webrtc/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/webrtc/modules/audio_coding/audio_network_adaptor/audio_network_adaptor_impl_unittest.cc b/webrtc/modules/audio_coding/audio_network_adaptor/audio_network_adaptor_impl_unittest.cc
index c29b1e8..5695a38 100644
--- a/webrtc/modules/audio_coding/audio_network_adaptor/audio_network_adaptor_impl_unittest.cc
+++ b/webrtc/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/webrtc/pc/statscollector.cc b/webrtc/pc/statscollector.cc
index b964283..a14967a 100644
--- a/webrtc/pc/statscollector.cc
+++ b/webrtc/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/webrtc/pc/statscollector_unittest.cc b/webrtc/pc/statscollector_unittest.cc
index 5734676..6597e95 100644
--- a/webrtc/pc/statscollector_unittest.cc
+++ b/webrtc/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(