[whatwg] media element playback rates

Ian Hickson ian at hixie.ch
Fri Nov 2 10:34:13 PDT 2007

On Fri, 2 Nov 2007, Dave Singer wrote:
> About playbackRate and defaultPlaybackRate in the current specification of
> media elements, the logic that's currently necessary to set a media element to
> play at rate n is somewhat convoluted:
> 	If the media is paused
> 		1) Set the defaultPlaybackRate to n.
> 		2) Issue play().
> 	If the media is not paused
> 		- Set the playbackRate to n.
> And there's a distinct lack of permanence to setting playbackRate on 
> playing media to alter its rate. Once media is paused, the play() method 
> will reset the rate of the media (and playbackRate itself) to 
> defaultPlaybackRate instead of to the previous value of playbackRate, 
> which we think is unexpected.

The current design is built around three use cases:

 1. Being able to implement fast-forward, rewind, or slow-motion easily.
 2. Being able to change the playback rate for watching videos quickly.
 3. Being able to do both in the same player.

In the current model:

Fast-forward and rewind just consists of calling play() to ensure the 
playback head is moving and then changing 'playbackRate', resetting to 
normal is just a call to play(); changing the default playback rate 
without affecting that consists of changing 'defaultPlaybackRate' and, if 
the UA isn't in a fast-forward, rewind, or slow-motion mode, and isn't 
paused, also calling 'play()'.

We could optimise this by making defaultPlaybackRate affect playbackRate 
if playbackRate == old_defaultPlaybackRate, though. Would that work?

> Similarly, the logic required to determine the rate at which media is 
> playing or is about to play is convoluted. When listening for ratechange 
> events, scripts must perform different checks depending on whether the 
> media is currently playing.

Why? playbackRate always represents the current playback rate.

We could make changing defaultPlaybackRate when the content is paused 
affect playbackRate, though. Would that work?

> Proposal: [...]

As far as I can tell this would significantly complicate implementing the 
two use cases mentioned above together.

Ian Hickson               U+1047E                )\._.,--....,'``.    fL
http://ln.hixie.ch/       U+263A                /,   _.. \   _\  ;`._ ,.
Things that are impossible just take longer.   `._.-(,_..'--(,_..'`-.;.'

More information about the whatwg mailing list