Closed Bug 1880997 Opened 7 months ago Closed 2 months ago

Webrtc: Echo Cancellation not Functional on Firefox 122 on Mac with M1

Categories

(Core :: WebRTC: Audio/Video, defect)

Firefox 122
Desktop
All
defect

Tracking

()

RESOLVED FIXED
130 Branch
Tracking Status
firefox-esr115 --- unaffected
firefox-esr128 --- wontfix
firefox128 --- wontfix
firefox129 --- wontfix
firefox130 --- fixed

People

(Reporter: ankur, Assigned: karlt)

References

(Blocks 2 open bugs, Regression)

Details

(Keywords: regression)

User Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36

Steps to reproduce:

UserAgent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:122.0) Gecko/20100101 Firefox/122.0

Mac with M1 Chip
Steps to reproduce:
Join a conference via this link
https://business.vconsol.com/join/1228458846?be_auth=MDQ4NDI4
or via https://letsmeet.no

Actual results:

The firefox end produces echo

i.e a user on the remote end and not firefox, can hear their own voice, echoed back to them

this is always present when tried from Mac with M1 build
this was present in previous build too

Expected results:

No Echo

This issue is not present till Firefox 113, and started appearing from Firefox 114

The Bugbug bot thinks this bug should belong to the 'Core::WebRTC: Audio/Video' component, and is moving the bug to that component. Please correct in case you think the bot is wrong.

Component: Untriaged → WebRTC: Audio/Video
Product: Firefox → Core

Could you use https://mozilla.github.io/mozregression/ to get a more accurate regression range?

Flags: needinfo?(ankur)

I am trying it, but the build crashes on MAC on requesting camera, process requested with code 5, the mac camera prompt does not pop up. any way around it

10:46.87 INFO: Narrowed nightly regression window from [2023-01-17, 2023-01-19] (2 days) to [2023-01-18, 2023-01-19] (1 days) (~0 steps left)

10:46.88 INFO: Got as far as we can go bisecting nightlies...

10:46.88 INFO: Last good revision: 60b4965aa0ca5a7a60c71229600092a65df8bc1d (2023-01-18)

10:46.88 INFO: First bad revision: 849b9d9a8b6f197d20a2f66addd0e3fc1e54f6d4 (2023-01-19)

10:46.88 INFO: Pushlog:

https://hg.mozilla.org/mozilla-central/pushloghtml?fromchange=60b4965aa0ca5a7a60c71229600092a65df8bc1d&tochange=849b9d9a8b6f197d20a2f66addd0e3fc1e54f6d4

10:46.88 INFO: Switching bisection method to taskcluster

10:46.88 INFO: Getting mozilla-central builds between 60b4965aa0ca5a7a60c71229600092a65df8bc1d and 849b9d9a8b6f197d20a2f66addd0e3fc1e54f6d4

10:50.78 WARNING: Skipping build 60b4965aa0ca: Unable to find build info using the taskcluster route 'gecko.v2.mozilla-central.shippable.revision.60b4965aa0ca5a7a60c71229600092a65df8bc1d.firefox.macosx64-opt'

10:50.79 WARNING: Skipping build 849b9d9a8b6f: Unable to find build info using the taskcluster route 'gecko.v2.mozilla-central.shippable.revision.849b9d9a8b6f197d20a2f66addd0e3fc1e54f6d4.firefox.macosx64-opt'

10:52.60 WARNING: Skipping build 66ee29ee7214: Unable to find build info using the taskcluster route 'gecko.v2.mozilla-central.shippable.revision.66ee29ee7214718f733b24c74855c64bbf5b7450.firefox.macosx64-opt'

10:52.63 WARNING: Skipping build 455aa95a34de: Unable to find build info using the taskcluster route 'gecko.v2.mozilla-central.shippable.revision.455aa95a34de5e712128d0dfac95366c60d96299.firefox.macosx64-opt'

10:52.74 WARNING: Skipping build 23c1be504632: Unable to find build info using the taskcluster route 'gecko.v2.mozilla-central.shippable.revision.23c1be504632a25d402332e7db55eb5699509d9f.firefox.macosx64-opt'

10:53.84 WARNING: Skipping build 351f01ad9a44: Unable to find build info using the taskcluster route 'gecko.v2.mozilla-central.shippable.revision.351f01ad9a4469b841cb66dab2fb4d1ec0fe7f0b.firefox.macosx64-opt'

