MPEG-LA Further Solidifies Theora as the Only Video Tag Choice

Despite the recent interest in adopting HTML5’s video tag, there is still one major problem: there is no mandated standard video codec for the video tag. The two main contestants are the proprietary and patended h264, and the open and free Theora. In a comment on an LWN.net article about this problematic situation, LWN reader Trelane posted an email exchange he had with MPEG-LA, which should further cement Theora as the obvious choice.

As most of you are probably aware of, there’s a bit of a codec war going on with the HTML5 video tag. The struggle is between the patented and proprietary h264 codec and the open and free Ogg Theora. While I’m still not entirely sure about which one is better from a pure quality standpoint (a lot of contradicting reports on that one, and I’m not skilled enough to perform my own tests). Theora has the benefit because it’s open and free, whereas h264 has the advantage of having better hardware support.

The big disadvantage with h264 is that you need to pay lots and lots of money for a license to be able to ship and have your users use it. You need a license for encoding, distributing, and even decoding – which is obviously quite problematic for open source projects. Apple and Google have both paid for the license, and as such, both Safari and Chrome support h264; however, since the license does not extend downstream, Linux distributors cannot ship Google Chrome. Chromium, the non-Google variant of the browser, does not have h264 support either. Both Mozilla and Opera refuse to pay for the h264 license.

Thanks to Trelane, we now have the word straight from the horse’s mouth with regards to the downstream possibilities (or, better put, lack thereof) of h264. He contacted the MPEG-LA and asked them if Free and open source developers and products need to pay for the license as well, since he couldn’t find said information in the FAQ. The answers were clear.

“In response to your specific question, under the Licenses royalties are paid on all MPEG-4 Visual/AVC products of like functionality, and the Licenses do not make any distinction for products offered for free (whether open source or otherwise),” explains Allen Harkness, MPEG-LA’s Director of Global Licensing, “But, I do note that the Licenses addresses this issue by including annual minimum thresholds below which no royalties are payable in order to encourage adoption and minimize the impact on lower volume users.”

In other words, h264 is simply not an option for Free and open source software. It is not compatible with “Free”, and the licensing costs are prohibitive for most Free and open source software projects. This means that if the web were to standardise on this encumbered codec, we’d be falling into the same trap as we did with Flash, GIF, and Internet Explorer 6.

The MPEG-LA further reiterated that individual users are just as liable as distributors or companies. “I would also like to mention that while our Licenses are not concluded by End Users, anyone in the product chain has liability if an end product is unlicensed,” Harkness explains, “Therefore, a royalty paid for an end product by the end product supplier would render the product licensed in the hands of the End User, but where a royalty has not been paid, such a product remains unlicensed and any downstream users/distributors would have liability.”

I’m not sure how this would extend towards countries outside of the United States, since software patents aren’t a sure thing all around the world. This perceived unencumberedness of h264 is actually a threat, though, according to Christopher Blizzard.

“[…] These heavily patented formats gain much of the same advantage as free formats – lots of free tools and tons of ad-hoc support from free software people – but with the ability to still enforce and monetize in parts of the world where patents are enforced,” Blizzard warns, “It’s actually a brilliant strategy, even though the outcome is that the true costs of patents are hidden from the view of most people.”

I’ll be blunt and direct, and this most likely won’t be appreciated by everyone, but I don’t care: using h264 for HTML5 video is short-sighted, ignorant, and simply plain stupid. Every web developer choosing to use h264 has learned nothing from GIF, Flash, and Internet Explorer 6. I find it almost delightfully hypocritical that someone like John Gruber, who rails and rails against Flash, finds h264 totally acceptable, telling Mozilla to “get with the program“. A cynical me would say this is somehow related to Apple hating Flash but loving h264, but I’m not in a cynical mood today.

Despite all this talk about h264 vs. Theora, the fact of the matter is that the latter is the best supported HTML5 video tag codec. All browser makers who have implemented HTML5 video have included support for Theora – Chrome, Firefox, and Opera all support it – except for Apple. In other words, the most compatible choice right now for HTML5 video is Theora – not h264.

Yes, h264 has the better hardware support, and yes, it is claimed its quality is higher than Theora’s – but is the short term really all you care about? Are web developers really that ignorant? History suggests yes – Flash, IE6 – but I had hoped we would’ve learned from all this by now. I’d rather face some technological difficulties now that we can actually overcome (hardware, quality) than face a patent and lock-in mess down the road.

Web developers, the choice is yours. Are you ignorant and short-sighted, or are you willing to make a stand for keeping the web open, and finally breaking video loose from its proprietary shackles?

