Not all Speakers are displaying for MS Teams
Categories
(Core :: WebRTC: Audio/Video, defect)
Tracking
()
People
(Reporter: mkaply, Unassigned)
References
Details
Attachments
(3 files)
I joined a call via Google Meet, and the only two options offered to me by Firefox were not actually usable speakers on my system.
When I joined using Edge, I had access to the correct speakers.
I used this URL to test and saw the same behavior:
https://webrtc.github.io/samples/src/content/devices/input-output/
Here is my profile:
Screenshot attached.
The speakers that actually produce sound are the Pebble or LG UltraHD, neither of which were available.
| Reporter | ||
Comment 1•2 years ago
|
||
I said Meet but it might have been Teams.
Either way, the problem was on the sample page as well.
Comment 2•2 years ago
|
||
Jan-Ivar, in the profile above, we see that the speakers Mike would like to use are the default on the system. It feels weird that they're not enumerated.
Updated•2 years ago
|
| Reporter | ||
Updated•2 years ago
|
Comment 3•2 years ago
|
||
Edge is identifying the Pebble as the default output device, but cubeb is identifying two preferred output devices:
LogMessages — (cubeb) cubeb.c:670:DeviceID: "{0.0.0.00000000}.{e6d38cfd-f6a7-4267-8850-abd03840e92d}" (PREFERRED)
Name: "Headphones (Oculus Virtual Audio Device)"
Group: "ROOT\MEDIA\0000"
Vendor: "(null)"
Type: output
State: enabled
Maximum channels: 2
Format: S16LE F32LE (0x1010)
LogMessages — (cubeb) cubeb.c:670:DeviceID: "{0.0.0.00000000}.{32ab2bd4-d563-4036-9988-2cdfe23af74e}" (PREFERRED)
Name: "Speakers (3- Pebble V3)"
Group: "USB\VID_041E&PID_3272&MI_00\8&33572625&0&0000"
Vendor: "(null)"
Type: output
State: enabled
Maximum channels: 2
Format: S16LE F3
Gecko is choosing the last preferred device to treat as the system default.
If the "Oculus Virtual Audio Device" were not a preferred output device, then Gecko would add a virtual "Default audio output device" option so that sound could be output via the system default audio output.
Can you attach about:support or the Output Devices section, please?
I wonder how many kinds of Preferred devices are obviously system configurable?
I wonder whether Gecko can make a better choice for the system default device.
Comment 4•2 years ago
|
||
The system default output device presented by enumerateDevices() should be the one used with setSinkId("") (and with no setSinkId() at all). I don't know that anything ensures that.
Comment 5•2 years ago
•
|
||
(subject change based on comment 1 and bug 1878107)
-
Fewer devices than Edge: Firefox follows spec which says microphone-use enables discovery of "same groupId" speakers, leaving websites to discover non-mic'ed speakers through selectAudioOutput().
Please try here, hit
Go!+ Allow, thenSpeakers: Other...and report which devices are exposed where (in-content vs Firefox prompt), to see if this is the problem. -
The system default device is not listed: There's no need to expose what the default speaker (at the moment) is since it is used by default. How users revert to (dynamic) system default is up to websites (my test page above adds a "Default system output" entry associated with
"").If your speaker shows up under
Speakers: Other..., try selecting it, hitAllow, and then type this into web console:await navigator.mediaDevices.enumerateDevices();See if its
groupIdmatches any listed mics. If not then it not being enumerable with mic-use is by design.
Karl, do I have that right? You've worked on this more recently.
We'll reach out to MS teams. I'll also reach out to other vendors to see about traction of selectAudioOutput().
| Reporter | ||
Comment 7•2 years ago
|
||
The simple test page defaults correctly and offers all my devices when I click Other.
Comment 8•2 years ago
|
||
(In reply to Jan-Ivar Bruaroey [:jib] (needinfo? me) from comment #5)
- The system default device is not listed: There's no need to expose what the default speaker (at the moment) is since it is used by default. How users revert to (dynamic) system default is up to websites (my test page above adds a "Default system output" entry associated with
"").
We (perhaps arguably) don't need to expose the physical device behind the system default speaker, but the first "audio-output" device from enumerateDevices() should be the system default, which is not the case is this report. https://github.com/w3c/mediacapture-output/issues/133 is the spec issue tracking this.
Changes for bug 1769985 added a dummy default audio output device to enumerateDevices results when the first exposed output device is not the default, which was expected to mean that a virtual system default output device would be listed (and selectable) in this situation. The concept of multiple system default output devices, and Gecko's perhaps inconsistent treatment thereof, is breaking this.
Comment 9•2 years ago
|
||
Which preferred output device is used by MediaTrackGraph depends on whether a primary input device has any processing (AGC, AED, noise suppression) applied.
Comment 10•2 years ago
|
||
I guess we could always add a virtual system default output device when we don't know which physical device would be used.
| Reporter | ||
Comment 11•2 years ago
|
||
In Google Meet, I only have "System Default Speakers"
Even in settings, that's the only speaker.
Updated•2 years ago
|
Comment 12•2 years ago
|
||
Taking this to partners, and potentially trying to choose a better default on Windows.
Comment 13•2 years ago
|
||
In Google Meet, I only have "System Default Speakers"
That's bug 1878107 comment 9.
Comment 14•2 years ago
•
|
||
Update on the 3 things:
- For non-headset speakers, we've reached out to MS Teams who said
selectAudioOutputwas on their roadmap. I pointed them at https://blog.mozilla.org/webrtc/how-webrtc-speaker-selection-works/ - I'll raise the https://github.com/w3c/mediacapture-output/issues/133 spec issue at the next WebRTC WG meeting.
- comment 8: "The concept of multiple system default output devices, and Gecko's perhaps inconsistent treatment thereof, is breaking this." — see also comment 3.
Paul, do you have insights about 3?
Comment 15•2 years ago
|
||
On Windows (and only on Windows), there are two default devices: one default communication device, and one default device (usually for listening to music and that sort of thing).
It is possible to know what is what using this enum / field: https://searchfox.org/mozilla-central/source/media/libcubeb/include/cubeb/cubeb.h#369-375,395. Historically, it has been preferred by users to disregard the default communication device, and use the "regular" default device. It's counterintuitive, but is what is preferred by users: there were lots of complaints when we tried picking the default communication input and output devices for voice-type application and the default device for non-voice applications.
Comment 16•2 years ago
|
||
Thank you, Paul. Are you implying that users would prefer that we use the "regular" default device even for WebRTC and so we should remove CUBEB_STREAM_PREF_VOICE on Windows (perhaps through "media.cubeb.output_voice_routing") so that cubeb doesn't ever choose the communications default device?
If so, then our enumeration code can be adjusted to mark only the CUBEB_DEVICE_PREF_MULTIMEDIA preferred device as the default device.
Comment 17•2 years ago
|
||
As always, it's complicated.
We're envisioning CUBEB_STREAM_PREF_VOICE to convey the fact that the stream is to be used for voice. We're starting to have it enable processing that is geared towards voice (and disabling WebRTC's processing when possible). This pref has been used briefly in the past to control what "default device" was picked, but people didn't like it, and I don't plan to try again as of now.
I think Gecko's enumeration code could indeed only pay attention to CUBEB_DEVICE_PREF_MULTIMEDIA and that would be strictly better. This could be a Gecko patch without touching cubeb, I assume.
| Reporter | ||
Comment 18•1 year ago
|
||
I had just run into this problem again on my home computer on Firefox release, so I tested Nightly, and I can confirm that with the patch from bug 1958963, I see all my audio devices in Teams.
We're still picking the wrong default, though. I did a private window in Edge and it picked my Pebble speakers.
Image attached.
We also get a different UI for audio. I wonder if we can ping Microsoft about that.
Comment 19•1 year ago
|
||
Mike, what is the default input and output device and default input and output communication device on this Windows machine? mmsys.cpl in Execute will show the right screen directly. I'd like to confirm your setup to understand where the bug is.
| Reporter | ||
Comment 20•1 year ago
|
||
Interesting.
Playback:
Headphone
Oculus Virtual Audio Device
Default Communications Device
Speakers
Pebble V3
Default Device
Recording:
Headset Microphone
Oculus Virtual Audio Device
Default Device
What's the difference between Default Communications Device and Default Device and why does Edge default to the "default Device' and we default to the "default communications device"
Comment 21•1 year ago
|
||
Because we have decided to take advantage of the Windows feature that allows specifying a different device for conference calls and other type of audio (music, movies, etc.).
| Reporter | ||
Comment 22•1 year ago
|
||
Because we have decided to take advantage of the Windows feature that allows specifying a different device for conference calls and other type of audio (music, movies, etc.).
Makes sense. I wonder why Microsoft doesn't?
At least I know the source of the problem now.
Is this just "working as designed" at this point?
Comment 23•1 year ago
|
||
It is working as intended, as far as I'm concern, but product people could decide to have Firefox not do this.
Please tell us if that's the case, as it's a trivial change.
| Reporter | ||
Comment 24•1 year ago
|
||
I don't think I'm the one to decide this :)
Have we had other reports?
Comment 25•1 year ago
|
||
You're not the first one, but I'd say no more than a couple in about 10 years.
| Reporter | ||
Comment 26•1 year ago
|
||
I wonder if there's a good place to just document this now that I/we know. (SUMO?)
I'm just happy I can fix it :)
Comment 27•1 year ago
|
||
SUMO would be the place I presume, yes.
Comment 28•1 year ago
|
||
Solved with bug 1958963.
Description
•