10:53.85 WARNING: Skipping build 36ca6ab93679: Unable to find build info using the taskcluster route 'gecko.v2.mozilla-central.shippable.revision.36ca6ab936799a65a43aacb4ee1040ffd01af0df.firefox.macosx64-opt'

10:53.87 WARNING: Skipping build 5bf22e58549c: Unable to find build info using the taskcluster route 'gecko.v2.mozilla-central.shippable.revision.5bf22e58549c4b36d2087500236a764d1aa6f368.firefox.macosx64-opt'

10:54.96 WARNING: Skipping build 92bf950f3886: Unable to find build info using the taskcluster route 'gecko.v2.mozilla-central.shippable.revision.92bf950f388660ebc143d4a3308c0cd3f6249eb7.firefox.macosx64-opt'

10:54.96 WARNING: Skipping build 299ec4caa0bc: Unable to find build info using the taskcluster route 'gecko.v2.mozilla-central.shippable.revision.299ec4caa0bcf39f11d2806859b528cef8006212.firefox.macosx64-opt'

10:54.98 WARNING: Skipping build 9af5d0877b6b: Unable to find build info using the taskcluster route 'gecko.v2.mozilla-central.shippable.revision.9af5d0877b6be5c07e3f50face4a7911734910dc.firefox.macosx64-opt'

10:56.10 WARNING: Skipping build e5ed23660819: Unable to find build info using the taskcluster route 'gecko.v2.mozilla-central.shippable.revision.e5ed236608191461d74f0b5a291d57d74657ddab.firefox.macosx64-opt'

10:56.10 WARNING: Skipping build 963d01420434: Unable to find build info using the taskcluster route 'gecko.v2.mozilla-central.shippable.revision.963d01420434d6362dd68e79aa36aaf2219b33c7.firefox.macosx64-opt'

10:56.11 WARNING: Skipping build 31122740c39d: Unable to find build info using the taskcluster route 'gecko.v2.mozilla-central.shippable.revision.31122740c39d5368ae280c3493fb7ca3b4e5c07d.firefox.macosx64-opt'

10:57.15 WARNING: Skipping build 34ab60552eaf: Unable to find build info using the taskcluster route 'gecko.v2.mozilla-central.shippable.revision.34ab60552eafeca2e94a759261f121d5844b334b.firefox.macosx64-opt'

10:57.16 WARNING: Skipping build 539f28c1de72: Unable to find build info using the taskcluster route 'gecko.v2.mozilla-central.shippable.revision.539f28c1de729aac0a9676536b9fde47fb25d79f.firefox.macosx64-opt'

10:57.16 WARNING: Skipping build ee5d2c307738: Unable to find build info using the taskcluster route 'gecko.v2.mozilla-central.shippable.revision.ee5d2c307738b1d2cb8263432cff7b1ad300cca0.firefox.macosx64-opt'

10:58.24 WARNING: Skipping build 8e19a19d6a0d: Unable to find build info using the taskcluster route 'gecko.v2.mozilla-central.shippable.revision.8e19a19d6a0d85f2e00f396981dd8dfbc8ec7fe3.firefox.macosx64-opt'

10:58.24 WARNING: Skipping build 0b74dca33cb0: Unable to find build info using the taskcluster route 'gecko.v2.mozilla-central.shippable.revision.0b74dca33cb0b069ae2c120f72cad1949de685ca.firefox.macosx64-opt'

10:58.27 WARNING: Skipping build 66c42cef8816: Unable to find build info using the taskcluster route 'gecko.v2.mozilla-central.shippable.revision.66c42cef8816a3264963ad03ee2dc74cead27fef.firefox.macosx64-opt'

10:59.28 WARNING: Skipping build 9231302514fc: Unable to find build info using the taskcluster route 'gecko.v2.mozilla-central.shippable.revision.9231302514fcad362a7f987cb090b906a7487dab.firefox.macosx64-opt'

10:59.32 WARNING: Skipping build f14ed3bab724: Unable to find build info using the taskcluster route 'gecko.v2.mozilla-central.shippable.revision.f14ed3bab7240f3aa6a9f8d8888ff685446cddcf.firefox.macosx64-opt'

10:59.32 CRITICAL: First build 60b4965aa0ca is missing, but mozregression can't find a build before - so it is excluded, but it could contain the regression!

