Make stable target adaptation enabled by default.

This will result in slightly higher encode bitrates and longer frame
lengths compared to using the smoothing filter.

Bug: webrtc:10981
Change-Id: I64704196c56b0ad910895c908baad38c994a971b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/177425
Reviewed-by: Ivo Creusen <ivoc@webrtc.org>
Reviewed-by: Minyue Li <minyue@webrtc.org>
Commit-Queue: Jakob Ivarsson <jakobi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31556}
This commit is contained in:
Jakob Ivarsson
2020-06-18 10:19:11 +02:00
committed by Commit Bot
parent ee5b6de5aa
commit d95138b684
2 changed files with 27 additions and 1 deletions

View File

@ -357,7 +357,7 @@ AudioEncoderOpusImpl::AudioEncoderOpusImpl(
: payload_type_(payload_type), : payload_type_(payload_type),
send_side_bwe_with_overhead_( send_side_bwe_with_overhead_(
webrtc::field_trial::IsEnabled("WebRTC-SendSideBwe-WithOverhead")), webrtc::field_trial::IsEnabled("WebRTC-SendSideBwe-WithOverhead")),
use_stable_target_for_adaptation_(webrtc::field_trial::IsEnabled( use_stable_target_for_adaptation_(!webrtc::field_trial::IsDisabled(
"WebRTC-Audio-StableTargetAdaptation")), "WebRTC-Audio-StableTargetAdaptation")),
adjust_bandwidth_( adjust_bandwidth_(
webrtc::field_trial::IsEnabled("WebRTC-AdjustOpusBandwidth")), webrtc::field_trial::IsEnabled("WebRTC-AdjustOpusBandwidth")),

View File

@ -254,6 +254,8 @@ TEST_P(AudioEncoderOpusTest,
TEST_P(AudioEncoderOpusTest, TEST_P(AudioEncoderOpusTest,
InvokeAudioNetworkAdaptorOnReceivedUplinkBandwidth) { InvokeAudioNetworkAdaptorOnReceivedUplinkBandwidth) {
test::ScopedFieldTrials override_field_trials(
"WebRTC-Audio-StableTargetAdaptation/Disabled/");
auto states = CreateCodec(sample_rate_hz_, 2); auto states = CreateCodec(sample_rate_hz_, 2);
states->encoder->EnableAudioNetworkAdaptor("", nullptr); states->encoder->EnableAudioNetworkAdaptor("", nullptr);
@ -275,6 +277,28 @@ TEST_P(AudioEncoderOpusTest,
CheckEncoderRuntimeConfig(states->encoder.get(), config); CheckEncoderRuntimeConfig(states->encoder.get(), config);
} }
TEST_P(AudioEncoderOpusTest,
InvokeAudioNetworkAdaptorOnReceivedUplinkAllocation) {
auto states = CreateCodec(sample_rate_hz_, 2);
states->encoder->EnableAudioNetworkAdaptor("", nullptr);
auto config = CreateEncoderRuntimeConfig();
EXPECT_CALL(*states->mock_audio_network_adaptor, GetEncoderRuntimeConfig())
.WillOnce(Return(config));
BitrateAllocationUpdate update;
update.target_bitrate = DataRate::BitsPerSec(30000);
update.stable_target_bitrate = DataRate::BitsPerSec(20000);
update.bwe_period = TimeDelta::Millis(200);
EXPECT_CALL(*states->mock_audio_network_adaptor,
SetTargetAudioBitrate(update.target_bitrate.bps()));
EXPECT_CALL(*states->mock_audio_network_adaptor,
SetUplinkBandwidth(update.stable_target_bitrate.bps()));
states->encoder->OnReceivedUplinkAllocation(update);
CheckEncoderRuntimeConfig(states->encoder.get(), config);
}
TEST_P(AudioEncoderOpusTest, InvokeAudioNetworkAdaptorOnReceivedRtt) { TEST_P(AudioEncoderOpusTest, InvokeAudioNetworkAdaptorOnReceivedRtt) {
auto states = CreateCodec(sample_rate_hz_, 2); auto states = CreateCodec(sample_rate_hz_, 2);
states->encoder->EnableAudioNetworkAdaptor("", nullptr); states->encoder->EnableAudioNetworkAdaptor("", nullptr);
@ -501,6 +525,8 @@ TEST_P(AudioEncoderOpusTest, EmptyConfigDoesNotAffectEncoderSettings) {
} }
TEST_P(AudioEncoderOpusTest, UpdateUplinkBandwidthInAudioNetworkAdaptor) { TEST_P(AudioEncoderOpusTest, UpdateUplinkBandwidthInAudioNetworkAdaptor) {
test::ScopedFieldTrials override_field_trials(
"WebRTC-Audio-StableTargetAdaptation/Disabled/");
auto states = CreateCodec(sample_rate_hz_, 2); auto states = CreateCodec(sample_rate_hz_, 2);
states->encoder->EnableAudioNetworkAdaptor("", nullptr); states->encoder->EnableAudioNetworkAdaptor("", nullptr);
const size_t opus_rate_khz = rtc::CheckedDivExact(sample_rate_hz_, 1000); const size_t opus_rate_khz = rtc::CheckedDivExact(sample_rate_hz_, 1000);