revisit the change from #id to #chapter addressing

Hi all,

I'd like us to revisit the change of the named dimension addressing
from #id to #chapter.

I'm saying this on the background of how HTML5 has been specified for
text tracks.

With the named dimension, we need a way to resolve it to time ranges
(and thus ultimately to byte ranges).

This can be done in two ways: either by a server or by a UA. Let me
first focus on the server.

How the server resolves it to time ranges (or even directly to byte
ranges) is now described in
http://www.w3.org/2008/WebVideo/Fragments/WD-media-fragments-spec/#server-triggered-redirect
, given that the server has this mapping.

One way for the server to get this mapping is by having a a chapter
track inside the media resource. A chapter track basically consists of
the following information:

{chapter1 name} -> {starttime, endtime}
{chapter2 name} -> {starttime, endtime}
{chapter3 name} -> {starttime, endtime}

So, this can be easily used to resolve from a chapter name to
[starttime, endtime] and from there to [start-byte,end-byte].


Now, let me look at how a UA could resolve it.

I am looking at one special kind of UA for now: I am assuming that the
UA is a HTML5 browser and we're loading the URL into a video element.
This does not restrict the general usage of the named dimension
fragments to HTML5 UAs, but it explains how HTML5 UAs would deal with
this.

A UA might have a URI as follows in a video element:
http://example.com/video.ogv#id=cue2 .

As part of loading that resource, let's say the UA would also load a
subtitle track from a WebVTT resource (it could also be from an
in-band track, though the cues of an in-band track only become
available successively and not at the start).

The WebVTT resource may look as follows:

===
WEBVTT

cue1
00:00:00.000 --> 00:00:05.000
This is cue 1

cue2
00:00:05.000 --> 00:00:010.000
This is cue 2

cue3
00:00:10.000 --> 00:00:15.000
This is cue 3
==

This resource would be loaded by the UA and parsed into a
TextTrackCueList (see
http://www.whatwg.org/specs/web-apps/current-work/multipage/the-iframe-element.html#texttrackcuelist).

Thus it will be available as something like:
TextTrackCueList {
  length: 3,
  TextTrackCue(0) {
    id: cue1,
    startTime: 00:00:00.000,
    endTime: 00:00:05.000,
    ...
    getCueAsSource(): "This is cue 1";
    },
  TextTrackCue(1) {
    id: cue2,
    startTime: 00:00:05.000,
    endTime: 00:00:10.000,
    ...
    getCueAsSource(): "This is cue 2";
    },
  TextTrackCue(2) {
    id: cue3,
    startTime: 00:00:10.000,
    endTime: 00:00:15.000,
    ...
    getCueAsSource(): "This is cue 3";
    },
}

with an addressing function in TextTrackCueList of getCueById(name).

We can thus resolve the URL http://example.com/video.ogv#id=cue2  in
the UA through getCueById('cue2') to the time range 00:00:05.000 -->
00:00:010.000 and thus execute the equivalent of
http://example.com/video.ogv#t=5,10 .

Now to the problem that I have with naming the dimension "#chapter":
in HTML5 we have the following types of tracks: subtitles, captions,
chapters, descriptions and metadata. All of these dimensions can be
filled from a WebVTT file in the above described manner.

Thus, we could have a video element with a subtitle track where we
would address cue2 through http://example.com/video.ogv#chapter=cue2 .

I think this is very confusing.

Davy suggested during today's meeting to maybe rename the dimension to
#cue to make it generic. I'd be happy with that or #id or something
else neutral. I just think we should avoid confusion by using
something specific like #subitlte, #caption, #chapter, or
#description.

Cheers,
Silvia.

Received on Wednesday, 8 June 2011 10:09:15 UTC