TV Control/Protocol Mappings

From W3C Wiki

This page is intended for the Working Group to develop mappings between the TV Control API and the various TV and radio broadcast systems it could support. See issue #10 on GitHub.

The HTML specification references Sourcing In-band Media Resource Tracks from Media Containers into HTML. Should we aim to update this specification, reference it, or create separate document(s)?

References

DVB

  • OIPF DAE V2.3 Section 8.4 includes mappings of the DAE API to DVB SI
  • This page contains links to the DVB ETSI standards (click the Standards tab).

Tracks (Video, Audio, Subtitles)

Sourcing In-band Media Resource Tracks from Media Containers into HTML for MPEG2TS

The definitions for track@id looks ambigious, i.e. the first paragraph says it is the PID, the last suggests it is a string that looks a bit like a DVB URL, but doesn't have a protocol and uses decimals instead of hex representations (though that is not explicitly defined).

TV Channel

Property Description DVB SI source Comments
DOMString networkId (should not be the type number?) https://www.w3.org/2015/tvapi/Overview.html#widl-TVChannel-networkId value of the network_id field in NIT Actual as a decimal representation

From OIPF DAE:

  • If during the terminal configuration process, a network_id value was selected (either explicitly or implicitly) and the NIT subtable with that network_id value was used by the terminal to discover the correct delivery system descriptor of this channel, then the value of this property shall be that network_id value.
  • Otherwise, if there is exactly one NIT 'actual' subtable in the Transport Stream that is carrying the channel then the value of this property shall be the network_id in that subtable. Terminals are not required to update the value if it changes dynamically in the broadcast Transport Stream.
  • Otherwise the value shall be undefined.
DOMString originalNetworkId (should not the type be number?) https://www.w3.org/2015/tvapi/Overview.html#widl-TVChannel-originalNetworkId value of the original_network_id field in the current SDT Actual as a decimal representation
DOMString transportStreamId (should not the type be number?) https://www.w3.org/2015/tvapi/Overview.html#widl-TVChannel-transportStreamId value of transport_stream_id field in the current SDT Actual as a decimal representation
DOMString serviceId (should not the type be number?) https://www.w3.org/2015/tvapi/Overview.html#widl-TVChannel-serviceId value of the service_id field from the service loop in the current SDT Actual as a decimal representation
TVChannelType type https://www.w3.org/2015/tvapi/Overview.html#widl-TVChannel-type TODO
DOMString name https://www.w3.org/2015/tvapi/Overview.html#widl-TVChannel-name value of the service_name field of the service_descriptor in the service loop of current SDT Actual as a decimal representation
DOMString number https://www.w3.org/2015/tvapi/Overview.html#widl-TVChannel-number TODO
boolean isEmergency https://www.w3.org/2015/tvapi/Overview.html#widl-TVChannel-isEmergency TODO
boolean isFree https://www.w3.org/2015/tvapi/Overview.html#widl-TVChannel-isFree TODO
DOM String casSystemId https://www.w3.org/2015/tvapi/Overview.html#widl-TVChannel-casSystemId
boolean isParentalLocked https://www.w3.org/2015/tvapi/Overview.html#widl-TVChannel-isParentalLocked
sequence<TVProgram> getPrograms() https://www.w3.org/2015/tvapi/Overview.html#widl-TVChannel-getPrograms-Promise-sequence-TVProgram---TVGetProgramsOptions-options EIT schedule Actual
TVProgram getCurrentProgram() https://www.w3.org/2015/tvapi/Overview.html#widl-TVChannel-getCurrentProgram-Promise-TVProgram EIT p/f Actual Should be a sequence of two Program objects.

TVProgram

TV Trigger

This should include a description how DSMCC stream events can be mapped to the TriggerCue. See also issue on github whether the current definition of the TVTriggerCue is suitable for stream events.

Creating TV Trigger for DSMCC stream events

A client (user agent) can detect stream event components carried in a DVB service. However, APIs in DVB MHP and HbbTV use a different approach by referencing stream events from a Stream Event Object. Such an object can be carried on a DSMCC Object Carousel but in case of HbbTV it can also be put on a web server.

The stream event object is identified by a URL, which can be someting like

  • dvb://onid.tsid.sid.ct/path
  • http(s)://myserver.org/path/file.xml

The object contains mappings of event names to ids, and the tag of a service component carrying stream event descriptors (the actual triggers)

An application can add a TVTriggerCue for stream events by adding a track element to a media element that is rendering a TVSource

e.g. <track kind=metadata src="http://myserver.org/path/file.xml" label="eventName">

If the stream event object could be loaded successfully and the stream event component is signalled on the current service the readyState of the HTMLTrackElement shall be LOADED, ERROR otherwise.

Attributes of the track element

  • kind: metadata (could also be something new like stream event or tvtrigger)
  • src: URL of stream event object
  • label: an event name
  • other attributes can be ignored

TextTrack.oncuechange

TextTrackCues rely on start and end times, they are active when the media time is between start and end.

DSMCC do-it-now stream events don't have a precise start time and DSMCC stream events have no end time in general.

A solution could be that, when a stream event is received an oncuechange event is triggered and while the event is executed the activecue list of the TextTrack includes a (single) stream event as a TVTriggerCue.

TVTriggerCue properties

TVRecording

DAB

This page contains links to the DAB ETSI standards (click the Standards tab).

Digital Radio Mondiale (DRM)

This page contains links to the DRM ETSI standards (click the Standards tab).