11:01.22 WARNING: Skipping build f2fbf518572b: Unable to find build info using the taskcluster route 'gecko.v2.mozilla-central.shippable.revision.f2fbf518572b21b732795f6edeb10a3209799757.firefox.macosx64-opt'

11:01.22 WARNING: Skipping build 36cf8390eddd: Unable to find build info using the taskcluster route 'gecko.v2.mozilla-central.shippable.revision.36cf8390edddbc36217a8fbe306a6d5946a5617e.firefox.macosx64-opt'

11:01.23 WARNING: Skipping build 8dd315952fe9: Unable to find build info using the taskcluster route 'gecko.v2.mozilla-central.shippable.revision.8dd315952fe9cd0554dc906f038ba9fd3bed492f.firefox.macosx64-opt'

11:02.19 WARNING: Skipping build 356e3ecc7a85: Unable to find build info using the taskcluster route 'gecko.v2.mozilla-central.shippable.revision.356e3ecc7a85e0a74690ea8c6d3c28e30296d531.firefox.macosx64-opt'

11:02.22 WARNING: Skipping build 498177201777: Unable to find build info using the taskcluster route 'gecko.v2.mozilla-central.shippable.revision.49817720177787a3698bdf2e23f081efea4e1212.firefox.macosx64-opt'

11:02.26 WARNING: Skipping build a7f5b3c31b73: Unable to find build info using the taskcluster route 'gecko.v2.mozilla-central.shippable.revision.a7f5b3c31b735afc94410c97cedc8866a96d918f.firefox.macosx64-opt'

11:03.35 WARNING: Skipping build 1af6fa02884e: Unable to find build info using the taskcluster route 'gecko.v2.mozilla-central.shippable.revision.1af6fa02884e3559bd69a0a6e6a2c5249cea667a.firefox.macosx64-opt'

11:03.35 WARNING: Skipping build 4ffae7ad22de: Unable to find build info using the taskcluster route 'gecko.v2.mozilla-central.shippable.revision.4ffae7ad22def368dc2c449cbb085f081384c101.firefox.macosx64-opt'

11:03.37 WARNING: Skipping build a7ece22663b2: Unable to find build info using the taskcluster route 'gecko.v2.mozilla-central.shippable.revision.a7ece22663b2686871e1058612200ea0974fcbb2.firefox.macosx64-opt'

11:04.46 WARNING: Skipping build 35f8b8a01747: Unable to find build info using the taskcluster route 'gecko.v2.mozilla-central.shippable.revision.35f8b8a01747061995b4cdcc821c09f15936b9ea.firefox.macosx64-opt'

11:04.46 WARNING: Skipping build 52f9e6382dce: Unable to find build info using the taskcluster route 'gecko.v2.mozilla-central.shippable.revision.52f9e6382dce26e3fcb66bf52fbcea0e73216aef.firefox.macosx64-opt'

11:04.46 WARNING: Skipping build 5b25444c8911: Unable to find build info using the taskcluster route 'gecko.v2.mozilla-central.shippable.revision.5b25444c8911a4c873b53b6be9f47158831a86b0.firefox.macosx64-opt'

11:05.54 WARNING: Skipping build 2ac913a38e4c: Unable to find build info using the taskcluster route 'gecko.v2.mozilla-central.shippable.revision.2ac913a38e4cd0c49ceabd0bbd21dd862908f3fb.firefox.macosx64-opt'

11:05.55 WARNING: Skipping build ba77054848c4: Unable to find build info using the taskcluster route 'gecko.v2.mozilla-central.shippable.revision.ba77054848c41f869d9d6a8e1d2c6e02c39dc34a.firefox.macosx64-opt'

11:05.55 WARNING: Skipping build 5529d6960828: Unable to find build info using the taskcluster route 'gecko.v2.mozilla-central.shippable.revision.5529d6960828c727e050a9291a820da0be167bf6.firefox.macosx64-opt'

11:06.67 WARNING: Skipping build 45cd9ed42ad7: Unable to find build info using the taskcluster route 'gecko.v2.mozilla-central.shippable.revision.45cd9ed42ad7f9e8f3b477c99142ec710aa43a09.firefox.macosx64-opt'

11:06.70 WARNING: Skipping build c6bc2ad84f28: Unable to find build info using the taskcluster route 'gecko.v2.mozilla-central.shippable.revision.c6bc2ad84f28cf056fbd15282bf801f7d4b2050f.firefox.macosx64-opt'

