AudioEncoderOpus: Don't mix up sample rate and RTP timestamp rate
A later change will allow them to differ.
Bug: webrtc:10631
Change-Id: I4e13f41980261990b3bbbc6897cd754369265ca0
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/137046
Reviewed-by: Minyue Li <minyue@webrtc.org>
Commit-Queue: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27991}
diff --git a/modules/audio_coding/codecs/opus/audio_encoder_opus.cc b/modules/audio_coding/codecs/opus/audio_encoder_opus.cc
index 97ae343..18b9ac5 100644
--- a/modules/audio_coding/codecs/opus/audio_encoder_opus.cc
+++ b/modules/audio_coding/codecs/opus/audio_encoder_opus.cc
@@ -51,6 +51,7 @@
constexpr int kOpusBitrateFbBps = 32000;
constexpr int kSampleRateHz = 48000;
+constexpr int kRtpTimestampRateHz = 48000;
constexpr int kDefaultMaxPlaybackRate = 48000;
// These two lists must be sorted from low to high
@@ -276,8 +277,10 @@
void AudioEncoderOpusImpl::AppendSupportedEncoders(
std::vector<AudioCodecSpec>* specs) {
- const SdpAudioFormat fmt = {
- "opus", 48000, 2, {{"minptime", "10"}, {"useinbandfec", "1"}}};
+ const SdpAudioFormat fmt = {"opus",
+ kRtpTimestampRateHz,
+ 2,
+ {{"minptime", "10"}, {"useinbandfec", "1"}}};
const AudioCodecInfo info = QueryAudioEncoder(*SdpToConfig(fmt));
specs->push_back({fmt, info});
}
@@ -285,7 +288,8 @@
AudioCodecInfo AudioEncoderOpusImpl::QueryAudioEncoder(
const AudioEncoderOpusConfig& config) {
RTC_DCHECK(config.IsOk());
- AudioCodecInfo info(48000, config.num_channels, *config.bitrate_bps,
+ AudioCodecInfo info(kRtpTimestampRateHz, config.num_channels,
+ *config.bitrate_bps,
AudioEncoderOpusConfig::kMinBitrateBps,
AudioEncoderOpusConfig::kMaxBitrateBps);
info.allow_comfort_noise = false;
@@ -303,12 +307,12 @@
absl::optional<AudioCodecInfo> AudioEncoderOpusImpl::QueryAudioEncoder(
const SdpAudioFormat& format) {
if (absl::EqualsIgnoreCase(format.name, GetPayloadName()) &&
- format.clockrate_hz == 48000 && format.num_channels == 2) {
+ format.clockrate_hz == kRtpTimestampRateHz && format.num_channels == 2) {
const size_t num_channels = GetChannelCount(format);
const int bitrate =
CalculateBitrate(GetMaxPlaybackRate(format), num_channels,
GetFormatParameter(format, "maxaveragebitrate"));
- AudioCodecInfo info(48000, num_channels, bitrate,
+ AudioCodecInfo info(kRtpTimestampRateHz, num_channels, bitrate,
AudioEncoderOpusConfig::kMinBitrateBps,
AudioEncoderOpusConfig::kMaxBitrateBps);
info.allow_comfort_noise = false;
@@ -322,7 +326,7 @@
absl::optional<AudioEncoderOpusConfig> AudioEncoderOpusImpl::SdpToConfig(
const SdpAudioFormat& format) {
if (!absl::EqualsIgnoreCase(format.name, "opus") ||
- format.clockrate_hz != 48000 || format.num_channels != 2) {
+ format.clockrate_hz != kRtpTimestampRateHz || format.num_channels != 2) {
return absl::nullopt;
}
@@ -482,6 +486,10 @@
return config_.num_channels;
}
+int AudioEncoderOpusImpl::RtpTimestampRateHz() const {
+ return kRtpTimestampRateHz;
+}
+
size_t AudioEncoderOpusImpl::Num10MsFramesInNextPacket() const {
return Num10msFramesPerPacket();
}
diff --git a/modules/audio_coding/codecs/opus/audio_encoder_opus.h b/modules/audio_coding/codecs/opus/audio_encoder_opus.h
index dc14620..5b92a18 100644
--- a/modules/audio_coding/codecs/opus/audio_encoder_opus.h
+++ b/modules/audio_coding/codecs/opus/audio_encoder_opus.h
@@ -88,6 +88,7 @@
int SampleRateHz() const override;
size_t NumChannels() const override;
+ int RtpTimestampRateHz() const override;
size_t Num10MsFramesInNextPacket() const override;
size_t Max10MsFramesInAPacket() const override;
int GetTargetBitrate() const override;