FFmpeg gets its own implementation of Google’s VP8 codec

Open source software developers are building a native VP8 video codec …

Developers Ronald Bultje, David Conrad, and Jason Garret-Glaser are creating a native VP8 video codec implementation for the open source FFmpeg project. The aim of this effort is to bring first-class VP8 support to FFmpeg and demonstrate the feasibility of producing an independent VP8 implementation.

The VP8 video codec was developed by On2, a multimedia technology company recently acquired by Google. At the Google I/O developer conference last month, the search giant liberated the VP8 intellectual property and opened its source code to provide a royalty-free codec for the Web that is suitable for widespread use with standards-based HTML5 video. The VP8 codec is thought to be sufficiently competitive with the industry-leading H.264 codec, but it is still unclear whether VP8's status as a patent-unencumbered codec will withstand legal scrutiny.

Several major browser vendors have embraced VP8 by using Google's own code, which was released under a permissive BSD license. In a blog entry written this week, Bultje explained that he and his fellow contributors are creating their own compatible version for FFmpeg so that they can scope out the limitations of the specification and help advance the codec as a standard.

Building on top of FFmpeg will allow them to take advantage of a substantial body of existing code. FFmpeg already supports previous iterations of the codec, such as VP5 and VP6, which share some common characteristics with VP8. According to Bultje, some of the optimizations developed for FFmpeg's H.264 and VP5/6 code can be shared seamlessly with the new VP8 implementation. This approach will lead to a smaller footprint than if the developers were to simply graft Google's code into FFmpeg.

Bultje also believes that he and other developers can produce an FFmpeg-based VP8 decoder that will substantially outperform Google's code. In his blog entry, he points out that this wouldn't be unprecedented because FFmpeg's Theora and Vorbis decoders are widely regarded as superior to the standard reference implementation that is produced by Ogg-backer Xiph.

"It is highly likely that our native VP8 decoder will (once properly optimized) also perform better than Google's libvpx," he wrote. "The pattern here is that since each libXYZ has to reinvent its own wheel, they'll always fall short of reaching the top. FFmpeg comes closer simply because our existing wheels are like what you'd want on your next sports car."

Spec limits

Although the developers are making impressive progress in their undertaking, they have encountered some challenges due to the limitations of Google's official VP8 specification. The document that describes the codec is said to be cryptic and incomplete in many ways, largely because it relies heavily on the source code.

Garret-Glaser, one of the contributors to the project, is best known for his work on x264, an extremely efficient implementation of H.264. His involvement in the VP8 development effort is particularly noteworthy because he is a vocal skeptic regarding VP8's patent status and its competitiveness relative to H.264.

Garret-Glaser published an extremely comprehensive technical analysis of VP8 on his blog shortly after the codec was opened by Google. In his analysis, he identified some of the key weaknesses of the specification and described some areas where VP8 might be susceptible to patent claims due to its substantial similarity to H.264.

The current status of the FFmpeg-based VP8 implementation is impressive. Bultje says that its output perfectly matches that of Google's own implementation in all of the tests in the VP8 vector test collection. This is a promising sign that the two implementations are compatible. The developers are now focusing on optimization.