- Streaming production
- Streaming fundamentals
- Encoding your video
- Choosing production tools
- Distributing your video
- Video tutorials
- Peer review
Which codec is hardest to play back; VC-1, H.264 or VP6?
Is H.264 harder to play back than VC-1 or VP6?Here are the results of tests that compare the required CPU horsepower to play VP6, H.264 and VC-1 files. In this report, I’ll detail the procedures and describe my findings.
To ensure that the test was fair, I contacted Kevin Towes from Adobe and Ben Waggoner from Microsoft. I produced the VC-1 file in Expression Encoder 2 using parameters supplied by Ben, and the H.264 file in Sorenson Squeeze using the MainConcept codec. I produced using the High Profile with all quality options set to the max, since this would create both the highest quality file and a file that was the most difficult to decode.
I produced VP6-S and VP6-E files in On2 Flix Pro. I produced all files at 1.6 mbps VBR in 720p configuration (29.97) and we used Inlet Semaphore to analyze the files and make sure that their maximum data rates were similar, since Be was concerned that extraordinary peaks in any file would present excess decode number.
Ben actually produced the Silverlight Player that I used in my test for reasons I’ll explain later. You can download the bits he created at www.doceo.com/silverlight/SL_player.zip. I used a stock skin from Adobe Flash CS3 for the Adobe player. You’ll note if you play the files that the features map evenly, with similar controls on both players. I uploaded all files to my own web site, www.doceo.com, where they exist until this very day.
I tested playback on the computers identified below using the following procedures:
- Stopping playback of the files and making sure the file was fully downloaded before playing
- Resizing the browser so that the player was fully presented with no other windows above any portion of the browser
- On Windows systems, I played the file, then recorded the total CPU utilization every second for the duration of the file (about 93 seconds). If the utilization figure didn’t change from second to second, I recorded it separately each second (you’ll see what I mean if you try this). Then I divided this by the number of samples to produce the average CPU utilization.
- On the Mac, I set Activity Monitor to report once every two seconds, and then captured and reported the average CPU utilization for just the browser.
On the Windows platform, H.264 Flash was always less computationally intense than VP6. On the Mac, the situation was reversed, though I was testing with either older or low power current Macs. I’d be interested if anyone out there with a beefier Mac could run these tests and supply some details.
- VP6-S, which is supposed to be the easy to decode version (think VP6-S for simple) wasn’t consistently easier to decode than VP6-E (think VP6-E for excellent). On the two lower end Macs that I tested, however, VP6-S was the only format that played at full frame rate with no audio breaks. On the xw4100, VP6-S played smoothly and without audio breaks, while VP6-E played fewer frames and suffered several audio breaks. If I was producing HD video and I cared about older Mac and Windows computers, I’d strongly consider VP6-S.
- H.264 was never required a higher CPU% than Silverlight, but the difference never mattered. On all computers where one codec failed, the other failed as well. One thing that I learned during this process was that while Windows Media Player does play back using the graphics card CPU (or GPU), Silverlight doesn’t. For this reason, it’s not as efficient as Windows Media Player.
- The skin used to create the Silverlight plug-in can dramatically impact the CPU required to play the file. For example, the first Silverlight player I created (using a template from Expression Encoder 2), which you can try here (www.doceo.com/SL/SL.html) required 78% of the CPU when playing back on the HP xw4100, compared to 52.5% for the Silverlight player that Ben created. In particular, note that all templates from the Expression Encoder are scalable by default, and scale the player window according to browser size. Given that the Silverlight Player doesn’t use the GPU, I wouldn’t use an EE2 template for HD content.