11:06.70 WARNING: Skipping build eadea8a10f38: Unable to find build info using the taskcluster route 'gecko.v2.mozilla-central.shippable.revision.eadea8a10f38cf8643042bdcaa743dcc1cbd26ab.firefox.macosx64-opt'

11:07.74 WARNING: Skipping build 4af274d4ee61: Unable to find build info using the taskcluster route 'gecko.v2.mozilla-central.shippable.revision.4af274d4ee613437631074174934b5739d002880.firefox.macosx64-opt'

11:07.77 WARNING: Skipping build b9c4ba784620: Unable to find build info using the taskcluster route 'gecko.v2.mozilla-central.shippable.revision.b9c4ba78462076c06f3938d19954c88a9504d8fb.firefox.macosx64-opt'

11:07.77 CRITICAL: Last build 849b9d9a8b6f is missing, but mozregression can't find a build after - so it is excluded, but it could contain the regression!

11:08.81 WARNING: Skipping build 5672f2a22f78: Unable to find build info using the taskcluster route 'gecko.v2.mozilla-central.shippable.revision.5672f2a22f7853fbad3a8e23ade8fcaa7f118d59.firefox.macosx64-opt'

11:08.82 WARNING: Skipping build 63a3d733b233: Unable to find build info using the taskcluster route 'gecko.v2.mozilla-central.shippable.revision.63a3d733b2331033f48d10995ce09abf50def953.firefox.macosx64-opt'

11:08.82 INFO: There are no build artifacts for these changesets (they are probably too old).

Flags: needinfo?(ankur)

10:46.88 INFO: Pushlog:

https://hg.mozilla.org/mozilla-central/pushloghtml?fromchange=60b4965aa0ca5a7a60c71229600092a65df8bc1d&tochange=849b9d9a8b6f197d20a2f66addd0e3fc1e54f6d4

Thank ankur for the regression range! — From that list I suspect bug 1794961. To confirm, could you open about:config and set media.setsinkid.enabled to false to see if this fixes your symptom?

Flags: needinfo?(ankur)

Yes that fixes the issue

Flags: needinfo?(ankur)
Keywords: regression
Regressed by: 1498512

:karlt, since you are the author of the regressor, bug 1498512, could you take a look? Also, could you set the severity field?

For more information, please visit BugBot documentation.

Flags: needinfo?(karlt)

In Firefox 122, the echo is clear and is not cancelled at all.

With Firefox 123, the situation is much better, but still not as good as it could be, I suspect: echo is often fully cancelled (with support from bug 1849108) but there is still often an audible muffled echo and occasionally this is full volume. It may become more noticeable over something like 20 seconds until there is a brief full-volume echo, which is then fully cancelled again.

With media.setsinkid.enabled set to false, there is a clear initial echo and some echo may remain for a few seconds, but after that point the echo is not detectable.

With https://business.vconsol.com/join/1228458846?be_auth=MDQ4NDI4, I couldn't join the room due to an error something like "Failed to connect to server".

With https://letsmeet.no/, the first participant kept getting redirected back to the join screen until they clicked "Login". They did not login, but on return to the join page, "JOIN" was then successful.

Flags: needinfo?(karlt)
See Also: → 1879180
Assignee: nobody → karlt
Severity: -- → S2

Playing with DriftController::mAdjustmentInterval indicates that the remaining echo is due to interaction with the drift control on the output. When the controller's "corrected" sample rate matches its nominal, echo cancellation works very well. When the sample rate differs by even 1/1000, the AEC doesn't seem to be able to completely cancel the echo.

Perhaps the AEC might work as expected if it were applied on the other side of the drift control, but presumably it would then struggle when there is real drift between devices.

OS: Unspecified → All
Hardware: Unspecified → Desktop
Blocks: 916331
Blocks: 1875014
Depends on: 1887774
Depends on: 1890467

Karl, can we call this fixed now?

Flags: needinfo?(karlt)

Yes, this should be fixed by the dependencies.
https://letsmeet.no/ is not using setSinkId() now, but echo cancellation is behaving as expected on a test call.

Status: UNCONFIRMED → RESOLVED
Closed: 2 months ago
Flags: needinfo?(karlt)
Resolution: --- → FIXED
Target Milestone: --- → 130 Branch
QA Whiteboard: [qa-130b-p2]
You need to log in before you can comment on or make changes to this bug.