Implement `AudioDestinationNode.channelCount` correctly
Categories
(Core :: Web Audio, defect, P3)
Tracking
()
People
(Reporter: padenot, Assigned: padenot)
References
Details
Attachments
(14 files, 3 obsolete files)
|
47 bytes,
text/x-phabricator-request
|
Details | Review | |
|
47 bytes,
text/x-phabricator-request
|
Details | Review | |
|
47 bytes,
text/x-phabricator-request
|
Details | Review | |
|
47 bytes,
text/x-phabricator-request
|
Details | Review | |
|
47 bytes,
text/x-phabricator-request
|
Details | Review | |
|
47 bytes,
text/x-phabricator-request
|
Details | Review | |
|
47 bytes,
text/x-phabricator-request
|
Details | Review | |
|
47 bytes,
text/x-phabricator-request
|
Details | Review | |
|
47 bytes,
text/x-phabricator-request
|
Details | Review | |
|
47 bytes,
text/x-phabricator-request
|
Details | Review | |
|
47 bytes,
text/x-phabricator-request
|
Details | Review | |
|
47 bytes,
text/x-phabricator-request
|
Details | Review | |
|
47 bytes,
text/x-phabricator-request
|
Details | Review | |
|
47 bytes,
text/x-phabricator-request
|
Details | Review |
This has the following parts:
- Defaults the
channelCountto 2 regardless of the hardware. This is what the spec says, in fact. - Map the channel count to well known channel topologies. It would be best if non-mapped channels was supported, but it does not seem to be the case. For Firefox, this means that 1 would be mono, 2 would be stereo, etc. For now, we always use the UNDEFINED layout, that is correct because it means independent discrete channels, but we've seen drivers that don't like it. This should fix bug 1563906.
- When
outputChannelis set on a particularAudioDestinationNode, change the number of output channel the graph outputs to, and perform upmix on the other AudioContext, like we do for input.
Comment 1•6 years ago
|
||
Bugbug thinks this bug is a enhancement, but please change it back in case of error.
| Assignee | ||
Updated•6 years ago
|
| Assignee | ||
Comment 3•6 years ago
|
||
| Assignee | ||
Comment 4•6 years ago
|
||
| Assignee | ||
Comment 5•6 years ago
|
||
| Assignee | ||
Comment 6•6 years ago
|
||
Updated•6 years ago
|
| Assignee | ||
Comment 7•6 years ago
|
||
| Assignee | ||
Comment 8•6 years ago
|
||
| Assignee | ||
Comment 9•6 years ago
|
||
| Assignee | ||
Comment 10•6 years ago
|
||
This was initialized to 0 anyways.
| Assignee | ||
Comment 11•6 years ago
|
||
This is in line with the meaning of channelCount in the Web Audio API
specification.
| Assignee | ||
Comment 12•6 years ago
|
||
It is now the channel count of the underlying chunks or 0 of there are no
segment (but this should be avoided, so the non-fatal assert is kept).
An assert is added to make sure there are no segments with varying number of
chunks.
| Assignee | ||
Comment 13•6 years ago
|
||
This is the big part:
- Methods are added to register/unregister an audio output, and to unregister
all audio output for a stream. The previous way of determining what track to
output is removed. - Information about audio output stream now lives on the graph itself, and not
at multiple locations. - PlayAudio is refactored slightly but largely untouched
- AudioOutputChannelCount now works in a way that is similar to its input
counterpart: it's the maximum of the channel count that needs to be output.
| Assignee | ||
Comment 14•6 years ago
|
||
This channel count solely depends on what the graph is doing, it's not static
anymore.
| Assignee | ||
Comment 15•6 years ago
|
||
Not stricly needed but easy to do now.
Updated•6 years ago
|
Updated•6 years ago
|
Updated•6 years ago
|
| Assignee | ||
Comment 16•6 years ago
|
||
Updated•6 years ago
|
Updated•6 years ago
|
| Assignee | ||
Comment 17•6 years ago
|
||
This is because the resampler is used from a different file and also because
there was a stray #include "AudioStream.h" that was bringing in a bunch of
stuff.
| Assignee | ||
Comment 18•6 years ago
|
||
It is technically possible to have different channel count per chunk, so we
should reinitialize the resampler when that happens. This is a bit awkward
because the rates are on the track, but the data is in the chunks, and the track
cannot access the chunks, so we have to plumb the resampler state down.
| Assignee | ||
Comment 19•6 years ago
|
||
Comment 20•6 years ago
|
||
Comment 23•6 years ago
|
||
| bugherder | ||
https://hg.mozilla.org/mozilla-central/rev/5eb0391b5e39
https://hg.mozilla.org/mozilla-central/rev/1b8eab609e03
https://hg.mozilla.org/mozilla-central/rev/dcbf81da8664
https://hg.mozilla.org/mozilla-central/rev/b6f5857fef14
https://hg.mozilla.org/mozilla-central/rev/9155420178fc
https://hg.mozilla.org/mozilla-central/rev/52fdc0e5fea1
https://hg.mozilla.org/mozilla-central/rev/95dc6464704f
https://hg.mozilla.org/mozilla-central/rev/fd7b69523a09
https://hg.mozilla.org/mozilla-central/rev/3602937f5807
https://hg.mozilla.org/mozilla-central/rev/126c112142c7
https://hg.mozilla.org/mozilla-central/rev/566a2c6f21db
https://hg.mozilla.org/mozilla-central/rev/c68d34ef1005
https://hg.mozilla.org/mozilla-central/rev/1bed49fa4f66
https://hg.mozilla.org/mozilla-central/rev/d4d413229820
Comment 24•6 years ago
|
||
Since the status are different for nightly and release, what's the status for beta?
For more information, please visit auto_nag documentation.
| Assignee | ||
Updated•6 years ago
|
Updated•6 years ago
|
Description
•