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}
This commit is contained in:
parent
94079f8452
commit
eb16697259
@ -51,6 +51,7 @@ constexpr int kOpusBitrateWbBps = 20000;
|
||||
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 @@ float AudioEncoderOpusImpl::NewPacketLossRateOptimizer::OptimizePacketLossRate(
|
||||
|
||||
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 @@ void AudioEncoderOpusImpl::AppendSupportedEncoders(
|
||||
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 @@ std::unique_ptr<AudioEncoder> AudioEncoderOpusImpl::MakeAudioEncoder(
|
||||
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<AudioCodecInfo> AudioEncoderOpusImpl::QueryAudioEncoder(
|
||||
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 @@ size_t AudioEncoderOpusImpl::NumChannels() const {
|
||||
return config_.num_channels;
|
||||
}
|
||||
|
||||
int AudioEncoderOpusImpl::RtpTimestampRateHz() const {
|
||||
return kRtpTimestampRateHz;
|
||||
}
|
||||
|
||||
size_t AudioEncoderOpusImpl::Num10MsFramesInNextPacket() const {
|
||||
return Num10msFramesPerPacket();
|
||||
}
|
||||
|
||||
@ -88,6 +88,7 @@ class AudioEncoderOpusImpl final : public AudioEncoder {
|
||||
|
||||
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;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user