Re: Video DOM API

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