Allow testing of new AEC tuning with a command line switch |
||||||||||||||
Issue descriptionThe acoustic echo canceler (AEC) in WebRTC sometimes end up in bad states. A new tuning is being prepared to solve the problem, and this should be tested on selected platforms. A command line switch must be added to Chrome to turn this new tuning on or off. See the blocking WebRTC bugs for more info on the underlying AEC issue.
,
Apr 14 2016
,
Apr 15 2016
,
Apr 15 2016
,
Apr 18 2016
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/8ed6849361610a82033e269f1fb8fe17a179c6e6 commit 8ed6849361610a82033e269f1fb8fe17a179c6e6 Author: hlundin <hlundin@chromium.org> Date: Mon Apr 18 23:39:44 2016 Add aec-refined-adaptive-filter command line switch The acoustic echo canceler (AEC) in WebRTC sometimes end up in bad states. A new tuning was added to WebRTC, and should be tested on selected platforms. This CL adds a command line switch to turn this new tuning on or off, facilitating the testing. Tuning added to WebRTC: https://chromium.googlesource.com/external/webrtc.git/+/0332c2db39d6f5c780ce9e92b850bcb57e24e7f8 Tuning rolled into Chrome: https://crrev.com/8cf9068d949adc9e5e5f13346f776520cbb29c4d BUG= 603411 , webrtc:5777 , webrtc:5778 Review URL: https://codereview.chromium.org/1894963002 Cr-Commit-Position: refs/heads/master@{#388078} [modify] https://crrev.com/8ed6849361610a82033e269f1fb8fe17a179c6e6/content/browser/renderer_host/render_process_host_impl.cc [modify] https://crrev.com/8ed6849361610a82033e269f1fb8fe17a179c6e6/content/public/common/content_switches.cc [modify] https://crrev.com/8ed6849361610a82033e269f1fb8fe17a179c6e6/content/public/common/content_switches.h [modify] https://crrev.com/8ed6849361610a82033e269f1fb8fe17a179c6e6/content/renderer/media/media_stream_audio_processor.cc
,
Apr 19 2016
The change in #5 was picked up in branch 52.0.2712.0.
,
Apr 28 2016
I'd like to merge this fix, together with the fixes in WebRTC on which it depends, to M51. In detail, this is what I would like to have merged: - the CL with the new switch (#5 above); - a fix (tuning of the linear filter adaptation) in the acoustic echo canceler (AEC) in WebRTC (https://chromium.googlesource.com/external/webrtc.git/+/0332c2db39d6f5c780ce9e92b850bcb57e24e7f8); - added logging to report when the new tuning is active (https://chromium.googlesource.com/external/webrtc.git/+/7789fe7ab1283fb4cbf6fa26d445b748d10928a7). This fix is part of a larger AEC investigation/fixing that we are currently undertaking. The fix has been tested on selected devices, and it has been found that it significantly improves the echo suppression performance. Setups were persistent metallic echo was produced on a regular basis have been greatly improved. The merged fixes are behind the aec-refined-adaptive-filter switch which is off by default, so the risk of this merge should be small. The fix has been in Canary for more than a week.
,
Apr 28 2016
Your change meets the bar and is auto-approved for M51 (branch: 2704)
,
Apr 28 2016
Please merge your change to M51 branch 2704 before 5:00 PM PST, tomorrow (Friday), so we can take it in for next week M51 beta release. Thank you.
,
Apr 28 2016
,
Apr 28 2016
The WebRTC changes are merged to the WebRTC 51 branch (https://chromium.googlesource.com/external/webrtc/+log/branch-heads/51): - https://chromium.googlesource.com/external/webrtc/+/ead55d24d0d35e366fbfc0792a7a7c36a95c5659 - https://chromium.googlesource.com/external/webrtc/+/ffdb392cfb40af4c2258704aaba2d46c3d70f4b6 - https://chromium.googlesource.com/external/webrtc/+/ffa5248d06180be7ac7ba9758084e955e0ec107b The chromium CL (#5 above) remains to be merged, but will be so before the Friday deadline.
,
Apr 29 2016
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/e273ef95f45b184d9b8a6f94ca8be826466fc58f commit e273ef95f45b184d9b8a6f94ca8be826466fc58f Author: Henrik Grunell <grunell@chromium.org> Date: Fri Apr 29 06:46:14 2016 Add aec-refined-adaptive-filter command line switch The acoustic echo canceler (AEC) in WebRTC sometimes end up in bad states. A new tuning was added to WebRTC, and should be tested on selected platforms. This CL adds a command line switch to turn this new tuning on or off, facilitating the testing. Tuning added to WebRTC: https://chromium.googlesource.com/external/webrtc.git/+/0332c2db39d6f5c780ce9e92b850bcb57e24e7f8 Tuning rolled into Chrome: https://crrev.com/8cf9068d949adc9e5e5f13346f776520cbb29c4d BUG= 603411 , webrtc:5777 , webrtc:5778 Review URL: https://codereview.chromium.org/1894963002 Cr-Commit-Position: refs/heads/master@{#388078} (cherry picked from commit 8ed6849361610a82033e269f1fb8fe17a179c6e6) Review URL: https://codereview.chromium.org/1933603002 . Cr-Commit-Position: refs/branch-heads/2704@{#305} Cr-Branched-From: 6e53600def8f60d8c632fadc70d7c1939ccea347-refs/heads/master@{#386251} [modify] https://crrev.com/e273ef95f45b184d9b8a6f94ca8be826466fc58f/content/browser/renderer_host/render_process_host_impl.cc [modify] https://crrev.com/e273ef95f45b184d9b8a6f94ca8be826466fc58f/content/public/common/content_switches.cc [modify] https://crrev.com/e273ef95f45b184d9b8a6f94ca8be826466fc58f/content/public/common/content_switches.h [modify] https://crrev.com/e273ef95f45b184d9b8a6f94ca8be826466fc58f/content/renderer/media/media_stream_audio_processor.cc
,
May 2 2016
I believe that this broke the 2704 branch as I can't compile. Seems like a webrtc version issue:
../../content/renderer/media/media_stream_audio_processor.cc:527:16: error: no member named 'RefinedAdaptiveFilter' in namespace 'webrtc'; did you mean 'switches::kAecRefinedAdaptiveFilter'?
config.Set<webrtc::RefinedAdaptiveFilter>(
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
switches::kAecRefinedAdaptiveFilter
../../content/public/common/content_switches.h:18:34: note: 'switches::kAecRefinedAdaptiveFilter' declared here
CONTENT_EXPORT extern const char kAecRefinedAdaptiveFilter[];
^
../../content/renderer/media/media_stream_audio_processor.cc:528:21: error: no type named 'RefinedAdaptiveFilter' in namespace 'webrtc'
new webrtc::RefinedAdaptiveFilter(true));
,
May 2 2016
But the beta builders are fine. What's the difference?
,
May 2 2016
You're right about the beta builders, must be something wrong with my checkout. My apologies!
,
May 13 2016
I'd like to have this fix merged to M50. The details are the same as the beta-merge in #7 above, copied here for convenience: In detail, this is what I would like to have merged: - the CL with the new switch (#5 above); - a fix (tuning of the linear filter adaptation) in the acoustic echo canceler (AEC) in WebRTC (https://chromium.googlesource.com/external/webrtc.git/+/0332c2db39d6f5c780ce9e92b850bcb57e24e7f8); - added logging to report when the new tuning is active (https://chromium.googlesource.com/external/webrtc.git/+/7789fe7ab1283fb4cbf6fa26d445b748d10928a7). This fix is part of a larger AEC investigation/fixing that we are currently undertaking. The fix has been tested on selected devices, and it has been found that it significantly improves the echo suppression performance. Setups were persistent metallic echo was produced on a regular basis have been greatly improved. The merged fixes are behind the aec-refined-adaptive-filter switch which is off by default, so the risk of this merge should be small. The fix has been in Beta for 2 weeks.
,
May 13 2016
[Automated comment] Request affecting a post-stable build (M50), manual review required.
,
May 16 2016
Approving Merge to M50 branch 2661 as per email discussion. Please go ahead and merge the change. Thank you. I will trigger M50 build once this merge is in.
,
May 16 2016
The following revision refers to this bug: https://chromium.googlesource.com/external/webrtc.git/+/49f7bd357dafab4f7e3e1cd5fbe8d9cbf5730057 commit 49f7bd357dafab4f7e3e1cd5fbe8d9cbf5730057 Author: Henrik Lundin <henrik.lundin@webrtc.org> Date: Mon May 16 13:04:06 2016 Added support in the AEC for refined filter adaptation. The following algorithmic functionality was added: -Add support for an exact regressor power to be computed which avoids the issue with the updating of the filter sometimes being unstable. -Lowered the fixed step size of the adaptive filter to 0.05 which significantly reduces the sensitivity of the adaptive filter to near-end noise, nonlinearities, doubletalk and the unmodelled echo path tail. It also reduces the tracking speed of the adaptive filter but the chosen value proved to give a sufficient tradeoff for the requirements on the adaptive filter. To allow the new functionality to be selectively applied the following was done: -A new Config was added for selectively activating the functionality. -Functionality was added in the audioprocessing and echocancellationimpl classes for passing the activation of the functionality down to the AEC algorithms. To make the code for the introduction of the functionality clean, the following refactoring was done: -The selection of the step size was moved to a single place. -The constant for the step size of the adaptive filter in extended filter mode was made local. -The state variable storing the step-size was renamed to a more describing name. When the new functionality is not activated, the changes have been tested for bitexactness on Linux. BUG= webrtc:5778 , webrtc:5777 , chromium:603411 Review URL: https://codereview.webrtc.org/1887003002 Cr-Commit-Position: refs/heads/master@{#12384} R=peah@webrtc.org Review URL: https://codereview.webrtc.org/1984653002 . Cr-Commit-Position: refs/branch-heads/50@{#11} Cr-Branched-From: a5d8e4eef58574ddb4c4c818de71491a52887f45-refs/heads/master@{#11765} [modify] https://crrev.com/49f7bd357dafab4f7e3e1cd5fbe8d9cbf5730057/webrtc/common.h [modify] https://crrev.com/49f7bd357dafab4f7e3e1cd5fbe8d9cbf5730057/webrtc/modules/audio_processing/aec/aec_core.cc [modify] https://crrev.com/49f7bd357dafab4f7e3e1cd5fbe8d9cbf5730057/webrtc/modules/audio_processing/aec/aec_core.h [modify] https://crrev.com/49f7bd357dafab4f7e3e1cd5fbe8d9cbf5730057/webrtc/modules/audio_processing/aec/aec_core_internal.h [modify] https://crrev.com/49f7bd357dafab4f7e3e1cd5fbe8d9cbf5730057/webrtc/modules/audio_processing/aec/aec_core_mips.cc [modify] https://crrev.com/49f7bd357dafab4f7e3e1cd5fbe8d9cbf5730057/webrtc/modules/audio_processing/aec/aec_core_neon.cc [modify] https://crrev.com/49f7bd357dafab4f7e3e1cd5fbe8d9cbf5730057/webrtc/modules/audio_processing/aec/aec_core_sse2.cc [modify] https://crrev.com/49f7bd357dafab4f7e3e1cd5fbe8d9cbf5730057/webrtc/modules/audio_processing/echo_cancellation_impl.cc [modify] https://crrev.com/49f7bd357dafab4f7e3e1cd5fbe8d9cbf5730057/webrtc/modules/audio_processing/echo_cancellation_impl.h [modify] https://crrev.com/49f7bd357dafab4f7e3e1cd5fbe8d9cbf5730057/webrtc/modules/audio_processing/include/audio_processing.h [modify] https://crrev.com/49f7bd357dafab4f7e3e1cd5fbe8d9cbf5730057/webrtc/modules/audio_processing/test/process_test.cc
,
May 16 2016
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/856a71f370f5b1542471de0ffd7c77d15b211a0d commit 856a71f370f5b1542471de0ffd7c77d15b211a0d Author: Per <perkj@chromium.org> Date: Mon May 16 14:38:51 2016 Add aec-refined-adaptive-filter command line switch The acoustic echo canceler (AEC) in WebRTC sometimes end up in bad states. A new tuning was added to WebRTC, and should be tested on selected platforms. This CL adds a command line switch to turn this new tuning on or off, facilitating the testing. Tuning added to WebRTC: https://chromium.googlesource.com/external/webrtc.git/+/0332c2db39d6f5c780ce9e92b850bcb57e24e7f8 Tuning rolled into Chrome: https://crrev.com/8cf9068d949adc9e5e5f13346f776520cbb29c4d BUG= 603411 , webrtc:5777 , webrtc:5778 Review URL: https://codereview.chromium.org/1894963002 Cr-Commit-Position: refs/heads/master@{#388078} (cherry picked from commit 8ed6849361610a82033e269f1fb8fe17a179c6e6) R=perkj@chromium.org TBR=avi@chromium.org, tommi@chromium.org Review URL: https://codereview.chromium.org/1983843002 . Cr-Commit-Position: refs/branch-heads/2661@{#692} Cr-Branched-From: ef6f6ae5e4c96622286b563658d5cd62a6cf1197-refs/heads/master@{#378081} [modify] https://crrev.com/856a71f370f5b1542471de0ffd7c77d15b211a0d/content/browser/renderer_host/render_process_host_impl.cc [modify] https://crrev.com/856a71f370f5b1542471de0ffd7c77d15b211a0d/content/public/common/content_switches.cc [modify] https://crrev.com/856a71f370f5b1542471de0ffd7c77d15b211a0d/content/public/common/content_switches.h [modify] https://crrev.com/856a71f370f5b1542471de0ffd7c77d15b211a0d/content/renderer/media/media_stream_audio_processor.cc
,
May 16 2016
govind@, the two necessary merges are done (#19 & #20 above). Please, trigger a new build (pending the stable-builders, I guess).
,
May 16 2016
Just triggered a new official build and it is in progress (version: 50.0.2661.105).
,
Aug 22 2016
Can we get this out from behind a flag? I encounter the metallic/robot echo often on desktop.
,
Aug 22 2016
We have that in the pipeline for upcoming AEC changes, where this effect will be applied in a more generic manner. |
||||||||||||||
►
Sign in to add a comment |
||||||||||||||
Comment 1 by hlundin@chromium.org
, Apr 14 2016