- From: Silvia Pfeiffer <silviapfeiffer1@gmail.com>
- Date: Mon, 26 Jul 2010 22:53:50 +1000
On Mon, Jul 26, 2010 at 7:41 PM, Philip J?genstedt <philipj at opera.com>wrote: > I actually don't think there's anything wrong about the spec as it is. > > NETWORK_NO_SOURCE is not a state of failure, it is a waiting state. Here's > what happens as the parser inserts elements into the DOM: > > <video controls width="400px"> > <!-- video has been inserted but resource selection hasn't run --> > <source type="video/mp4"> > <!-- resource selection is started, ends on step 21 with NETWORK_NO_SOURCE > and pointer pointing to just after the only source element --> > <source type="video/webm"> > <!-- resource selection continues at step 22, going another loop and ending > at step 21, but with pointer pointer to after the second source element --> > <source type="video/ogg"> > <-- same as above, but pointing to after the third source element --> > </video> > > If nothing is done, the resource selection algorithm will wait forever at > step 21. To get out of that state you have to either call load() to restart > resource selection, or append another source element. > > If we should let networkState be NETWORK_EMPTY after inserting the dummy > <source> elements, then resource selection would be run from the beginning > each time, which means that during parsing, the first <source> element will > be considered 3 times, the second 2 times and the last 1 time. In your > example this doesn't matter, but if the reason a <source> failed was because > of network errors, unsupported Content-Type or an unsupported file format, > then that will also happen too many times, adding useless network traffic > (unless e.g. 404 results are cached). > > So, I think the algorithm should stay as it is and that the other browsers > should change their implementations. In your original example you used > <source> elements with no src attribute. This is invalid, and I think the > proper solution would be to create each source element, set the src > attribute and append it to the video element. > Ok, I re-read the spec about <source> and you are correct: it's invalid to create <source> elements without a @src attribute. It could, however, still be created without a URI, in which case the resulting state would indeed be a NETWORK_NO_SOURCE, since it fails to find a valid @currentSrc . I still think, though, that NETWORK_NO_SOURCE is a failure state, since it is specified as NETWORK_NO_SOURCE (numeric value 3): The element's resource selection algorithm is active, but it has failed to find a resource to use. I now wonder about the intention of play() (and also of pause()). As I understood it, they are both meant to reload the media resource if @currentSrc has changed, similar to what load() is supposed to do. Also, I wonder what NETWORK_EMPTY is used for when not at the beginning of parsing the media resource. I haven't managed to catch Opera in that state. Cheers, Silvia. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.whatwg.org/pipermail/whatwg-whatwg.org/attachments/20100726/968581b8/attachment.htm>
Received on Monday, 26 July 2010 05:53:50 UTC