Audio encoder tests: Create audio encoders the new way
Specifically, don't expect the ACM to be able to create encoders; we have to give it an encoder that we make ourselves. The new way of creating encoders used a 32 kbit/s bitrate unconditionally for iSAC; I had to change it to 32 kbit/s for 16 kHz and 56 kbit/s for 32 kHz, which is what the old way of creating encoders has used since forever. I also had to change some test expectations on Opus, because the new way defaults to 32 kbit/s for mono and 64 kbit/s for stereo (which I believe to be correct), while the old way defaults to 64 kbit/s in both cases. Bug: webrtc:8396 Change-Id: I3aab944175a8e27f4c63380e822b27e839bba7f2 Reviewed-on: https://webrtc-review.googlesource.com/94540 Reviewed-by: Ivo Creusen <ivoc@webrtc.org> Commit-Queue: Karl Wiberg <kwiberg@webrtc.org> Cr-Commit-Position: refs/heads/master@{#24375}
This commit is contained in:
@ -24,6 +24,7 @@ AudioEncoderIsacFloat::SdpToConfig(const SdpAudioFormat& format) {
|
||||
format.num_channels == 1) {
|
||||
Config config;
|
||||
config.sample_rate_hz = format.clockrate_hz;
|
||||
config.bit_rate = format.clockrate_hz == 16000 ? 32000 : 56000;
|
||||
if (config.sample_rate_hz == 16000) {
|
||||
// For sample rate 16 kHz, optionally use 60 ms frames, instead of the
|
||||
// default 30 ms.
|
||||
@ -65,9 +66,10 @@ std::unique_ptr<AudioEncoder> AudioEncoderIsacFloat::MakeAudioEncoder(
|
||||
absl::optional<AudioCodecPairId> /*codec_pair_id*/) {
|
||||
RTC_DCHECK(config.IsOk());
|
||||
AudioEncoderIsacFloatImpl::Config c;
|
||||
c.payload_type = payload_type;
|
||||
c.sample_rate_hz = config.sample_rate_hz;
|
||||
c.frame_size_ms = config.frame_size_ms;
|
||||
c.payload_type = payload_type;
|
||||
c.bit_rate = config.bit_rate;
|
||||
return absl::make_unique<AudioEncoderIsacFloatImpl>(c);
|
||||
}
|
||||
|
||||
|
@ -28,12 +28,30 @@ namespace webrtc {
|
||||
struct AudioEncoderIsacFloat {
|
||||
struct Config {
|
||||
bool IsOk() const {
|
||||
return (sample_rate_hz == 16000 &&
|
||||
(frame_size_ms == 30 || frame_size_ms == 60)) ||
|
||||
(sample_rate_hz == 32000 && frame_size_ms == 30);
|
||||
switch (sample_rate_hz) {
|
||||
case 16000:
|
||||
if (frame_size_ms != 30 && frame_size_ms != 60) {
|
||||
return false;
|
||||
}
|
||||
if (bit_rate < 10000 || bit_rate > 32000) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
case 32000:
|
||||
if (frame_size_ms != 30) {
|
||||
return false;
|
||||
}
|
||||
if (bit_rate < 10000 || bit_rate > 56000) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
int sample_rate_hz = 16000;
|
||||
int frame_size_ms = 30;
|
||||
int bit_rate = 32000; // Limit on short-term average bit rate, in bits/s.
|
||||
};
|
||||
static absl::optional<Config> SdpToConfig(const SdpAudioFormat& audio_format);
|
||||
static void AppendSupportedEncoders(std::vector<AudioCodecSpec>* specs);
|
||||
|
Reference in New Issue
Block a user