Disable the residual echo detector in audio mixer.

The audio mixer has a subcomponent called FrameCombiner, which uses an
AudioProcessing instance as a limiter. The limiter smoothly increases
the volume to avoid causing clipping.

The limiter was created in a default configuration causing the
ResidualEchoDetector submodule of AudioProcessing to be
activated. That submodule operates in the band-split domain (see
AudioProcessingImpl::ApmSubmoduleStates::RenderMultiBandSubModulesActive()).

There is a goal to remove the (expensive and unnecessary)
band-splitting from AudioMixer. This change helps accomplish that. (It
can't be done yet, because the actual limiter sub-component of APM
also operates in the band-split domain).

BUG=webrtc:6185

Review-Url: https://codereview.webrtc.org/2875623002
Cr-Commit-Position: refs/heads/master@{#18090}
This commit is contained in:
aleloi 2017-05-11 00:25:45 -07:00 committed by Commit bot
parent 77c6e9dfa5
commit 0f23fa8768

View File

@ -135,9 +135,14 @@ void CombineMultipleFrames(
std::unique_ptr<AudioProcessing> CreateLimiter() {
Config config;
config.Set<ExperimentalAgc>(new ExperimentalAgc(false));
std::unique_ptr<AudioProcessing> limiter(AudioProcessing::Create(config));
RTC_DCHECK(limiter);
webrtc::AudioProcessing::Config apm_config;
apm_config.residual_echo_detector.enabled = false;
limiter->ApplyConfig(apm_config);
const auto check_no_error = [](int x) {
RTC_DCHECK_EQ(x, AudioProcessing::kNoError);
};