Saturday, November 2, 2013

The Cisco Kodec

H.264 has not been the strong suit of Mozilla browsers due to their (until recently) longstanding ban on the codec, and the reason is licensing: MPEG-LA wants money, and they'll sue you if you try to get around them, because the patents are still on the books.

There are various solutions to this problem. In TenFourFox, we have the QuickTime Enabler, which is admittedly clunky and doesn't always work, but because it plays natively in QuickTime Player means it can use its private GPU acceleration capability. On Linux and the *BSDs (great band name), there is GStreamer, and while GStreamer can be coerced into running on OS X, the worry about our using GStreamer's built-in H.264 implementation is that it may violate MPEG-LA's codec patent terms. Since I'm the ringleader, I'd be personally liable if they sent their lawyers over with K-Y jelly and rubber gloves. The way around that, of course, is to use a licensed component that's already on the system; Tobias had done some work on this for GStreamer in AuroraFox, and Mozilla is also doing some, although their approach depends on 10.6 APIs.

Or, have someone pay for the license. Mozilla has consistently refused to allow this option because even though they could probably afford it, their doing so would not grant a license to downstream projects (like us!) who would have to pay their own licensing fees. So a couple of days ago, Cisco said they'd do it because they have a lot invested in WebRTC, the web-based real time communications standard-in-waiting, and they want people to finally standardize on the One Codec To Rule Them All.

Now, before everyone gets excited, while it's still good news, it's not really all that good:

  • The only licensed components is the pre-built binary libraries, which are, surprise surprise, not likely to be compatible with PowerPC OS X because Firefox isn't. For that matter, PowerPC Linux isn't on the list of "approved" operating systems either, and you can't just add Cisco's source code to the tree and take advantage of their largesse that way, even though it's open source (it's open source like Android is open source, which is to say, only to the minimum necessary); in RMS unhygienic neckbeard terms, it's gratis, not libre. As a somewhat troubling corollary, Firefox on Tier-1 platforms lacking H.264 support will now go out and grab a binary blob and automatically install it to play H.264 video; it doesn't come with the browser. There'd better be a damn lot of tamper checks on that, and I'll be the first one turning that off on my desktop PC at work.

  • Cisco's guarantee doesn't cover the situation that some patent troll crops up and says they've got a piece of the patent outside of the MPEG-LA, and Cisco specifically disclaims their responsibility in that circumstance.

  • The license is only for the MPEG-4 video codec. It doesn't cover AAC or MP3 or any other separately-licensed audio codec used for the MPEG-4 audio track, so this wouldn't play most of the videos that are out there by itself (or it would play them without sound). It's for WebRTC, something that we don't support well right now, and WebRTC uses Opus.

So we're not going to do much with this idea, noble as it appears. When IonMonkey is ready and we're sure Australis will work, then we'll work on adding GStreamer support fed through QuickTime so that the only thing we're distributing is the shim to QuickTime (and nothing that runs afoul of the license), and that should take care of the H.264 problem (but QuickTime Enabler will still be supported since it works better on slower systems).

In the meantime, I've stalled 24.1 because the speculative fix I whipped up for issue 248 doesn't fix the problem and I will try to get it out this coming week. Chris suspected a lot of typing causes the menu bar to freeze, and so far, that's the only commonality I've seen on the handful of times I've personally tripped it. If this is happening to you a lot, finding a reliable set of steps to reproduce will go a long way to getting this fixed. 24.2 is coming out, come heck or high water, working fully or no, in December; we're officially out of time.

No comments:

Post a Comment

Due to an increased frequency of spam, comments are now subject to moderation.