DVB-I Webinar Series
Part 3 of 3
6 April 2020
Introduction
Paul Higgs TM-I Chair - Huawei
DVB-C, DVB-T, DVB-S
Broadcast television services
HbbTV
Add interactive elements and
ondemand content to existing
broadcast services
DVB-IPTV
Television services delivered over
managed/private IP networks
DVB-I
Broadcast television services
delivered over the Internet
Road to DVB-I
A177 DVB-I Service Discovery and
Programme Information
The “internet channel scan” and EPG
A168 DVB-DASH with Low Latency
Media format for linear broadband
television services (On Demand also)
A176 Multicast ABR (DVB-mABR)
Efficient delivery of DVB DASH over IP
networks
A178 Targeted Advertising (DVB-
TA)
Personalizing advertisements for
television services
The ecosystem
DVB-I Concepts
Program
Info
Program
Info
Service
List
Service
List
(LL) CDN
Service Service Service Service
Service
List
Discovery
DVB-I
Client
DVB-I Client
Program
Info
Program
Info
Service
List
Service
List
(LL) CDN
Service Service Service Service
Service
List
Discovery
DVB-I
Client
Part 3: DVB-I Clients
Juha Joki - Sofia Digital
Tomi Sarparanta Sofia Digital
Background and purpose
Client architecture
Client functionality
HbbTV (Operator Application) and Android implementation
Backend
Additional information and lessons learned
Topics
Background and purpose
DVB-I Reference Client Background
Work started together with DVB in January 2020
First version was released end of January
“Phase 1”, a stable demo meant for DVB World was completed
early March. Work is now on-going for Phase 2, due to be
completed some time in May
Regular updates since, now at version 2.4
Android mobiles and tablets (7, 8, 9, 10 just try it!) and HbbTV
OpApp versions officially supported
Other possible target platforms could be (but not in scope this
time): androidTV, iOS, SmartTV platforms, or anything with DVB
DASH + javascript + HTML5
Includes a backend component to create and edit the
necessary metadata
Publicly hosted in DVB’s GitHub, licenced under MIT license
https://github.com/DVBproject/DVB-I-Reference-Client
Easily deployed anywhere with basic web skills
Based on the DVB-I Spec A177 Service Discovery and
Programme Information
The DVB-I reference client purpose is to verify the
A177 spec (service lists, content metadata,
regions, languages, and so on) can be used to
build an end-to-end solution
“DVB-I is the first major specification to benefit
from DVB’s new Verification and Validation activity
that aims at accelerating the implementation of its
technologies in the marketplace
At this point it is not exhaustive
It is a work in progress as is the specification
Many things are unfinished or not complete
Final version will be a reference client, not
something that is meant to be used as-is, but
perhaps providing building blocks and for and
confidence in commencing a commercial
product or ecosystem
Application scope and purpose
Work started with a simple backend component to generate
valid DVB-I Service lists and Guide data
Existing HbbTV OpApp service list browser and DASH player
component were adapted to use DVB-I metadata formats
Finally, Android Progressive Web Application was developed
utilizing the dash.js player (https://github.com/Dash-Industry-
Forum/dash.js/wiki)
Project development
Client architecture
All Service provider, service list and schedule parsing is
implemented in a common codebase used by the HbbTV and
Android clients
Reference client codebase is divided to common, android and hbbtv
directories
HbbTV implementation is divided to launcher (channel list) and epg
directories
Android implementation has everything in separate js-files in the js-
directory
XML is parsed to JavaScript objects
DVB-I Reference client architecture
Main functions of the DVB-I Reference client are divided to
three main javascript library files
common.js
Provides basic functions for date parsing, navigation, resource loading,
layout helpers, etc.
dvbi-common.js
Provides service list registry query and channel list query functions
channel-common.js
Provides TV-Anytime schedule parsing
DVB-I Reference client architecture
Service provider list URL is implemented inside the dvbi-
common.js
Service provider list parsing function is the
parseServiceListProvider in dvbi-common.js
GenerateServiceListQuery in dvbi-common.js
can be used to generate a filtered service provider query
Service provider list
Service list parsing is done in parseServiceList in dvbi-common.js
dvbChannels-parameter in the parseServiceList function should be a HbbTV
ChannelList object
ParseServiceList will try to match the DVB services in the DVB-I service list with
the ones that are found in the device channel list
Android client only lists services with a DASH source, HbbTV client list services with a
DASH source and those with DVB-T/S/C source that are listed in the device channel list
HbbTV client also lists DVB services that are not in the DVB-I service list
assigned a new LCN starting from 1000 (1000 + n) and are visually different from the services listed in
the DVB-I service list
This is purely a design decision the client can be modified to work differently, to filter out premium
services, or to filter our all services not present in the DVB-I service list etc.
Service List
Schedule information requests are always made for a single service
Schedule response parsing implementation is found in
parseSchedule in channel-commo n.js
Both now/next and schedule requests use the same response
schema
Current and next program can be requested with the
now_next=true parameter
Schedule can be requested with start and end parameters
Schedule information
Application workflow diagram
1. Application is loaded
2. Checking for pre-selected
service list is performed
3. Service list
selected/parsed
4. Main display is shown
5. User can select another
service list / open EPG /
select or tune to a DVB-
DASH or broadcast service
Sequence example
Client functionality
Service list browser
Accesses the Service list registry
server
A JS function travels through a pre-
defined master service list
Filters: regulatorlist, providername,
genre, target country, language
If there’s not a previous service list
selected, this screen is the initial
view of the operational application.
From this screen the service list is
selected
The selected service list is stored in
local (web)storage or as a fallback in
a cookie
Client basic functions (1/3)
DVB-I
Client
Service
List
Discovery
Service browser
Parses through the service list selected
in the service list browser
In Android, only DASH-services of the
selected service list are listed
In HbbTV, three types of services are
listed:
DVB-C/S/T services installed in the TV,
and listed in the DVB-I Service list
DVB DASH only services
DVB-C/S/T services installed in the TV
but not listed in the DVB-I service list
Allows the selections (tuning/starting)
the DVB / Live DVB DASH services
Both Android and HbbTV versions use
the same service list registry and service
lists
Service list includes Low Latency
sources as well from related projects
around DVB-I (ffmpeg/dashll)
Client basic functions (2/3)
Service
List A
Service
List B
DVB-I
Client
Service
List
Discovery
EPG
Content is based on the TV-Anytime specification
Broadcast and On-line Services Search, select and rightful use of content (“TV-Anytime”);
Part3:Metadata; Sub-part 1: Phase 1 Metadata schemas, ETSI TS 102 822-3-1 v1.11.2
(2019-06)
In HbbTV there’s a Grid-based traditional EPG, accessible with the green colour key
In Android there’s a list-based EPG, opened via a user interface element
Info banner
In HbbTV, the info banner is a traditional info banner displaying “Now/Next”
programming information from the TV-Anytime
In Android, the user interface overlay includes info banner information as well
Client basic functions (3/3)
HbbTV Operator app vs. Android app
Utilizes the Operator App APIs (Privileged)
Enables registering additional key events like P+/P-, INFO and GUIDE for Operator application use
Enables replacing some of the normal TV User interface
Additional channel list management
Many OpApp functionalities require agreement with the receiver manufacturer
Info banner / Channel list browser works in “transient” and background modes
Transient mode has OpApp visible for a limited time, fullscreen video is available, can be overlaid with native UI components
Background mode has the OpApp in invisible mode, listening for key events
EPG works in the “foreground” mode
Works in full-screen mode, broadcast video available only heavily scaled
Works also as a “normal” broadcast HbbTV v2 application, utilizing only normal key events like the color keys
Transport stream is provided for effortless testing
Navigation is always done with remote control key events
HTML5 video object based player
App relies on the native DASH player on the TV some limitations are bound to happen (i.e. the latest advancements from
dash.js player are not available)
HbbTV OpApp DVB-I Client
What is an OpApp?
Independent specification complementing HbbTV 2.0.1
Based on HTML5, CSS, Javascript
Accessed via selecting the OpApp like an HDMI input or a similar familiar access point and offers similar user controls like in a set-top box,
including:
Channel zapping (+/-)
Volume control (up/down)
DRM and Adaptive Bitrate Streaming (ABR)
UHD, HEVC, Next-gen audio, companion screens, etc.
Control of the broadcaster’s HbbTV applications
In short: takes over the regular manufacturer TV UI/UX
Example functionalities/ features
Live TV, both DVB and OTT
Interactive Program Guide
Operator defined channel lists
Mini TV-guide (i.e. overlay)
Catchup / VOD
OpApp Service discovery is based on country and region selection during First Time Installation
More information: https://www.hbbtv.org/wp-content/uploads/2017/12/HbbTV-SPEC-00200-003-Operator-Applications-Explained.pdf
HbbTV OpApp Client
HbbTV Service list provider selection
HbbTV Service list browser
HbbTV EPG
PWA-style implementation
Progressive Web App => offers a simple “installation” / Add to home screen functionality via a
manifest file
More information: https://en.wikipedia.org/wiki/Progressive_web_application
Lists the DVB DASH instances of services only
Should work on any Android client (Android 7, 8, 9 and 10 tested)
EPG is list-based instead of grid
Landscape mode only as an PWA app
dash.js player implementation
Uses the latest stable version (https://cdn.dashjs.org/latest/dash.all.min.js)
Low latency settings included
Android client
Android Service List provider selection
Android main screen with settings screens visible
Android EPG
Backend
PHP/JS application running on a web server
Service list registry, service lists and programme data (TV-A) are hosted in
GitHub instance and browsable in the Sofia Digital Backend server
Example.xml is the “hard-coded/write-protected” demo service list which can
investigated and copied
Service list creation and exporting is possible
TV-A data is hardcoded dummy data at the moment
Some sample data has been imported during the project, but proper TV-Anytime / EPG
sources are not part of this project
Backend can be easily installed to any web server with PHP and Javascript
support
Backend
XML can be easily
generated and
exported to
external apps /
websites
Service list
registry editor in
progress
Backend UI
HbbTV: https://stage.sofiadigital.fi/dvb/dvb-i-reference-
application/frontend/hbbtv/launcher/
Android: https://stage.sofiadigital.fi/dvb/dvb-i-reference-
application/frontend/android/player.html
Backend: https://stage.sofiadigital.fi/dvb/dvb-i-reference-
application/backend/
Live demos
Additional information and lessons
learned
All code is published under the DVB GitHub account’s DVB-I
Reference Client repository
Everything made for this project is licensed under MIT
Other components used have their own license models, obviously
These mean jquery and dash.js
Forking, commenting and contributing is welcomed
Live demo: https://github.com/DVBproject/DVB-I-Reference-
Client
GitHub repository
Parental controls
Subtitles
Audio switching
Language options / localization / regionalization
dash.js option / Low Latency settings for HbbTV as well
Series signalling
Service availability
SD/HD/UHD switching
Linked application for service playback
Live Pause
DRM option
Other UX enhancements
Phase 2 work still going on, in the order of
appearance
DVB-I is not rocket science, but can be implemented with well-known
internet and TV technologies
HTML5 and DASH are mature technologies working fairly well in recently released
consumer devices
Specification is easy to follow and understand
TV-Anytime is a complex beast, though
Building apps against it has proven to be a useful exercise in building an
app working in HbbTV and Android
DVB-I has proven to work with a lot of devices
Lots of interest from all around the world
Lessons learned
GitHub repository: https://github.com/DVBproject/DVB-I-Reference-Client
HbbTV Frontend https://stage.sofiadigital.fi/dvb/dvb-i-reference-
application/frontend/hbbtv/launcher/
Android PWA installer https://stage.sofiadigital.fi/dvb/dvb-i-reference-
application/frontend/android/
Android Player https://stage.sofiadigital.fi/dvb/dvb-i-reference-
application/frontend/android/player.html
Backend for Service list generation https://stage.sofiadigital.fi/dvb/dvb-i-reference-
application/backend/
TS file download https://cloud.sofiadigital.fi/index.php/s/qrB6MoFH5cPCDoN
Specification https://dvb.org/?standard=service-discovery-and-programme-metadata-
for-dvb-i-services
Sofia Digital www.sofiadigital.com
Links
End