Skip to content

Commit

Permalink
This CL is partially reverting the effects that
Browse files Browse the repository at this point in the history
were added in https://codereview.webrtc.org/1773173002.

The reason for the revert is that for some scenarios
that CL causes problems in the coherence estimate used
in the AEC, which in turn causes echo leakage.

The reason for not reverting the actual CL is that
it would cause subsequent CLs to be reverted as well.
Therefore the choice was made to in this CK
instead revert the effects of that CL.

With the changes in this CL, the behavior is bitexact
to what it was before the CL mentioned above.

TBR=aluebs@webrtc.org

BUG=webrtc:5725

Review URL: https://codereview.webrtc.org/1867483003

Cr-Commit-Position: refs/heads/master@{#12259}
  • Loading branch information
peah authored and Commit bot committed Apr 6, 2016
1 parent fc3ef3e commit 0bf612b
Show file tree
Hide file tree
Showing 5 changed files with 15 additions and 12 deletions.
Binary file modified data/audio_processing/output_data_fixed.pb
Binary file not shown.
Binary file modified data/audio_processing/output_data_float.pb
Binary file not shown.
Binary file modified data/audio_processing/output_data_mac.pb
Binary file not shown.
19 changes: 11 additions & 8 deletions webrtc/modules/audio_processing/audio_processing_impl.cc
Original file line number Diff line number Diff line change
Expand Up @@ -366,15 +366,18 @@ int AudioProcessingImpl::InitializeLocked(const ProcessingConfig& config) {
formats_.api_format.input_stream().sample_rate_hz(),
formats_.api_format.output_stream().sample_rate_hz())));

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()));
// 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
Expand Down Expand Up @@ -1148,11 +1151,11 @@ bool AudioProcessingImpl::is_rev_processed() const {

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() ||
public_submodules_->echo_control_mobile->is_enabled() ||
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2644,8 +2644,8 @@ INSTANTIATE_TEST_CASE_P(
CommonFormats,
AudioProcessingTest,
testing::Values(std::tr1::make_tuple(48000, 48000, 48000, 48000, 0, 0),
std::tr1::make_tuple(48000, 48000, 32000, 48000, 35, 30),
std::tr1::make_tuple(48000, 48000, 16000, 48000, 35, 20),
std::tr1::make_tuple(48000, 48000, 32000, 48000, 40, 30),
std::tr1::make_tuple(48000, 48000, 16000, 48000, 40, 20),
std::tr1::make_tuple(48000, 44100, 48000, 44100, 20, 20),
std::tr1::make_tuple(48000, 44100, 32000, 44100, 20, 15),
std::tr1::make_tuple(48000, 44100, 16000, 44100, 20, 15),
Expand Down Expand Up @@ -2692,7 +2692,7 @@ INSTANTIATE_TEST_CASE_P(
std::tr1::make_tuple(16000, 32000, 32000, 32000, 25, 0),
std::tr1::make_tuple(16000, 32000, 16000, 32000, 25, 20),
std::tr1::make_tuple(16000, 16000, 48000, 16000, 40, 20),
std::tr1::make_tuple(16000, 16000, 32000, 16000, 40, 20),
std::tr1::make_tuple(16000, 16000, 32000, 16000, 50, 20),
std::tr1::make_tuple(16000, 16000, 16000, 16000, 0, 0)));

#elif defined(WEBRTC_AUDIOPROC_FIXED_PROFILE)
Expand Down Expand Up @@ -2748,7 +2748,7 @@ INSTANTIATE_TEST_CASE_P(
std::tr1::make_tuple(16000, 32000, 32000, 32000, 25, 0),
std::tr1::make_tuple(16000, 32000, 16000, 32000, 25, 20),
std::tr1::make_tuple(16000, 16000, 48000, 16000, 35, 20),
std::tr1::make_tuple(16000, 16000, 32000, 16000, 35, 20),
std::tr1::make_tuple(16000, 16000, 32000, 16000, 40, 20),
std::tr1::make_tuple(16000, 16000, 16000, 16000, 0, 0)));
#endif

Expand Down

0 comments on commit 0bf612b

Please sign in to comment.