On Wed, 14 Oct 2009 04:25:42 -0400, Simon Pieters <[email protected]> wrote:

On Wed, 14 Oct 2009 06:12:01 +0200, Michael A. Puls II <[email protected]> wrote:

Gervase Markham <[email protected]> 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

Reply via email to