[MSE] Define how presentation duration is set & updated

Hi,

I wanted to start a discussion about Bug
17071<https://www.w3.org/Bugs/Public/show_bug.cgi?id=17071> which
talks about how to establish the presentation duration. Here is the gist of
the proposal.

1. Add a duration attribute to the MediaSource object
partial interface MediaSource {
  attribute unrestricted double duration
};

2. duration is NaN while MediaSource.readyState == "closed"

3. If duration is NaN and an initialization segment with a duration is
appended, then duration becomes the value contained in the initialization
segment.

4. When MediaSource.readyState == "open", duration can be set anytime  by
the web application with a value > 0 or positive Infinity. Using other
values will be ignored and trigger an exception.

5. If duration is set to a value less than what is buffered in the
MediaSource.sourceBuffers, then all data beyond the duration will be
removed from each SourceBuffer.

6. HTMLMediaElement.readyState can't transition to HAVE_METADATA until
duration becomes something other than NaN.

I think all of the above should be pretty uncontroversial, but I have a few
questions.

- What should happen if a media segment is appended that starts before the
duration and ends past the duration? Should the duration be updated or
should the segment be truncated?

- What should happen if the entire media segment is beyond the duration?

- What should happen if a new duration is set and
HTMLMediaElement.currentTime is beyond that? Should this act like a seek to
duration?

Please let me know what you think and whether I have missed any key
scenarios.

Thanks,
Aaron

Received on Thursday, 12 July 2012 20:29:08 UTC