Google, H.264 and Sticking it to Apple

Google’s announcement about Chrome dropping H.264 support for the HTML5 video element caused an explosion on the Web. I must admit that I initially fell in line with the “See! Google is Evil” narrative. Many parts of the announcement just didn’t seem to make sense. Google was dropping H.264 in the name of openness, but was retaining support for Flash, a proprietary plugin. They were claiming this was in the name of openness, but clever people argued that there was nothing open about this move. Some went as far as to suggest that the decision might be a ploy to get us all hooked on Google’s own WebM format.

In light of the seeming inconsistencies, articulated well by a list of questions posed by John Gruber, it was so easy to buy into the simple explanation: Google is sticking it to Apple.

The thing is, simple narratives like this are rarely true. When I read the comments to Mike Jazayeri of Google’s follow up post, I see three types of responder:

  1. Google is sticking it to Apple. Boo!
  2. Google is sticking it to Apple. Yay!
  3. This is more complicated than that, people.

The third category got me thinking. I know from years in Microsoft that the popular interpretations of big company decisions are seldom accurate, so I dug a little deeper. I now believe that “sticking it to Apple” was probably the last thing the decision maker (maybe Mike Jazayeri, but probably someone else) had in mind.

So for fun, I’m going to imagine that I watched the decision being made inside Google and answer John Gruber’s questions from the perspective of the person who made it.

JohnIn addition to supporting H.264, Chrome currently bundles an embedded version of Adobe’s closed source and proprietary Flash Player plugin. If H.264 support is being removed to “enable open innovation”, will Flash Player support be dropped as well? If not, why?

Google Decision Maker: The decision to drop H.264 support from the video tag is about the future. There is no future in H.264 (for the video element) because Firefox will never support it. We can drop H.264 support for the video element today because there is very little content currently delivered this way that consumers can’t get another way. The longer we wait, the harder it will get.

The decision to keep Flash support, on the other hand, is about present day pragmatism. Dropping Flash support today would mean that many, many popular websites would be inaccessible in Chrome. Keeping Flash plugin support and not bundling Flash with Chrome would also have a negative impact on UX, so we won’t do that either.

JohnAndroid currently supports H.264. Will this support be removed from Android? If not, why not?

Google Decision Maker: I have no idea. Android is a different team. What those guys do is their decision. But if I was them I would do whatever it took to be competitive with iOS. In the short term that probably means keeping H.264 support.

JohnYouTube uses H.264 to encode video. Presumably, YouTube will be re-encoding its entire library using WebM. When this happens, will YouTube’s support for H.264 be dropped, to “enable open innovation”? If not, why not?

Google Decision Maker: I’m in the Chrome team, not the YouTube team, who I really see in much the same light as the external companies you mention in your next question.

JohnDo you expect companies like Netflix, Amazon, Vimeo, Major League Baseball, and anyone else who currently streams H.264 to dual-encode all of their video using WebM? If not, how will Chrome users watch this content other than by resorting to Flash Player’s support for H.264 playback?

Google Decision Maker: In time, they will. Certainly not overnight, but when companies are deciding how to encode new content, our decision to support WebM for the video element will make more of them move in this direction. Fewer people will use Flash or H.264. Flash and H.264 will slowly fade together.

JohnWho is happy about this?

Google Decision Maker: Future John is happy about this. The video element in all his browser options will support the same format.

You may disagree with the assumptions, but there actually is sound logic in this argument. Our Google decision maker is betting that H.264 is never, ever going to be accepted as a format for the video element by all browser makers. So the best time to drop support is as soon as possible, while there is a relatively small footprint of video on the web that is solely delivered using an H.264 based video element. While consumer impact is minimal.

The only viable alternative to H.264 for the video element is WebM. So it is a no-brainer that our decision maker would continue to support this as a format for the video element.

Keeping Flash support is a separate matter. Unlike H.264 delivered using the video element, there is an enormous amount of content on the web that can only be rendered by the Flash plugin. As long as this is the case, Google will do the smart thing and continue to support Flash (all browsers do!). It will go even further and bundle Flash with Chrome to ensure a better user experience.

The things that people read into the decision probably really bug our Google decision maker, so while I am at it I will debunk those too:

  • I was not sticking it to Apple. In fact, although I have an Android phone, I prefer my iPhone and I love my iPad. It’s a bit painful the this decision impacts Apple, but the reality is that it will be a long time before H.264 is eliminated, and while it is still around content providers will make things work for everyone, delivering H.264 via Flash for the web in general, and via the video element for iOS devices. They would be foolish not to.
  • I was not trying to prop up Flash. Nothing could be further from the truth. I know Flash is dying. It will die slowly, like H.264, because there is so much content that depends on it. But it will die. In the meantime it is a convenient way to limit the impact on consumers as we move to a video format that all companies might agree to support in future.

One final point (from me, not from my imaginary Google friend) is about hardware support for H.264. Yes, this is an issue, but not as big an issue as you might think. The hardware that accelerates H.264 does so by implementing certain primitive operations that are computationally expensive and executed repeatedly. Based on my admittedly dated knowledge of video encoding (at one point in my career I wrote software to encode video) I would guess that many of the primitives in WebM are similar to those in H.264.

If Apple has any sense, they are factoring WebM into their plans, investigating what it will take to get hardware support for WebM in future devices. And even if they aren’t doing so, I guarantee that Imagination, who supplies the PowerVR graphics IP for iOS devices (and has Apple as a 14% investor) is thinking very hard about WebM support. In fact, according to this press release from December 2010, their current high end cores already support WebM:

LONDON, Dec. 6, 2010 — Imagination Technologies, a leading multimedia and communications technologies company, announces the latest additions to its multi-standard, multi-stream video IP core families, the POWERVR VXD392 decoder and POWERVR VXE382 encoder, including support for H.264 MVC, WebM (VP8; decode), S3D (Stereoscopic 3D) and resolutions up to UltraHD.

The bottom line here is that the “Google sticks it to Apple” story is probably fiction. The move has negligible impact on consumers, Apple will be ready for WebM when it reaches critical mass and Flash will continue to die a slow death. If anything, it looks like Google is doing a decent job of balancing short term pragmatism (Flash support) with long term foresight given their assumption that there is no cross browser future for H.264. You may disagree with this last assumption on their part, but that doesn’t make it political.

Still, reality isn’t nearly as fun (or traffic generative) as Holloywood-esque narratives of Google and Apple duking it out.

Update: Discussion on Hacker News.