Blogging Theora
Mar. 20th, 2008 03:34 pm
- Painfully detailed code review complete.
- Original VP3 SAD pre-analysis determined to be extraneous.
- The 64-pass-per-frame (no, I'm not kidding) DCT token packing loop replaced.
- Multi-step, multi-multi-multi-pass coding tightened up to a pass-and-a-half loop.
- New mode selection code based on theora-exp.
- New motion estimation and compensation code.
The primary intent of the MV-specific work was to increase speed without impairing coding efficiency. This we've done to the tune of 1.5x improvement (Theora best case vs. Thusnelda) to 10x (Theora worst case vs. Thusnelda); additional planned work may yet double performace again.
Optimization of block type selection (mode select) was to increase coding efficiency. The new MV and mode selection code alone, compared directly to the algorithm used by mainline Theora, currently improves bitrate coding efficiency approximately 10%.
Above: example of mode
selection in a frame of video from mainline Theora encode.
Mainline Theora as above, but directed to code all blocks
and disable ZeroBin, such that the only differences we're
comparing between mainline Theora and Thusnelda are the motion and
mode code.
Above: example of
mode selection in a frame of video from the Thusnelda encoder.
This is still brand new code, and we know of a few nasty bugs still in the new encoder-- just in case you should decide to play with the code and run into them. See the full page for the video including the above frames, including versions that include the debugging telemetry as part of the encoded video.