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:
minyue
2016-09-27 12:54:19 -07:00
committed by Commit bot
parent 72bebf1059
commit e5e632f873
4 changed files with 48 additions and 14 deletions

View File

@ -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);
}

View File

@ -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;

View File

@ -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

View File

@ -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;