XBMC, the open source media center, has steadily grown from its humble origins as an X-Box only replacement environment into the cross-platform, de facto playback front-end for multimedia content. It merges the file-centric approach taken by traditional video players with an add-on scripting environment that handles remote web content. The project is currently finalizing its next major release, version 11.0 (codenamed Eden), which includes updates to the networking and video acceleration subsystems, broader hardware support, and numerous changes to the APIs available to add-on developers.
Granted, there are plenty of other "media center" projects under active development at the moment, most of which also employ FFmpeg and can play back the majority of the same content types. Where XBMC differentiates itself, however, is with its auto-detection of critical settings and the deep integration it provides across its (wide) range of networking and content-delivery protocols. For example, XBMC auto-detects the presence of Universal Plug-and-Play (UPnP) servers and HDHomeRun tuner devices on the network, while too many other media centers require the user to come with the requisite connection details written down.
Similarly, we no longer live in a world where the bulk of our media content consists of local or LAN-available files. XBMC's add-on system permits developers to write site- or service-specific extensions that integrate commercial content creators' home-brewed Flash video delivery sites neatly into the overall interface. Other media center applications work at the task too, but over time the projects has earned itself a reputation for playing host to high-quality add-ons that stay current with changes rolled out on the sites themselves.
Starting with the last major release, 10.0, XBMC has hosted its own add-on repository, making such add-ons instantly installable from the main UI. The project wiki maintains a list of active add-ons, including those not found in the official repository, broken down by version compatibility and add-on type. It includes the site-specific content add-ons, plus many that add new functionality (games, torrent support, electronic program guides) and plug-ins to support new data sources (Icecast streams, MythTV servers, and fetching lyrics, cover images, and program metadata from around the web). There are a handful of commercial services that permit XBMC add-ons to use their APIs (such as Grooveshark), but if your interest is primarily in paid services, most of those companies take steps to make add-ons for XBMC and other open source media centers incompatible — even when they permit in-browser playback.
Speaking of add-ons, one of the most original ideas to debut in XMBC 11 is the ability to roll-back add-ons to a previous version. Clearly that feature is not expected to be used when the update to an add-on is designed to repair breakage with the package's screen-scraping capabilities, but it may prove popular with users when an add-on update makes a bad UI decision or implements a questionable new feature. Linux users may associate package rollback with risky options to forcibly downgrade packages, but XBMC add-ons are independent of each other. A closer comparison would be to Firefox and Thunderbird's add-ons, but they offer no such rollback mechanism.
XBMC's user interface is also one of its major selling points - both in its ease-of-use and its ease-of-configurability. The Eden release introduces a newly renovated default skin named "Confluence," which is the first default skin to use a horizontal main-menu layout. That decision wastes slightly less screen space, considering the popularity of 16:9 and 16:10 aspect ratios.
But a more practical feature is that users can now add any item they want to the home screen's menu — in previous releases, all add-ons were relegated to the "Programs" submenu, which is a hassle for heavy add-on users. Naturally, users can also remove menu items — which I did immediately to the "Weather" entry (whose prominent place on the home menu has always felt awkward). The new UI also sports multiple selections (when using a mouse), touch or gesture input (presumably for tablet users), and auto-login (for users running XBMC in a kiosk setting). Users can also search for installable add-ons by keyword from within XBMC itself, which is far faster than manually scrolling through screen after screen of available add-ons with a remote control.
The application attempts to present all of the available media resources in a particular category (photos, audio, or video) together in one place, regardless of origin. This release adds support for five new content source types: NFS shares, Apple Filing Protocol (AFP) shares, Slingboxes, Apple AirPlay devices, and "disc stubs" of un-mounted DVD or Blu-Ray discs. The Slingbox is an embedded video streaming device that can be connected to component or HDMI video sources. AirPlay is Apple's brand name for streaming media over the LAN from iPod and other iOS devices.
The disc stub feature is intended to help users organize their physical media, indexing the contents of discs for searchability — you would still have to physically load the discs in order to play back their contents. However, the new release also adds support for treating ISO files as virtual disk volumes, so if lugging the discs back and forth across the room is too taxing, XBMC has you covered there, too. There are other minor tweaks in this arena, too, such as the elimination of an artificial distinction between local "files" and the user's "library." From now on, all the files that XBMC knows about can be browsed together.
Finally, there is a major upgrade to the application's subtitle support, including support for subtitles embedded within MP4 files, and support for rendering subtitles with the style tags (covering font selection, text color, and italics/boldface) found in several external subtitle file formats.
Arguably the biggest "silent" feature in XBMC 11.0 is full support for the Video Acceleration API (VAAPI), Freedesktop.org's hardware-agnostic API for GPU acceleration of video decoding. XBMC is officially dropping support for the older, MPEG2-only XvMC in favor of VAAPI, which supports hardware-accelerated decoding of more formats, on Nvidia, Intel, and ATI graphics chips. VAAPI is a Linux-only feature, of course — on Mac OS X 10.6 or later, XBMC uses Apple's Video Decode Acceleration Decoder (VDADecoder) hardware acceleration instead, and on recent Windows systems it uses Microsoft's DirectX Video Acceleration (DxVA). Linux boxes can also use OpenMAX for hardware video acceleration, which is most useful for systems built on Nvidia's Tegra2 platform.
The user interface itself uses OpenGL, OpenGL ES, or EGL, so it, too, can be hardware accelerated. Use of GPU acceleration for both video decoding and the GUI reduces XBMC's CPU requirements considerably, and 11.0 officially introduces support for several more low-resource systems. On the Linux side, this includes Texas Instruments OMAP4 processors. On the Apple side, it includes better support for recent iOS 4.x devices (including recent iPads and AppleTVs). But for those who still rely on their CPUs, regardless of the platform, XBMC can now detect CPU features like SSE and MMX at runtime.
Apart from hardware concerns, this release introduces a revamped JSON-RPC subsystem, which is primarily of interest to add-on developers. The changes are substantial, as the goal was to make XBMC's implementation compliant with the JSON-RPC 2.0 specification. The add-ons subsystem uses Python scripting, and in another important change for developers, 11.0 drops XBMC's bundled Python implementation in favor of using the system Python library. This is more in keeping with XBMC's reliance on OS libraries for other functionality (such as protocol stacks), although the project still uses its own media renderers for images, video, and audio content. Because the host OS's Python version may differ from the bundled library found in older XBMC releases, there is a backwards-compatibility mode that add-on developers can invoke.
Add-on authors have three other new features at their disposal from 11.0 on. The first is an XML storage system allowing each add-on to save user preferences in its own private file. The second is a set of hooks to display progress-meters on screen for the user's benefit, a feature designed to improve feedback when buffering web video. Finally, previous releases of XBMC allowed for a web-based control interface, which could be exploited to bring remote-control-like features to arbitrary tablets and mobile phone browsers in addition to desktops. With the new release, each add-on package can also provide a separate web-interface of its own, which simply makes more features accessible to users not near an infrared remote.
If I were to channel my inner couch potato, I would have to admit that my favorite improvements in XBMC 11.0 are of the cosmetic variety — namely, the new and greatly-improved theme, the ability to customize the home menu, and the unification of media content regardless of the source. That may sound superficial, but in my experience, building a remote-control-friendly UI is one the highest hurdles in open source software development: many try, few, if any, succeed. XBMC may fare better than the Linux-only media centers because it has a substantial following among Windows and OS X users, thus giving it exposure to far more testing and feedback. But whatever the reason, in practical usage XBMC comes the closest to feeling like a genuine OEM consumer electronics product.
Digging deeper, though, the VAAPI support is an important milestone, too. VAAPI has been a long time coming, but in 2011 and now 2012, it appears to be hitting the mainstream. Low-power set-top boxes are certainly where VAAPI makes the most sense — at SCALE 10X in January, one of the most talked about booths was the demonstration of XBMC 11.0 running on a $25 Raspberry Pi board. There are already plenty of niche commercial products built on top of XBMC, but when HD video is available on a $25 board, it will be hard for Apple and Microsoft to compete.
To see the impact of the changes to the add-on development APIs, we may have to wait, but the project's add-on community has earned the benefit of the doubt. Sadly, at the moment the Linux builds of the most recent XBMC Eden have yet to land: Beta 1 is available for download, but Beta 2 is only provided for Windows and Apple systems at the moment. The final release does not have a due date yet, but the hold-up is reported to be with the "XBMC Live" live CD version, which is getting a rework to be more compatible with the upstream Ubuntu releases on which it is based. Given the pace of the first two beta releases, though, you might want to keep the red carpet within reach.
As such, users who wish to take a new upstream version of BusyBox and install it on their device are left without any hope of doing so. Most embedded-market GPL enforcement centers around remedying this.
Indeed, enforcement has brought some great successes in this regard. As I wrote on in my blog post on this subject (at http://sfconservancy.org/blog/2012/feb/01/gpl-enforcement/ ), both the OpenWRT and SamyGo firmware modification communities were launched because of source releases yielded in past BusyBox enforcement actions. Getting the "scripts to control compilation and installation of the executable" for those specific devices are what enabled these new upstream firmware projects to get started.
Newsletters and articles
Page editor: Jonathan Corbet
Next page: Announcements>>
Copyright © 2012, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds