[whatwg] AudioTrack enabling - missing behaviour in the specification

Hi,

Current AudioTrack spec says:

"The AudioTrack.enabled attribute, on getting, must return true if the  
track is currently enabled, and false otherwise. On setting, it must  
enable the track if the new value is true, and disable it otherwise. (If  
the track is no longer in an AudioTrackList object, then the track being  
enabled or disabled has no effect beyond changing the value of the  
attribute on the AudioTrack object.)"

and (non-normative section):

"audioTrack . enabled [ = value ]
Returns true if the given track is active, and false otherwise.
Can be set, to change whether the track is enabled or not. If multiple  
audio tracks are enabled simultaneously, they are mixed."

This leaves us no place for disabling tracks by the player. Tracks can  
only be enabled by the web application, and when enabling multiple audio  
tracks at once, they all have to be played. The specification does not  
define in any way what should happen when there are not sufficient  
resources to enable all requested tracks, and it's especially important on  
embedded systems ([smart]phones, TVs, etc).

The spec says only:

"User agents may impose implementation-specific limits on otherwise  
unconstrained inputs, e.g. to prevent denial of service attacks, to guard  
against running out of memory, or to work around platform-specific  
limitations."

This is unfortunately not enough. The spec should require a certain  
behavior when running out of audio tracks, so that we don't end up with  
one browser enabling the newest track while another browser rejects the  
newest track, for instance.

To me the most natural behaviour would be to always enable the track which  
was requested to enable and, if needed, disable the least recently enabled  
track. I'd add something like this to AudioTrack.enabled attribute  
specification:

"If the track is enabled and there exist other tracks enabled at that  
time, but the user agent has insufficient resources to play all of them  
mixed, the user agent must disable one or more of the previously enabled  
audio tracks and must queue a task to fire a simple event named change at  
the AudioTrackList object."

best regards,

-- 
Aleksander Wabik
Opera Software

Received on Tuesday, 18 December 2012 12:39:33 UTC