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/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);
}
};