AudioEncoderOpus: Add support for 16 kHz input sample rate
In addition to the 48 kHz that we've always used.
Bug: webrtc:10631
Change-Id: I5e4f6600e39a463d20d3988db098c7e38281f4a0
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/138264
Reviewed-by: Minyue Li <minyue@webrtc.org>
Commit-Queue: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28074}
diff --git a/modules/audio_coding/codecs/opus/audio_encoder_opus.cc b/modules/audio_coding/codecs/opus/audio_encoder_opus.cc
index 474e461..d15a242 100644
--- a/modules/audio_coding/codecs/opus/audio_encoder_opus.cc
+++ b/modules/audio_coding/codecs/opus/audio_encoder_opus.cc
@@ -50,7 +50,6 @@
constexpr int kOpusBitrateWbBps = 20000;
constexpr int kOpusBitrateFbBps = 32000;
-constexpr int kSampleRateHz = 48000;
constexpr int kRtpTimestampRateHz = 48000;
constexpr int kDefaultMaxPlaybackRate = 48000;
@@ -288,7 +287,7 @@
AudioCodecInfo AudioEncoderOpusImpl::QueryAudioEncoder(
const AudioEncoderOpusConfig& config) {
RTC_DCHECK(config.IsOk());
- AudioCodecInfo info(kRtpTimestampRateHz, config.num_channels,
+ AudioCodecInfo info(config.sample_rate_hz, config.num_channels,
*config.bitrate_bps,
AudioEncoderOpusConfig::kMinBitrateBps,
AudioEncoderOpusConfig::kMaxBitrateBps);
@@ -460,7 +459,7 @@
}
int AudioEncoderOpusImpl::SampleRateHz() const {
- return kSampleRateHz;
+ return config_.sample_rate_hz;
}
size_t AudioEncoderOpusImpl::NumChannels() const {
@@ -711,7 +710,8 @@
}
size_t AudioEncoderOpusImpl::SamplesPer10msFrame() const {
- return rtc::CheckedDivExact(kSampleRateHz, 100) * config_.num_channels;
+ return rtc::CheckedDivExact(config_.sample_rate_hz, 100) *
+ config_.num_channels;
}
size_t AudioEncoderOpusImpl::SufficientOutputBufferSize() const {
@@ -742,7 +742,7 @@
AudioEncoderOpusConfig::ApplicationMode::kVoip
? 0
: 1,
- 48000));
+ config.sample_rate_hz));
const int bitrate = GetBitrateBps(config);
RTC_CHECK_EQ(0, WebRtcOpus_SetBitRate(inst_, bitrate));
RTC_LOG(LS_INFO) << "Set Opus bitrate to " << bitrate << " bps.";