The Linux4.TV Set-Top Box Open Source Project
The top layer includes all applications software as well as Century's WebMedia, which provides the user interface for the set-top box. WebMedia allows the user interface to be created entirely in HTML, utilizing plugin modules to interface from HTML to the Video Middleware subsystem. The graphical interface is created by providing an HTML representation of the desired display using images combined with an included script to call a plugin module on associated events. Included in WebMedia is an integrated web browser, allowing easy internet access by the set-top box user. A screenshot showing a sample user interface is shown in Figure 4.
WebMedia is a modified version of the ViewML internet browser and uses the FLTK widget set, which allows it to be portable on Microwindows and the X Window System. Because the Video Middleware is separated from the graphical windowing system, it is relatively easy to switch windowing systems. Integrating another browser with the system is straightforward, using the extension mechanism described below.
The entire user interface for the set-top box is written in HTML, which includes both the full-screen viewing and menu-button operations. This allows the set-top box look and feel to be customized easily. Two mechanisms are used to integrate video into the display. The first mechanism involves an extension to the HTML Anchor feature, which allows a specified WebMedia plugin to execute using parameters contained in the anchor tag. For instance, the following HTML causes the DVD plugin to execute a rewind request:
<a exec=/bin/wmcmd,dvd,rew><img src=images/rewind.gif>
When remote-control arrow keys are pressed, WebMedia outlines successive images associated with anchor tags, allowing the remote control to be used as a pointing device. The prebuilt WebMedia DVD plugin will execute when the remote control is used to select the rewind.gif image. The prebuilt plugins call the Video Middleware API to control the STB hardware functions. Other commands are used to position and scale the video. The second mechanism maps a video stream to the display screen, using the overlay API. A special RGB color is displayed normally on the screen using an HTML image, and color keying is used to merge the video data with the framebuffer contents. This is performed in real time directly by the Geode SC1200 CPU.
In normal operation, the Linux4.TV set-top box runs WebMedia as the controlling application, with HTML specifying a variety of plugins to control the video system integration and user interface. In this manner, the set-top box user interface and total system operation are easily customized for a variety of applications.
When not at the office detailing plans for building new-age PDA applications technologies, Greg Haerr sits at home in front of his terminal enhancing Microwindows. Greg is CEO of Century Software and the chief maintainer of the Microwindows Project. He can be reached at firstname.lastname@example.org.