156 Comments

  1. 2010-01-31 2:38 pm
  2. 2010-01-31 2:40 pm
    • 2010-01-31 5:45 pm
      • 2010-01-31 5:52 pm
        • 2010-01-31 5:58 pm
          • 2010-01-31 6:09 pm
          • 2010-01-31 6:27 pm
          • 2010-01-31 7:33 pm
          • 2010-01-31 7:56 pm
          • 2010-01-31 8:02 pm
          • 2010-01-31 8:56 pm
          • 2010-01-31 9:53 pm
          • 2010-02-01 12:35 am
          • 2010-02-01 1:17 am
          • 2010-02-01 1:43 am
          • 2010-02-01 2:32 pm
          • 2010-02-01 9:14 am
          • 2010-02-01 9:31 am
          • 2010-02-01 2:55 pm
          • 2010-02-01 11:24 pm
          • 2010-01-31 6:54 pm
          • 2010-01-31 7:38 pm
          • 2010-01-31 7:48 pm
      • 2010-01-31 5:55 pm
        • 2010-01-31 5:58 pm
        • 2010-01-31 6:20 pm
          • 2010-01-31 7:41 pm
      • 2010-02-02 9:28 am
        • 2010-02-02 10:39 am
      • 2010-02-02 10:06 am
        • 2010-02-02 10:40 am
    • 2010-01-31 6:51 pm
  3. 2010-01-31 2:44 pm
    • 2010-01-31 3:08 pm
      • 2010-01-31 3:22 pm
    • 2010-02-02 1:26 pm
      • 2010-02-02 1:44 pm
  4. 2010-01-31 2:50 pm
    • 2010-01-31 3:24 pm
      • 2010-01-31 6:23 pm
        • 2010-01-31 8:06 pm
    • 2010-01-31 5:30 pm
  5. 2010-01-31 3:07 pm
    • 2010-01-31 5:45 pm
      • 2010-01-31 5:50 pm
    • 2010-01-31 6:57 pm
  6. 2010-01-31 3:19 pm
    • 2010-01-31 4:12 pm
      • 2010-01-31 4:39 pm
        • 2010-01-31 7:10 pm
      • 2010-01-31 10:43 pm
        • 2010-01-31 11:07 pm
          • 2010-01-31 11:13 pm
  7. 2010-01-31 3:19 pm
  8. 2010-01-31 3:19 pm
    • 2010-01-31 3:49 pm
      • 2010-01-31 4:02 pm
        • 2010-01-31 6:06 pm
      • 2010-01-31 4:03 pm
      • 2010-02-02 8:23 pm
  9. 2010-01-31 3:36 pm
    • 2010-01-31 5:05 pm
      • 2010-02-01 1:10 am
        • 2010-02-01 1:34 am
          • 2010-02-01 1:57 am
        • 2010-02-01 11:52 am
          • 2010-02-01 6:51 pm
      • 2010-02-01 2:41 am
        • 2010-02-01 3:00 am
          • 2010-02-01 7:01 am
          • 2010-02-01 7:41 am
      • 2010-02-01 1:24 pm
        • 2010-02-02 7:35 pm
    • 2010-01-31 5:17 pm
  10. 2010-01-31 3:37 pm
    • 2010-01-31 6:33 pm
      • 2010-01-31 7:12 pm
  11. 2010-01-31 3:49 pm
    • 2010-01-31 4:04 pm
      • 2010-01-31 4:07 pm
        • 2010-01-31 4:16 pm
          • 2010-01-31 4:41 pm
          • 2010-01-31 7:12 pm
          • 2010-02-01 1:19 pm
          • 2010-02-02 12:24 am
          • 2010-02-02 1:03 am
        • 2010-02-01 3:54 pm
  12. 2010-01-31 4:38 pm
    • 2010-01-31 11:46 pm
  13. 2010-01-31 4:56 pm
    • 2010-01-31 4:59 pm
      • 2010-01-31 6:07 pm
        • 2010-01-31 8:07 pm
        • 2010-01-31 10:51 pm
  14. 2010-01-31 5:01 pm
    • 2010-01-31 6:15 pm
    • 2010-01-31 6:38 pm
      • 2010-01-31 11:08 pm
        • 2010-02-01 7:16 am
    • 2010-01-31 6:56 pm
      • 2010-01-31 10:12 pm
        • 2010-01-31 10:39 pm
          • 2010-02-01 1:19 am
          • 2010-02-01 1:31 am
  15. 2010-01-31 6:19 pm
  16. 2010-01-31 7:00 pm
  17. 2010-01-31 7:05 pm
    • 2010-01-31 7:20 pm
      • 2010-01-31 10:08 pm
  18. 2010-01-31 7:06 pm
    • 2010-01-31 10:07 pm
      • 2010-02-01 11:01 am
  19. 2010-01-31 8:03 pm
    • 2010-02-01 3:36 pm
      • 2010-02-01 5:22 pm
  20. 2010-01-31 11:10 pm
    • 2010-01-31 11:16 pm
    • 2010-01-31 11:20 pm
  21. 2010-01-31 11:47 pm
  22. 2010-01-31 11:54 pm
    • 2010-02-01 12:00 am
  23. 2010-02-01 12:12 am
    • 2010-02-01 1:58 am
      • 2010-02-01 2:18 am
        • 2010-02-02 12:35 am
  24. 2010-02-01 12:43 am
  25. 2010-02-01 2:04 am
    • 2010-02-01 3:18 pm
    • 2010-02-02 12:33 am
  26. 2010-02-01 3:34 am
    • 2010-02-01 6:40 am
      • 2010-02-01 8:45 am
  27. 2010-02-01 9:22 am
  28. 2010-02-01 9:52 am
    • 2010-02-02 12:14 am
  29. 2010-02-01 10:45 am
  30. 2010-02-01 11:58 am
    • 2010-02-01 12:06 pm
      • 2010-02-01 4:05 pm
        • 2010-02-01 10:37 pm
          • 2010-02-02 7:10 am
          • 2010-02-02 9:50 am
          • 2010-02-02 10:36 am
          • 2010-02-02 10:52 am
          • 2010-02-02 11:18 am
          • 2010-02-02 11:47 am
    • 2010-02-01 12:22 pm
      • 2010-02-02 7:18 am
        • 2010-02-02 9:09 am
          • 2010-02-02 10:50 am
          • 2010-02-02 11:06 am
  31. 2010-02-01 2:05 pm
  32. 2010-02-01 2:16 pm
  33. 2010-02-01 6:41 pm
  34. 2010-02-02 11:41 am
  35. 2010-02-03 8:56 am