Developing the DVB-I reference client: an unexpectedly adventurous journey

There was a lot of excitement in the air when we received the news that we had been chosen to deliver the DVB-I reference client. The contract was signed on 6 January 2020 and the work began. The project was divided into two phases: Phase 1 covered the most basic and essential use cases and Phase 2 was about packaging some more ‘nice-tohave’ features together.

Open source

The project is hosted on a public GitHub server registered by the DVB Project. The first commit to the repository was made on 20 January after the first two-week sprint. The initial delivery deadline for Phase 1 was already on 31 January, with the final Phase 1 delivery scheduled for 28 February – a particularly challenging timeline. Because of this, we decided to recycle some of our existing codebase for the HbbTV implementation, modifying it enough so that it could be released with the open-source MIT licence to GitHub, as requested by DVB. For the Android implementation everything was coded from scratch.

The first phase was successfully delivered on 28 February, complete with the service list editor (backend), grid-based EPG, channel selection, and stream playout. It was finalized, after a few corrections, on 11 March. We had to be careful not to design a client that was too good looking: as the chair of the Technical Module, Jon Piesing, had remarked, “DVB is not paying for user interface design!”

Around this time the COVID-19 situation had worsened, and the planned DVB World conference was cancelled. It was to have been the first public demonstration of the DVB-I reference client. Instead, we settled on bringing the planned DVB masterclass sessions online, showcasing the DVB-I reference client project in a webinar on 1 April. (See: dvb.org/webinars)

The subsequent cancellation of the IBC exhibition and various related difficulties led to the original delivery schedule for Phase 2, with its myriad of small and bigger features, slipping. After quite a bit of struggle, and with weekly calls with the DVB experts Jon Piesing, Paul Higgs and Emily Dubs, the final version was delivered at the end of the year.

Improving the spec

During the first phase of the project our focus was clear: the feature list consisted of the absolute essentials of a DVB-I client, namely the channel list, the EPG, the info banner and the player. In addition to this, the backend service list editor was developed to help us to understand the Service Discovery and Programme Metadata for DVB-I specification (then published as BlueBook A177) and its implications for the client. However, the second phase was more about handling many small but useful features and thus a feature tracker was applied. It was surprisingly time-consuming to complete everything and during the work we found elements of the specification that were unclear or not fully fleshed-out – which was exactly the original intention of the project. It was also a great privilege to participate in the regular calls of the DVB TM-I group during the project, to assist in getting the specification in even better shape and seeing everything come together, including the low-latency streaming effort together with FFmpeg.

The GitHub repository and our example hosted implementation will remain available for the foreseeable future. We can see that there is a lot of interest – more than ten different forks have been made by interested parties studying the code and UI. DVB-I is in a very strong position to gain worldwide implementation and we hope that the reference client developed by Sofia Digital remains helpful in fulfilling that potential.

Juha Joki has many years’ experience in DVB and HbbTV technologies. Currently he is in charge of DVB broadcast products and testing and certification services for DVB and HbbTV at Sofia Digital.

This article is originally published in DVB Scene #57 and reproduced with permission.