Proposal to update the spec

Hi Multi-Device Timing CG,

Right now, the Timing Object specification is clear, elegant and simple 
but also single-device and not connected to existing elements in HTML5. 
This makes it hard to evaluate its "full potential", especially when 
talking to external people.

I have been thinking on ways to update the spec to:

1. specify how a timing object can be associated with an online timing 
resource, to fulfill the multi-device promise
2. specify how a timing object may control a media element for 
cross-device synchronized video playback
3. specify how a timing object may control TextTrack objects to create a 
Sequencer

Here is what I have in mind. I plan to propose spec prose along these 
lines. The result will not be perfect. I left some details out below on 
purpose but even with details in, I expect many open questions to 
remain. However, having some text in place along these lines would allow 
to reach out to potential implementers and gather feedback.

What do you think?


1. Association with an online timing resource
==========
It seems important to leave some freedom for timing providers to control 
the communication and messaging protocols used to interact with the 
online timing service. What this means to me is that there needs to be a 
way to plug an object provided by the timing provider into a timing object.

I propose to:
- define a TimingProvider interface that timing providers would need to 
implement.
- add a "timing provider" product to the conformance section since the 
above interface would not be implemented by user agents.
- add an "srcObject" attribute to the Timing Object interface which, on 
setting, would associate the timing object with the TimingProvider object.
- adjust the algorithms accordingly

Note a user agent may could provide a native implementation of 
TimingProvider objects. This would be required to support existing 
protocols that are not exposed to Web pages, such as the UDP-based 
communication protocol used in DVB TM-CSS for clock synchronization.


2. How to bind a media element to a timing object
==========
 From a media element perspective, a timing object looks like a Media 
Controller with one notable exception: a media element cannot pause a 
timing object when data buffer runs out.

Here, I propose to:
- extend the MediaElement interface to add a new attribute named 
"timing" that would associate it with a timing object.
- reference appropriate algorithms, clarifying for instance that the 
"position" of the timing object becomes the "associated clock" of the 
"media timeline" in the generic case.
- note the need for the user agent to keep up with the position of the 
timing object no matter what, even if that means skipping several seconds.


3. Sequencer
==========
With TextTracks, HTML5 already has a Sequencer in place to some extent. 
The main restriction is that TextTracks are bound to a media element and 
we don't want that restriction.

Instead of creating a dedicated Sequencer interface, I propose to:
- add an "addTextTrack" method to the TimingObject interface
- explain that a TimingObject must run the "time marches on" algorithm 
(or a slightly updated version of it) when it is moving, as defined in 
HTML5.

Reusing TextTracks may not be as beautiful as having a nice Sequencer 
interface but that should be enough to enable the required functionality 
and would require very limited updates to the spec.


Thanks,
Francois.

Received on Tuesday, 7 July 2015 15:26:32 UTC