Hooking up target audio bitrate to audio network adaptor.
After the landing of BitrateController, it is time to hook up the network data (target_audio_bitrate_bps) required by BitrateController. BUG=webrtc:6303 Review-Url: https://codereview.webrtc.org/2364473005 Cr-Commit-Position: refs/heads/master@{#14406}
This commit is contained in:
@ -42,11 +42,31 @@ void AudioNetworkAdaptorImpl::SetUplinkPacketLossFraction(
|
||||
DumpNetworkMetrics();
|
||||
}
|
||||
|
||||
void AudioNetworkAdaptorImpl::SetTargetAudioBitrate(
|
||||
int target_audio_bitrate_bps) {
|
||||
last_metrics_.target_audio_bitrate_bps =
|
||||
rtc::Optional<int>(target_audio_bitrate_bps);
|
||||
DumpNetworkMetrics();
|
||||
}
|
||||
|
||||
void AudioNetworkAdaptorImpl::SetRtt(int rtt_ms) {
|
||||
last_metrics_.rtt_ms = rtc::Optional<int>(rtt_ms);
|
||||
DumpNetworkMetrics();
|
||||
}
|
||||
|
||||
void AudioNetworkAdaptorImpl::SetReceiverFrameLengthRange(
|
||||
int min_frame_length_ms,
|
||||
int max_frame_length_ms) {
|
||||
Controller::Constraints constraints;
|
||||
constraints.receiver_frame_length_range =
|
||||
rtc::Optional<Controller::Constraints::FrameLengthRange>(
|
||||
Controller::Constraints::FrameLengthRange(min_frame_length_ms,
|
||||
max_frame_length_ms));
|
||||
auto controllers = controller_manager_->GetControllers();
|
||||
for (auto& controller : controllers)
|
||||
controller->SetConstraints(constraints);
|
||||
}
|
||||
|
||||
AudioNetworkAdaptor::EncoderRuntimeConfig
|
||||
AudioNetworkAdaptorImpl::GetEncoderRuntimeConfig() {
|
||||
EncoderRuntimeConfig config;
|
||||
@ -62,19 +82,6 @@ AudioNetworkAdaptorImpl::GetEncoderRuntimeConfig() {
|
||||
return config;
|
||||
}
|
||||
|
||||
void AudioNetworkAdaptorImpl::SetReceiverFrameLengthRange(
|
||||
int min_frame_length_ms,
|
||||
int max_frame_length_ms) {
|
||||
Controller::Constraints constraints;
|
||||
constraints.receiver_frame_length_range =
|
||||
rtc::Optional<Controller::Constraints::FrameLengthRange>(
|
||||
Controller::Constraints::FrameLengthRange(min_frame_length_ms,
|
||||
max_frame_length_ms));
|
||||
auto controllers = controller_manager_->GetControllers();
|
||||
for (auto& controller : controllers)
|
||||
controller->SetConstraints(constraints);
|
||||
}
|
||||
|
||||
void AudioNetworkAdaptorImpl::StartDebugDump(FILE* file_handle) {
|
||||
debug_dump_writer_ = DebugDumpWriter::Create(file_handle);
|
||||
}
|
||||
|
||||
@ -43,6 +43,8 @@ class AudioNetworkAdaptorImpl final : public AudioNetworkAdaptor {
|
||||
|
||||
void SetRtt(int rtt_ms) override;
|
||||
|
||||
void SetTargetAudioBitrate(int target_audio_bitrate_bps) override;
|
||||
|
||||
void SetReceiverFrameLengthRange(int min_frame_length_ms,
|
||||
int max_frame_length_ms) override;
|
||||
|
||||
|
||||
@ -106,10 +106,11 @@ TEST(AudioNetworkAdaptorImplTest,
|
||||
|
||||
constexpr int kBandwidth = 16000;
|
||||
constexpr float kPacketLoss = 0.7f;
|
||||
constexpr int kRtt = 100;
|
||||
constexpr int kTargetAudioBitrate = 15000;
|
||||
|
||||
Controller::NetworkMetrics check;
|
||||
check.uplink_bandwidth_bps = rtc::Optional<int>(kBandwidth);
|
||||
|
||||
for (auto& mock_controller : states.mock_controllers) {
|
||||
EXPECT_CALL(*mock_controller, MakeDecision(NetworkMetricsIs(check), _));
|
||||
}
|
||||
@ -122,6 +123,20 @@ TEST(AudioNetworkAdaptorImplTest,
|
||||
}
|
||||
states.audio_network_adaptor->SetUplinkPacketLossFraction(kPacketLoss);
|
||||
states.audio_network_adaptor->GetEncoderRuntimeConfig();
|
||||
|
||||
check.rtt_ms = rtc::Optional<int>(kRtt);
|
||||
for (auto& mock_controller : states.mock_controllers) {
|
||||
EXPECT_CALL(*mock_controller, MakeDecision(NetworkMetricsIs(check), _));
|
||||
}
|
||||
states.audio_network_adaptor->SetRtt(kRtt);
|
||||
states.audio_network_adaptor->GetEncoderRuntimeConfig();
|
||||
|
||||
check.target_audio_bitrate_bps = rtc::Optional<int>(kTargetAudioBitrate);
|
||||
for (auto& mock_controller : states.mock_controllers) {
|
||||
EXPECT_CALL(*mock_controller, MakeDecision(NetworkMetricsIs(check), _));
|
||||
}
|
||||
states.audio_network_adaptor->SetTargetAudioBitrate(kTargetAudioBitrate);
|
||||
states.audio_network_adaptor->GetEncoderRuntimeConfig();
|
||||
}
|
||||
|
||||
TEST(AudioNetworkAdaptorImplTest, SetConstraintsIsCalledOnSetFrameLengthRange) {
|
||||
@ -159,6 +174,7 @@ TEST(AudioNetworkAdaptorImplTest,
|
||||
constexpr int kBandwidth = 16000;
|
||||
constexpr float kPacketLoss = 0.7f;
|
||||
constexpr int kRtt = 100;
|
||||
constexpr int kTargetAudioBitrate = 15000;
|
||||
|
||||
Controller::NetworkMetrics check;
|
||||
check.uplink_bandwidth_bps = rtc::Optional<int>(kBandwidth);
|
||||
@ -181,6 +197,13 @@ TEST(AudioNetworkAdaptorImplTest,
|
||||
EXPECT_CALL(*states.mock_debug_dump_writer,
|
||||
DumpNetworkMetrics(NetworkMetricsIs(check), timestamp_check));
|
||||
states.audio_network_adaptor->SetRtt(kRtt);
|
||||
|
||||
states.simulated_clock->AdvanceTimeMilliseconds(150);
|
||||
timestamp_check += 150;
|
||||
check.target_audio_bitrate_bps = rtc::Optional<int>(kTargetAudioBitrate);
|
||||
EXPECT_CALL(*states.mock_debug_dump_writer,
|
||||
DumpNetworkMetrics(NetworkMetricsIs(check), timestamp_check));
|
||||
states.audio_network_adaptor->SetTargetAudioBitrate(kTargetAudioBitrate);
|
||||
}
|
||||
|
||||
} // namespace webrtc
|
||||
|
||||
@ -45,6 +45,8 @@ class AudioNetworkAdaptor {
|
||||
|
||||
virtual void SetRtt(int rtt_ms) = 0;
|
||||
|
||||
virtual void SetTargetAudioBitrate(int target_audio_bitrate_bps) = 0;
|
||||
|
||||
virtual void SetReceiverFrameLengthRange(int min_frame_length_ms,
|
||||
int max_frame_length_ms) = 0;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user