From 2a6b3b1f7f2d86aaaa3da9a96aabe4669015e69c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Per=20=C3=85hgren?= Date: Tue, 26 Nov 2019 19:34:26 +0100 Subject: [PATCH] Correcting the analog AGC re-initialization at device changes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This CL corrects the re-initialization behavior of the analog AGC to work correctly when the AGC is reinitialized. Bug: webrtc:11131 Change-Id: Ie455ba3db1aa3936cbcbb2fab023528124853284 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/160650 Commit-Queue: Per Ã…hgren Reviewed-by: Sam Zackrisson Cr-Commit-Position: refs/heads/master@{#29924} --- modules/audio_processing/audio_processing_impl.cc | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/modules/audio_processing/audio_processing_impl.cc b/modules/audio_processing/audio_processing_impl.cc index ff689099d2..b6e79beb78 100644 --- a/modules/audio_processing/audio_processing_impl.cc +++ b/modules/audio_processing/audio_processing_impl.cc @@ -482,12 +482,20 @@ int AudioProcessingImpl::InitializeLocked() { static_cast(num_proc_channels()) || submodules_.agc_manager->sample_rate_hz() != capture_nonlocked_.split_rate) { + int stream_analog_level = -1; + const bool re_creation = !!submodules_.agc_manager; + if (re_creation) { + stream_analog_level = submodules_.agc_manager->stream_analog_level(); + } submodules_.agc_manager.reset(new AgcManagerDirect( num_proc_channels(), constants_.agc_startup_min_volume, constants_.agc_clipped_level_min, constants_.use_experimental_agc_agc2_level_estimation, constants_.use_experimental_agc_agc2_digital_adaptive, capture_nonlocked_.split_rate)); + if (re_creation) { + submodules_.agc_manager->set_stream_analog_level(stream_analog_level); + } } submodules_.agc_manager->Initialize(); submodules_.agc_manager->SetupDigitalGainControl(