| 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 66123962c3a87468357b4b006665bd8b6ea6d02d..a7c120f3956b13f0c4a798a71f961453979dc213 100644
|
| --- a/webrtc/modules/audio_processing/audio_processing_impl.cc
|
| +++ b/webrtc/modules/audio_processing/audio_processing_impl.cc
|
| @@ -118,6 +118,7 @@
|
| arraysize(AudioProcessing::kNativeSampleRatesHz);
|
| const int AudioProcessing::kMaxNativeSampleRateHz = AudioProcessing::
|
| kNativeSampleRatesHz[AudioProcessing::kNumNativeSampleRates - 1];
|
| +const int AudioProcessing::kMaxAECMSampleRateHz = kSampleRate16kHz;
|
|
|
| AudioProcessing* AudioProcessing::Create() {
|
| Config config;
|
| @@ -364,7 +365,7 @@
|
|
|
| formats_.api_format = config;
|
|
|
| - // We process at the closest native rate >= min(input rate, output rate).
|
| + // We process at the closest native rate >= min(input rate, output rate)...
|
| const int min_proc_rate =
|
| std::min(formats_.api_format.input_stream().sample_rate_hz(),
|
| formats_.api_format.output_stream().sample_rate_hz());
|
| @@ -374,6 +375,11 @@
|
| if (fwd_proc_rate >= min_proc_rate) {
|
| break;
|
| }
|
| + }
|
| + // ...with one exception.
|
| + if (public_submodules_->echo_control_mobile->is_enabled() &&
|
| + min_proc_rate > kMaxAECMSampleRateHz) {
|
| + fwd_proc_rate = kMaxAECMSampleRateHz;
|
| }
|
|
|
| capture_nonlocked_.fwd_proc_format = StreamConfig(fwd_proc_rate);
|
| @@ -608,6 +614,12 @@
|
| frame->sample_rate_hz_ != kSampleRate32kHz &&
|
| frame->sample_rate_hz_ != kSampleRate48kHz) {
|
| return kBadSampleRateError;
|
| + }
|
| +
|
| + if (public_submodules_->echo_control_mobile->is_enabled() &&
|
| + frame->sample_rate_hz_ > kMaxAECMSampleRateHz) {
|
| + LOG(LS_ERROR) << "AECM only supports 16 or 8 kHz sample rates";
|
| + return kUnsupportedComponentError;
|
| }
|
|
|
| ProcessingConfig processing_config;
|
|
|