In contrast to a lot of other users we were never interested to turn the mini computer (Raspberry Pi) into a full-blown media center. What we had in mind was to create a simple but nevertheless elegant TV player capable of processing both MPEG2-based and H.264-based media. Therefore, we first had to activate the MPEG2 hardware decoding in the store. After this step was done, all hardware requirements were met.
For the initial prototype the Technisat SkyStar USB device is used. We have chosen the device because of the HD-capability and the fact of the seamless Linux integration. The card has been successfully tested on the mini computer and except for some artificats in the H.264 playback we did not encounter any problems. Other supported cards should also work but we do not have any user feedback yet.
The next step was an inventory control. Since only the omxplayer is capable of GPU decoding media data, we had to find a way to pipe the raw MPEG stream from the DVB device directly into the program. To simplify data handling, and to avoid stdin/stdout issues, we created a FIFO with ‘mkfifo’. The next step was to actually receive the DVB-S data. We used the gnutv application from the dvb-apps package because it is simple and it supports DVB-S2 out of the box.
This procedure may seem unnecessarily complex but because traditional media applications with DVB support cannot be used because of the missing GPU acceleration, it is absolutely necessary to use omxplayer for now. And because the player does not support to receive media from DVB directly, a second program is required to receive the actual data and to pass it to the player.
To sum it up, we do something like 'gnutv -out file /tmp/my-dvbs-fifo CHANNEL'; omxplayer /tmp/my-dvbs-fifo to display the media. On a side note we would like to add that no X is required for this approach. The omxplayer works fine on the console and the same applies for the sound device. Thus, we can use the very limited memory for caching and other tasks.
The drawback of the console-only environment is that there is none or a very limited mouse support. But we do not believe this is a real problem, because the DVB device comes with an IR receiver that is supported by the Kernel and this allows us to control the prototype directly, for instance to switch channels or to adjust the sound volume.
As a final remark, the prototype is not ready yet. We are not even sure if the elicitation of requirements is done. In any case there still are a lot open challenges we have to work on, a lot of code to write and a lot of coffee to drink. We are currently working on a first release but it will definitely take some time until it is ready for a public beta test.
The intention of this blog is to report about the progress we made, insights we gained and to discuss (new) ideas with other people.