Closed Bug 1849079 Opened 1 years ago Closed 1 year ago

getUserMedia echoCancellation constraint stopped working on some videoconferencing sites

Categories

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

Firefox 116
defect

Tracking

()

RESOLVED FIXED
Tracking Status
firefox122 --- wontfix
firefox123 --- fixed

People

(Reporter: david, Unassigned)

References

Details

Attachments

(1 file)

Attached video ff116 echo.mp4

User Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Gecko/20100101 Firefox/116.0

Steps to reproduce:

I (and teammates) can reproduce consistently on gather.town using Firefox 116 (not 115). Use gather.town on Firefox 116 with speakers as the audio output device, with another participant. Have the other participant talk. They can hear themselves clearly, same as if echoCancellation is disabled.

Here's a Gather space to repro with if anyone is willing: https://app.gather.town/app/JmoHFjBuphRK73KT/firefox-echo-example

Actual results:

Other users hear a full-volume echo.

Expected results:

Other users should not hear an echo.

We call getUserMedia with echoCancellation: true and I verified that 'echoCancellation: true' appeared in the track.getSettings() on the microphone MediaStreamTrack when I reproduced this on my end. (In the attached video, I'm recording and my teammate is running FF116) Nothing has changed on our side in how we call getUserMedia, and this does not repro on Firefox 115.

I saw that FF116 introduced audio output device selection (which is awesome btw, very happy about that). Is it possible that echo cancellation depends on the selected output device or doesn't cancel out audio where the output device was explicitly set?

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
Depends on: 1849108

Thanks for filing! You are absolutely right in that the echo canceller will only be fed the output data of the default device. I filed bug 1849108 to get this tracked.

Severity: -- → S3
Status: UNCONFIRMED → NEW
Ever confirmed: true
Priority: -- → P3

Thanks Andreas! I'm seeing this echo even when I only have one audio output device. I think that means that if you explicitly call setSinkId with a specific device ID, even if it's the default device, the audio isn't part of the default MediaTrackGraph and thus isn't accounted for by the echo canceller. Is that right?

David

I think that is accurate, because when using the default output device we'll automatically switch when the user changes output device in system settings. With an explicitly opened one through setSinkId, we won't.

You should be able to verify this by looking at the number of audio output streams we have opened through platform APIs. If you have a live audio MediaStreamTrack there will always be an output stream open to the default device. You probably have two.

Got it, that makes sense. Thanks again Andreas!

David

Status: NEW → RESOLVED
Closed: 1 year ago
Resolution: --- → FIXED
QA Whiteboard: [qa-123b-p2]
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: