|
|
Subscribe / Log in / New account

Development

MythTV turns 0.25

April 18, 2012

This article was contributed by Nathan Willis

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.

[MythTV browsing]

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.

[MythTV audio test]

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.

[MythTV theme chooser]

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.

Refactoring

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.

Forking MythTV

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.

Comments (1 posted)

Brief items

Quotes of the week

We certainly want to be "professional", but not so sure we want to be "corporate". I think "fun" should be one of the attributes the public associates with the project. This can also help with getting more followers and more retweets. But not merely casually fun, but with a purpose.
-- Rob Weir

We don't need a system to help us ignore bug reports; our existing process handles that with admirable efficiency.
-- Robert Haas

Comments (none posted)

A change of maintainership for bzr

Longtime bzr maintainer Martin Pool has announced that he is leaving Canonical and moving on to other projects. The new maintainer for bzr will be John Meinel. Martin says: "It's been really fun working on Bazaar with you, and I've learned a lot. Thanks."

Full Story (comments: none)

Calligra 2.4 released

Version 2.4 of the Calligra office suite has been released. The version number notwithstanding, this is Calligra's first release in this form; there is a lot of interesting stuff to be found therein. "Calligra now has a completely rewritten text layout engine that can handle most of the advanced layout features of ODF. This includes tables that can now span more than one page, footnotes and endnotes and correct run-around around other objects such as pictures. This text layout engine is used all over the suite. The Words application itself is also largely rewritten but this is not as visible to the user."

Comments (1 posted)

LV2 1.0.0 released

LV2 is a plugin standard for audio systems; it supersedes the venerable LADSPA mechanism. This standard is supported by a wide variety of audio programs, including Ardour, Audacity, and Qtractor. The 1.0.0 release is the first that unifies the core with official extensions and some example plugins, making life easier for developers.

Full Story (comments: none)

PacketFence 3.3.0 released

Version 3.3.0 of the PacketFence network access control system is out. Changes include support for more hardware, role-based access control, a new guest self-registration mode, a "slightly more helpful" installer, improved logging, and more.

Full Story (comments: none)

Newsletters and articles

Development newsletters from the last week

Comments (none posted)

Langley: False Start's Failure

On his blog, Adam Langley explains why Google is ending its experiment with False Start, which was meant to speed up the establishment of SSL connections. Problems with hardware SSL terminators seem to be the main thing that derailed the scheme. "False Start was known to cause problems with a very small number of servers and the initial announcement outlined the uncommon scheme that we used to deploy it: we scanned the public Internet and built up a list of problematic sites. That list was built into Chrome and we didn't use False Start for connections to those sites. Over time the list was randomly eroded away and I'd try to address any issues that came up. (Preemptively so in the case of large sites.) [...] It did work to some extent. Many sites that had problems were fixed and it's a deployment scheme that is worth considering in the future. But it didn't ultimately work well enough for False Start."

Comments (25 posted)

Natterer: Goat Invasion in GIMP

On his blog, Michael Natterer writes about some major progress in making GIMP work with the Generic Graphics Library (GEGL), which will allow GIMP to handle images with more than 8-bits-per-channel among other things. "About 5 weeks ago, I happened to pick up Øyvind Kolås, aka Pippin the Goatkeeper to stay at my place for about a week and do some hacking. After one day, without intending it, we started to do some small GEGL hacking in GIMP, just in order to verify an approach that seemed a good migration [strategy] for the future porting. [...] What was planned as a one week visit turned into 3 weeks of GEGL porting madness. At the time this article is written, about 90% of the GIMP application’s core are ported to GEGL, and the only thing really missing are GeglOperations for all layer modes."

Comments (38 posted)

The H Speed Guide to Lua (The H)

The H features Lua, a programming language with a small footprint. "Lua has been designed to be embedded into applications and devices from the start. This design goal has led to it being very compact, but delivering a lot of power for its size. The source code for implementing the language is only 20,000 lines of ANSI C code and, compiled on Linux with standard libraries, only takes 182KB of memory; another 240KB gets you the Lua library. That includes a register-based virtual machine for running Lua code which is compiled to its own byte code, along with automatic memory management and incremental garbage collection."

Comments (67 posted)

PHP: a fractal of bad design (fuzzy notepad)

It's a bit of a rant, but a blogger known as "Eevee" has put together a detailed criticism of PHP as a language. It covers the flaws Eevee sees in the predictability, consistency, reliability, debug-ability, security, and many other attributes of the web application language. "PHP is the lone exception. Virtually every feature in PHP is broken somehow. The language, the framework, the ecosystem, are all just bad. And I can’t even point out any single damning thing, because the damage is so systemic. Every time I try to compile a list of PHP gripes, I get stuck in this depth-first search discovering more and more appalling trivia. (Hence, fractal.)" (Thanks to Paul Wise.)

Comments (187 posted)

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