Add AudioDecoderIsacT::Config to include sampling rate and BWInfo object
This CL will make AudioDecoderIsacT symmetrical to AudioEncoderIsacT.
Bug: webrtc:10826
Change-Id: I78d1cf7bc2245bf4a282aabd81c8ece6ca23f285
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/146683
Commit-Queue: Jiawei Ou <ouj@fb.com>
Reviewed-by: Tommi <tommi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28847}
diff --git a/api/audio_codecs/isac/audio_decoder_isac_fix.cc b/api/audio_codecs/isac/audio_decoder_isac_fix.cc
index 51ae572..0e2d6bc 100644
--- a/api/audio_codecs/isac/audio_decoder_isac_fix.cc
+++ b/api/audio_codecs/isac/audio_decoder_isac_fix.cc
@@ -32,7 +32,9 @@
std::unique_ptr<AudioDecoder> AudioDecoderIsacFix::MakeAudioDecoder(
Config config,
absl::optional<AudioCodecPairId> /*codec_pair_id*/) {
- return absl::make_unique<AudioDecoderIsacFixImpl>(16000);
+ AudioDecoderIsacFixImpl::Config c;
+ c.sample_rate_hz = 16000;
+ return absl::make_unique<AudioDecoderIsacFixImpl>(c);
}
} // namespace webrtc
diff --git a/api/audio_codecs/isac/audio_decoder_isac_float.cc b/api/audio_codecs/isac/audio_decoder_isac_float.cc
index d9de3a0..ec774eb 100644
--- a/api/audio_codecs/isac/audio_decoder_isac_float.cc
+++ b/api/audio_codecs/isac/audio_decoder_isac_float.cc
@@ -39,7 +39,9 @@
Config config,
absl::optional<AudioCodecPairId> /*codec_pair_id*/) {
RTC_DCHECK(config.IsOk());
- return absl::make_unique<AudioDecoderIsacFloatImpl>(config.sample_rate_hz);
+ AudioDecoderIsacFloatImpl::Config c;
+ c.sample_rate_hz = config.sample_rate_hz;
+ return absl::make_unique<AudioDecoderIsacFloatImpl>(c);
}
} // namespace webrtc
diff --git a/modules/audio_coding/codecs/isac/audio_decoder_isac_t.h b/modules/audio_coding/codecs/isac/audio_decoder_isac_t.h
index 7cadd91..1e6560f 100644
--- a/modules/audio_coding/codecs/isac/audio_decoder_isac_t.h
+++ b/modules/audio_coding/codecs/isac/audio_decoder_isac_t.h
@@ -24,10 +24,13 @@
template <typename T>
class AudioDecoderIsacT final : public AudioDecoder {
public:
- explicit AudioDecoderIsacT(int sample_rate_hz);
- AudioDecoderIsacT(int sample_rate_hz,
- const rtc::scoped_refptr<LockedIsacBandwidthInfo>& bwinfo);
- ~AudioDecoderIsacT() override;
+ struct Config {
+ bool IsOk() const;
+ rtc::scoped_refptr<LockedIsacBandwidthInfo> bwinfo;
+ int sample_rate_hz = 16000;
+ };
+ explicit AudioDecoderIsacT(const Config& config);
+ virtual ~AudioDecoderIsacT() override;
bool HasDecodePlc() const override;
size_t DecodePlc(size_t num_frames, int16_t* decoded) override;
diff --git a/modules/audio_coding/codecs/isac/audio_decoder_isac_t_impl.h b/modules/audio_coding/codecs/isac/audio_decoder_isac_t_impl.h
index b2783c6..0d65517 100644
--- a/modules/audio_coding/codecs/isac/audio_decoder_isac_t_impl.h
+++ b/modules/audio_coding/codecs/isac/audio_decoder_isac_t_impl.h
@@ -16,16 +16,15 @@
namespace webrtc {
template <typename T>
-AudioDecoderIsacT<T>::AudioDecoderIsacT(int sample_rate_hz)
- : AudioDecoderIsacT(sample_rate_hz, nullptr) {}
+bool AudioDecoderIsacT<T>::Config::IsOk() const {
+ return (sample_rate_hz == 16000 || sample_rate_hz == 32000);
+}
template <typename T>
-AudioDecoderIsacT<T>::AudioDecoderIsacT(
- int sample_rate_hz,
- const rtc::scoped_refptr<LockedIsacBandwidthInfo>& bwinfo)
- : sample_rate_hz_(sample_rate_hz), bwinfo_(bwinfo) {
- RTC_CHECK(sample_rate_hz == 16000 || sample_rate_hz == 32000)
- << "Unsupported sample rate " << sample_rate_hz;
+AudioDecoderIsacT<T>::AudioDecoderIsacT(const Config& config)
+ : sample_rate_hz_(config.sample_rate_hz), bwinfo_(config.bwinfo) {
+ RTC_CHECK(config.IsOk()) << "Unsupported sample rate "
+ << config.sample_rate_hz;
RTC_CHECK_EQ(0, T::Create(&isac_state_));
T::DecoderInit(isac_state_);
if (bwinfo_) {
diff --git a/modules/audio_coding/neteq/audio_decoder_unittest.cc b/modules/audio_coding/neteq/audio_decoder_unittest.cc
index d8e35ce..e58b08d 100644
--- a/modules/audio_coding/neteq/audio_decoder_unittest.cc
+++ b/modules/audio_coding/neteq/audio_decoder_unittest.cc
@@ -357,7 +357,10 @@
config.frame_size_ms =
1000 * static_cast<int>(frame_size_) / codec_input_rate_hz_;
audio_encoder_.reset(new AudioEncoderIsacFloatImpl(config));
- decoder_ = new AudioDecoderIsacFloatImpl(codec_input_rate_hz_);
+
+ AudioDecoderIsacFloatImpl::Config decoder_config;
+ decoder_config.sample_rate_hz = codec_input_rate_hz_;
+ decoder_ = new AudioDecoderIsacFloatImpl(decoder_config);
}
};
@@ -374,7 +377,10 @@
config.frame_size_ms =
1000 * static_cast<int>(frame_size_) / codec_input_rate_hz_;
audio_encoder_.reset(new AudioEncoderIsacFloatImpl(config));
- decoder_ = new AudioDecoderIsacFloatImpl(codec_input_rate_hz_);
+
+ AudioDecoderIsacFloatImpl::Config decoder_config;
+ decoder_config.sample_rate_hz = codec_input_rate_hz_;
+ decoder_ = new AudioDecoderIsacFloatImpl(decoder_config);
}
};
@@ -391,7 +397,10 @@
config.frame_size_ms =
1000 * static_cast<int>(frame_size_) / codec_input_rate_hz_;
audio_encoder_.reset(new AudioEncoderIsacFixImpl(config));
- decoder_ = new AudioDecoderIsacFixImpl(codec_input_rate_hz_);
+
+ AudioDecoderIsacFixImpl::Config decoder_config;
+ decoder_config.sample_rate_hz = codec_input_rate_hz_;
+ decoder_ = new AudioDecoderIsacFixImpl(decoder_config);
}
};
diff --git a/test/fuzzers/audio_decoder_isac_fuzzer.cc b/test/fuzzers/audio_decoder_isac_fuzzer.cc
index b579083..96fa75d 100644
--- a/test/fuzzers/audio_decoder_isac_fuzzer.cc
+++ b/test/fuzzers/audio_decoder_isac_fuzzer.cc
@@ -19,7 +19,9 @@
const int sample_rate_hz = size % 2 == 0 ? 16000 : 32000; // 16 or 32 kHz.
static const size_t kAllocatedOuputSizeSamples = 32000 / 10; // 100 ms.
int16_t output[kAllocatedOuputSizeSamples];
- AudioDecoderIsacFloatImpl dec(sample_rate_hz);
+ AudioDecoderIsacFloatImpl::Config c;
+ c.sample_rate_hz = sample_rate_hz;
+ AudioDecoderIsacFloatImpl dec(c);
FuzzAudioDecoder(DecoderFunctionType::kNormalDecode, data, size, &dec,
sample_rate_hz, sizeof(output), output);
}
diff --git a/test/fuzzers/audio_decoder_isac_incoming_packet_fuzzer.cc b/test/fuzzers/audio_decoder_isac_incoming_packet_fuzzer.cc
index 9bd6234..a67ac59 100644
--- a/test/fuzzers/audio_decoder_isac_incoming_packet_fuzzer.cc
+++ b/test/fuzzers/audio_decoder_isac_incoming_packet_fuzzer.cc
@@ -16,7 +16,9 @@
if (size > 20000) {
return;
}
- AudioDecoderIsacFloatImpl dec(16000);
+ AudioDecoderIsacFloatImpl::Config c;
+ c.sample_rate_hz = 16000;
+ AudioDecoderIsacFloatImpl dec(c);
FuzzAudioDecoderIncomingPacket(data, size, &dec);
}
} // namespace webrtc
diff --git a/test/fuzzers/audio_decoder_isacfix_fuzzer.cc b/test/fuzzers/audio_decoder_isacfix_fuzzer.cc
index 6477dc3..08aa69f 100644
--- a/test/fuzzers/audio_decoder_isacfix_fuzzer.cc
+++ b/test/fuzzers/audio_decoder_isacfix_fuzzer.cc
@@ -19,7 +19,9 @@
static const int kSampleRateHz = 16000;
static const size_t kAllocatedOuputSizeSamples = 16000 / 10; // 100 ms.
int16_t output[kAllocatedOuputSizeSamples];
- AudioDecoderIsacFixImpl dec(kSampleRateHz);
+ AudioDecoderIsacFixImpl::Config c;
+ c.sample_rate_hz = kSampleRateHz;
+ AudioDecoderIsacFixImpl dec(c);
FuzzAudioDecoder(DecoderFunctionType::kNormalDecode, data, size, &dec,
kSampleRateHz, sizeof(output), output);
}