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}
This commit is contained in:
@ -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<int>(
|
||||
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<int32_t>(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;
|
||||
|
||||
@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user