10.0 is a substantial improvement in media playback capabilities, including hardware video acceleration, and there is a long list of other improvements and new features — but one in particular stands out: the ability to add and remove plugins on the fly, from within the GUI. It’s as close as I’ve seen to a point-and-click “plays anything” open source media center solution.
Of course, part of the magnitude of that “substantial improvement” claims stems from the fact that it has been a long time since XBMC’s last stable release. A really long time: the previous major version bump was in May of 2009; there was a 9.11 update in December of 2009, but it did not introduce much in the way of additional features, particularly on Linux.
In case you’re not familiar with the project, XBMC was originally the Xbox Media Center, a home theater PC (HTPC)-like media center designed for the first generation Xbox hardware. Shortly thereafter, the project expanded its scope considerably, transforming over the course of a few releases into a cross-platform media application that ran on Linux, but also on Mac OS X and Windows, plus specialty hardware like the Xbox and AppleTV. The name was then de-acronymized, KFC-style, to XBMC. Like any media center app, XBMC attempts to round up and play audio and video content from every possible source — including local storage, network storage, live and on-demand streaming, and to do so in an easy-to-navigate interface you’ll feel comfortable using while slouched in an easy chair across the room.
That’s a tall order for a number of reasons. First, the number of media file formats and codecs is ever-changing and ever-growing. Second, there are scores of paths to audio and video content: RSS feeds, SMB, NFS, HTTP, UPnP, DAAP, RTSP, RTP, BitTorrent, and hundreds of individual Web sites with non-standard interfaces. Finally, unlike Roku or Apple, XBMC has to work on an unpredictable array of CPU and graphics chip combinations outside the project’s control.
Yet somehow they continue to do it. The 10.0 release is codenamed “Dharma,” and you can take the initiative to install it on your Linux box by grabbing the source code or a pre-built package for Ubuntu, Arch Linux, Mandriva, or openSUSE. If you just want to sample it, a live CD image is also available. The basic Linux packages install XBMC as a normal, launch-from-the-menu application, but there is also a “standalone” option that is intended to boot a system directly into XBMC — unless you are building a dedicated HTPC, that probably is not the package you want.
XBMC’s media playback engine boasts several new features in 10.0, including the addition of WebM and VP8 video support and all of the native Blu-ray disc support that is possible without cracking the AACS encryption system. There might not be a ton of unencrypted Blu-ray titles at the moment, but this is progress.
Wherever it may come from, 1080p content picked up a boost in this release with the addition of several hardware video decoding methods. Hardware acceleration is new in the Windows build, and the Linux version includes support for the vendor-neutral Video Acceleration API (VAAPI), in addition to the existing support for NVIDIA’s VDPAU. Last but certainly not least, all platforms gained support for hardware video decoding with Broadcom’s CrystalHD video decoding accelerator. CrystalHD chips are inexpensive accessories available in a variety of form factors, including low-profile mini-PCIE and ExpressCard packages. There are also new resampling algorithms to upscale standard-definition content, and new video modes to scale, zoom, and crop content for 4×3, 16×9, and other screen dimensions.
There is a long list of smaller bug-fixes and improvements, of which the most practical are the new Media Source plugins — these are the site- or service-specific add-ons that enable XBMC to access content from a remote Web source. Many require special logic to cope with the inconsistencies and quirks of the service itself, and 10.0 includes more than a dozen new ones (including many international content services) and updates to many more.
But just as important is the fact that these plugins have been re-factored in the XBMC interface, and can be added and removed from within the application. 10.0 calls this the “Add-ons Browser,” mirroring the language used by Mozilla and other projects. The browser includes not just media source plugins, but other XBMC extensions that add entirely new functionality, like subtitle support, a Web interface, and so on. In previous releases, these function add-ons were separate, which caused some confusion for end users.
Now you can just scroll through them and click “add.” This is one of XBMC’s strongest features; other media center platforms — including MythTV, which is still the leader in scheduling and recording broadcast television content — make installing plugins a colossal pain. Fortunately there is a MythTV front-end add-on for XBMC, so you can have your cake and eat it too. The add-ons are also sorted into categories, separating UI skins, video sources, games, and other functional plugins, which makes the sizable collection more manageable.
Dharma also introduces support for running remote “add-on repositories” that can be browsed from within XBMC. The first (and as far as I can determine, only) offering available in the official XBMC Team repository, which hosts all of the add-ons that meet the project’s stated requirements to be open source and not violate the law.
There is more in this release that hints at interesting developments in the future — such as initial support for MySQL as a database back-end. But there’s nothing that could be called a regression or a significant drawback; if you are a media center user, take it for a spin.
What’s Not New, but Still Worth Commenting On
Without doubt, XBMC’s low-level media processing capabilities are praise-worthy, but to me the two areas that make the app shine are its highly-usable user interface and the ease of contributing add-ons. The interface works just as well with a keyboard, a mouse, or a remote control — something that cannot be said of several other open source media centers. It is also intuitively laid-out; at no point have I discovered a screen or sub-menu where it looks like pressing the “left” button will allow me to back up one level only to discover that ESC is the only route out.
Similarly, although the menu structure for accessing media is not terribly complicated (Videos -> video sources, etc.), the system configuration menus are not trivial to get right, but XBMC makes them sensible and easy to navigate. MythTV, in contrast, has nested menus each of which may require nine or ten screen-fuls of “Next” button-clicks in order to cycle back to the start. XBMC also chooses default settings that work, and simplifies potentially tricky tasks like configuring video overscan with an easy-to-use onscreen tool.
The XBMC project also spends a lot of time making the add-on APIs sensible, and documenting how to get started. You can write plugins in Python, connect to XBMC with a JSON API, or enable new hardware support via an Event API. As an example of how easy to use this structure is, there is already preliminary support for using the Microsoft Kinect as an XBMC interface. Each of these development methods is documented in detail on the project’s wiki, complete with function references and tutorials.
Not to pick on MythTV, but here again the contrast is striking: MythTV plugins must be written in C++, built with Qmake and are sometimes installed on the server and sometimes on the client. The plugin architecture document is virtually empty, and recommends you examine an existing plugin to learn more.
The truth is, users these days have an endless array of ways to access their music, videos, and photo collections — particularly Linux users, who probably have more applications at their fingertips than people on any other operating system. So not everyone is going to find a dedicated media center app like XBMC to be their cup of tea. But what XBMC does best is fit into that living room environment, where endless options become a liability rather than a bragging point. XBMC 10.0 puts the media content first, and gets out of your way the remainder of the time. Which is all we could really ask for.