Streaming Media

 
Streaming Media on Facebook Streaming Media on Twitter Streaming Media on LinkedIn Streaming Media on YouTube
Sponsors

The HD Showdown: Codec Vendors Battle It Out for Supreme Quality
Microsoft, On2, and Jan Ozer square off to determine which codec produces the highest quality video: VC-1, VP6, or H.264.
Learn more about the companies mentioned in this article in the Sourcebook:
{0}

You can see all three data rate graphs; note that the first two scenes are talking-head videos followed by increasingly higher-motion clips. Interestingly, the clip that starts at about 30 seconds is a close-up (of the fabulous banjo player Stevie Barr) that doesn’t look particularly high-motion but includes lots of pans and zooms. Later clips include mostly dancing shots from three different ballets. Note that the small red bars beneath the timeline mark the location of keyframes, which were fairly spread out in all files.

Since all files passed the dropped-frames test, I moved to still-frame quality, where I compared the results of seven benchmark frames, one from each scene. Overall, H.264 clearly won every trial, from low to high motion, retaining more detail and showing fewer compression artifacts than either other codec. In general, when the going got tough, VP6 would become slightly blurry while VC-1 would show more blockiness and other artifacts.

During real-time playback, H.264 continued to excel with a minimal amount of the blockiness and shifting that characterized the other two codecs. The only types of content that noticeably stressed H.264 were panning shots with a static back wall.

In contrast, real-time playback wasn’t particularly kind to VC-1. Low-motion shots showed lots of mosquitoes and blocks around the main subjects, even during locked-down camera talking heads. High-motion shots were even worse; although VC-1 did a nice job maintaining a stable back wall during panning, the subjects themselves were noticeably blocky. Audio volume was noticeably muted compared to the other two files, something to watch for if you’re producing with Expression Encoder. VP6 was somewhere in the middle with less visible artifacts than Microsoft, but it was never as clear as H.264.

Perspective
What’s it all mean? By this point, we all know that quality is only one factor to consider when selecting a codec. We also know that given a sufficient data rate, any codec can deliver stunning quality, one of the obvious lessons from the Summer Olympics, where Silverlight quality was better than what I saw on my TV.

Still, just for fun, I produced another set of files from the After Effects intermediate file at 1,200Kbps, an increase of 50% over the vendor-submitted files. VC-1 still exhibited many of the same problems noted above while H.264 was nearly artifact-free, though still having problems with panning motions. From what I’ve seen and from what you can see yourself at www.doceo.com /HDcomps.html, if you do choose VC-1, you’ll have to encode at a higher data rate than you would with H.264.

Addendum
After I completed my initial analysis, Microsoft came back with one more encoding iteration that uses a little-known and even less-available encoding option: specifically, the ability to scale the video from 1280x720 resolution to 1280x544 (the single field height from 1080i) during compression, then scale it back to full resolution during decoding. While too late to redo the analysis presented previously, I wanted to have a look and see if the new technique would change the results.

First, the encoding details: Microsoft did not implement this feature in Expression Encoder, and it was available in only one of the eight encoders in my office, though it didn’t work in my tests—all files were encoded to full resolution. To produce the file, Microsoft used an open source encoder called AVS2ASF that was developed by the Doom9 community and can be downloaded at http://kurtnoise.free.fr/index.php?dir=misc. AVS2ASF is one of those intuitive command line tools that we nonprogrammers know and love, and the command line argument that Microsoft used to produce the file is available at www.compressionmatters.com, along with the file itself.

Note that the fact that the file is subsampled during encoding is completely transparent to the viewer. That is, when the file plays, information in the file header instructs the playback program to decode and scale the video to its full resolution, and the person watching the video is none the wiser.

With all this as a prologue, how was the quality? Overall, it was better than the full-resolution version with significantly fewer blocks and background artifacts, though low-motion shots were also noticeably blurrier. Most importantly, however, the subsampled version never exceeded the output quality of VP6 or H.264.

This doesn’t mean that the technique doesn’t have merit, as it may be useful in scenarios where you want to retain big-screen video but minimize data rate. Still, the technique must be used with caution when producing for Silverlight because while Windows Media Player can scale using your graphics processor, Silverlight can only use the host CPU, which may slow playback on slower target computers.