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

Issue 857426 link

Starred by 1 user

Issue metadata

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



Sign in to add a comment

The linear filter in AEC3 is slow to respond to echo path gain changes that causes saturations

Project Member Reported by peah@chromium.org, Jun 28 2018

Issue description

Due to the way the linear filter adaptation in AEC3 is frozen when there is saturation of the echo it is in some important scenarios less quick than needed to adapt to echo path gain changes.

One such very important scenario is when the loudspeaker and nearend levels are such that the analog AGC changes gain whenever there is a speaker switch between the nearend and farend. The gain changes then can cause echo saturations which must be handled by the AEC, and the more rapidly the AEC can respond to those the better they can be handled.

The current implementation enforces a significant amount of ducking when handling this.
 
Project Member

Comment 1 by bugdroid1@chromium.org, Jun 28 2018

The following revision refers to this bug:
  https://webrtc.googlesource.com/src.git/+/fc63c9e2731c62ce93f596c6763c42a222ff9f15

commit fc63c9e2731c62ce93f596c6763c42a222ff9f15
Author: Per Åhgren <peah@webrtc.org>
Date: Thu Jun 28 22:45:18 2018

AEC3: Allow filter adaptation even though the estimated echo is saturated

This CL removes the constraint that freezes the filter adaptation
whenever the estimated echo or the prediction error is saturated. This
allows for much more rapid filter recovery in cases where the echo path
gain for some reason changes, such as when the analog AGC gain is
adjusted or the loudspeaker volume is changed.

TBR: devicentepena@webrtc.org
Bug:  webrtc:9466 , chromium:857426 
Change-Id: Ic0b3b03f41f12e9a607aaadd2ee91cbaa16cac52
Reviewed-on: https://webrtc-review.googlesource.com/86124
Commit-Queue: Per Åhgren <peah@webrtc.org>
Reviewed-by: Gustaf Ullberg <gustaf@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23775}
[modify] https://crrev.com/fc63c9e2731c62ce93f596c6763c42a222ff9f15/modules/audio_processing/aec3/subtractor.cc
[modify] https://crrev.com/fc63c9e2731c62ce93f596c6763c42a222ff9f15/modules/audio_processing/aec3/subtractor.h

Project Member

Comment 2 by bugdroid1@chromium.org, Jun 29 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/8b08f8dbae47d60ac509b431e27bde7f84ded395

commit 8b08f8dbae47d60ac509b431e27bde7f84ded395
Author: webrtc-chromium-autoroll <webrtc-chromium-autoroll@skia-buildbots.google.com.iam.gserviceaccount.com>
Date: Fri Jun 29 07:09:14 2018

Roll src/third_party/webrtc 0601d68ac85e..82d171c82469 (3 commits)

https://webrtc.googlesource.com/src.git/+log/0601d68ac85e..82d171c82469


git log 0601d68ac85e..82d171c82469 --date=short --no-merges --format='%ad %ae %s'
2018-06-29 mbonadei@webrtc.org Skip PeerConnectionEndToEndTest.CallWithCustomCodec on Win ASan builds.
2018-06-28 peah@webrtc.org AEC3: Allow filter adaptation even though the estimated echo is saturated
2018-06-28 terelius@webrtc.org Port RtcEventLog encoder unittests to the new parser API.


Created with:
  gclient setdep -r src/third_party/webrtc@82d171c82469

The AutoRoll server is located here: https://webrtc-chromium-roll.skia.org

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+/master/autoroll/README.md

If the roll is causing failures, please contact the current sheriff, who should
be CC'd on the roll, and stop the roller if necessary.

CQ_INCLUDE_TRYBOTS=luci.chromium.try:linux_chromium_archive_rel_ng;master.tryserver.chromium.mac:mac_chromium_archive_rel_ng

BUG=chromium:None,chromium:857426
TBR=webrtc-chromium-sheriffs-robots@google.com

