New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 603411 link

Starred by 3 users

Issue metadata

Status: Fixed
Owner:
Closed: Apr 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux , Windows , Chrome , Mac
Pri: 1
Type: Bug

Blocked on:
issue webrtc:5777
issue webrtc:5778

Blocking:
issue 603821



Sign in to add a comment

Allow testing of new AEC tuning with a command line switch

Project Member Reported by hlundin@chromium.org, Apr 14 2016

Issue description

The 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.
 
Candidate switch name: aec-refined-adaptive-filter
Cc: a...@chromium.org
Blocking: 603821
Status: Started (was: Assigned)
Project Member

Comment 5 by bugdroid1@chromium.org, 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

Status: Fixed (was: Started)
The change in #5 was picked up in branch 52.0.2712.0.
Cc: jdeokule@chromium.org jansson@chromium.org tnakamura@chromium.org kjellander@chromium.org
Labels: Merge-Request-51
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.

Comment 8 by tin...@google.com, Apr 28 2016

Labels: -Merge-Request-51 Merge-Approved-51 Hotlist-Merge-Approved
Your change meets the bar and is auto-approved for M51 (branch: 2704)

Comment 9 by gov...@chromium.org, 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.
Labels: M-51
Project Member

Comment 12 by bugdroid1@chromium.org, Apr 29 2016

Labels: -merge-approved-51 merge-merged-2704
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

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));

But the beta builders are fine. What's the difference?
You're right about the beta builders, must be something wrong with my checkout. My apologies!
Labels: Merge-Request-50 M-50
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.

Comment 17 by tin...@google.com, May 13 2016

Labels: -Merge-Request-50 Merge-Review-50 Hotlist-Merge-Review
[Automated comment] Request affecting a post-stable build (M50), manual review required.
Labels: -Merge-Review-50 Merge-Approved-50
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. 
Project Member

Comment 19 by bugdroid1@chromium.org, May 16 2016

Labels: merge-merged-50
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

Project Member

Comment 20 by bugdroid1@chromium.org, May 16 2016

Labels: -merge-approved-50 merge-merged-2661
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

govind@, the two necessary merges are done (#19 & #20 above). Please, trigger a new build (pending the stable-builders, I guess).
Just triggered a new official build and it is in progress (version: 50.0.2661.105).
Can we get this out from behind a flag? I encounter the metallic/robot echo often on desktop. 

Comment 24 by peah@chromium.org, 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