[whatwg] Scripted querying of <video> capabilities

Ian Hickson ian at hixie.ch
Wed Oct 15 01:44:01 PDT 2008

On Tue, 14 Oct 2008, Robert O'Callahan wrote:
> On Tue, Oct 14, 2008 at 12:13 PM, Maciej Stachowiak <mjs at apple.com> wrote:
> > While the underlying media frameworks can't necessarily answer, "if I 
> > give you a file with this MIME type, can you play it?", they can at 
> > least give a yes/no/maybe answer, which can still be quite helpful, 
> > since the UA will know it does not need to check some media streams at 
> > all.
> I agree. If the API lets us answer "maybe", there is not much need or 
> temptation to lie, and we can still return information that could be 
> useful to scripts.

I have added window.navigator.canPlayType(mimeType). It returns 1, 0, or 
-1 to represent positive, neutral, and negative responses.

On Mon, 13 Oct 2008, Maciej Stachowiak wrote:
> >
> > Also, should we make .load() asynchronous as far as selecting a media 
> > file goes? Right now, a media file has to be instantaneously and 
> > synchronously selected, so the UA can't try each one in turn.
> I believe the original design intent was to make selection completely 
> static and not not based on a fallback-like approach of trying each in 
> turn. Let's assume IE implements <video> at some point but does not 
> support Ogg or MPEG-4 out of the box. Then an author wishing to provide 
> 3 media streams could still likely get the job done, since browsers 
> could likely determine whether or not particular basic content types are 
> supported. It might be hard to get more complex cases right though.

On Tue, 14 Oct 2008, Robert O'Callahan wrote:
> IMHO load() should be asynchronous and should try each in turn. That 
> would dramatically increase the power of fallback and doesn't seem to 
> cost too much. Chris Double points out that there are edge cases where 
> some streams in a container are supported, but others aren't; for 
> example a framework might support only Ogg Vorbis but not Theora, and 
> you try to play a Vorbis+Theora file, and you get no error from the 
> framework, but you might have preferred to fall back. However, if the 
> author provided the right MIME information, the UA could know that there 
> is supposed to be video, and detect that there isn't any video coming 
> out, and fall back.

On Tue, 14 Oct 2008, Robert O'Callahan wrote:
> We definitely have to change that! Having load() synchronous would be a 
> disaster.

On Tue, 14 Oct 2008, Eric Carlson wrote:
> I agree! A truly synchronous load() will result in a terrible user 
> experience as a UA may need to download a significant amount of data 
> before it knows if a file is playable.

Right now the spec picks a resource *without checking with the server*, 
statically, and then the method returns, and then asynchronously it checks 
to see if the resource is usable.

I am proposing changing the spec to make the load() not select a resource. 
Instead, load() would immediately return, and the user agent would then 
asynchronously try each resource that it might otherwise use in turn, 
firing a single loadstart event at the start, lots of progress events, and 
then a loadedmetadata or error event depending on how things go.

On Tue, 14 Oct 2008, Dave Singer wrote:
> > 
> > This brings up another point, which is, is the "type" attribute on 
> > <source> actually useful? Should we remove that and just have browsers 
> > probe the video subsystem for each resource? We can always add the 
> > attribute back later if it becomes useful again, but I'd rather not 
> > have something that isn't used by browsers, since then it'll be used 
> > wrong by authors, making it useless forever.
> I think it is.  Without it, the UA would have to open each source and 
> get its type via HTTP content-type, which is a lot slower, wouldn't it?  
> Is it clear that if the type is supplied in the markup, the UA can (and 
> probably will) use it for content selection, at least at the coarse 
> level, thus avoiding opening connections for files it knows (from the 
> type) it cannot support.

If we make the load() asynchronous and allow probing from the client 
(testing each potentially supported resource in turn), should we make the 
type optional, then?

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