Why the WebRTC video codec choice is important

webrtc

Real time peer to peer communication on the web has had a good couple of months. At the end of January Chrome and Firefox demonstrated interop of two independent WebRTC implementations and then a couple of weeks ago Google squelched the MPEG LA attack on the open status of it’s key VP8 codec in a deal that granted them the full rights to any MPEG LA pool IP related to VP8 (if any ever existed) and used this to grant a free licence to other implementations.

Most sensible folks can see why it is necessary to agree on one mandatory video codec for the web which is openly available to all implementers. The next generation of applications need to be able to rely on endpoints talking the same language which means that the technology chosen has to be universal.

The trouble is that nobody can agree what this should be. Established players, especially those who own codec IP want this to be H.264 as this works in their commercial favour and puts new entrants at a disadvantage. Others who see the need to build standards out of open, freely implementable technologies favour VP8 which was built from the ground up to avoid the patent thicket around H.264.

There are some marginal differences between H.264 and VP8 on encoding efficiency, but the only real argument for H.264 that stands up is that it would make it easier for new WebRTC implementations to talk directly to existing, mostly embedded hardware endpoints that only currently implement H.264. Whilst this is valid, it won’t be a common scenario on tomorrows Internet and there are plenty of ways to achieve interoperability. Relatively speaking there really aren’t that many existing H.264 embedded hardware implementations — hands up if you have a video phone on your desk? Certainly not compared to the billions of WebRTC endpoints that will exist in released web browsers within months. With H.264 as an optional or plugin codec, vendors with legacy H.264 devices could simply take care to use an endpoint with optional H.264 support in their application, upgrade their current embedded hardware to support VP8, or if all else fails transcode on their proprietary MCUs. Encumbering the whole Internet to use H.264 to accommodate this one use case is unacceptable collateral damage.

Just when it seemed that the VP8 vs H.264 tradeoff would go VP8 after the Google/MPEG LA announcement, Nokia served a fairly astonishing spoiler this week when it bowled an IP disclosure in to the IETF claiming it’s own rights in VP8 which it wouldn’t be prepared to licence on any acceptable terms. It later admitted that this was deliberately done to derail the efforts to standardise on VP8. If Nokia’s claims are genuine and it really does own sigificant IP in VP8 then it is probably a good thing that it did disclose it at this stage, although it would be interesting to know why they didn’t do so very much earlier. If it’s claims are found to be weak then it is a pretty shocking way to try and manipulate a standards process.

Rather perversely my company is developing software that gateways between WebRTC and legacy SIP video phones among other things, it would actually be good for us if H.264 was mandated in WebRTC. It would be very bad for the Internet though so I’m really hoping that the questions around Nokia’s VP8 claims are quickly resolved in the right direction!

Mastodon