This CL adds the following options:
pass an input AEC dump as a string (currently, the tool can only accept a path to an AEC dump file)
write the processed capture samples to a given vector
Bug: webrtc:10808
Change-Id: I02863c97ec3cd8c03ade2ea8521836f2e7417050
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/145208
Commit-Queue: Sonia-Florina Horchidan <soniahorchidan@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Per Åhgren <peah@webrtc.org>
Reviewed-by: Alessio Bazzica <alessiob@webrtc.org>
Reviewed-by: Ivo Creusen <ivoc@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28826}
This change reduces the level of several non-critical log messages in
order to reduce log spamming.
Bug: webrtc:8671
Change-Id: I6faae7a2ae4eeafd18c2770208485a75ad946e20
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/148528
Reviewed-by: Per Åhgren <peah@webrtc.org>
Commit-Queue: Gustaf Ullberg <gustaf@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28809}
This CL removes a long unused fallback behavior for the reverb
computation.
Bug: webrtc:8671
Change-Id: I4b57795a9bb33769237858f40392881ee235653e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/148520
Commit-Queue: Gustaf Ullberg <gustaf@webrtc.org>
Reviewed-by: Gustaf Ullberg <gustaf@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28802}
This is the last CL required to migrate WebRTC to ABSL_FLAG, rtc::Flag
will be removed soon after this one lands.
Bug: webrtc:10616
Change-Id: I2807cec39e28a2737d2c49e2dc23f2a6f98d08f0
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/145727
Reviewed-by: Tommi <tommi@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28606}
Make the GN conditionals match what happens in sources, or the other way around. Include headers only when they're used.
Bug: None
Change-Id: Ib8e3346e3c24eaa7e61ac4776dcd66efe2cc5c65
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/144880
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Henrik Andreassson <henrika@webrtc.org>
Reviewed-by: Kári Helgason <kthelgason@webrtc.org>
Commit-Queue: Oleh Prypin <oprypin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28500}
The last run-time logic for selecting function pointers was removed in
May 2016, here: https://codereview.webrtc.org/1955413003
It would be even better if we could eliminate the function pointers
entirely and just have different implementations that we select at
compile time; I've left a TODO asking for this.
Bug: webrtc:9553
Change-Id: Ica71d71e19759da00967168f6479b7eb8b46c590
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/144053
Reviewed-by: Alessio Bazzica <alessiob@webrtc.org>
Commit-Queue: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28414}
Only remaining user is WavReader. Demote its constructor
accepting a PlatformFile to private, to refactor implementation
in a later cl.
Bug: webrtc:6463
Change-Id: I7b950be6f02073cb135dd0fab1190b9dc0de1fba
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/144025
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28410}
It seems unnecessary to lock it if not actually reinitializing.
Bug: webrtc:10205
Change-Id: Ib3292e1d640a92a7df77400aebe9583cf877f824
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/115460
Commit-Queue: Oskar Sundbom <ossu@webrtc.org>
Reviewed-by: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#28060}
Add a PlayoutVolumeChange RuntimeSetting. Trigger an echo path change when the playout volume is changed.
Bug: webrtc:10608
Change-Id: I1e736b93c1865d08c7d2582f6fe00216c1e1f72e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/135746
Reviewed-by: Per Åhgren <peah@webrtc.org>
Reviewed-by: Fredrik Hernqvist <fhernqvist@webrtc.org>
Commit-Queue: Fredrik Hernqvist <fhernqvist@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27913}
Use the C++-style stdlib headers, add `std::` prefix, in order to avoid implicit casts to double.
Bug: None
Change-Id: I78d9caaee715be341d2480c6d5e769068966d577
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133625
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Oleh Prypin <oprypin@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27905}
This CL removes the redundant enable flags from AEC2 and AECM
Bug: webrtc:5298
Change-Id: Icc575abf1c368dda02ca77f057d166f1c921f662
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/135100
Commit-Queue: Per Åhgren <peah@webrtc.org>
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27848}
This CL removes the legacy reporting of histogram data for AEC2.
Bug: webrtc:5298
Change-Id: I838e729e0fb78d28e16de0fa79ddf5c857682d65
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/135101
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Commit-Queue: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27834}
- add test that checks that the computed VAD probability is within
tolerance *1
- speed-up some tests by reducing the input length and skipping frames
- remove unused code in test_utils
- fix some comments
*1: RnnVadTest::RnnBitExactness is replaced by
RnnVadTest::RnnVadProbabilityWithinTolerance
Bug: webrtc:10480
Change-Id: I19332d06eacffbbe671bf7749ff4c92798bdc55c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133910
Reviewed-by: Alex Loiko <aleloi@webrtc.org>
Commit-Queue: Alessio Bazzica <alessiob@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27803}
This CL ensures that the AECm is only created when needed.
The changes in the CL are bitexact when running AECm via
audioproc_f
The CL also corrects an issue where there is a risk for
AEC2 to not be correctly setup when the sample rate
changes inbetween activations.
Bug: webrtc:8671
Change-Id: Id3b33e20969b1543e28c885d47495246cfbe549d
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/134216
Commit-Queue: Per Åhgren <peah@webrtc.org>
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27800}
This CL extends the supported runtime settings in
APM to also comprise the AGC2 fixed gain.
The CL was originally created by Adam Whiteside.
Bug: webrtc:10574
Change-Id: I79b3d6501f1e202b66a9b6018f8a493a56b01f62
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/134101
Commit-Queue: Per Åhgren <peah@webrtc.org>
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27782}
This CL ensures that the AEC2 is only created when needed.
The changes in the CL are bitexact when running AEC2 via
audioproc_f
Bug: webrtc:8671
Change-Id: I5f6d33e45a7031c69ac53098781635c415668e49
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/129740
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Commit-Queue: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27772}
The one with enum.IntFlag is not feasible. An attempt is done here:
https://webrtc-review.googlesource.com/c/src/+/133884
It requires re-writing QualityAssessment to Python3 which is too much
work for little benefit. (I tried, but couldn't get the unit-tests to
pass for both 2 and 3.)
The second one is not a real todo.
TBR=alessiob@webrtc.org
NOPRESUBMIT=True
Bug=None
NOTRY=True
Change-Id: Ia25817533cd504c30490f86e4058f0b2d59dd39c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133908
Commit-Queue: Alex Loiko <aleloi@webrtc.org>
Reviewed-by: Alex Loiko <aleloi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27715}
The acoustic echo canceler AEC2 is being deprecated. The routing for reporting these metrics as UMA stats has outlived the metrics'usefulness.
Bug: webrtc:10563
Change-Id: Ib96693dfc43e25a0cfecad7d5d2043116ca7e6b5
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133573
Reviewed-by: Per Åhgren <peah@webrtc.org>
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27699}
As non-linear mode uses a suppressed version of y (not e) as output, this change
uses Y2, rather than E2, as nearend spectrum when computing the suppression gains.
E2 is still used in linear mode.
This change also affects how the minimum suppression gains are calculated. The
minimum gain is now min_echo_power / weighted_residual_echo.
Bug: webrtc:10550
Change-Id: I2904c5a09dd64b06bf25eb5a37c18dab50297794
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/133023
Commit-Queue: Gustaf Ullberg <gustaf@webrtc.org>
Reviewed-by: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27629}
This CL changes the APM unittests to use AEC3 instead of
AEC2.
Bug: webrtc:8671
Change-Id: I80f88dbafb7c31696abd8b7efb5a187a9fb30d1c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/129420
Reviewed-by: Gustaf Ullberg <gustaf@webrtc.org>
Commit-Queue: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27607}
This CL allows audioproc_f to overrule any runtime settings for the
pre-amplifier gain that are present in the aecdump file.
Bug: webrtc:10546
Change-Id: I74dbf8d043f59b516bf0abc80f266e965af0754d
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/132558
Reviewed-by: Alessio Bazzica <alessiob@webrtc.org>
Commit-Queue: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27598}
* This is too brittle and might clash with MSVC's M_PI. See [1].
* We only used it once (in a unit test).
* We shouldn't use PI anyway [2].
Instead, pull it from <cmath> with _USE_MATH_DEFINES,
like it's already done in the code base.
[1] https://ci.chromium.org/p/webrtc/builders/try/win_x86_msvc_rel/6844
[2] https://tauday.com/tau-manifesto
Bug: webrtc:9855
Change-Id: I7a6976240604ef367ea07478d8cb5e4020e5dfeb
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/132548
Reviewed-by: Alessio Bazzica <alessiob@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Yves Gerey <yvesg@google.com>
Cr-Commit-Position: refs/heads/master@{#27597}
This CL corrects the minimum bound for the estimated
comfort noise level.
Bug: webrtc:10533
Change-Id: I473275ffbc7bb52572315849f30e13b764109d92
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/132003
Reviewed-by: Per Åhgren <peah@webrtc.org>
Reviewed-by: Gustaf Ullberg <gustaf@webrtc.org>
Commit-Queue: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27567}
The configuration parameter filter.use_linear_filter can be used to
disable the linear filtering. Disabling the linear filter is equivalent
to runing in non-linear mode.
Bug: b/130016532
Change-Id: I8ffdf474822888b9915444bba6cc1c25ec1efe5a
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/132552
Reviewed-by: Per Åhgren <peah@webrtc.org>
Commit-Queue: Gustaf Ullberg <gustaf@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27566}
This CL replaces KissFFT with PFFFT for the spectral features
computation.
Remarks:
- Extra FFT output vector copy eliminated
- Scaling and windowing merged into a single vector for efficiency
- Nyquist frequency hack to keep the iteration in
BandFeaturesExtractor::ComputeSpectralCrossCorrelation simple
Bug: webrtc:9577, webrtc:10480
Change-Id: I436563bd257f66a243f5402be270ffcf859bd184
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/130221
Commit-Queue: Alessio Bazzica <alessiob@webrtc.org>
Reviewed-by: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27536}
This CL refactors the computation of band energy and spectral
cross-correlation coefficients by moving and optimizing
the code from ComputeBandCoefficients, ComputeBandEnergies and
ComputeSpectralCrossCorrelation into a single class (named
BandFeaturesExtractor).
This change will also help replacing FFT library in the RNN VAD.
Bug: webrtc:10480
Change-Id: I6cefa23e8f3bc8de6eb09d3ea434699d5e19124e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/129726
Commit-Queue: Alessio Bazzica <alessiob@webrtc.org>
Reviewed-by: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27535}
Semi-automatically created with:
git grep -l " testing::" | xargs sed -i "s/ testing::/ ::testing::/g"
git grep -l "(testing::" | xargs sed -i "s/(testing::/(::testing::/g"
git cl format
After this, two .cc files failed to compile and I have fixed them
manually.
Bug: webrtc:10523
Change-Id: I4741d3bcedc831b6c5fdc04485678617eb4ce031
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/132018
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27526}
This change makes it possible to disable AEC3's render delay
controller and delay estimator, and instead rely on an external
delay estimator. The delay is communicated via SetAudioBufferDelay.
When the feature is enabled, no echo removal will be performed
until the first delay is provided.
The delay is
Bug: b/130016532
Change-Id: I16643109d78d770ff1d2713cf247b0b9cce1bc1c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/131327
Commit-Queue: Gustaf Ullberg <gustaf@webrtc.org>
Reviewed-by: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27467}
This CL extends, and partly corrects, the benchmarking
code in audioproc_f to provide statistics for the API
call durations in audioproc_f
Bug: chromium:939791
Change-Id: I4c26c4bb3782335f13dd3e21e6f861842539ea62
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/129260
Commit-Queue: Per Åhgren <peah@webrtc.org>
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27443}
This change removes the (unused) ability of EchoRemover overriding
the delay of the RenderDelayController. The change is tested for
bit-exactness.
Bug: webrtc:8671
Change-Id: I188ef740f1437de64ffe236d07a7dcd4128192c2
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/130518
Commit-Queue: Gustaf Ullberg <gustaf@webrtc.org>
Reviewed-by: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27414}
And delete corresponding dependencies on :webrtc_common. After this
change, common_types.h is included directly only from code in the
following directories:
api/
api/video/
api/video_codecs/
common_video/libyuv/include/
media/base/
modules/remote_bitrate_estimator/
modules/rtp_rtcp/source/
modules/video_coding/codecs/vp9/
There remains plenty of indirect dependencies on the types declared in
common_types.h, but the fewer direct dependencies should make it
easier to find the proper place for each type.
Bug: webrtc:5876
Change-Id: I93e8f214025ecb613c19fdec2015bd3f96c59aae
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/130501
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27376}
This change prevents FilterAnalyzer from accessing memory out-of-bounds
when the filter is resized.
Bug: chromium:946439
Change-Id: I7e2392c8b1ff0ff55566c663bf6d7a40d7754501
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/129928
Reviewed-by: Per Åhgren <peah@webrtc.org>
Commit-Queue: Gustaf Ullberg <gustaf@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27318}
The pointer-to-submodule interfaces are being removed.
This CL:
1) introduces AudioProcessing::Config::GainController1 with most config,
2) adds functions to APM for setting and getting analog gain,
3) creates a temporary GainControlConfigProxy to support the transition
to the new config.
4) Moves the lock references in GainControlForExperimentalAgc and
GainControlImpl into the GainControlConfigProxy, as it becomes the
sole AGC object with functionality exposed to the client.
Bug: webrtc:9947, webrtc:9878
Change-Id: Ic31e15e9bb26d6497a92b77874e0b6cab21ff2b2
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/126485
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Reviewed-by: Fredrik Solenberg <solenberg@webrtc.org>
Reviewed-by: Alessio Bazzica <alessiob@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27316}
In this CL bounds are added to the index used for accessing the filter frequency response. That vector has always a capacity in memory equal to the final number of blocks of the main filter. However, at the initial part of the call or after an echo path change, a transition phase is started and a filter with a lower number of blocks is used and, therefore, its size is lower than that capacity during that transition phase.
Bug: webrtc:10463
Change-Id: I6ebfdea43047a3fa993a27f2c52bb3024df84ffe
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/128777
Reviewed-by: Per Åhgren <peah@webrtc.org>
Commit-Queue: Jesus de Vicente Pena <devicentepena@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27264}
This CL replaces death tests placed inside a loop with a parametric test.
A better option is to mock Pffft::IsValidFftSize and test CreatePffftWrapper
when the former returns false. However, that would require to define an
interface for the PFFFT wrapper.
Bug: webrtc:10426
Change-Id: I3c49f1b271c8bf0099a4846014bef021676ef3e0
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/128862
Reviewed-by: Alex Loiko <aleloi@webrtc.org>
Commit-Queue: Alessio Bazzica <alessiob@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27260}
This CL removes parameters for AEC3 which are no longer used. To reflect
that change, one of the parameters also is renamed
Bug: chromium:941949,webrtc:8671
Change-Id: I26609b396fa14ecb7523eebfe531a1338718103b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/127780
Reviewed-by: Gustaf Ullberg <gustaf@webrtc.org>
Commit-Queue: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27128}
This change reduces the risk of echo due to noise in the headroom
of the linear filter.
Changes:
- Use shorter delay headroom
- Delay headroom is specified in samples (not blocks)
- No hysteresis limit when delay is reduced
Bug: chromium:119942,webrtc:10341
Change-Id: I708e80e26d541dff8ca04b6da2d346a1d59cbfcb
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/126420
Commit-Queue: Gustaf Ullberg <gustaf@webrtc.org>
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Reviewed-by: Per Åhgren <peah@webrtc.org>
Reviewed-by: Jesus de Vicente Pena <devicentepena@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27126}
This adds a flag to audioproc_f to generate a custom call order
file from an AEC dump. This file can be used to get more realism
when simulating with wav-files.
Bug: webrtc:10393
Change-Id: I245533d18affaab2f6cef53138332d7d83c71822
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/126782
Commit-Queue: Ivo Creusen <ivoc@webrtc.org>
Reviewed-by: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#27104}
Since there is no way to enable/disable these diagnostics at runtime,
this CL moves the suppression into the rtc_* templates in order to
remove the need to explicitly add the snippet of code needed to
suppress it (currently copy/pasted in 144 locations).
The diagnostic that causes the most problems is the one about "complex
class/struct explicit ctor/dtor" [1] because WebRTC doesn't find
it useful enough.
Other diagnostics are good (for example the one that warns about
using "virtual" instead of "override", but that will be covered by
this clang-tidy check [2]) while others are Chromium related so
they have never triggered.
[1] - https://cs.chromium.org/chromium/src/tools/clang/plugins/FindBadConstructsConsumer.cpp?l=147-167&rcl=b4bebe1aa15dba7ca5fcc6456a81a55665327c3a
[2] - https://clang.llvm.org/extra/clang-tidy/checks/modernize-use-override.html
Bug: webrtc:163
Change-Id: Icbf27efa5b369100a31e6a32df1a0913729b3b34
Reviewed-on: https://webrtc-review.googlesource.com/c/125088
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26918}
This CL adds a temporary flag for specifying that the legacy AEC2 should
be used.
Bug: webrtc:10366
Change-Id: Ie3edaa1560cdc1282b62242beb67aa6fee7f2841
Reviewed-on: https://webrtc-review.googlesource.com/c/124980
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Commit-Queue: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26891}
Import proto_library.gni when rtc_enable_protobuf is true instead of when
build_with_mozilla is false.
Makes it maybe easier to reason about the intention (e.g. intention is to not
compile any protobuf in, hence flag rtc_enable_protobuf)
The build file could not work if build_with_mozilla = true but
rtc_enable_protobuf = true.
Bug: webrtc:10338
Change-Id: I26e5983bd1519aa46c308b11796d518de5ef7597
Reviewed-on: https://webrtc-review.googlesource.com/c/123763
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26868}
Pretty-Fast Fast Fourier Transform is a 3rd party FFT C library meant to
replace other FFT libraries in WebRTC (see https://crbug.com/webrtc/9577).
This CL adds a WebRTC wrapper meant to be used inside the Audio Processing
Module (APM). As a first step, it only supports aligned memory allocated
via PFFFT. Support for the C++ standard library containers will be done
afterwards since it requires careful investigation and benchmarking (because
PFFFT uses SIMD optimizations).
The wrapper pre-allocates a scratch buffer to avoid VLA.
Bug: webrtc:9577
Change-Id: Ied00c3d3b1df292024f608ccf0ed1917d6e92e56
Reviewed-on: https://webrtc-review.googlesource.com/c/122563
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Max Morin <maxmorin@webrtc.org>
Commit-Queue: Alessio Bazzica <alessiob@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26808}
In this CL we avoid the propagation of the echo control factory to the AudioProcessing instance when this is not set. That propagation was unnecessarily overriding the echo control factory that might have been already set on that AudioProcessing instance.
Change-Id: Ife8f479bc7a81c35ecf656e7d0ddfcc98981c74f
Bug: webrtc:10344
Reviewed-on: https://webrtc-review.googlesource.com/c/123765
Commit-Queue: Jesus de Vicente Pena <devicentepena@webrtc.org>
Reviewed-by: Gustaf Ullberg <gustaf@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26802}
This change disables the ERLE estimation of onsets and instead assumes
minimum ERLE. This reduces the risk of echo leaks during onsets. The
estimated ERLE was sometimes incorrect due to:
- Not enough data to train on.
- Platform noise suppression can change the echo-path.
Bug: chromium:119942,webrtc:10341
Change-Id: I1dd1c0f160489e76eb784f07e99af02f44f387ec
Reviewed-on: https://webrtc-review.googlesource.com/c/123782
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Reviewed-by: Jesus de Vicente Pena <devicentepena@webrtc.org>
Commit-Queue: Gustaf Ullberg <gustaf@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26794}
The FFT output buffers sizes in SpectralFeaturesExtractor have been reduced
from N to N/2+1, where N is the audio frame size. This is required since
ComputeBandEnergies() currently calls ComputeBandCoefficients() indicating
a higher value for max_freq_bin_index, hence polluting the higher bands with
unwanted energy (coming from the symmetric conjugate copy of the Fourier
coefficients).
Bug: webrtc:10332
Change-Id: Ie080050c4f357fa95e256cf2a6bf572222e8ca44
Reviewed-on: https://webrtc-review.googlesource.com/c/123239
Commit-Queue: Alessio Bazzica <alessiob@webrtc.org>
Reviewed-by: Pablo Barrera González <barrerap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26761}
The lock is unnecessary and potentially unsafe:
1) All gain_control accesses in AudioProcessingImpl happen - and are intended to happen - while holding the crit_capture_ lock, and all external API calls take the same lock once inside GainControlImpl.
2) If ProcessCaptureStreamLocked (locked by crit_capture) calls a gain_control function that takes crit_render, the mandated locking order (render before capture) is violated and we might get a deadlock with the render thread.
Bug: b/123456404
Change-Id: Id7a888827e347e5e1d50e2f87d90e8b68f52b7b8
Reviewed-on: https://webrtc-review.googlesource.com/c/122087
Reviewed-by: Alessio Bazzica <alessiob@webrtc.org>
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26637}
Googletest recently started replacing the term Test Case by Test Suite.
From now on, the preferred API is TestSuite*; the older TestCase* API
will be slowly deprecated.
This CL moves WebRTC to the new set of APIs.
More info in [1].
This CL has been generated with this script:
declare -A items
items[TYPED_TEST_CASE]=TYPED_TEST_SUITE
items[TYPED_TEST_CASE_P]=TYPED_TEST_SUITE_P
items[REGISTER_TYPED_TEST_CASE_P]=REGISTER_TYPED_TEST_SUITE_P
items[INSTANTIATE_TYPED_TEST_CASE_P]=INSTANTIATE_TYPED_TEST_SUITE_P
items[INSTANTIATE_TEST_CASE_P]=INSTANTIATE_TEST_SUITE_P
for i in "${!items[@]}"
do
git ls-files | xargs sed -i "s/\b$i\b/${items[$i]}/g"
done
git cl format
[1] - https://github.com/google/googletest/blob/master/googletest/docs/primer.md#beware-of-the-nomenclature
Bug: None
Change-Id: I5ae191e3046caf347aeee01554d5743548ab0e3f
Reviewed-on: https://webrtc-review.googlesource.com/c/118701
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26494}
The type rtc::scoped_refptr<T> is now part of api/. Please include it from
api/scoped_refptr.h.
More info: See: https://groups.google.com/forum/#!topic/discuss-webrtc/Mme2MSz4z4o.
Bug: webrtc:9887, webrtc:8205
No-Try: True
Change-Id: Ic6c7c81e226e59f12f7933e472f573ae097b55bf
Reviewed-on: https://webrtc-review.googlesource.com/c/119041
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26414}
This CL removes the legacy, no longer used, render buffering code. It
also removes four unused parameters from the AEC3 config. The change
is tested for bit-exactness.
Bug: webrtc:8671
Change-Id: I2bb6cb7a1097863f228767d757d551c00593bb00
Reviewed-on: https://webrtc-review.googlesource.com/c/119701
Reviewed-by: Henrik Lundin <henrik.lundin@webrtc.org>
Reviewed-by: Per Åhgren <peah@webrtc.org>
Commit-Queue: Gustaf Ullberg <gustaf@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26399}
In this CL a warning is avoided in the reverberation decay estimator code. The change is bitexact.
Bug: chromium:921582
Change-Id: I5a91f4b5970a21ba6da7254cf7fad8c2d0bcac4b
Reviewed-on: https://webrtc-review.googlesource.com/c/118441
Commit-Queue: Jesus de Vicente Pena <devicentepena@webrtc.org>
Reviewed-by: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26342}
This is a reland of 80b95de765
Original change's description:
> Trim down FileWrapper class to be merely a wrapper owning a FILE*
>
> Bug: webrtc:6463
> Change-Id: If71e2f3a75dc1863bc805ab71de1e2d33294f805
> Reviewed-on: https://webrtc-review.googlesource.com/c/117881
> Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
> Reviewed-by: Alex Loiko <aleloi@webrtc.org>
> Commit-Queue: Niels Moller <nisse@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#26311}
Bug: webrtc:6463
Change-Id: I12154ef65744c1b7811974a1d871e05ed3fbbc27
Reviewed-on: https://webrtc-review.googlesource.com/c/118660
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26337}
This reverts commit 74ba99062c.
Reason for revert: Breaks downstream project.
Original change's description:
> AEC3: Lockless transfer of render data to the capture thread
>
> This CL implements a lockless queue that replaces SwapQueue
> in the RenderWriter. This avoid stalls when the render and
> capture threads are accessing the queue at the same time.
>
> Bug: webrtc:10205
> Change-Id: Ie7d6fcf9c80fad957e2a90537658fb730ca2ed72
> Reviewed-on: https://webrtc-review.googlesource.com/c/117643
> Reviewed-by: Per Åhgren <peah@webrtc.org>
> Commit-Queue: Gustaf Ullberg <gustaf@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#26298}
TBR=gustaf@webrtc.org,peah@webrtc.org
Change-Id: Ie76ee8835da4e44982d181a152c9ffa19ff33e23
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:10205
Reviewed-on: https://webrtc-review.googlesource.com/c/118142
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26304}
This CL implements a lockless queue that replaces SwapQueue
in the RenderWriter. This avoid stalls when the render and
capture threads are accessing the queue at the same time.
Bug: webrtc:10205
Change-Id: Ie7d6fcf9c80fad957e2a90537658fb730ca2ed72
Reviewed-on: https://webrtc-review.googlesource.com/c/117643
Reviewed-by: Per Åhgren <peah@webrtc.org>
Commit-Queue: Gustaf Ullberg <gustaf@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26298}
The pitch gain type in ComputePitchGainThreshold() is wrong
(size_t instead of float).
The pitch period is an unsigned integer type, but it is safer to
switch to a signed type and add checks on the sign.
Bug: webrtc:9076
Change-Id: If69d182071edab9750a320f0fbfac24aa8052ee0
Reviewed-on: https://webrtc-review.googlesource.com/c/117302
Reviewed-by: Alex Loiko <aleloi@webrtc.org>
Commit-Queue: Alessio Bazzica <alessiob@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26259}
This Config configuration will eventually replace the AudioProcessing::noise_suppression() interface.
This also introduces a proxy NoiseSuppression, returned by AudioProcessing::noise_suppression.
Without this proxy, ApplyConfig could overwrite NS settings for clients who currently use noise_suppression(). For example, the following code will not preserve the noise suppression level:
apm->noise_suppression()->set_level(NoiseSuppression::kHigh);
auto cfg = apm->GetConfig();
apm->ApplyConfig(cfg);
The NoiseSuppression instance returned by noise_suppression() has no way to update the config inside APM, so GetConfig() will return an out-of-date config which is then re-applied. This CL adds a proxy that makes this update, by forwarding Enable() and set_level() calls to ApplyConfig().
Drive-by change: AudioProcessing::Config substructs are reordered to mirror the capture processing pipeline.
Tested: Ran ToT and this CL builds of audioproc_f and verified identical settings/aecdumps.
Bug: webrtc:9947
Change-Id: I823eade894be115c254d656562564108b2b63b1f
Reviewed-on: https://webrtc-review.googlesource.com/c/116521
Reviewed-by: Alex Loiko <aleloi@webrtc.org>
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26248}
Comfort noise was generated by picking random angles on the unit circle
for each frequency band and then obtaining points on the unit circle from
{cos(a), -sin(a)}.
In order to reduce complexity, this change introduces a randomly indexed
table of 32 elements over sin(a). cos(a) is obtained by adding an offset
corresponding to pi/2 to the index. The table is pre-scaled by sqrt(2) to
avoid later multiplications.
This change reduces the computational complexity of AEC3 by ~8% with no
audible degradation.
Bug: webrtc:10189
Change-Id: I8cfe2469022fb1fe910ab3f966e55d9d499b7161
Reviewed-on: https://webrtc-review.googlesource.com/c/116787
Commit-Queue: Gustaf Ullberg <gustaf@webrtc.org>
Reviewed-by: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26209}
This CL adds two unit tests to make sure that, when an echo path gain
change occurs, the echo canceller is notified.
Such a change can be caused by (i) a pre-amplifier gain change or
(ii) an analog gain change.
Bug: webrtc:7494
Change-Id: Ia47cfbbc5694340cd3e760d8d3c3393f79897a9d
Reviewed-on: https://webrtc-review.googlesource.com/c/111780
Commit-Queue: Alessio Bazzica <alessiob@webrtc.org>
Reviewed-by: Per Åhgren <peah@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26190}
This updates some tests to use AudioProcesing::Config() and
AudioProcessing::GetStatistics() instead.
Some tests are left with voice_detection() because
a) not all tests make sense to run both APIs in parallel, and
b) we want test coverage of the old VoiceDetection until it is removed.
Bug: webrtc:9947
Change-Id: Ifb21a1e6e931d7ad3c3a4e38f5cc4f146da3c9a3
Reviewed-on: https://webrtc-review.googlesource.com/c/116160
Reviewed-by: Alex Loiko <aleloi@webrtc.org>
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26134}
This adds a second (!) VoiceDetection instance in APM, activated via webrtc::AudioProcessing::Config and which reports its values in the webrtc::AudioProcessingStats struct.
The alternative is to reuse the existing instance, but that would require adding a proxy interface returned by AudioProcessing::voice_detection() to update the internal config of AudioProcessingImpl when calling voice_detection()->Enable().
Complexity-wise, no reasonable client will enable both interfaces simultaneously, so the footprint is negligible.
Bug: webrtc:9947
Change-Id: I7d8e28b9bf06abab8f9c6822424bdb9d803b987d
Reviewed-on: https://webrtc-review.googlesource.com/c/115243
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Reviewed-by: Ivo Creusen <ivoc@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26101}
This CL guards against null pointer dereference, as caught by
clang static analyzer [1].
It also removes a useless field initialization, which happened
to trigger a false positive from said analyser.
[1] https://chromium.googlesource.com/chromium/src/+/HEAD/docs/clang_static_analyzer.md
Bug: webrtc:8793
Bug: webrtc:9855
Change-Id: Ia0fee24395eb2df16b526bbdffa5da6275b0909a
Reviewed-on: https://webrtc-review.googlesource.com/c/115044
Reviewed-by: Alessio Bazzica <alessiob@webrtc.org>
Reviewed-by: Jeroen de Borst <jeroendb@webrtc.org>
Commit-Queue: Yves Gerey <yvesg@google.com>
Cr-Commit-Position: refs/heads/master@{#26091}
This replaces the current usage of AudioProcessing::level_estimator()
in that test.
The unit tests that specifically test the level_estimator API are left
in place, until the level_estimator API itself is removed.
Bug: webrtc:9947
Change-Id: I73301c1478d2c9763bb49598a692142229102876
Reviewed-on: https://webrtc-review.googlesource.com/c/114550
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Reviewed-by: Alessio Bazzica <alessiob@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26049}
Changing VAD (voice activity detector) confidence threshold from 40%
to 90%. The proportion of samples classified as speech drops to ca 80%
of what it was when the threshold was 40%. Therefore,
kFullBufferSizeMs has to be increased by 1.0/0.8. We increase it from
1600ms to 2000ms.
TESTED = Did run the new and old configs on AEC dumps. With one minute
of kitchen noise, the new tuning boosted the noise by 3-4 db less.
Bug: chromium:913430
Change-Id: I4a2ebb6d1d309c6c20dd23c3685818b1b5ad4a66
Reviewed-on: https://webrtc-review.googlesource.com/c/113806
Commit-Queue: Alex Loiko <aleloi@webrtc.org>
Reviewed-by: Alessio Bazzica <alessiob@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25950}
It's currently used only by the VCMJitterBuffer and VCMReceiver
classes. Injection is needed by the VCMReceiverTimingTest test, which
defines a subclass(!) of EventWrapper.
Bug: webrtc:3380
Change-Id: I765be0ceac58e941928319cc426ba49f1cbdc5fa
Reviewed-on: https://webrtc-review.googlesource.com/c/113002
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Philip Eliasson <philipel@webrtc.org>
Commit-Queue: Niels Moller <nisse@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25893}
Fixes the ENR threshold used in the dominant nearend detection when
the kill-switch WebRTC-Aec3UseLegacyNormalSuppressorTuning is pulled.
Bug: webrtc:8671,chromium:911141
Change-Id: I30ee58009633b3a9e12eff692226baada624a049
Reviewed-on: https://webrtc-review.googlesource.com/c/112903
Commit-Queue: Gustaf Ullberg <gustaf@webrtc.org>
Reviewed-by: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25880}
Correcting a mistake in the dominant nearend detection where
the meaning of the echo-to-nearend ratio was inversed.
Bug: webrtc:8671
Change-Id: I7f56369fad1784e256150c312b6b3dafcb9d0f71
Reviewed-on: https://webrtc-review.googlesource.com/c/112136
Reviewed-by: Per Åhgren <peah@webrtc.org>
Commit-Queue: Gustaf Ullberg <gustaf@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25818}
In this CL the analysis of the impulse response that is done in the FilterAnalyzed class is changed in order to reduce its complexity. Instead of analyzing the whole impulse response in each Update call a smaller region is analyzed. That region is changed at each Update call which implies that several calls are needed in order to analyze the complete impulse response.
Bug: webrtc:10032,chromium:909007
Change-Id: Ic58be34ba18485311c63e0fed9b6e892f9cb864c
Reviewed-on: https://webrtc-review.googlesource.com/c/111602
Reviewed-by: Per Åhgren <peah@webrtc.org>
Commit-Queue: Per Åhgren <peah@webrtc.org>
Commit-Queue: Jesus de Vicente Pena <devicentepena@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25817}
This adds an interface for accessing stats on the capture stream, and
adds a level estimator to report one of the stats.
Bug: webrtc:9947
Change-Id: Id472534fa2e04d46c9ab700671f620584a246afb
Reviewed-on: https://webrtc-review.googlesource.com/c/109587
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Reviewed-by: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25786}
This CL decouples //rtc_base:rtc_base_tests_utils from gunit by
moving gunit helpers (rtc_base/gunit.h) and rtc_base/testclient.h
(which depends on gunit helpers) to their own build target.
It also removes some unused dependencies in the WebRTC build graph.
Bug: None
Change-Id: Ia9820e84ff697da39b351eef73c45f6e4bdf2623
Reviewed-on: https://webrtc-review.googlesource.com/c/111861
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25769}
This change introduces a clockdrift detector operating on the estimated
delay of the echo path delay estimator. Each time the delay estimate
changes it is compared to previous estimates. If the estimates are
slowly increasing or decreasing, clockdrift is detected.
Four different patterns are considered clockdrift:
- k, k+1, k+2, k+3
- k, k+2, k+1, k+3
- k, k-1, k-2, k-3
- k, k-2, k-1, k-3
A delay estimate history matching the three last elements in one of the
patterns is considered probable clockdrift. Matching all four elements
is considered verified clockdrift.
If the delay is constant for some time after clockdrift is detected the
clockdrift detector will revert to no detected clockdrift.
The level of clockdrift is reported via an UMA histogram.
Bug: webrtc:10014
Change-Id: I1cce4d593e101a8b3fa99df6935e59b4243cb97a
Reviewed-on: https://webrtc-review.googlesource.com/c/111381
Commit-Queue: Gustaf Ullberg <gustaf@webrtc.org>
Reviewed-by: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25758}
Avoid that the client code relies on the adaptive digital mode being
enabled by default (error prone).
Bug: webrtc:7494
Change-Id: I765fecf535cf31a2163e10595a42520473c233b6
Reviewed-on: https://webrtc-review.googlesource.com/c/111586
Reviewed-by: Alex Loiko <aleloi@webrtc.org>
Commit-Queue: Alessio Bazzica <alessiob@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25728}
In this CL a more precise estimation of the Erle is introduced. This is done by creating different estimators that are specialized in different regions of the linear filter. An estimation of which regions were used for generating the current echo estimate is performed and used for selecting the right Erle estimator.
Bug: webrtc:9961
Change-Id: Iba6eb24596c067c3c66d40df590be379d3e1bb7b
Reviewed-on: https://webrtc-review.googlesource.com/c/109400
Reviewed-by: Per Åhgren <peah@webrtc.org>
Commit-Queue: Jesus de Vicente Pena <devicentepena@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25707}
This CL makes possible to choose the level estimation for the adaptive
digital GC of AGC2. The options are RMS (default and currently used
estimator) and peak-based (already computed, but not used).
Besides adding the new AGC2 config param for the level estimator, this CL
also refactors the config class by making it more structured.
Bug: webrtc:7494
Change-Id: I20eb558ca50f13536aa7bdea08d21de3b630f8bc
Reviewed-on: https://webrtc-review.googlesource.com/c/110144
Commit-Queue: Alessio Bazzica <alessiob@webrtc.org>
Reviewed-by: Alex Loiko <aleloi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25620}
Gain specified by fuzzer in APM config was too high.
Bug: chromium:901661
Change-Id: Id3ea8d23a4284a35c827bb16125902d84e37ca1e
Reviewed-on: https://webrtc-review.googlesource.com/c/110604
Commit-Queue: Alex Loiko <aleloi@webrtc.org>
Reviewed-by: Jonas Olsson <jonasolsson@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25594}
This reverts commit 61c6e5643e.
Reason for revert: downstream projects prepared for this change
Original change's description:
> Revert "Isolating APM API build target: making :api an actual target."
>
> This reverts commit a7f77a7c05.
>
> Reason for revert: breaking downstream
>
> Original change's description:
> > Isolating APM API build target: making :api an actual target.
> >
> > This CL is part of a refactoring work to unblock other CLs
> > that would generate a circular dependency when including
> > modules/audio_processing. It will also allow to easily move
> > the APM interface part under //api.
> >
> > More in detail, this change moves the APM interface files from
> > the build target modules/audio_processing to
> > modules/audio_processing:api. It also adds :api as dependency
> > where needed.
> >
> > Bug: webrtc:9535
> > Change-Id: I72829e22d08ba4d75985f0421e6e8bf0216ebecd
> > Reviewed-on: https://webrtc-review.googlesource.com/c/109501
> > Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
> > Reviewed-by: Kári Helgason <kthelgason@webrtc.org>
> > Reviewed-by: Niels Moller <nisse@webrtc.org>
> > Reviewed-by: Sam Zackrisson <saza@webrtc.org>
> > Commit-Queue: Alessio Bazzica <alessiob@webrtc.org>
> > Cr-Commit-Position: refs/heads/master@{#25539}
>
> TBR=saza@webrtc.org,alessiob@webrtc.org,kwiberg@webrtc.org,nisse@webrtc.org,kthelgason@webrtc.org
>
> Change-Id: I974c6237311e7c06970aa62e5f6940f3aa80113d
> No-Presubmit: true
> No-Tree-Checks: true
> No-Try: true
> Bug: webrtc:9535
> Reviewed-on: https://webrtc-review.googlesource.com/c/109820
> Reviewed-by: Alessio Bazzica <alessiob@webrtc.org>
> Commit-Queue: Alessio Bazzica <alessiob@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#25540}
TBR=saza@webrtc.org,alessiob@webrtc.org,kwiberg@webrtc.org,nisse@webrtc.org,kthelgason@webrtc.org
Change-Id: Ic8ed4cc3baf43d639ce13cae256c007728c3ad92
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:9535
Reviewed-on: https://webrtc-review.googlesource.com/c/109884
Reviewed-by: Alessio Bazzica <alessiob@webrtc.org>
Commit-Queue: Alessio Bazzica <alessiob@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25547}
This reverts commit a7f77a7c05.
Reason for revert: breaking downstream
Original change's description:
> Isolating APM API build target: making :api an actual target.
>
> This CL is part of a refactoring work to unblock other CLs
> that would generate a circular dependency when including
> modules/audio_processing. It will also allow to easily move
> the APM interface part under //api.
>
> More in detail, this change moves the APM interface files from
> the build target modules/audio_processing to
> modules/audio_processing:api. It also adds :api as dependency
> where needed.
>
> Bug: webrtc:9535
> Change-Id: I72829e22d08ba4d75985f0421e6e8bf0216ebecd
> Reviewed-on: https://webrtc-review.googlesource.com/c/109501
> Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
> Reviewed-by: Kári Helgason <kthelgason@webrtc.org>
> Reviewed-by: Niels Moller <nisse@webrtc.org>
> Reviewed-by: Sam Zackrisson <saza@webrtc.org>
> Commit-Queue: Alessio Bazzica <alessiob@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#25539}
TBR=saza@webrtc.org,alessiob@webrtc.org,kwiberg@webrtc.org,nisse@webrtc.org,kthelgason@webrtc.org
Change-Id: I974c6237311e7c06970aa62e5f6940f3aa80113d
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:9535
Reviewed-on: https://webrtc-review.googlesource.com/c/109820
Reviewed-by: Alessio Bazzica <alessiob@webrtc.org>
Commit-Queue: Alessio Bazzica <alessiob@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25540}
This CL is part of a refactoring work to unblock other CLs
that would generate a circular dependency when including
modules/audio_processing. It will also allow to easily move
the APM interface part under //api.
More in detail, this change moves the APM interface files from
the build target modules/audio_processing to
modules/audio_processing:api. It also adds :api as dependency
where needed.
Bug: webrtc:9535
Change-Id: I72829e22d08ba4d75985f0421e6e8bf0216ebecd
Reviewed-on: https://webrtc-review.googlesource.com/c/109501
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Kári Helgason <kthelgason@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Commit-Queue: Alessio Bazzica <alessiob@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25539}
The analysis and synthesis windowing cause loss of power when
cross-fading the noise where frames are completely uncorrelated
(generated with random phase).
This CL also removes duplicate code and enables platform specific
optimizations for ARM in the comfort noise generation.
Bug: webrtc:9967,chromium:902262
Change-Id: Iffd59b301876442079d4a5f2c7fac55a3522397c
Reviewed-on: https://webrtc-review.googlesource.com/c/109581
Commit-Queue: Gustaf Ullberg <gustaf@webrtc.org>
Reviewed-by: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25526}
This change corrects the computation of the comfort noise gains.
Previously the comfort noise gain of band k, CG_k, was computed
from suppression gain of band k, SG_k, as:
CG_k = 1 - SG_k
But since the two signals are uncorrelated (the comfort noise
is randomly generated), the correct gain to maintain power is:
CG_k = sqrt(1 - SG_k^2).
Bug: webrtc:9967,chromium:902262
Change-Id: I393495742163d5e658bca4ab2f7a5067ab15af01
Reviewed-on: https://webrtc-review.googlesource.com/c/109580
Commit-Queue: Gustaf Ullberg <gustaf@webrtc.org>
Reviewed-by: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25525}
This CL is part of a refactoring work to unblock other CLs
that would generate a circular dependency when including
modules/audio_processing. It will also allow to easily move
the APM interface part under //api.
More in detail, this change adds a dummy build target named :api
in modules/audio_processing. It is needed to adapt the downstream
projects before the APM interface files are moved to the :api target.
A follow up CL will make :api an actual target and will remove
the interface files from :audio_processing.
Bug: webrtc:9535
Change-Id: Ifb4e1a0ac7e482a8a089ef858d7e9a91f974e51f
Reviewed-on: https://webrtc-review.googlesource.com/c/109585
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Commit-Queue: Alessio Bazzica <alessiob@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25523}
This drops the locks and annotations in EchoControlMobileImpl,
now that the interface is no longer externally accessible.
Additionally, SetEchoPath and GetEchoPath (with surrounding code) is
removed. They are unused.
Bug: webrtc:9929
Change-Id: Ibc6751754614ed39836f6ee6835d7b53dedd828c
Reviewed-on: https://webrtc-review.googlesource.com/c/109025
Reviewed-by: Per Åhgren <peah@webrtc.org>
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25504}
This CL refactors AGC2 and fixes the order with which the fixed
and the adaptive digital gain controllers are applied - i.e., fixed
first, then adaptive and finally limiter.
FixedGainController has been removed since we need to split the
processing done by the gain applier and the limiter.
Also, GainApplier and Limiter are easy enough to be used without
a wrapper and a wrapper would need 2 separated calls in the right
order - i.e., error prone.
FrameCombiner in audio mixer has been adapted and now only uses the
limiter (which is what is needed since no gain is applied).
The unit tests for FixedGainController have been moved to
gain_controller2_unittests. They have been re-adapted and
ChangeFixedGainShouldBeFastAndTimeInvariant has been re-tuned.
Bug: webrtc:7494
Change-Id: I4d7daeae917257ac019a645b74deba6642f77322
Reviewed-on: https://webrtc-review.googlesource.com/c/108624
Commit-Queue: Alessio Bazzica <alessiob@webrtc.org>
Reviewed-by: Alex Loiko <aleloi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25477}
The extra saturation margin is a setting for the SaturationProtector
in GainController2. The higher it is, the less gain GC2 will apply. In
this CL we pipe the setting up to audio_processing.h. Now the setting
can be set at a high level.
Also in this CL add a few (missing, they should have been there
already) tests for the GC2 and GC2 with saturation margin.
Bug: webrtc:7494
Change-Id: I1b61f1662e6c6a8817fd5b0e845339694bf8d50d
Reviewed-on: https://webrtc-review.googlesource.com/c/109001
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Commit-Queue: Alex Loiko <aleloi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25470}
Additionally, AudioProcessing::GetStatistics(bool) is made pure
virtual and the default implementation in AudioProcessing is removed.
Deprecation PSA:
https://groups.google.com/forum/#!msg/discuss-webrtc/NgqEPvkNuDE/7HtwnMmADgAJ
Bug: webrtc:9947, webrtc:8572
Change-Id: I123402bf7d6c49f3613154c469b818109d8fad43
Reviewed-on: https://webrtc-review.googlesource.com/c/108783
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Ivo Creusen <ivoc@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25463}
This drops the locks and annotations in EchoCancellationImpl,
now that the interface is no longer externally accessible.
Bug: webrtc:9929
Change-Id: I401256f523340cbabce23a5914ab28ce44179935
Reviewed-on: https://webrtc-review.googlesource.com/c/108602
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Reviewed-by: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25460}