Internal counters in the RenderDelayBuffer can slip out of sync with external counters, leading to buffer misalignment.
This CL gives the RenderDelayBuffer an opportunity to update its counters.
Tested:
Passes: modules_unittests --gtest_filter=BlockProcessor.*
Fails as expected due to new unit test: modules_unittests --gtest_filter=BlockProcessor.* --force_fieldtrials="WebRTC-Aec3RenderBufferCallCounterUpdateKillSwitch/Enabled/"
audioproc_f with default AEC settings has been verified to be bit-exact on a large number of aecdumps.
Bug: webrtc:11803
Change-Id: I9363b834c8c8c934add0335013df60bf131da4bc
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/180126
Reviewed-by: Per Åhgren <peah@webrtc.org>
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31795}
This required for gcc-10.
Bug: None
Change-Id: Iba3ff0881005cb2ae4574e47284a1b881594de86
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/176361
Reviewed-by: Ivo Creusen <ivoc@webrtc.org>
Commit-Queue: Ivo Creusen <ivoc@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31417}
...for the NullDataDumper, WrongCaptureBlockSize and
DISABLED_WrongRenderBlockSize tests. This is to avoid creation
of additional threads on Mac, which can cause issues on asan bots.
Bug: webrtc:11577
Change-Id: I4e6a64d47ec3b0a0e0018b19a0486208ba7e6ae2
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/175600
Reviewed-by: Per Åhgren <peah@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Commit-Queue: Tommi <tommi@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31307}
This CL moves the two OOURA implementations present in the WebRTC tree
in one place.
No functional change is expected.
TBR=kwiberg@webrtc.org
No-Try: True
Bug: webrtc:11509
Change-Id: I330a9ec57e3dc65c9c8b43edd4bb295c55920efa
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/173682
Commit-Queue: Mirko Bonadei <mbonadei@webrtc.org>
Reviewed-by: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31106}
This CL adds several field-trial-based overrides for parameters related
to AEC transparency.
The changes have been shown to be bitexact for a test dataset.
Bug: webrtc:11487,chromium:1067597
Change-Id: Ica9613db74240687fc85efe059874ef8c20aa7d5
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/172844
Commit-Queue: Per Åhgren <peah@webrtc.org>
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31007}
This CL adds two kill-switches to the AEC3 code to be used as
safe fallbacks to increase AEC transparency.
The changes have been shown to be bitexact for a test dataset.
Bug: webrtc:11487,chromium:1067597
Change-Id: I7f9f78db4964990bcdfa9adae6ef36a56bce7224
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/172840
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Commit-Queue: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30998}
This CL adds a number of kill-switches to the AEC3 code to be used as
safe fallbacks to increase AEC transparency.
The changes have been shown to be bitexact for a test dataset.
Bug: webrtc:11475,chromium:1066836
Change-Id: Ibebcbbfbbd958cb6fcc6993247e3030fa65b582c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/172600
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Commit-Queue: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30964}
This CL renames the shadow filter in AEC3 to have the more accurate name
coarse filter.
The CL consists of 3 main initial patch sets, designed to simplify
the review:
1) Replaces "shadow" with "coarse" and adds a fall-back functionality
to support the old filter naming.
2) Renames the files according to the new naming.
3) Performs a "git cl format"
Bug: webrtc:8671
Change-Id: I28d6041d0d34e85f8f8048d004b44a1a5f07bb07
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/170981
Commit-Queue: Per Åhgren <peah@webrtc.org>
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30846}
This CL renames the main filter in AEC3 to have the more accurate name
refined filter.
The CL consists of 3 main initial patch sets, designed to simplify
the review:
1) Replaces "main" with "refined" and adds a fall-back functionality
to support the old filter naming.
2) Renames the files according to the new naming.
3) Performs a "git cl format"
Bug: webrtc:8671
Change-Id: Ifd0aab34e291736a2250e0986348404618630b1d
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/170825
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Commit-Queue: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30843}
This CL avoids the head-allocations done in a sum of the squared values
in a nested vector.
Bug: webrtc:11361, chromium:1052086
Change-Id: I698b855bdd54df2147ef3b6d5e3d401401228d76
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/168543
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Commit-Queue: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30520}
This CL adds the missing support for multi-channel in the code that
provides an optional and configurable delay to be added to the
microphone signal.
The CL also makes the creation of the delay object conditional on the
need for that support (this is important since this adds a significant
heap memory footprint)
Bug: webrtc:11314,chromium:1045910
Change-Id: I92d577e31af830945fe9d5ca2032000aad4266be
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/167525
Commit-Queue: Per Åhgren <peah@webrtc.org>
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30392}
This is a reland of 48148dc840
Original change's description:
> Change log level of AEC3 buffer info to VERBOSE
>
> Otherwise, test logs become very verbose:
> https://chrome-swarming.appspot.com/task?id=49b6fa6ac93e2310
> See linked issue.
>
> Bug: webrtc:11278
> Change-Id: I778ee4826de6c1b23d47a5d5ce302d074900ce6b
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/165786
> Reviewed-by: Per Åhgren <peah@webrtc.org>
> Commit-Queue: Sam Zackrisson <saza@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#30233}
Bug: webrtc:11278, webrtc:11295
Change-Id: I8e6f11457e283c83cae5581adcacdc4d3b5431bb
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/167360
Reviewed-by: Per Åhgren <peah@webrtc.org>
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30372}
This reverts commit 48148dc840.
Reason for revert: Causing tests to timeout, see bugs.webrtc.org/11295
Original change's description:
> Change log level of AEC3 buffer info to VERBOSE
>
> Otherwise, test logs become very verbose:
> https://chrome-swarming.appspot.com/task?id=49b6fa6ac93e2310
> See linked issue.
>
> Bug: webrtc:11278
> Change-Id: I778ee4826de6c1b23d47a5d5ce302d074900ce6b
> Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/165786
> Reviewed-by: Per Åhgren <peah@webrtc.org>
> Commit-Queue: Sam Zackrisson <saza@webrtc.org>
> Cr-Commit-Position: refs/heads/master@{#30233}
TBR=saza@webrtc.org,peah@webrtc.org
# Not skipping CQ checks because original CL landed > 1 day ago.
Bug: webrtc:11278
Change-Id: I283648a6d4d58cfe7af7a646d915122207883007
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/167180
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30357}
This CL reduces the complexity of the Subtractor.ConvergenceMultiChannel
test by
1. Slightly reducing the amount of tested combinations for the non-debug
mode.
2. Drastically reduce the amount of tested combinations for the debug
mode.
Bug: webrtc:11295
Change-Id: I56bfa4a1463d26e5217b6a4d7f2ef54de7aab512
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/166529
Commit-Queue: Per Åhgren <peah@webrtc.org>
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30343}
The test is likely timing out on iOS simulator (see bug). Maybe I'm
going a bit overboard here :) if you want to keep all the cases I
removed, you can run some cases in one test method and the others in
another test method. Are the cases I removed particularly important?
Bug: webrtc:11284
Change-Id: I8f2e8830f931594c3471d1c20a2654e258b9fcf0
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/166169
Reviewed-by: Per Åhgren <peah@webrtc.org>
Commit-Queue: Patrik Höglund <phoglund@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30277}
This CL ensures that the no data vectors in the reverb computer code
are fixed. This allows arbitrary long filters to be used, and ensures
that a minimum required heap size is used.
Bug: webrtc:8671
Change-Id: I7085ed262a3f5965d796270434b6578f4030606e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/162661
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Commit-Queue: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30115}
This CL moves the high-pass filter to run in the full-band domain
instead of the split-band domain.
Bug: webrtc:11193
Change-Id: Ie61f4a80afda11236ecbb1ad544bbd0350c7bbfd
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/161453
Reviewed-by: Gustaf Ullberg <gustaf@webrtc.org>
Commit-Queue: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30112}
from LS_INFO to LS_VERBOSE.
By default, unit tests run with logging at info level.
A random run today produced more than 70.000 lines of
output. This CL would reduce that by approximately 15.000.
Bug: none
Change-Id: Ie62708cebf109510a2443aa5ab5c4e645ffc6707
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/161950
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Niels Moller <nisse@webrtc.org>
Reviewed-by: Henrik Lundin <henrik.lundin@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30077}
This CL adds code for doing signal-dependent downmixing
before the delay estimation in the multichannel case.
As part of the CL, the unittests of the render delay
controller are corrected. However, as that caused some of
them to fail, the CL (for now) as well disables the failing
test.
Bug: webrtc:11153,chromium:1029740, webrtc:11161
Change-Id: I0b765c28fa5e547aabd6dfbd24b626ff9a16346f
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/161045
Commit-Queue: Per Åhgren <peah@webrtc.org>
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29980}
This adds functionality to AEC3 to produce setup-specific
default configurations that are tailored to work well for the
number of channels at hand.
The tunings are only used for the case when no echo control factory
has been provided.
Bug: webrtc:11151,chromium:1029717
Change-Id: I1bd2d10327300c7b0f3169a52bf66700b781fd6b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/161086
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Commit-Queue: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29972}
This CL changes the downmixing of the input to the delay estimation
for surround/stereo signals to be off by default.
A kill-switch is also added for enforcing the downmix to be on.
Bug: webrtc:10913
Change-Id: I1030fef593ba56416deeb13b80d2f3812bffb9ed
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/161012
Commit-Queue: Per Åhgren <peah@webrtc.org>
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29951}
Implements an alternative to the dominant nearend detector.
Bug: b/130016532
Change-Id: If4867d58aad036ccf4e456ef81689b8db0284f7d
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/159865
Reviewed-by: Per Åhgren <peah@webrtc.org>
Reviewed-by: Gustaf Ullberg <gustaf@webrtc.org>
Commit-Queue: Gustaf Ullberg <gustaf@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29906}
This CL enables extracting the linear AEC output,
allowing for more straightforward
testing/development.
Bug: b/140823178
Change-Id: I14f7934008d87066b35500466cb6e6d96f811688
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/153672
Commit-Queue: Per Åhgren <peah@webrtc.org>
Reviewed-by: Gustaf Ullberg <gustaf@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29789}
This change adds multichannel support to the AEC3 suppressor.
Processing of mono capture is bit-exact to the previous code.
Bug: webrtc:10913
Change-Id: I89affe3e066021bc34e4b525edf44dd3bea68365
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/158882
Commit-Queue: Gustaf Ullberg <gustaf@webrtc.org>
Reviewed-by: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29692}
Instead of having a comfort noise generator (CNG) instance per capture
channel, one instance handles CNG for all capture channels.
Bug: webrtc:10913
Change-Id: I897471be6d203ad750c517c5076d421f2ae3879b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/158780
Reviewed-by: Per Åhgren <peah@webrtc.org>
Commit-Queue: Gustaf Ullberg <gustaf@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29668}
The estimator will simply compute the worst value of all combinations
of render and capture signal.
This has the drawback that low-volume or silent render channels may
severely misestimate the ERL.
The changes have been shown to be bitexact over a large dataset.
Bug: webrtc:10913
Change-Id: Id53c3ab81646ac0fab303edafc5e38892d285d8e
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/157308
Commit-Queue: Sam Zackrisson <saza@webrtc.org>
Reviewed-by: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29542}
This CL contains various cleanups/corrections to the multichannel AEC
code.
The changes have been shown to be bitexact over a large dataset.
Bug: webrtc:10913
Change-Id: Idd3e410b04527666e052f57ad81d0ac9eef3179b
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/157173
Reviewed-by: Gustaf Ullberg <gustaf@webrtc.org>
Commit-Queue: Per Åhgren <peah@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#29530}