AudioContext.maxChannelCount

Hi,

Currently implementing |AudioContext.maxChannelsCount| in Gecko, I
wonder why conforming implementations should return 0 if the channel
count cannot be changed by the author.

For a regular |AudioContext.destination|, it seems to me that any
implementation that supports the default, i.e. stereo, could trivially
support mono-output (simply by adding a final down-mixing step before
writing the data to the audio sink). Support for multichannel output is
easily tested for using |AudioDestinationNode.maxChannelsCount| (which
would be > 2 if the hardware supports more than two channels).

For an |OfflineAudioContext.destination|, it makes sense that the number
of channels becomes non-mutable after the start of the rendering, but
returning zero seems inconsistent. Since we are not limited by hardware
capabilities, it would make more sense to return the number of channels
the implementation accepts without throwing when setting the channel
property before starting the rendering, that is somewhat arbitrary but
should exist.

Forcing the authors to determine the upper limit of
|OfflineAudioContext.destination.channels| for a given implementation by
using a try/catch and a loop seems bad.

On a related note, maybe |MediaStreamAudioDestinationNode| could have a
|maxChannelsCount| attribute as well.

Thanks,
Paul.

Received on Monday, 27 May 2013 21:39:23 UTC