W3C home > Mailing lists > Public > public-webrtc-logs@w3.org > December 2019

Re: [mediacapture-main] Clarify getUserMedia({audio:{deviceId:{exact:<audiooutput_device>}}}) in this specification mandates capability to capture of audio output device - not exclusively microphone input device (#650)

From: guidou via GitHub <sysbot+gh@w3.org>
Date: Tue, 10 Dec 2019 17:23:57 +0000
To: public-webrtc-logs@w3.org
Message-ID: <issue_comment.created-564140934-1575998636-sysbot+gh@w3.org>
> @guido
> 
> > No, it doesn't since it expects getUserMedia to capture from devices marked as "audiooutput".
> > It works in Firefox for Linux due to implementation-specific characteristics such as how some exposed devices are named.
> 
> Why is
> 
> > `MediaDeviceKind` Enumeration description
> > `audiooutput` | Represents an audio output device; for example a pair of headphones.
> 
> in the specification?

Because knowing the audio output devices is useful for some use cases.
For example, you may want audio to be rendered on a particular output device, or you may want getUserMedia() to select input device (i.e., microphone) associated to a particular output device (i.e., headphone).

> 
> Why would a reader of the specification not reach the conclusion that it is possible to capture audio output per this specification where the plain language states that an `audiooutput` represents "Represents an audio output device; for example a pair of headphones." where no language in the specification prohibits such an interpretation?
> 

The actual question I have is why would a reader conclude that it would be possible for getUserMedia() to capture from output devices when its definition mentions only input devices.
Even the implementations that allow capturing audio output (i.e., Firefox on Linux) do it by exposing audio output as input devices (i.e., "audioinput" kind in enumerateDevices).

> > That was filed as a bug, which it is not. Therefore it cannot be "fixed".
> > Feel free to file a feature request.
> 
> Stating that in the comment before you closed the issue https://bugs.chromium.org/p/chromium/issues/detail?id=1013881#c8
> 
> > This is a feature request to eliminate steps, not a bug.
> 
> do you not have the ability to change the "Type" from "Bug" to "Feature request"?
> 
> If not, how to make it clear that the issue is a feature request, not a bug?
> 

Yes, it is possible to change the type from Bug to Feature request, but the description of crbug.com/1013881 is very different from what you want. That bug contains repro steps for a bug consisting in the permission prompt being broken because "Monitor of <audio device> (potentially multiple devices) should be listed at the prompt".
That's closed as WontFix because the intent of the permissions prompt in Chromium is not to list any devices, much less "Monitor of " devices that are not supported in any form in Chromium.

My recommendation is that you file a new issue where you say that you would like Chromium to:
1. Expose "Monitor of audio output" devices as audio input devices in enumerateDevices().
2. Allow getUserMedia() to capture from them.
3. Make any necessary UI adjustments.

> Yes, implementers do try to meet the spec. They might also do whatever they want, irrespective of any specification, without providing any documentation why https://bugs.chromium.org/p/chromium/issues/detail?id=1018580#c67
> 
It would be a mistake to document internal implementation details that are subject to change at any time. Of course, since Chromium's source code is available, you are free to inspect it to learn about such details if you are interested.

> Have no issue filing the feature request, again, if you cannot change the "Type" to feature request on the issue you closed.
> 
I already explained why it would be better to file a new one. 


> Do not gather we will agree on interpretation of the specification re the meaning of "audiooutput" and your interpretation of "headphones" (output) meaning "Microphone" (input). You can resolve that inconsistency by updating the specification to make it clear that capturing "audiooutput" device really meaning capturing input device, not audio output from the system, in spiite of what actually occurs at Firefox.

I don't think anyone has interpreted "headphones" (output)  to mean "Microphone" (input). It is pretty clear that headphones are a good example of output devices and as such they would be listed by enumerateDevices() as kind "audiooutput". getUserMedia() cannot capture from them since it captures from input devices, but you can use their groupId to select an input device to be used by getUserMedia().  I see no inconsistency about this in the spec.

Finally, I don't think there is anything else to discuss in this issue since it is clear that what you want is Chromium to allow capturing audio output using getUserMedia() by exposing special  "Monitor of..." input devices the way Firefox for Linux does. This does not require any change to the spec.


-- 
GitHub Notification of comment by guidou
Please view or discuss this issue at https://github.com/w3c/mediacapture-main/issues/650#issuecomment-564140934 using your GitHub account
Received on Tuesday, 10 December 2019 17:23:58 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 19:22:34 UTC