From 0d6195dd15390daf6f192f6fd3e14a585925bdf5 Mon Sep 17 00:00:00 2001 From: ossu Date: Fri, 28 Apr 2017 07:33:18 -0700 Subject: [PATCH] Hooked up Opus CBR support when configured manually or through an SdpAudioFormat. BUG=webrtc:7394 Review-Url: https://codereview.webrtc.org/2798403003 Cr-Commit-Position: refs/heads/master@{#17931} --- .../audio_coding/codecs/opus/audio_encoder_opus.cc | 7 ++++++- .../codecs/opus/audio_encoder_opus_unittest.cc | 9 +++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/webrtc/modules/audio_coding/codecs/opus/audio_encoder_opus.cc b/webrtc/modules/audio_coding/codecs/opus/audio_encoder_opus.cc index 4c9ab6db62..64df6791db 100644 --- a/webrtc/modules/audio_coding/codecs/opus/audio_encoder_opus.cc +++ b/webrtc/modules/audio_coding/codecs/opus/audio_encoder_opus.cc @@ -256,6 +256,7 @@ AudioEncoderOpus::Config AudioEncoderOpus::CreateConfig( config.max_playback_rate_hz = GetMaxPlaybackRate(format); config.fec_enabled = (GetFormatParameter(format, "useinbandfec") == "1"); config.dtx_enabled = (GetFormatParameter(format, "usedtx") == "1"); + config.cbr_enabled = (GetFormatParameter(format, "cbr") == "1"); config.bitrate_bps = rtc::Optional( CalculateBitrate(config.max_playback_rate_hz, config.num_channels, GetFormatParameter(format, "maxaveragebitrate"))); @@ -653,7 +654,11 @@ bool AudioEncoderOpus::RecreateEncoderInstance(const Config& config) { RTC_CHECK_EQ(0, WebRtcOpus_SetPacketLossRate( inst_, static_cast(packet_loss_rate_ * 100 + .5))); - + if (config.cbr_enabled) { + RTC_CHECK_EQ(0, WebRtcOpus_EnableCbr(inst_)); + } else { + RTC_CHECK_EQ(0, WebRtcOpus_DisableCbr(inst_)); + } num_channels_to_encode_ = NumChannels(); next_frame_length_ms_ = config_.frame_size_ms; return true; 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 788d799a11..76574d6432 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 @@ -583,6 +583,12 @@ TEST(AudioEncoderOpusTest, TestConfigFromParams) { config = CreateConfigWithParameters({{"usedtx", "1"}}); EXPECT_TRUE(config.dtx_enabled); + config = CreateConfigWithParameters({{"cbr", "0"}}); + EXPECT_FALSE(config.cbr_enabled); + + config = CreateConfigWithParameters({{"cbr", "1"}}); + EXPECT_TRUE(config.cbr_enabled); + config = CreateConfigWithParameters({{"maxplaybackrate", "12345"}}); EXPECT_EQ(12345, config.max_playback_rate_hz); @@ -633,6 +639,9 @@ TEST(AudioEncoderOpusTest, TestConfigFromInvalidParams) { config = CreateConfigWithParameters({{"usedtx", "invalid"}}); EXPECT_EQ(default_config.dtx_enabled, config.dtx_enabled); + config = CreateConfigWithParameters({{"cbr", "invalid"}}); + EXPECT_EQ(default_config.dtx_enabled, config.dtx_enabled); + config = CreateConfigWithParameters({{"maxplaybackrate", "0"}}); EXPECT_EQ(default_config.max_playback_rate_hz, config.max_playback_rate_hz);