On2 was founded in 1992 as a video compression company, and its TrueMotion line of codecs have now seen seven development generations. The codecs have gained wide adoption in major applications like Adobe's Flash Player, Skype, Viewpoint Media Player, AIM Triton, The Sims 2 from Electronic Arts, and the Move Networks media player. As a result, today On2 codec technology claims well over a billion installs. TrueMotion video formats play an important role in today's video ecosystem.
This article is an introduction to On2's most recent TrueMotion codec: VP7.
A video compressor's goal is simple: take raw video data in, and output a much smaller amount of compressed data. A decompressor later converts the compressed data back to raw video that closely resembles the original raw video.
At a high level, On2 VP7 accomplishes this goal in much the same way as other video codecs. It uses motion compensation to exploit temporal redundancy, frequency-based block transforms to exploit spatial redundancy, a loop filter to deal with block transform artifacts, and entropy encoding to exploit statistical correlation. Despite these high-level similarities, several patent-pending innovations set On2 VP7 apart.
One of the first things that jumps out at new users of On2's TrueMotion codecs is the golden frame. Like other compressors, TrueMotion retains a recently decompressed frame to use as a predictor for the current frame. Some codecs retain the last several frames; others use a frame from the future that is decompressed out of order, and then used as a predictor (as in P frames shipping before B frames). TrueMotion codecs and VP7 in particular instead retain a frame's worth of decompressed data from the arbitrarily distant past. The codec can update any part of that frame at any future point in time. We call this secondary reference frame a golden frame, and have found many uses for it.
Figure 1: On2 VP7's Frame Types (Note: These frame types are just guidelines. Through the VP7 SDK, users control exactly when frames use or update the golden or last frame reference buffers.)
Foregrounds matter most
The first use we found was segmentation of foreground and background video. For example, in most video conferencing applications there is a person talking in front of a static background. The speaker occludes the background but, as the speaker shifts in his seat, he reveals new parts of the background. By updating golden frames with only non-moving high quality blocks, TrueMotion codecs maintain high-quality background images despite fast-moving foregrounds.
Next: Packet-loss recovery, video conferencing