-
Notifications
You must be signed in to change notification settings - Fork 29
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support multiple devices to support Video Conferencing use cases #317
Comments
More likely that "all media devices of a given type change state".
Most VC solutions I know use only one camera and one microphone. This is a reasonable ask though, one way to handle it:
|
Video conferencing solutions may allow users to switch between multiple cameras or microphones. It's quite common for users to have more than one. Examining my own setup, which I believe is quite common:
The cameras have different fields of view, so it'd be quite reasonable to instruct the UA to disable one camera and keep the other one active. Given that USB cameras can be flaky and video-conferencing applications would often jump to the next available camera, it'd be somewhat reasonable to expect the UA to offer me the ability to mute just one of them. |
I can see that kind of UI happening in the future. The question is more whether this is already a thing. |
To the best of my knowledge, it is not currently a thing. |
Several VC products I've used allow you to select which microphone and camera you want to use and allow you to change it in the middle of a call. It is obviously necessary for these applications to have the ability know the mute state of all the devices. I can't see how that can be achieved with an API that only reports that a mute state changed without also indicating what device that is and what the state is. |
I don't think multiple devices are relevant to MediaSession. This seems sufficient for the common video conferencing case, just like tracking playback of a single artist at the time is. |
It was discussed at today's media wg meeting, here are some thoughts:
Marking issue as enhancement. |
Without this enhancement (per-device controls), I don't think MediaSession is a decent contender in solving the double-mute problem. To repeat the user cases I have explained in narrower forums:
I am not opposed to having a |
What OS prompts for class-level access to all microphones and then fine-grained prompts on OS-unmute of each?
What state?
I agree this spec shouldn't force UAs to do that. Being involved with the prose, our intent was that to implement the update capture state algorithm, a UA needs only reverse any policy of pausing all input sources of that kind in response to UI. I've filed #332 to clarify. Thanks for your help in spotting this, and sorry for any confusion this may have caused! |
I agree. To be clear though, in the usual case, there might be multiple available mics but only one of them is actually in use. In that case, there will be at most one OS prompt when unmuting. The case you are talking about would be:
This is a valid use case but I am not aware of a web site doing this kind of UI today. Ditto for native VC apps.
It is really the reverse |
In light of more information gained out-of-band, I don't think this particular issue is a blocker for us anymore. I'm continuing the discussion under the assumption it is indeed an enhancement.
An OS can offer users individualized mute-controls per peripheral. Imagine that the user manually mutes mic1 and mic3, but not mic2. Now the user interacts with a Web app in a way that indicates an intention to unmute mic1. With the current set of Web APIs, the Web app cannot indicate this to the UA, who would then indicate this to the OS. Rather, the use of
If we don't let the Web app tell the UA that it only wants to unmute a single mic, then how will the UA know? Will it employ a heuristic? Such heuristics can fail if the app then changes to the other mic a second later, and now the user has to deliver yet another gesture and interact with yet another prompt. |
A VC app is usually capturing with a single device. When the web app wants to unmute capture, UA knows that the web application is only capturing with mic2. It will only seek to unmute mic2. Web app might later on seek to use mic1 via getUserMedia, which might trigger another prompt.
I don't understand how providing setActive with more information helps that use case. |
You are proposing a heuristic - the UA will interpret Specifically, let's example the possibility that a Web app cycles through [mic1, mic2, mic3] and finds them all to be muted. The app then calls |
To do so, the web app needs to call getUserMedia on all these mics. I think we should dive into these discussions in WebRTC WG first.
The spec ins not precise here but the spirit of the spec I think is that UA will unmute no device, since there is no capture track. |
See my answer to #332 (comment) for my take on this. |
If we clarify the spec, we will avoid future compatibility issues.
Putting myself in Web dev's shoes, I believe I would be very surprised that a call to |
There is probably a misunderstanding somewhere but I cannot pinpoint it yet. The spirit is that setMicrophoneActive() will only change the microphones that the page is using. |
Does this mean that if different embedded frames call the method, the results would be different? Does Safari UX support that? Assume |
These are all good questions and we should probably address them in the spec. Media session spec could stay at context level (leaving the possibility for the UA to widen the scope) or could go to page level. Safari UI is merging all contexts in a single indicator/UI toggle. If page has both muted and unmuted tracks, Safari would show the live icon. A reasonable approach is for Safari to stick to page scope level. In case of |
There is no consensus yet on the WebRTC WG that support for the VC use cases should be solved using Media Session, but since there is a proposal being discussed, it should support the case when a system has multiple cameras or microphones.
Otherwise the API would be reduced in these systems to notifications about "one of the media devices changed state", which is not useful to a VC application.
Systems with more than one camera or more than one microphone are common and not a special/corner case.
The text was updated successfully, but these errors were encountered: