Intra-Home Media Synchronisation Design
This page describes the interactions between services and components to enable frame-accurate inter-device synchronisation in the home.
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
Services | Description | Available implementations | Repository | Responsibility |
---|---|---|---|---|
WallClock Sync Service WC-Sync protocol | A protocol to perform Time Synchronisation | BBC - Rajiv | ||
Synchronisation Service | A service that enables the wallclock sync | 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 | Description | Available Implementations | Repository | Responsibility |
---|---|---|---|---|
MediaSynchroniser API | A MediaSynchroniser JS singleton that allows the TV app to use DVB-CSS TV sync functionality | 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 | DIAL discovery server | Fraunhofer Fokus node-hbbtv | https://gitlab-ext.irt.de/2-immerse/cordova-plugin-discovery | IRT- Michael/Christoph |
HbbTV Web App | an app that runs in an HbbTV browser envrionment | BT - Jonathan CWI - Jack | ||
2IMMClient | A component that performs layout changes, (un)loads DMApp components and schedules media playback. | Christoph’s JS scheduler | BT - Jonathan CWI - Jack | |
DMAppComponent | BT - Jonathan | |||
TimelineStatus (timeline.js) | a simple component to report the TV timeline progress (wc time, media time) as a tuple to the Timeline Service |
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 | Description | Available implementations | Repository | Responsibility |
---|---|---|---|---|
CSS-SyncKit Native Library (iOS, Android) | A native library that performs WallClock sync and timeline sync with a DVB-CSS TV | dvbcss-synckit-ios (BBC) dvbcss-synckit-android (IRT) | BBC - Rajiv IRT - Michael/Fabian | |
Simple CSS-SyncKit JS API | A basic API to allow an object to register for TV timeline updates | ios-sync.js (BBC) | BBC - Rajiv IRT - Michael/Fabian | |
CSS-SyncKit JS API (synckit.js) (CSASynchroniser, SyncController JS objects) | An API that allows a sync controller object to be created and plugged into DMAppComponents for synchronisation with a DVB-CSS TV | BBC - Rajiv IRT - Michael/Fabian | ||
Native Media Players JS API | API to load and control native media players from JS | iOS, Android AVPlayer, dvbcss-synckit-ios audio player | ||
Device Discovery JS API | API to discover HbbTV devices | dvbcss-synckit-ios (BBC) cordova-plugin-discovery (IRT) | https://gitlab-ext.irt.de/2-immerse/cordova-plugin-discovery | IRT - Chistoph |
DMAppComponent MediaControl API | API to control the playback of media in a DMAppComponent | BT-Jonathan |