To use set-top boxes to enhance the capabilities of your TV set is nothing new. It is used by pay TV services, but there are also other solutions, especially streaming boxes. And because there are already very good and powerful mini-PCs, there is no need to build your own box from scratch.
As a proof-of-concept, we assembled our own media box that consists of a AMD E-350, a 120 GB solid-state disk, a DVB-S2 tuner card (USB) and 2 gig RAM. The GPU is a Radeon 6310 that allows to use H.264 acceleration. The system is not very powerful, but meets all our requirements and still has some capacity left for further services. We decided to use Linux Mint since it is lightweight and the kernel version suffices to enable H.264 acceleration.
The core service consists of a MongoDB for storage and a python GTK user interface. In its alpha state, the software provides filters for the TV program. The filters are encapsulated in dialogs. For instance, there is one dialog for all shows that are on air right now, dialog that only shows movies/series, a dialog to search for shows and of course a dialog that lists all recommendations based on the preferences elicited of the user so far.
Since the CPU is not very powerful, an efficient back-end is essential to provide a responsive user interface. That includes to use indexes for individual collections, caching for frequently used values, but also back-ground services that do housework if the system is idle.
The installation and setup was painless, but the performance was very disappointing which is strange since we used the software on a comparable mini-PC without any problems. A quick analysis showed that the bottleneck was the Mongo driver. Instead of migrating to Mongo 3.x, we updated the pymongo package first and actually, the new version fixed the performance problem.
Now, it’s time to use the box for some time, to let the system learn our preferences and finally, to recommend movies and shows to us that we hopefully will enjoy.