- From: guidou via GitHub <sysbot+gh@w3.org>
- Date: Mon, 26 Aug 2024 19:54:39 +0000
- To: public-webrtc-logs@w3.org
> It will only work in Chrome, not the spec. E.g. in the first "AirPods" example [above](https://github.com/w3c/mediacapture-output/issues/133#issuecomment-2307940368).
>
> > And the model is competing with what?
>
> The spec, which says the way to find the default is to assume it's the first one listed:
>
Chromium lists the default as the first device, so no contradiction there.
I think I misunderstood the original problem because I conflated system default device with UA default device.
In Chromium they are the same and it's listed first as per the spec, but this doesn't need to be the case.
> > > ```js
> > > const defSpkr = (await mediaDevices.enumerateDevices()).find(d => d.kind == “audio-output”);
> > > ```
>
> These are competing ways to learn the same thing, and we want web developers to adopt the interoperable way.
>
> Chrome's virtual (large "D") Default device is listed first, so why do we need another way?
>
We don't need another way.
So, my initial understanding was that it was not possible to know if the first exposed device is a default device, but I was conflating system default with UA default, which are not necessarily the same.
The actual problem is that when you have a per-device permission model there is no way to know if the first exposed device is the UA default.
> There's no all-speakers permission model in https://w3c.github.io/mediacapture-output
>
There is no mandated permission model. IIUC now, the problem here is specific to a per-device permission model.
In that case, I wouldn't be opposed to a field indicating if an entry is UA default.
> > > Chrome's deviceId: "default" on its virtual device is not a solution to the issue of providing a client app with a means to determine which exposed physical device, if any, is the user-agent default device.
> > > ...
> > > The way Chrome solves that problem right now is by setting the groupId to the same groupId of the physical device currently considered the default.
>
> That's clever, but means web developers need to write additional code to work around Chrome's virtual Default device:
>
> ```js
> const speakers = (await mediaDevices.enumerateDevices()).filter(({kind}) => kind == "audio-output");
> const defSpkr = speakers.reverse().find(({groupId}) => groupId == speakers[0].groupId);
> ```
I agree. That would be a solution to the problem of knowing if an entry for a physical device corresponds to the current system default device if you expose a system default device like Chromium does, but it's not a solution for the case when the UA default is one of the physical entries.
--
GitHub Notification of comment by guidou
Please view or discuss this issue at https://github.com/w3c/mediacapture-output/issues/133#issuecomment-2310968115 using your GitHub account
--
Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config
Received on Monday, 26 August 2024 19:54:41 UTC