diff --git a/webrtc/modules/audio_coding/codecs/opus/audio_encoder_opus_unittest.cc b/webrtc/modules/audio_coding/codecs/opus/audio_encoder_opus_unittest.cc index 9f2c3186bd..e8bfaf6830 100644 --- a/webrtc/modules/audio_coding/codecs/opus/audio_encoder_opus_unittest.cc +++ b/webrtc/modules/audio_coding/codecs/opus/audio_encoder_opus_unittest.cc @@ -421,4 +421,26 @@ TEST(AudioEncoderOpusTest, BitrateBounded) { EXPECT_EQ(kMaxBitrateBps, states.encoder->GetTargetBitrate()); } +// Verifies that the complexity adaptation in the config works as intended. +TEST(AudioEncoderOpusTest, ConfigComplexityAdaptation) { + AudioEncoderOpus::Config config; + config.low_rate_complexity = 8; + config.complexity = 6; + + // Bitrate within hysteresis window. Expect empty output. + config.bitrate_bps = rtc::Optional(12500); + EXPECT_EQ(rtc::Optional(), config.GetNewComplexity()); + + // Bitrate below hysteresis window. Expect higher complexity. + config.bitrate_bps = rtc::Optional(10999); + EXPECT_EQ(rtc::Optional(8), config.GetNewComplexity()); + + // Bitrate within hysteresis window. Expect empty output. + config.bitrate_bps = rtc::Optional(12500); + EXPECT_EQ(rtc::Optional(), config.GetNewComplexity()); + + // Bitrate above hysteresis window. Expect lower complexity. + config.bitrate_bps = rtc::Optional(14001); + EXPECT_EQ(rtc::Optional(6), config.GetNewComplexity()); +} } // namespace webrtc