Posted by Jerry Kramskoy on , last updated
We are releasing an open source project for measuring the accuracy of synchronisation of TVs and companion devices (such as a mobile phone or tablet) that use the DVB protocols for companion synchronisation.
Getting the timing right
Previously we talked about the DVB synchronisation protocols, and our open source library implementing them.Since then, it has been announced that the HbbTV 2.0 specification references these protocols.
Being able to speak the DVB synchronisation protocols is only part of the story. A TV or companion must also ensure it uses the information conveyed over the protocols to show the right frame of video or audio at the right time.
The DVB companion screens and streams specification says that what matters is the time at which the light and sound is actually emitted from display and speakers of the TV or companion. This always happens slightly later than when the software or hardware finishes rendering the frame of video or creating the samples of audio. To achieve frame accurate synchronisation, both the TV and companion need calibration to take account of these delays.
Calibration requires precise measurement of when the light and sound are emitted. A tool that can make such measurements is also a useful part of a test suite that can check if a TV or companion meets the DVB specification's requirements.
Taking these measurements is an interesting problem to solve. To do this we needed to build a timing measurement system and create a suitable video sequence to be played by the TV or companion that is being measured.
Our video test sequences contain beeps and flashes at particular times in the video. When the TV or companion plays the video, the beeps and flashes are detected using a light sensor and an audio input with millisecond accuracy.
PCs are not well suited to this particular measurement task. Input data from a sensor will go through many layers of software and hardware buffering on its way into a PC. This introduces delays that are variable and difficult to quantify. How then can we gather readings, but still have accurate knowledge of the exact time those readings were taken?
Our system solves this by using an external microcontroller board to make the measurements. This kind of device is ideal because software running on it can take immediate and direct readings from inputs (such as a light sensor or an audio signal) and to do so with precise timing behaviour. The measurements are then transferred to a PC.
The PC and microcontroller compare their clock readings both before and after the measurements are made. This tells the PC how to relate the clock times recorded by the microcontroller to the PC's own internal clock.
The other job for the PC is to use the protocols (using our pydvbcss library) to synchronise with the device being measured. The PC takes the role of either the TV or the Companion as appropriate. It uses the protocols but only pretends it is playing video or audio. As a result of this, the PC knows when the beeps and flashes should have happened and can compare this to what was measured.
The dvbcss-synctiming open source project
We want to share our tools for doing this, to help the industry as a whole with this kind of measurement and testing. Therefore, we are pleased to release our code and hardware designs as the dvbcss-synctiming project on GitHub.
This project builds upon pydvbcss (our open source implementation of the protocols) and like pydvbcss, we hope to use these tools for ourselves and continue to improve them.
The release includes the code and designs needed to create the measurement system and a tool to create the video test sequence that the TV or companion plays.
This post is part of the Broadcast and Connected Systems section