DMApp Synchronisation

 In
Wikis > 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.

ServicesAvailable implementationsRepositoryResponsibility
WallClock Sync Service
WC-Sync protocol
BBC - Rajiv
Synchronisation Servicehttps://gitlab-ext.irt.de/2-immerse/cloud-syncBBC - Rajiv
Timeline Service https://gitlab-ext.irt.de/2-immerse/timeline-serviceCWI - Jack

TV APIs and Components

These are APIs for components and services made available to an HbbTV web App as JS libraries.

TV Components/APIsAvailable ImplementationsRepositoryResponsibility
MediaSynchroniser APIDVB CSS "TV in a browser": dvbcsstv-lib JS libraryhttps://gitlab-ext.irt.de/2-immerse/dvbcss-browser-proxy/blob/master/dvbcsstv-libBBC - Matt
Device Discovery APIFraunhofer Fokus node-hbbtvhttps://gitlab-ext.irt.de/2-immerse/cordova-plugin-discoveryIRT- Michael/Christoph
HbbTV Web AppBT - Jonathan
CWI - Jack
2IMMClientChristoph’s JS schedulerBT - Jonathan
CWI - Jack
DMAppComponentBT - 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/APIsAvailable implementationsRepositoryResponsibility
CSS-SyncKit Native Library (iOS, Android)dvbcss-synckit-ios (BBC)
dvbcss-synckit-android (IRT)
BBC - Rajiv
IRT - Michael/Fabian
Simple CSS-SyncKit JS APIios-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 APIiOS, Android AVPlayer, dvbcss-synckit-ios audio player
Device Discovery JS APIdvbcss-synckit-ios (BBC)
cordova-plugin-discovery (IRT)
https://gitlab-ext.irt.de/2-immerse/cordova-plugin-discoveryIRT - Chistoph
DMAppComponent MediaControl APIBT-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:

    1. 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.

  1.  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.

ServicesAvailable implementationsRepositoryResponsibility
WallClock Sync Service
WC-Sync protocol
BBC - Rajiv
Synchronisation Servicepydvbcss: 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-serviceCWI - 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/APIsAvailable ImplementationsRepositoryResponsibility
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-clocksBBC - Rajiv, Matt
2IMMClientChristoph’s JS schedulerBT - Jonathan
CWI - Jack
DMAppComponentBT - 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/APIsAvailable implementationsRepositoryResponsibility
CSS-SyncKit Native Library (iOS, Android)dvbcss-synckit-ios (BBC)
dvbcss-synckit-android (IRT)
BBC - Rajiv
IRT - Michael/Fabian
Simple CSS-SyncKit JS APIios-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 APIiOS, Android AVPlayer, dvbcss-synckit-ios audio player
Device Discovery JS APIdvbcss-synckit-ios (BBC)
cordova-plugin-discovery (IRT)
https://gitlab-ext.irt.de/2-immerse/cordova-plugin-discoveryIRT - Chistoph
DMAppComponent MediaControl APIBT-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",
};

Recent Posts
Contact Us

We're not around right now. But you can send us an email and we'll get back to you, asap.

Not readable? Change text. captcha txt

Start typing and press Enter to search