| 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 af6d9b7a2123bc0daa289ed769b99107be8d181f..3a83d1c2d69f65d8cede7f12e2f3eb2fa11a4b63 100644
|
| --- a/webrtc/modules/audio_processing/audio_processing_impl.cc
|
| +++ b/webrtc/modules/audio_processing/audio_processing_impl.cc
|
| @@ -366,20 +366,18 @@
|
| std::min(formats_.api_format.input_stream().sample_rate_hz(),
|
| formats_.api_format.output_stream().sample_rate_hz())));
|
|
|
| - int rev_proc_rate = ClosestHigherNativeRate(std::min(
|
| - formats_.api_format.reverse_input_stream().sample_rate_hz(),
|
| - formats_.api_format.reverse_output_stream().sample_rate_hz()));
|
| - // TODO(aluebs): Remove this restriction once we figure out why the 3-band
|
| - // splitting filter degrades the AEC performance.
|
| - if (rev_proc_rate > kSampleRate32kHz) {
|
| - rev_proc_rate = is_rev_processed() ? kSampleRate32kHz : kSampleRate16kHz;
|
| - }
|
| - // If the forward sample rate is 8 kHz, the reverse stream is also processed
|
| - // at this rate.
|
| + // We normally process the reverse stream at 16 kHz. Unless...
|
| + int rev_proc_rate = kSampleRate16kHz;
|
| if (capture_nonlocked_.fwd_proc_format.sample_rate_hz() == kSampleRate8kHz) {
|
| + // ...the forward stream is at 8 kHz.
|
| rev_proc_rate = kSampleRate8kHz;
|
| } else {
|
| - rev_proc_rate = std::max(rev_proc_rate, static_cast<int>(kSampleRate16kHz));
|
| + if (formats_.api_format.reverse_input_stream().sample_rate_hz() ==
|
| + kSampleRate32kHz) {
|
| + // ...or the input is at 32 kHz, in which case we use the splitting
|
| + // filter rather than the resampler.
|
| + rev_proc_rate = kSampleRate32kHz;
|
| + }
|
| }
|
|
|
| // Always downmix the reverse stream to mono for analysis. This has been
|
| @@ -1153,11 +1151,11 @@
|
|
|
| bool AudioProcessingImpl::rev_synthesis_needed() const {
|
| return (is_rev_processed() &&
|
| - is_multi_band(formats_.rev_proc_format.sample_rate_hz()));
|
| + formats_.rev_proc_format.sample_rate_hz() == kSampleRate32kHz);
|
| }
|
|
|
| bool AudioProcessingImpl::rev_analysis_needed() const {
|
| - return is_multi_band(formats_.rev_proc_format.sample_rate_hz()) &&
|
| + return formats_.rev_proc_format.sample_rate_hz() == kSampleRate32kHz &&
|
| (is_rev_processed() ||
|
| public_submodules_->echo_cancellation
|
| ->is_enabled_render_side_query() ||
|
|
|