Change-Id: I2dc160e12af018a946993c8cbb0055e44cd8e9b7
Reviewed-on: https://chromium-review.googlesource.com/1119707
Reviewed-by: webrtc-chromium-autoroll <webrtc-chromium-autoroll@skia-buildbots.google.com.iam.gserviceaccount.com>
Commit-Queue: webrtc-chromium-autoroll <webrtc-chromium-autoroll@skia-buildbots.google.com.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/master@{#571416}
[modify] https://crrev.com/8b08f8dbae47d60ac509b431e27bde7f84ded395/DEPS

Project Member

Comment 3 by bugdroid1@chromium.org, Jun 29 2018

The following revision refers to this bug:
  https://webrtc.googlesource.com/src.git/+/2e79d2b398b430348845e5d5deccb66bca78f1a1

commit 2e79d2b398b430348845e5d5deccb66bca78f1a1
Author: Jesús de Vicente Peña <devicentepena@webrtc.org>
Date: Fri Jun 29 15:05:14 2018

AEC3: Misadjustment estimator of the linear filter.

In this work the performance of the linear filter is
estimated. The estimation aims at capture situations when the linear
filter is largely over-estimating the echo. In those circumstances,
the linear filter is scaled with the purpose of accelerating its
convergence.

Change-Id: I05ea3739d82838a6f08673432da92125c47943e0
Bug:  webrtc:9466 , chromium:857426 
Reviewed-on: https://webrtc-review.googlesource.com/86133
Reviewed-by: Gustaf Ullberg <gustaf@webrtc.org>
Commit-Queue: Jesus de Vicente Pena <devicentepena@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#23789}
[modify] https://crrev.com/2e79d2b398b430348845e5d5deccb66bca78f1a1/modules/audio_processing/aec3/adaptive_fir_filter.cc
[modify] https://crrev.com/2e79d2b398b430348845e5d5deccb66bca78f1a1/modules/audio_processing/aec3/adaptive_fir_filter.h
[modify] https://crrev.com/2e79d2b398b430348845e5d5deccb66bca78f1a1/modules/audio_processing/aec3/subtractor.cc
[modify] https://crrev.com/2e79d2b398b430348845e5d5deccb66bca78f1a1/modules/audio_processing/aec3/subtractor.h
[modify] https://crrev.com/2e79d2b398b430348845e5d5deccb66bca78f1a1/modules/audio_processing/aec3/subtractor_output.h

Project Member

Comment 4 by bugdroid1@chromium.org, Jun 29 2018

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/d6417bc161af8e97042df9692eac96a04efe5f11

commit d6417bc161af8e97042df9692eac96a04efe5f11
Author: webrtc-chromium-autoroll <webrtc-chromium-autoroll@skia-buildbots.google.com.iam.gserviceaccount.com>
Date: Fri Jun 29 21:39:59 2018

Roll src/third_party/webrtc deee55b3d522..cf5de1da0720 (5 commits)

https://webrtc.googlesource.com/src.git/+log/deee55b3d522..cf5de1da0720


git log deee55b3d522..cf5de1da0720 --date=short --no-merges --format='%ad %ae %s'
2018-06-29 buildbot@webrtc.org Roll chromium_revision a88423acf9..a714568fbe (571410:571512)
2018-06-29 srte@webrtc.org Removes redundant AlrDetector.
2018-06-29 srte@webrtc.org Adds srte@webrtc.org as modules/pacing/ OWNER.
2018-06-29 devicentepena@webrtc.org AEC3: Misadjustment estimator of the linear filter.
2018-06-29 danilchap@webrtc.org Add Generic frame descritpor header extension


Created with:
  gclient setdep -r src/third_party/webrtc@cf5de1da0720

The AutoRoll server is located here: https://webrtc-chromium-roll.skia.org

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+/master/autoroll/README.md

If the roll is causing failures, please contact the current sheriff, who should
be CC'd on the roll, and stop the roller if necessary.

CQ_INCLUDE_TRYBOTS=luci.chromium.try:linux_chromium_archive_rel_ng;master.tryserver.chromium.mac:mac_chromium_archive_rel_ng

BUG=chromium:None,chromium:857426
TBR=webrtc-chromium-sheriffs-robots@google.com

Change-Id: I8ce05b9ba63368a1a56098fa9be00dd0c4c7fc17
Reviewed-on: https://chromium-review.googlesource.com/1121048
Reviewed-by: webrtc-chromium-autoroll <webrtc-chromium-autoroll@skia-buildbots.google.com.iam.gserviceaccount.com>
Commit-Queue: webrtc-chromium-autoroll <webrtc-chromium-autoroll@skia-buildbots.google.com.iam.gserviceaccount.com>
Cr-Commit-Position: refs/heads/master@{#571643}
[modify] https://crrev.com/d6417bc161af8e97042df9692eac96a04efe5f11/DEPS

Labels: Merge-Request-68
Status: Fixed (was: Assigned)
We kindly ask for merge approval to M68 of the above two CLs. They were first released to Canary users on June 30. The changes fix serious issues found during beta testing, and we find them critical for M68.

We would like to stress that both CLs are fitted with kill-switches, which can easily be activated from the server if needed. Moreover, the changes only touch code in AEC3, which in itself can be fully disabled from the server side if something goes wrong which minimizes the risk of this change.
Project Member

Comment 6 by sheriffbot@chromium.org, Jul 2

Labels: -Merge-Request-68 Hotlist-Merge-Review Merge-Review-68
This bug requires manual review: DEPS changes referenced in bugdroid comments.
Please contact the milestone owner if you have questions.
Owners: cmasso@(Android), kariahda@(iOS), bhthompson@(ChromeOS), abdulsyed@(Desktop)

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
Labels: -Hotlist-Merge-Review -Merge-Review-68 Merge-Approved-68
Project Member

Comment 8 by sheriffbot@chromium.org, Jul 6

Cc: cma...@chromium.org
This issue has been approved for a merge. Please merge the fix to any appropriate branches as soon as possible!

If all merges have been completed, please remove any remaining Merge-Approved labels from this issue.

Thanks for your time! To disable nags, add the Disable-Nags label.

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
Labels: Merge-Merged
The merge has been done.
The merging CLs are:
-https://webrtc-review.googlesource.com/c/src/+/87433
-https://webrtc-review.googlesource.com/c/src/+/87434
Labels: -Merge-Approved-68
Components: Blink>WebRTC>Audio
Labels: M-69

Sign in to add a comment