Analysis of Google’s VP8


From Jason Garrett-Glaser’s analysis of Google’s VP8 (emphasis mine):

But first, a comment on the spec itself.


The spec consists largely of C code copy-pasted from the VP8 source code — up to and including TODOs, “optimizations”, and even C-specific hacks, such as workarounds for the undefined behavior of signed right shift on negative numbers. In many places it is simply outright opaque. Copy-pasted C code is not a spec. I may have complained about the H.264 spec being overly verbose, but at least it’s precise. The VP8 spec, by comparison, is imprecise, unclear, and overly short, leaving many portions of the format very vaguely explained. Some parts even explicitly refuse to fully explain a particular feature, pointing to highly-optimized, nigh-impossible-to-understand reference code for an explanation. There’s no way in hell anyone could write a decoder solely with this spec alone.

And the result of this type of spec?

The encoder and decoder share a staggering amount of code. This means that any bug in the common code will affect both, and thus won’t be spotted because it will affect them both in a matching fashion.

A patch to fix a bug in the decoder has already been removed instead of fixing the same bug in the encoder.

Warning: require_once(/nfs/c02/h05/mnt/20370/domains/ [function.require-once]: failed to open stream: No such file or directory in /nfs/c02/h04/mnt/20370/domains/ on line 22

Fatal error: require_once() [function.require]: Failed opening required '/nfs/c02/h05/mnt/20370/domains/' (include_path='.:/usr/local/php-5.3.29/share/pear') in /nfs/c02/h04/mnt/20370/domains/ on line 22