From 59dbfe6d32cebb2fe7a6fd1bfc5d4f366f2419fb Mon Sep 17 00:00:00 2001 From: "henrik.lundin" Date: Tue, 20 Dec 2016 01:17:55 -0800 Subject: [PATCH] Add a unit test for Opus complexity adaptation The test verifies that the hysteresis window in the configuration works as intended. BUG=webrtc:6708 Review-Url: https://codereview.webrtc.org/2594563002 Cr-Commit-Position: refs/heads/master@{#15700} --- .../opus/audio_encoder_opus_unittest.cc | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) 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