The Video over DDS Application (VoDA) is a software which allows real-time video data to be transmitted using the Data Distribution Services (DDS) middleware. Using DDS as a communication mechanism, allows the video data to be transmitted in a data-centric manner 1 with all the functionalities and advantages of the DDS Quality of Service (QoS) specifications. In particular, our software is implemented with cross-platform libraries, therefore, the same source code is used to generate the binaries running both on Windows machines and ARM computers running Linux.
On the video below, you can see a demonstration of the software capabilities by our software developer Stefan Kimmer.
The source code can be found on Bitbucket:
To implement this software we have used the following libraries, which are available for download for Windows and we have cross-compiled from the source for the Linux Debian distribution running on our ARM computers:
As shown on the demonstration, video data can be transmitted and received both on Windows and Linux computers. Even though the same source code is used to create the applications on both platforms, some technical details need to be taken into account to ensure maximum performance, in particular regarding the video encoder and decoder and the rendering system.
Windows implementation details
On Windows, the OpenH264 codecs are used to encode and decode the video data into H.264 format. When running the VoDA Publisher on Windows, a widget, which shows the video as it is being published, is shown. The same widget is used by the VoDA Subscriber to show the video data received from the publisher.
Linux ARM implementation details
The publisher and subscribers shown in the video demonstration are running on a Raspberry Pi 2 computer running a minimal Debian distribution without windowing system. To render the video data from the subscriber, the Qt application is configured to use the EGL-FS platform which allows rendering OpenGL content on a windowless system. The same widget that runs on Windows is also used on Linux by using the Qt unified OpenGL interface. For the ARM computers, the performance of the standard H.264 codecs are not good enough for real-time video streaming. For this purpose, the OpenMax hardware encoder and decoder are used instead for maximum performance. To enable them, these have also been cross-compiled together with the remaining of the GStreamer library.
Further info and contact
If you want to know more or if you have an application in which you would like to integrate this software package or some of its concepts, our company can support you with it. Contact us using the contact form or by email at firstname.lastname@example.org
- If you are not yet familiar with data-centric communication, we recommend reading some of the OMG whitepapers, such as this one.