Log in

05 August 2012 @ 03:22 pm
Opus will be mandatory to implement for WebRTC  

I just got back from the 84th IETF meeting in Vancouver. The most interesting part (as far as I was concerned anyway) was the rtcweb working group meeting. One of the topics was selecting the mandatory-to-implement (MTI) codecs. For audio, we proposed having both Opus and G.711 as MTI codecs. Much to our surprise, most of the following discussion was over whether G.711 was a good idea. In the end, there was strong consensus (the IETF believes in "rough consensus and running code") in favor of Opus+G.711, so that's what's going to be in rtcweb. Of course, implementers will probably ship with a bunch of other codecs for legacy compatibility purposes.

The video codec discussion was far less successful. Not only is there still no consensus over which codec to use (VP8 vs H.264), but there's also been no significant progress in getting to a consensus. Personally, I can't see how anyone could possibly consider H.264 as a viable option. Not only is it incompatible with open-source, but it's like signing a blank check, nobody knows how much MPEG-LA will decide to charge for it in the next years, especially for the encoder, which is currently not an issue for HTML5 (which only requires a decoder). The main argument I have heard against VP8 is "we don't know if there are patents". While this is true in some sense, the problem is much worse for H.264: not only are there tons of known patents for which we only know the licensing fees in the short term, but there's still at least as much risk when it comes to unlicensed patents (see the current Motorola v. Microsoft case).

Thomas JonesThomas Jones on August 8th, 2012 05:52 pm (UTC)
What about Theora
It seems to me including an older codec like Theora would be a good idea since it has much lower computational costs and I think it's no old enough that there's basically zero chance that there are unknown patents on it.
Tim Strong on August 10th, 2012 11:13 pm (UTC)
Re: What about Theora
I'm a long-time Theora fan, and though I certainly wouldn't complain over the inclusion of Theora, there are definitely reasons Theora wouldn't serve well for realtime video. The biggest thing to me is fault tolerance; lots of work has gone into VP8 to handle random packet loss -- force a little packet loss while streaming Theora and watch it turn to garbage until the next keyframe.

To industry (assuming no biases against libre software), the biggest issue will be hardware encoding support; for Theora, there's none -- not even multicore cpu support. For VP8, there's a little and it's getting better. H.264 wins for hardware support, and industry already favors it, but it fails any test of openness you can throw at it.

Theora's decoding performance is still considerably faster than VP8 device I've ever tested (I actually re-encode some videos to Theora for viewing on ancient machines), but it's losing its encoding speed edge every time an encoder update is pumped out for libvpx.

At this point, if I'm going to put in effort to support a libre codec, VP8/WebM's the one. If Theora sneaks its way into WebRTC, however, I won't complain.