- From: Michael A. Puls II <shadow2531@gmail.com>
- Date: Wed, 14 Oct 2009 06:11:27 -0400
- To: "Simon Pieters" <simonp@opera.com>, public-html-comments@w3.org
On Wed, 14 Oct 2009 04:25:42 -0400, Simon Pieters <simonp@opera.com> wrote: > On Wed, 14 Oct 2009 06:12:01 +0200, Michael A. Puls II > <shadow2531@gmail.com> wrote: > >> Gervase Markham <gerv@gerv.net> wrote: >> >>> On a <video> element (I haven't tried <audio>), if you change the src= >>> attribute to a new file, you have to call .load() before .play(), >>> otherwise it replays the old file. This lost me half an hour of >>> debugging, and recently another person posted in the Mozilla newsgroups >>> having exactly the same problem. >> >> (Thanks for posting this) >> >> I am that other person and here's what I personally expect, fwiw: >> >> When setting src: >> >> 1. The current media should stop playing. >> >> 2. It should then be unloaded. >> >> 3. All states should be reset (including the play state). >> >> 4. The new media should start loading. >> >> 5. If autoplay is true, the new media should start playing. If not, it >> only starts playing when you call play(). >> >> My use-case is setting @src when clicking on a link (in an ordered list >> of many links with click handlers) to an .ogg file. >> >> Having to call load() after setting src seems odd since I set src for a >> reason, which is, to load it so I can play() it (or automatically play >> it if I have autoplay set to true). >> >> For <object> when you change @type/@data, the object is pretty much >> re-evaluated. I pretty much expect the same when setting src for >> <audio> and <video> > > What behavior do you expect when using <source>s instead of src? > Well, you can insert, replace and remove a <source> element. You can change @src and @type on each <source> that's present. One easy way (thought-wise) to handle that is that whenever any of that happens, the UA should stop, unload, reset states and figure out what <source> to play. On the other hand, you might want to change @src for multiple <source>s without triggering a reevalutation until you explicitly call for one. Or, you might want a mix of the two that depends on whether there's just one <source> or where you're inserting a <source> (before the one that's currently being used for example) or which <source> you're removing (the one being used or not). So, I mostly expect the first way. However, the second seems simpler and would just cover everything. But, note that I haven't really dealt with the multiple type fallback stuff yet, so I don't have a strong opinion on <source> yet. -- Michael
Received on Wednesday, 14 October 2009 10:12:04 UTC