DMApp Synchronisation
The DMApp Synchronisation solution in 2IMMERSE is a collection of services, protocols and components that enable DMApp components on devices participating in an experience to synchronise to a source of timing information representing the progress of the experience.
The temporal progress of the experience is represented by a timeline called the Synchronisation Timeline.
DMApp Synchronisation in 2IMMERSE seeks to support both intra-home synchronisation (also called interdevice synchronisation) and inter-home synchronisation. Our solution combines standardised mechanisms for synchronisation-in-the-home (such as DVB-CSS) with cloud-based services and proposes new protocols to achieve its distributed synchronisation offering.
Intra-Home Synchronisation
Companion devices synchronise their content playback to a master device e.g. a TV playing a broadcast or IP-delivered stream. All devices reside on the same network and each device instructed by the Timeline Service to load a DMApp Component to play a media object as part of the experience. The main screen (usually the TV, here we assume an HbbTV2.0 device) is instructed to play the master media stream i.e. a video stream representing the TV programme.
Interdevice synchronisation in the home is achieved using the HbbTV2.0 Media Synchronisation mechanism (HbbTV2.0 specifications can be found here).
In this particular context, the synchronisation timeline is the timeline of the master device’s content e.g. the timeline of a TV programme. Provided mappings from the Synchronisation timeline and the DMApp media objects’ timelines are available, the companion devices can synchronise their DMApp components to the master TV.
More details on the design of the intra-home synchronisation solution are available here.
Cloud Services
The Timeline Services causes DMappComponents to be loaded onto the TV and the companion device (via the Layout service). The WallClock Sync service uses a web-sockets-based protocol to establish a common time reference for the Timeline Service and the TV. This is required so that the TV can report the progress of the synchronisation timeline (main media object timeline on TV) to the Timeline Service. In this way, the Timeline Service is informed of the experience progress.
Services | Available implementations | Repository | Responsibility |
---|---|---|---|
WallClock Sync Service WC-Sync protocol | BBC - Rajiv | ||
Synchronisation Service | https://gitlab-ext.irt.de/2-immerse/cloud-sync | BBC - Rajiv | |
Timeline Service | https://gitlab-ext.irt.de/2-immerse/timeline-service | CWI - Jack |
TV APIs and Components
These are APIs for components and services made available to an HbbTV web App as JS libraries.
TV Components/APIs | Available Implementations | Repository | Responsibility |
---|---|---|---|
MediaSynchroniser API | DVB CSS "TV in a browser": dvbcsstv-lib JS library | https://gitlab-ext.irt.de/2-immerse/dvbcss-browser-proxy/blob/master/dvbcsstv-lib | BBC - Matt |
Device Discovery API | Fraunhofer Fokus node-hbbtv | https://gitlab-ext.irt.de/2-immerse/cordova-plugin-discovery | IRT- Michael/Christoph |
HbbTV Web App | BT - Jonathan CWI - Jack | ||
2IMMClient | Christoph’s JS scheduler | BT - Jonathan CWI - Jack | |
DMAppComponent | BT - Jonathan | ||
TimelineStatus (timeline.js) |
Companion APIs and Components
These are native and web-based components and APIs that will synchronise the playback of DMApp components based on timeline updates received from the TV via the DVB-CSS suite of protocols.
Companion Components/APIs | Available implementations | Repository | Responsibility |
---|---|---|---|
CSS-SyncKit Native Library (iOS, Android) | dvbcss-synckit-ios (BBC) dvbcss-synckit-android (IRT) | BBC - Rajiv IRT - Michael/Fabian | |
Simple CSS-SyncKit JS API | ios-sync.js (BBC) | BBC - Rajiv IRT - Michael/Fabian | |
CSS-SyncKit JS API (synckit.js) (CSASynchroniser, SyncController JS objects) | BBC - Rajiv IRT - Michael/Fabian | ||
Native Media Players JS API | iOS, Android AVPlayer, dvbcss-synckit-ios audio player | ||
Device Discovery JS API | dvbcss-synckit-ios (BBC) cordova-plugin-discovery (IRT) | https://gitlab-ext.irt.de/2-immerse/cordova-plugin-discovery | IRT - Chistoph |
DMAppComponent MediaControl API | BT-Jonathan |
Inter-Home Synchronisation
In this scenario, devices at different locations synchronise their content playback as part of a distributed synchronised experience. The synchronisation timeline can be one of the following:
- the timeline of an elected master device,
The timeline used for synchronisation comes from a particular DMAppC component on a device e.g. a DMAppC component on a TV in Home1 playing a broadcast stream. This broadcast stream could provide a TEMI and a PTS timeline to be used for synchronisation.
- a timeline set by a central coordinator e.g. an experience timeline as set by the Timeline Service
More details on the design of the inter-home synchronisation solution are available here.
Cloud Services
The Timeline Service causes DMappComponents to be loaded onto the TV and the companion device (via the Layout service). The WallClock Sync service uses a web-sockets-based protocol to establish a common time reference for the Timeline Service and the TV. This is required so that the TV can report the progress of the synchronisation timeline (main media object timeline on TV) to the Timeline Service. In this way, the Timeline Service is informed of the experience progress.
Services | Available implementations | Repository | Responsibility |
---|---|---|---|
WallClock Sync Service WC-Sync protocol | BBC - Rajiv | ||
Synchronisation Service | pydvbcss: TS-Server (python), timeline clocks in python dvbcss-clocks: timeline clocks in JS | https://gitlab-ext.irt.de/2-immerse/cloud-sync https://gitlab-ext.irt.de/2-immerse/dvbcss-clocks | BBC - Rajiv / Matt |
Timeline Service (TS-MasterClient, WC-Client) | https://gitlab-ext.irt.de/2-immerse/timeline-service | CWI - Jack WC-Client - BBC - Matt |
TV APIs and Components
These are APIs for components and services made available to an HbbTV web App as JS libraries.
TV Components/APIs | Available Implementations | Repository | Responsibility |
---|---|---|---|
SyncKitClient - synckit.js (JS timeline clocks, wallclock sync client, TS-sync client, sync controller) | dvbcss-clocks TS-Sync client | https://gitlab-ext.irt.de/2-immerse/dvbcss-clocks | BBC - Rajiv, Matt |
2IMMClient | Christoph’s JS scheduler | BT - Jonathan CWI - Jack | |
DMAppComponent | BT - Jonathan |
Companion APIs and Components
These are native and web-based components and APIs that will synchronise the playback of DMApp components based on timeline updates received from the TV via the DVB-CSS suite of protocols.
Companion Components/APIs | Available implementations | Repository | Responsibility |
---|---|---|---|
CSS-SyncKit Native Library (iOS, Android) | dvbcss-synckit-ios (BBC) dvbcss-synckit-android (IRT) | BBC - Rajiv IRT - Michael/Fabian | |
Simple CSS-SyncKit JS API | ios-sync.js (BBC) | BBC - Rajiv IRT - Michael/Fabian | |
CSS-SyncKit JS API (synckit.js) (CSASynchroniser, SyncController JS objects) | BBC - Rajiv IRT - Michael/Fabian | ||
Native Media Players JS API | iOS, Android AVPlayer, dvbcss-synckit-ios audio player | ||
Device Discovery JS API | dvbcss-synckit-ios (BBC) cordova-plugin-discovery (IRT) | https://gitlab-ext.irt.de/2-immerse/cordova-plugin-discovery | IRT - Chistoph |
DMAppComponent MediaControl API | BT-Jonathan |
dump
The receiver of this message is expected to dump (part of) its internal state to its logging output, for debugging purposes.
- Publisher: debugging tools
- Subscriber: all
Example:
{ "message" : "dump" ,
"what" : "random string that may influence what is dumped",
};