Alex headshot

AlBlue’s Blog

Macs, Modularity and More

Analysis of the WebM project


Today, Google announced that their recent On2 purchase has resulted in the open-source WebM project, hosted at WebMProject. (The M stands for Media.) This is the video VP8 codec as well as the Ogg Vorbis audio codec, combined in a Matroska-lite container.

Whilst Google is offering this as a BSD-like free license, and the implementation is royalty free, it doesn't mean that the codec isn't covered by patents. In fact, an analysis of the specifications raises a number of concerns in the way it is specified:

  • "The details of the prediction modes are most easily described in code"
  • "Following the tradition of specifying bitstream format using the decoding process, we specify the inverse WHT in the decoding process using the following C style source code"
  • "If there are any conflicts between this document and the reference source code, the reference source code should be considered correct."
  • vp8_clamp_mv(nearest, xd);
    vp8_clamp_mv(near, xd);
    vp8_clamp_mv(best_mv, xd); //TODO: move this up before the copy
  • pc->Width = swap2(*(unsigned short*)(c+3))&0x3fff;
    pc->horiz_scale = swap2(*(unsigned short*)(c+3))>>14;
    pc->Height = swap2(*(unsigned short*)(c+5))&0x3fff;
    pc->vert_scale = swap2(*(unsigned short*)(c+5))>>14;
    //   where swap2 is
    #if defined(__ppc__) || defined(__ppc64__)
    # define swap2(d) \
    ((d&0x000000ff)<<8) | \
    # define swap2(d) d

There's more information on about the technical ramifications of the protocol. The conclusion is that whilst it is better than the existing Ogg Theora, it still lags slightly or significantly behind H.264 and will suffer from the same problems that Flash software decoding has at the moment; specifically, lack of hardware-supported decoding. And though there's an impressive list of partners that have signed up to WebM, neither Apple nor Intel are present.