Thanks to David Conrad and Ronald Bultje who committed their native VP8 video decoder to the FFmpeg codebase yesterday. At this point, it can decode 14/17 of the VP8 test vectors that Google released during the initial open sourcing event. Work is ongoing on those 3 non-passing samples (missing bilinear filter). Meanwhile, FFmpeg’s optimization-obsessive personalities are hard at work optimizing the native decoder. The current decoder is already profiled to be faster than Google/On2’s official libvpx.

Testing

So it falls to FATE to test this on the ridiculous diversity of platforms that FFmpeg supports. I staged individual test specs for each of the 17 test vectors: vp8-test-vector-001 … vp8-test-vector-017. After the samples have propagated through to the various FATE installations, I’ll activate the 14 test specs that are currently passing.

Initial Testing Methodology

Inspired by Ronald Bultje’s idea, I built the latest FFmpeg-SVN with libvpx enabled. Then I selected between the reference and native decoders as such:

$ for i in 001 002 003 004 005 006 007 008 009 \ 010 011 012 013 014 015 016 017 do echo vp80-00-comprehensive-${i}.ivf ffmpeg -vcodec libvpx -i \ /path/to/vp8-test-vectors-r1/vp80-00-comprehensive-${i}.ivf \ -f framemd5 - 2> /dev/null done > refs.txt $ for i in 001 002 003 004 005 006 007 008 009 \ 010 011 012 013 014 015 016 017 do echo vp80-00-comprehensive-${i}.ivf ffmpeg -vcodec vp8 -i \ /path/to/vp8-test-vectors-r1/vp80-00-comprehensive-${i}.ivf \ -f framemd5 - 2> /dev/null done > native.txt $ diff -u refs.txt native.txt

That reveals precisely which files differ.