MythTV, the free software DVR project, has released its first stable update in nearly a year and a half. The release brings a list of significant new features, from improved GPU-based video decoding to integration with other home theater components, as well as major changes to the architecture. During the development cycle leading up to this release, the open source DVR landscape has continued to evolve — including a recent fork started by two key MythTV developers. But many of the recent changes to MythTV are designed to put it into a more manageable position for the future.
Never a project to be accused of version-number-inflation, the new
release is tagged 0.25, and is available for download directly from the MythTV
site as source code tarballs. The core application and the official plugin
collection are provided separately. Most Linux users will probably prefer
to look for distribution-delivered packages, and there is a list of those on the project's wiki. MythTV is cross-platform, and third-party Mac OS X binaries are available, too. Intriguingly enough, the project notes that it knows of no one packaging the system for Windows, but there are build instructions provided for the sufficiently daring.
For the uninitiated, a MythTV setup uses separate front-end and back-end applications. The back-end handles scheduling, recording, and streaming media, while the front-end presents the UI to the user and handles playback. A single back-end can handle multiple front-ends, and back-ends typically manage an array of auxiliary jobs to index electronic guide data, flag commercials, transcode, and export content. Nevertheless, the back-end and front-ends are tightly coupled; they share access to a single database and must speak the same wire protocol — you cannot update one without the other, a limitation that updaters need to be aware of when migrating.
New features in 0.25
Many of the high-profile changes in MythTV 0.25 are front-end affairs. The most obvious is support for the Freedesktop.org Video Acceleration API (VAAPI), which enables GPU video decoding on most major video chipsets, and allows for smaller and quieter front-end hardware. The playback stack officially drops support for the older XvMC acceleration scheme (VAAPI accelerates a superset of the decoding steps covered by XvMC), deprecates the libmpeg2 library in favor of libav, and supports OpenGL ES 2.0 (which again is good news for those looking to build slim-CPU front-ends). Windows users, unblessed by VAAPI, can use GPU video decoding via Microsoft's DirectX Video Acceleration 2 API. This release also supports 3D video for the first time, at least for side-by-side or top-and-bottom frame orderings.
Audio playback also gets a refresh in this release, adding support for
the E-AC3, TrueHD, DTS-HD, and DTS-ES Discrete formats. All are "high
definition" audio encodings that are primarily of interest to people
passing the audio through to a multi-channel receiver over HDMI. The last
format on the list, DTS-ES Discrete, is a peculiar offering that uses a
"6.1" channel setup — one that, according to the commit log, users
are likely to encounter only in recent Star Wars releases,
which certainly gives it geek credibility. There is also a new "audio
set-up" page in the front-end settings that allows you to test your speaker
output configuration, which is increasingly important as more channels are added.
Interfacing with modern TV sets and home theater receivers is significantly improved with the addition of support for the Consumer Electronics Control (CEC) protocol; this allows the MythTV box to control TV and component settings over an HDMI cable. Front-ends can also stream media to (and play media from) Apple devices using the Apple-only Airtunes/Airplay protocol, and infrared remote controls can now be used to navigate and control Flash-based web videos.
There are other features that offer direct benefits on the front-end, such as a "night mode" screen-dimming option, support for rich-text subtitles (e.g., color and bold/italic markup), and a standby screen that lets a back-end restart without hanging or crashing any connected front-ends. A long list of bugs with the on-screen video editor component (which is used for trimming out commercials) was fixed, and there is an equally long list of fixes to the UI theming engine and the suite of default themes. Extensive details, including links to all of the bug reports closed, are in the release notes wiki page.
Back-ends pick up some new features in 0.25 as well, including out-of-the-box support for CableCARD hardware. Note, though, that even though a CableCARD device may work like a charm, that fact does not prevent a cable company from flagging all of its content as non-recordable. It is unlikely that an open source project like MythTV will ever get the certification needed to access encrypted or access-restricted media streams, so the value of this feature depends greatly on the local cable provider.
User-visible features gather the most attention, but a number of architectural changes in 0.25 probably account for more work. That is a rough guess, of course — VAAPI support is not child's play, after all — but MythTV turns ten years old this month, and refactoring an old and entrenched codebase is tricky. In MythTV's case, it was increasingly obvious that parts of the original design had outlived their usefulness and risked becoming a liability, so clearing them out was a necessity.
That was certainly the case with MythXML, the now-deprecated remote access API. It was limited in functionality, and few plugins or third-party tools took advantage of it. In 0.25, it is replaced with the new Services API, which provides HTTP POST/GET access to a far broader set of back-end and front-end services. The Services API exposes MythTV's DVR, program guide, and content playback functions, and is intended to serve as the basis for HTML-based remote control apps, web front-ends, and better integration into other applications (for example, to provide access to MythTV recordings in XBMC). The API has HTTP and SOAP interfaces, and can return XML or JSON output. It can even stream video over HTTP (as opposed to the MythTV-specific streaming protocol of previous releases).
Although MythTV was originally focused on recording live television, the public's media consumption habits have shifted in the last ten years, and the media center's general audio and video playback plugins have fallen a bit behind. Both components, MythMusic and MythVideo, received rewrites in this release — in fact, MythVideo has now been merged into the main application as "Video Gallery." MythMusic gains support for play counts and ratings stored in ID3 tags, and preliminary support for album art. Video Gallery can look up video metadata from an array of online databases, and supports indexing and organizing videos by season and episode number (a feature also added to the main TV recordings component). Both MythMusic and Video Gallery can function as UPnP clients, browsing and playing media stored on other devices.
Further under the hood, there are important changes like full support of IPv6, a rewritten logging system, and splitting some functions out of the main process into separate threads (the prime example being scanning a storage partition for new media content; for modern, large-scale disks this process could hang the main UI for several minutes). The project also made the decision to build and bundle in its own version of the FFmpeg library. By providing its own mythffmpeg, MythTV can assure that all of its auxiliary tools and scripts will use the exact same version of the library, and not introduce incompatibilities.
Not all of the changes in this release will have an immediate effect. The new APIs will take some time to attract plugin authors and other developers, as will assorted niceties like support for animation in UI themes. But they bring much-needed functionality to the project, which is vital for the project's future in the face of growing competition.
MythTV's fastest-growing competitor in recent years has been XBMC, a "media center" application that is also open source and cross-platform. But XBMC has historically focused on local file playback and Internet-delivered media, to the exclusion of live television and DVR functionality. By not worrying about storage, recording, or transcoding media, XBMC has made inroads into low-power set-top boxes, which MythTV never made a significant dent in. The argument from the XBMC camp has been that broadcast television is a dying delivery medium, to be overtaken by Internet entertainment and information services.
Yet that Internet-dominated future still hasn't arrived, and perhaps in recognition of that, XBMC and its derivatives have started adding DVR-like features. One major derivative, Boxee, now sells a live-TV tuner, and there are popular add-ons that turn XBMC (and derivatives) into a MythTV front-end. MythTV responded by putting considerable effort into its recent MythNetvision plugin, which lets users access online content sites from within a MythTV front-end.
But a potential disruptor surfaced in February, with the announcement of Torc, a MythTV fork launched by MythTV developers Mark Kendall and Robert McNamara. Phoronix picked up news of the new project quickly, but there was little public information about the scope or aims of the project. As an AVSForum poster discovered, however, the project did register with SchedulesDirect, the non-profit electronic program guide service catering to open source projects. Projects must apply to be approved users of the service, so presumably the description provided comes from someone on the Torc team:
Torc is an open source DVR based upon the venerable MythTV codebase. Torc aims to deliver modern features such as fully hardware accelerated user interface and video playback, complex OpenGL shader-based UI effects, blazing fast UI, and a ground-up rethink of various media management plugins to deliver the experience users expect, while maintaining the same featureful recording functionality that has made MythTV the premiere DVR for linux. Torc embraces the cross-platform experience and will deliver solutions for all standard platforms, tablets, and mobile environments.
Subsequently, McNamara released an iOS playback app called "Torc for iOS" which explicitly supports both Torc and MythTV 0.25 back-ends. There is an almost-empty Torc project web site, but the code is hosted at Github, where you can see that the newer project is periodically re-syncing with upstream MythTV. McNamara also continues to commit to MythTV, which lends credence to the viewpoint of some commenters that Torc should be seen not as a fork but as a streamlining branch that will eventually re-merge with MythTV itself.
The SchedulesDirect description certainly emphasizes front-end functionality like hardware acceleration and UI features, which would imply that Torc is more interested in the set-top box experience than in scrapping core MythTV features. MythTV 0.25's Services API explicitly welcomes third-party application integration, so if Torc and various XBMC add-ons find it useful, it may not be a source of conflict.
On the other hand, if Torc intends to diverge from MythTV compatibility on the back-end, then MythTV would face competition on two fronts, which would be far riskier. XBMC's MythTV front-end interfaces have always been incomplete; when coupled with the fact that no other project has mustered a significant back-end DVR service, even those MythTV users who found the project frustrating to set up or troubleshoot — myself included — always came back to it. The API changes and plugin revisions in 0.25 are an excellent sign that even ten years on, MythTV is still capable of changing course and adapting to marketplace demands. For anyone interested in building a home-brewed DVR and media center, that is about all you could ask for.
to post comments)