webrtc/modules/audio_processing
Alessio Bazzica 60f675ff8d AGC2: fix fixed digital init, VAD before fixed digital
This CL includes two changes that break bit-exactness, but that haven't
changed the way AGC2 behaves - the new behavior has been verified with
audioproc_f on a collection of AEC dumps and Wav files (42 recordings
in total).

1) The fixed digital controller can directly be initialized in the
`GainController2` ctor. Before, `SetGainFactor()` was called after the
creation of the object and that caused an initial ramp up lasting one
10 ms frame from -inf to 0 dB. As an effect of the new initialization,
the initial ramp up doesn't happen anymore.

2) In [1] the AGC2 VAD has been moved from the adaptive digital
controller into `GainController2`. In order to not break bit-exactness,
the VAD was placed after the fixed digital controller and before the
adaptive digital one. However, to reduce the chance of incorrect
estimation of the speech probability, the VAD should analyze the
audio before any digital processing is applied inside AGC2.

[1] https://webrtc-review.googlesource.com/c/src/+/234583

Bug: webrtc:7494
Change-Id: I9418229cbe537014fed8271c5550c3ce2bc88e26
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/235240
Commit-Queue: Alessio Bazzica <alessiob@webrtc.org>
Reviewed-by: Hanna Silen <silen@webrtc.org>
Reviewed-by: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#35252}
2021-10-20 20:28:23 +00:00
..
aec3 AEC3: Enable unbounded echo spectrum for dominant nearend detection by default 2021-10-12 08:52:50 +00:00
aec_dump AudioFrameView: size_t -> int 2021-10-07 14:41:03 +00:00
aecm Use backticks not vertical bars to denote variables in comments for /modules/audio_processing 2021-08-09 21:49:02 +00:00
agc AgcManagerDirect: Add histograms for clipping prediction precision and recall 2021-09-24 12:42:13 +00:00
agc2 AGC2: VAD moved into GainController2 2021-10-20 15:50:33 +00:00
capture_levels_adjuster Add refined handling of the internal scaling of the audio in APM 2021-03-15 19:12:02 +00:00
echo_detector Format almost everything. 2019-07-08 13:45:15 +00:00
g3doc Update links to point at main branch 2021-07-22 16:41:26 +00:00
include APM: remove LevelEstimator 2021-10-20 10:52:17 +00:00
logging Add ability to dump the coarse filter in the echo subtractor 2021-05-19 08:24:16 +00:00
ns Allowing reduced computations in the noise suppressor when the output is not used 2021-03-16 09:28:42 +00:00
test APM: remove LevelEstimator 2021-10-20 10:52:17 +00:00
transient Use backticks not vertical bars to denote variables in comments for /modules/audio_processing 2021-08-09 21:49:02 +00:00
utility Use backticks not vertical bars to denote variables in comments for /modules/audio_processing 2021-08-09 21:49:02 +00:00
vad Use backticks not vertical bars to denote variables in comments for /modules/audio_processing 2021-08-09 21:49:02 +00:00
audio_buffer.cc APM: Replace most usages of AudioFrame with a stream interface 2020-03-16 11:51:47 +00:00
audio_buffer.h Use backticks not vertical bars to denote variables in comments for /modules/audio_processing 2021-08-09 21:49:02 +00:00
audio_buffer_unittest.cc Rename more death test to *DeathTest 2020-05-26 20:27:34 +00:00
audio_frame_view_unittest.cc Reland "Simplification and refactoring of the AudioBuffer code" 2019-08-22 10:34:05 +00:00
audio_processing_builder_impl.cc APM: add AudioProcessingBuilder::SetConfig() 2021-10-14 10:45:16 +00:00
audio_processing_impl.cc APM: remove LevelEstimator 2021-10-20 10:52:17 +00:00
audio_processing_impl.h APM: remove LevelEstimator 2021-10-20 10:52:17 +00:00
audio_processing_impl_locking_unittest.cc APM: remove LevelEstimator 2021-10-20 10:52:17 +00:00
audio_processing_impl_unittest.cc ExperimentalNs removed + APM not depending anymore on webrtc::Config 2021-09-17 10:53:43 +00:00
audio_processing_performance_unittest.cc APM: remove LevelEstimator 2021-10-20 10:52:17 +00:00
audio_processing_unittest.cc APM: remove LevelEstimator 2021-10-20 10:52:17 +00:00
BUILD.gn AGC2: VAD moved into GainController2 2021-10-20 15:50:33 +00:00
common.h Enabling a safe fall-back functionality for overruns in the runtime settings 2021-03-03 12:06:54 +00:00
debug.proto Add refined handling of the internal scaling of the audio in APM 2021-03-15 19:12:02 +00:00
DEPS
echo_control_mobile_bit_exact_unittest.cc Reland "Simplification and refactoring of the AudioBuffer code" 2019-08-22 10:34:05 +00:00
echo_control_mobile_impl.cc Removing deprecated legacy noise suppressor 2020-01-31 07:14:25 +00:00
echo_control_mobile_impl.h Use backticks not vertical bars to denote variables in comments for /modules/audio_processing 2021-08-09 21:49:02 +00:00
echo_control_mobile_unittest.cc Remove unused critical section includes. 2020-07-16 13:52:28 +00:00
gain_control_impl.cc Reland "Replace the ExperimentalAgc config with the new config format" 2020-01-17 10:09:09 +00:00
gain_control_impl.h Reland "Replace the ExperimentalAgc config with the new config format" 2020-01-17 10:09:09 +00:00
gain_control_unittest.cc Reland "Replace the ExperimentalAgc config with the new config format" 2020-01-17 10:09:09 +00:00
gain_controller2.cc AGC2: fix fixed digital init, VAD before fixed digital 2021-10-20 20:28:23 +00:00
gain_controller2.h AGC2: VAD moved into GainController2 2021-10-20 15:50:33 +00:00
gain_controller2_unittest.cc AGC2: GainController::ApplyConfig removed 2021-10-14 12:58:25 +00:00
high_pass_filter.cc Make the high-pass filter operate in full-band 2019-12-18 16:01:24 +00:00
high_pass_filter.h Reduce for reallocations the pre-amplifier and high-pass filter 2020-01-03 14:10:21 +00:00
high_pass_filter_unittest.cc Make the high-pass filter operate in full-band 2019-12-18 16:01:24 +00:00
optionally_built_submodule_creators.cc Add unittests for APM with submodule creation disabled 2020-04-27 11:47:15 +00:00
optionally_built_submodule_creators.h Use backticks not vertical bars to denote variables in comments for /modules/audio_processing 2021-08-09 21:49:02 +00:00
OWNERS Remove wildcard ownership for build files. 2020-02-19 14:05:46 +00:00
render_queue_item_verifier.h
residual_echo_detector.cc Reland "Simplification and refactoring of the AudioBuffer code" 2019-08-22 10:34:05 +00:00
residual_echo_detector.h Use backticks not vertical bars to denote variables in comments for /modules/audio_processing 2021-08-09 21:49:02 +00:00
residual_echo_detector_unittest.cc Replace more instances of rtc::RefCountedObject with make_ref_counted. 2021-04-27 17:01:59 +00:00
rms_level.cc Removing all external access to the integer sample data in AudioBuffer 2019-08-20 08:36:47 +00:00
rms_level.h Use backticks not vertical bars to denote variables in comments for /modules/audio_processing 2021-08-09 21:49:02 +00:00
rms_level_unittest.cc Removing all external access to the integer sample data in AudioBuffer 2019-08-20 08:36:47 +00:00
splitting_filter.cc Optimizations and refactoring of the APM 3-band split filter 2020-02-24 13:19:14 +00:00
splitting_filter.h Optimizations and refactoring of the APM 3-band split filter 2020-02-24 13:19:14 +00:00
splitting_filter_unittest.cc Reland "Simplification and refactoring of the AudioBuffer code" 2019-08-22 10:34:05 +00:00
three_band_filter_bank.cc Use backticks not vertical bars to denote variables in comments for /modules/audio_processing 2021-08-09 21:49:02 +00:00
three_band_filter_bank.h Use backticks not vertical bars to denote variables in comments for /modules/audio_processing 2021-08-09 21:49:02 +00:00
typing_detection.cc Reformat the WebRTC code base 2018-06-19 14:00:39 +00:00
typing_detection.h Use backticks not vertical bars to denote variables in comments for /modules/audio_processing 2021-08-09 21:49:02 +00:00
voice_detection.cc APM: Localize/abstract the usage of AudioFrame 2020-03-17 13:55:41 +00:00
voice_detection.h Delete voice_detection() pointer to submodule 2019-10-07 13:06:05 +00:00
voice_detection_unittest.cc Delete voice_detection() pointer to submodule 2019-10-07 13:06:05 +00:00