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 0f48fa5e186434a3cda7afd75cc3d2150e3984db..dbcf3572eec56ee4dd4e014ba340399cb8b913da 100644 |
--- a/webrtc/modules/audio_processing/audio_processing_impl.cc |
+++ b/webrtc/modules/audio_processing/audio_processing_impl.cc |
@@ -366,18 +366,24 @@ int AudioProcessingImpl::InitializeLocked(const ProcessingConfig& config) { |
formats_.api_format.input_stream().sample_rate_hz(), |
formats_.api_format.output_stream().sample_rate_hz()))); |
- // We normally process the reverse stream at 16 kHz. Unless... |
- int rev_proc_rate = kSampleRate16kHz; |
+ int rev_proc_rate = ClosestNativeRate(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) { |
+ if (is_rev_processed()) { |
+ rev_proc_rate = kSampleRate32kHz; |
+ } else { |
+ rev_proc_rate = kSampleRate16kHz; |
+ } |
+ } |
peah-webrtc
2016/04/22 12:36:57
I think that with the new changes this and the fol
aluebs-webrtc
2016/04/22 17:46:14
But then the separation between what is temporary
|
+ // If the forward sample rate is 8 kHz, the reverse stream is also processed |
+ // at this rate. |
if (capture_nonlocked_.fwd_proc_format.sample_rate_hz() == kSampleRate8kHz) { |
- // ...the forward stream is at 8 kHz. |
rev_proc_rate = kSampleRate8kHz; |
} else { |
- 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; |
- } |
+ rev_proc_rate = std::max(rev_proc_rate, static_cast<int>(kSampleRate16kHz)); |
} |
// Always downmix the reverse stream to mono for analysis. This has been |
@@ -1151,11 +1157,11 @@ bool AudioProcessingImpl::is_rev_processed() const { |
bool AudioProcessingImpl::rev_synthesis_needed() const { |
return (is_rev_processed() && |
- formats_.rev_proc_format.sample_rate_hz() == kSampleRate32kHz); |
+ is_multi_band(formats_.rev_proc_format.sample_rate_hz())); |
} |
bool AudioProcessingImpl::rev_analysis_needed() const { |
- return formats_.rev_proc_format.sample_rate_hz() == kSampleRate32kHz && |
+ return is_multi_band(formats_.rev_proc_format.sample_rate_hz()) && |
(is_rev_processed() || |
public_submodules_->echo_cancellation |
->is_enabled_render_side_query() || |