Today we performed a first full smoke test on the prototype. The easy part was to playback recorded MPEG media files in TS or PS format. Easy, because there is usually not much jitter when you read data from a fixed drive (hard disk, flash, …). And as expected, the prototype performed very well on this test. We did not encounter any problems, neither video nor audio issues.
The more challenging part was to playback MPEG data which arrives at the DVB device and is then handed over to our (user space) process. We had to tweak the size of the cache and the block size to get rid of underflow problems that occurred occasionally. With the new settings, and some minor changes to the multi-threading code, we were able to watch TV without any audio static or picture artifacts. However, with the simple approach we had chosen, the audio and video drifted out of sync after a short while, but this can be easily fixed by adjusting the existing approach and the help of the timestamps in the MPEG data itself.
To sum up the situation, except for the ‘lip sync’ issue the prototype only needs some polishing, minor cleanups and more in-depth testing. As soon as the last issue is fixed, we plan to make the source code public to get some feedback from others. We are especially interested in feedback from users with different devices and configurations, for instance DVB-T or DVB-C.