Allow ANA to receive RPLR (recoverable packet loss rate) indications
This is part of a series of CLs. Next CLs:
1. CL for RPLR-based FecController
2. CL for allowing experiment-driven configuration of the above (through both field-trials and protobuf)
BUG=webrtc:7058
Review-Url: https://codereview.webrtc.org/2661043003
Cr-Commit-Position: refs/heads/master@{#17368}
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 db2a466..c434be3 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
@@ -36,7 +36,10 @@
arg.target_audio_bitrate_bps == metric.target_audio_bitrate_bps &&
arg.rtt_ms == metric.rtt_ms &&
arg.overhead_bytes_per_packet == metric.overhead_bytes_per_packet &&
- arg.uplink_packet_loss_fraction == metric.uplink_packet_loss_fraction;
+ arg.uplink_packet_loss_fraction ==
+ metric.uplink_packet_loss_fraction &&
+ arg.uplink_recoverable_packet_loss_fraction ==
+ metric.uplink_recoverable_packet_loss_fraction;
}
MATCHER_P(EncoderRuntimeConfigIs, config, "") {
@@ -127,6 +130,18 @@
states.audio_network_adaptor->SetUplinkPacketLossFraction(kPacketLoss);
}
+TEST(AudioNetworkAdaptorImplTest,
+ UpdateNetworkMetricsIsCalledOnSetUplinkRecoverablePacketLossFraction) {
+ auto states = CreateAudioNetworkAdaptor();
+ constexpr float kRecoverablePacketLoss = 0.1f;
+ Controller::NetworkMetrics check;
+ check.uplink_recoverable_packet_loss_fraction =
+ rtc::Optional<float>(kRecoverablePacketLoss);
+ SetExpectCallToUpdateNetworkMetrics(states.mock_controllers, check);
+ states.audio_network_adaptor->SetUplinkRecoverablePacketLossFraction(
+ kRecoverablePacketLoss);
+}
+
TEST(AudioNetworkAdaptorImplTest, UpdateNetworkMetricsIsCalledOnSetRtt) {
auto states = CreateAudioNetworkAdaptor();
constexpr int kRtt = 100;
@@ -186,6 +201,7 @@
constexpr int kBandwidth = 16000;
constexpr float kPacketLoss = 0.7f;
+ const auto kRecoverablePacketLoss = 0.2f;
constexpr int kRtt = 100;
constexpr int kTargetAudioBitrate = 15000;
constexpr size_t kOverhead = 64;
@@ -205,6 +221,15 @@
DumpNetworkMetrics(NetworkMetricsIs(check), timestamp_check));
states.audio_network_adaptor->SetUplinkPacketLossFraction(kPacketLoss);
+ states.simulated_clock->AdvanceTimeMilliseconds(50);
+ timestamp_check += 50;
+ check.uplink_recoverable_packet_loss_fraction =
+ rtc::Optional<float>(kRecoverablePacketLoss);
+ EXPECT_CALL(*states.mock_debug_dump_writer,
+ DumpNetworkMetrics(NetworkMetricsIs(check), timestamp_check));
+ states.audio_network_adaptor->SetUplinkRecoverablePacketLossFraction(
+ kRecoverablePacketLoss);
+
states.simulated_clock->AdvanceTimeMilliseconds(200);
timestamp_check += 200;
check.rtt_ms = rtc::Optional<int>(kRtt);