| Index: webrtc/modules/audio_processing/audio_processing_impl.cc
|
| diff --git a/webrtc/modules/audio_processing/audio_processing_impl.cc b/webrtc/modules/audio_processing/audio_processing_impl.cc
|
| index ff4128b6ed4485df0d5abef47a2ff006da53a6b5..4ef4e6da6a307e6533e8ac9ddf39e888c2c52713 100644
|
| --- a/webrtc/modules/audio_processing/audio_processing_impl.cc
|
| +++ b/webrtc/modules/audio_processing/audio_processing_impl.cc
|
| @@ -147,6 +147,17 @@ class GainControlForNewAgc : public GainControl, public VolumeCallbacks {
|
| int volume_;
|
| };
|
|
|
| +const int AudioProcessing::kNativeSampleRatesHz[] = {
|
| + AudioProcessing::kSampleRate8kHz,
|
| + AudioProcessing::kSampleRate16kHz,
|
| + AudioProcessing::kSampleRate32kHz,
|
| + AudioProcessing::kSampleRate48kHz};
|
| +const size_t AudioProcessing::kNumNativeSampleRates =
|
| + arraysize(AudioProcessing::kNativeSampleRatesHz);
|
| +const int AudioProcessing::kMaxNativeSampleRateHz = AudioProcessing::
|
| + kNativeSampleRatesHz[AudioProcessing::kNumNativeSampleRates - 1];
|
| +const int AudioProcessing::kMaxAECMSampleRateHz = kSampleRate16kHz;
|
| +
|
| AudioProcessing* AudioProcessing::Create() {
|
| Config config;
|
| return Create(config, nullptr);
|
| @@ -400,18 +411,16 @@ int AudioProcessingImpl::InitializeLocked(const ProcessingConfig& config) {
|
| std::min(api_format_.input_stream().sample_rate_hz(),
|
| api_format_.output_stream().sample_rate_hz());
|
| int fwd_proc_rate;
|
| - if (min_proc_rate > kSampleRate32kHz) {
|
| - fwd_proc_rate = kSampleRate48kHz;
|
| - } else if (min_proc_rate > kSampleRate16kHz) {
|
| - fwd_proc_rate = kSampleRate32kHz;
|
| - } else if (min_proc_rate > kSampleRate8kHz) {
|
| - fwd_proc_rate = kSampleRate16kHz;
|
| - } else {
|
| - fwd_proc_rate = kSampleRate8kHz;
|
| + for (size_t i = 0; i < kNumNativeSampleRates; ++i) {
|
| + fwd_proc_rate = kNativeSampleRatesHz[i];
|
| + if (fwd_proc_rate >= min_proc_rate) {
|
| + break;
|
| + }
|
| }
|
| // ...with one exception.
|
| - if (echo_control_mobile_->is_enabled() && min_proc_rate > kSampleRate16kHz) {
|
| - fwd_proc_rate = kSampleRate16kHz;
|
| + if (echo_control_mobile_->is_enabled() &&
|
| + min_proc_rate > kMaxAECMSampleRateHz) {
|
| + fwd_proc_rate = kMaxAECMSampleRateHz;
|
| }
|
|
|
| fwd_proc_format_ = StreamConfig(fwd_proc_rate);
|
| @@ -592,7 +601,7 @@ int AudioProcessingImpl::ProcessStream(AudioFrame* frame) {
|
| return kBadSampleRateError;
|
| }
|
| if (echo_control_mobile_->is_enabled() &&
|
| - frame->sample_rate_hz_ > kSampleRate16kHz) {
|
| + frame->sample_rate_hz_ > kMaxAECMSampleRateHz) {
|
| LOG(LS_ERROR) << "AECM only supports 16 or 8 kHz sample rates";
|
| return kUnsupportedComponentError;
|
| }
|
|
|