-
Notifications
You must be signed in to change notification settings - Fork 61
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
Clarify "audiooutput" does not mean capture of audio output to headphones or speakers #720
Comments
The only viable fix appears to be to remove |
WebIDL does not allow partial enums, hence why it is there. |
I think this is a limitation in WebIDL. For webrtc-extensions we worked around it kind of ugly: |
Blocked on? |
How is WebIDL related to this issue? Am stating that |
I see no need to remove them from this spec. |
That language needs to be in the specification to avoid confusion. There are more than one individual that has interpreted that term literally when the only specified definition is
without the accompanying explanation.
That is what have not ever understood about what At https://stackoverflow.com/a/45003549 and guest271314/SpeechSynthesisRecorder#14 the term only sows confusion when users actually want to capture heaphones and speakers. Kindly tell those users that
I still am having difficulty understanding exactly what In this specification `"audiooutput" is useless. As far as I can tell Chromium is the only browser that uses that label. Which refers to the same device as
I do. To avoid confusion. There is not capture of audio output occurring. That requirement is still being requested and developed. If that needs to be kept around for whatever purpose individuals use it for, then all of the language used outside of the specification in these issues needs to be in the actual specification - and Audio Output Devices API - so that no user ever again has the interpretation that either of these specifications intends to actualy capture the audio output to headphones or speakers. And rename the bit |
Given this is a WebIDL limitation, we keep it like this and might reopen issue when WebIDL allows us to do os. |
This is not a WebIDL issue or limitation. This issue is strictly for the purpose of printing in the specification that this specification does not define any means or algorithms for capturing audio output to headphones or speakers. |
The spec is saying for getUserMedia (just above https://w3c.github.io/mediacapture-main/#dom-mediadevices-getusermedia): This seems clear to me that "audio output" is not in scope of getUserMedia. |
Then why is
in the specification given neither the term "audioouput" nor the definition provided are applicable whatsoever? Kind remove that term and definition from this specification to avoid sowing further confusion. |
We need to define https://w3c.github.io/mediacapture-main/#dom-mediadevicekind in this spec. Given getUserMedia scope is clear, I think the confusion is limited. |
Perhaps you do not understand what am stating. Am stating directly that neither this specification nor https://w3c.github.io/mediacapture-output/ actually capture any audio output whatsoever. The term used needs to be "microphone-reroute-to-speakers" or something like that. Users in the field are expecting "audiooutput" to mean just that, though these specifications are massaging terms of art which result in confusion. Therefore "audiooutput" must not exist in either specification. There is no "move" that should occur. That term needs to be repealed from these specifications until capture of audio output is actually specified, which it is not in either specification. |
The rationale for closing this issue is flawed based on the simple fact that "audiooutput" actually does occur at media capture audio output either, thus this issue w3c/mediacapture-output#111. These specifications are using the term "audiooutput" as if audio output to speakers can be captured, which is not the case by default language in either specification. However, users do want actual audio output capture to headphones and speakers, thus if that is ever specified, clearly the "audiooutput" that is implemented now, that is, re-routing microphone input to speakers, must take precedence over the as-applied usage currently, which has nothing to do with actually capturing output to headphones or speakers. Thus, for disambiguity, this issue and the one of the same subatnce in audio output devices, makes it directly clear that the term "audiooutput" needs to be replaced with a term that describes what is actually specified and expected to occur - re-routing of microphone input to speakers - not capture of speakers. Am not sure why this is proving difficult to convey or comprehend at the specification level? |
@youennf Do you understand what am stating here? This specification uses the term The term That is not capture of headphones or speakers. However, no distinction is made in the actual specification between capture of And no authors of this specification nor mediacapture-output have notified the users there that their in-house definition of the term of art |
Per Issue 1114422: enumerateDevices() listing device kind "audioouput" is incorrect and misleading https://bugs.chromium.org/p/chromium/issues/detail?id=1114422
This specification states https://w3c.github.io/mediacapture-main/#idl-def-MediaDeviceKind.audiooutput
Audio Output Devices API https://w3c.github.io/mediacapture-output/ does not actually use or define the term
"audiooutput"
.There is a section of Audio Output Devices API that addresses
getUserMedia()
relations to that specificationthe remainder of comment from the above-linked Chromium bug
Problems
The first problem is that it that Chromium implementation of
MediaStreamTrack
set the label a microphone device to"audiooutput"
. Firefox labels monitor devices, which Chromium refuses to capture or list atenumerateDevices()
as"audioinput"
.The second problem is the device with the
kind
"audiooutput"
is actually not headphones or speakers at all, where this specification does not explicitly define capture of audio output to headphones or speakers.The third problem, which is the consequence of first and second problems, it is reasonable for users in the field attempting to achieve capture of actual audio output (a reasonable interpretation of headphones or speakers) to expect a
kind
denoted as"audiooutput"
to be the plain meaning of that term, as eluded to in this specification. See This is again recording from microphone, not from audiooutput device #14illustrating the potential for and reality of confusion where a device kind from
enumerateDevices()
is filtered for"audiooutput"
with the expectation of capturing audio output to headphones or speakers https://github.com/guest271314/SpeechSynthesisRecorder/blob/master/SpeechSynthesisRecorder.js#L63where if nothing changes at Chromium implementation the device
kind
will be"audiooutput"
yet headphones or speakers output will never be captured, only microphone will ever be captured.Thus, why the
kind
"audiooutput"
at all where both"audioinput"
and"audiooutput"
refer to the exact same device?If the current language is clear to an author of this specification, kindly explain to the users above and below exactly why
"audiooutput"
really does not mean capture of audio output to speakers or headphones at all, and really just means the same as"audioinput"
, a microphone, an input device; to avoid any further confusion as to why the code that selects"audiooutput"
device is working as intended -"audiooutput"
and"audioinput"
are intended to refer to the exact same device - and never to the headphones described in the specification: abandon all hope of capturing actual headphones or speakers per this specification.Am relatively certain the confusion is not imagined and can be eliminated.
Comments to initial proof-cof-concept of capturing
speechSynthesis.speak()
output https://stackoverflow.com/a/45003549precisely how
"audioinput"
and"audiooutput"
are intended by this specification and derivatives to only refer to the same device, a microphone.Such an explanation would require defying logic given that there is absolutely no difference between the device with
kind
set to"audioinput"
and device set to"audiooutput"
at Chromium browser. That only serves to create and maintain confusion, which is completely avoidable by clearly stating that this specification does not capture actual audio output to heaphones or speakers whatsoever; then users can know that fact for certain and not expect such behaviour at all from either this or derivative specificationsSolutions
Implementers must not use the term
"audiooutput"
set atkind
ofMediaStreamTrack
where the captured stream is actually microphone input."audioinput"
must be used askind
for microphone input devices.Do not set
"audiooutput"
on devices atenumerateDevices()
.Make it clear in this specification does not specify capture of audio being output at headphones or speakers. This necessarily means that
"audiooutput"
kind
cannot be true and correct as the specification does not currently define that procedure at all (the original intent of this specification was evidently limited to microphone input capture, not headphones or speaker capture).The text was updated successfully, but these errors were encountered: