A while back I shared some playback performance numbers comparing the required CPU horsepower to play VP6, H.264 and VC-1 files. Briefly, in that test, I tested playback from the desktop using the FLV Player, QuickTime Pro and Windows Media Player, respectively.
While testing for my next training DVD, Critical Skills DVD for Final Cut Studio Streaming Producers, I rethought the test, deciding that it made more sense to test using the Flash and Silverlight Players, since that's how most of the audience would view these files. In this lengthy 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.
Silverlight: http://www.doceo.com/silverlight/test.html
H.264: http://www.doceo.com/h264/test.html
VP6: http://www.doceo.com/flv/test.html
VP6-S: http://www.doceo.com/flvs/test.html
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.
Here's what I found:
| Flash VP6E | Flash VP6S | Flash H.264 - High | Silverlight |
|
|
|
|
|
PowerMac Dual 2.7 GHz PPC G5, OS 10.4.11, FireFox, Flash Player 9.0.115.0, SL 1.0.30401.0 |
|
|
|
|
Processor (percentage of 2 processors) | 72.0% | 66.3% | 85.8% | 108.0% |
Drop frames | No | No | Yes | Yes |
Estimated frame rate | Full | Full | 5-6 fps | 1-2 fps |
Drop audio | No | No | Yes | No |
HP xw4100, 3.0 GHz P4 with HTT, Windows XP, FireFox Flash Player 9.0.124, SL 1.0.30401.0 |
|
|
|
|
Processor | 54.6% | 51.5% | 45.1% | 52.5% |
Drop frames | Yes | Yes | No | No |
Estimated frame rate | 25 fps | 27+ fps | Full | Full |
Drop audio | Yes | No | No | No |
iMac, 2.0 GHz Core 2 Duo, OSX, Flash 9.0.124.0, SL version 1.0.30401.0 |
|
|
|
|
Processor | 87.5% | 91.7% | NA | NA |
Drop frames | Yes | No | Yes - stopped | Yes - lost synch |
Estimated frame rate | 2 fps | Full | stopped | 1 frame/3 seconds |
Drop audio | Yes | no | Yes | yes |
HP 8710P, 2.2 GHz Core 2 Duao, Vista, IE, Flash 9.0.124.0, SL 2.0.30226.2 |
|
|
|
|
Processor | 51.9% | 52.0% | 34.8% | 47.3% |
Drop frames | No | No | No | No |
Estimated frame rate | Full | Full | Full | Full |
Drop audio | No | No | No | No |
Dell Precision 390, 2.9 GHz Core 2 Duo, XP, IE, Flash 9.0.124.0, SL 2.0.30226.2 |
|
|
|
|
Processor | 22.7% | 17.5% | 7.7% | 26.0% |
Drop frames | No | No | No | No |
Estimated frame rate | Full | Full | Full | Full |
Drop audio | No | No | No | No |
Observations
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.
If you find this information useful then I highly recommend you check out Jan's latest publications Critical Skills for Final Cut Pro Streaming Producers


The player from Ben Waggoner is optimized in terms of its non-scaling graphics, but its scripting still lacks optimization (e.g. it includes the 6.000 lines of Microsofts JS framework). Perhaps changing that can make a difference. I setup a small test too:
http://www.jeroenwijering.com/embed/sltest.html
http://www.jeroenwijering.com/embed/h264test.html
With a quick first test I am finding that both h264 player run at about 115-120% CPU of my Core2Duo 2.0 gHz MAC. Both Silverlight players perform at about 95-100% though. Silverlight 1.0.30109.0 and Flash Player 9.0.124. So much for javascript optimization.
A nice thing about Flash is its hardware-accelerated fullscreen. Push the fullscreen button on the H264 JW player and see the cpu drop to 50%. Silverlight, on the contrary, spikes to 150%. If only HW-accelerated windowed mode were possible...
Totally agree on the badly performing VP6 codecs. They are a pain for large-screen videos. The real pain for VP6 is not in decompressing, but in compressing though. It takes 2x/4x the time it takes to compress H264 or VC-1 files. This is obviously a huge drawback and one of the reasons (next to the licensing) that all these YouTube-like sites still use Sorenson Spark FLV.
The real reason could be that the result would had shamed Flash !
And about the usage argument, this is quite a poor one, cause who is really using Silverlight today (I mean. for real buisness, not for demo pay by microsoft ?)
Anybody with an iPod or an iPhone has QuickTime on its desktop. As for doing some real work with advanced capabilities with Flash or Silverlight, they are still missing the precision of Quicktime. Especially when it comes to the frame by frame navigation. For more about that, see :
http://blog.vrarchitect.net/post/2008/04/18/challe...
Jeroen, how could you see that the VP6 codecs performed 'badly'? Here's how I scored it for the tests 1 through 5, followed by the total score.....
F-VP6E 2, 3, 2, 2, 3 = 12
F-VP6S 1, 3, 1, 2, 2 = 9
F-H.264 3, 1, 4, 1, 1 = 10
SL-VC-1 3, 2, 4, 2, 3 = 14
I scored VP6S and H.264 on top and VC-1 last. The answer in these 'performance' tests is Flash out performed Silverlight.
As Jan mentioned, H.264 wins on the Windows platform and VP6S wins on the OS platform. If you're looking for strong performance across the the most devices, it's VP6S.
This is consistent with Jan's recent video 'Quality' results. Jeroen, honestly, you might want to have a a read here....
http://digitalcontentproducer.com/videoencodvd/rev...
You mentioned a licensing 'drawback' to using VP6? On2 codecs are proprietary, H.264 and VC-1 licensing is through the MPEGLA & VIA patent pools. On2's licensing is flexible & comprehensive, H.264 and VC-1 commercial applications pay the pools fees for usage, plus the cost to develop & maintain the video application. There are developers/designers, content providers, SoC/DSP makers and device makers that pay for the 'video tools & tech'. The developers/designers pay more for VP6....
...the content providers, SoC/DSP makers and device makers pay more for H.264 and VC-1. I guess it all depends on who's picking up the tab...
To keep you in tune with licensing, here's a link to the MPEGLA and VIA pool sites for licencing....
http://www.mpegla.com/avc/AVC_TermsSummary.pdf
ADBE, MSFT and Sun are going to battle in the RIA space and are looking to 'write once-to all screens' strategies. Content providers are battling for 'eyeballs' and also racing to take their content to the '3 screens'. Advertisers are moving digital and looking to 'targeted' eyeballs and expect to reap rewards in the move to video convergence. The bottom line appears to be a boon for video and the technology behind it. The testing above agrees with many before it, H.264 and On2's codecs are world-class and are at similar levels of quality and performance. Here's a question, what is the H.264 codec worth? What are the annual revenues from MPEGLA and VIA? Indeed, interesting times?
FYI, First, You Tube utilizes F7 video because they use it for free and second, the 'Flix Engine' transcodes to VP6 in over 80% of UGC sites today.
Jeroen, what else would you like to learn about video today?
Shame on you....OK, for your punishment, write the words 'honesty', 'morality', 'integrity', 'ethics' and 'charity' each 10,000 times....then apologize to this forum for your pollution.
You want to talk about honesty, morality and integrity? Not until you get some. You post lies about On2 on every blog and message that you can to try and pump your worthless stock.
Huh? Move Networks player isn't being integrated into Silverlight 2, nor will Silverlight 2 natively support VP6/VP7. Get your facts straight.
1) Move's tech is integrated into the Silverlight 2.0 plugin...this allows anyone with Silverlight 2.0 installed to view content delivered by Move Networks, without a separate download.
2) For NBCU, the Olympic media player, powered by Silverlight, was designed by Schematic, (Move's player designer, ABC (Emmy) and ESPN360).
3) So far, it doesn't appear that they are using 'adaptive streaming' yet and the video quality isn't great.....so likely VC-1. As the games begin and they switch to some of Move's content produced for Televisa, the quality difference will be very noticeable. NBC just announced the deal for Sun servers, so they appear ready to scale for the volumes they will see.
4) MSFT has on several occasions acknowledged that Silverlight will support more than just the 'legacy' format. That's great for Silverlight because if it's success is dependent strictly the performance of VC-1, they're in serious trouble! H.264 and VPx are both superior to VC-1 in quality AND performance! Where've you been?
So SamIam, get your facts straight, OK!!
1) FALSE. There is no Move technology in Silverlight 2. Ask anybody at Microsoft or Move. Search the SDK. It's not there.
2) TRUE. Schematic did design the Olympics Silverlight player, but the Olympics player has nothing to do with Move Networks.
3) FALSE. NBC Olympics website is already using adaptive streaming for some videos. The adaptive streaming technology was designed by Microsoft as a managed code plugin for SL2. NBC will not be using Move technology anywhere on their Olympics website. All videos are VC-1 encoded.
4) TRUE & FALSE. Yes, MS will likely add additional formats to Silverlight, but VP6 seems unlikely due to its high cost. H.264 seems more likely, but H.264 decoders performs *WORSE* than VC-1. Their quality is entirely dependent on the encoder implementation and configuration.
http://video.aol.com/video-detail/steve-sklepowich...
MSFT announced their intentions, whether they get it done is on them, but don't try to paint the Move deal as if it never happened.....we'll see in the final release....
Move's (VP7) ESPN360 and ABC HQ video would be a boost to their Olympic offerings....it's better video than VC-1 offerings and Sam, even as a blind man, you see the difference!!
Yes, I agree Silverlight adds 264, right next to it's VC-1 standards based licensing.....
....but you don't believe there are are customers that want 'better' licensing deals using VPx???
Encoding and 'volume deployments' are two different things....the On2 model offers flexibility that the pools can't match, what do you or your potential deployments think of these...
http://www.streamcrest.com/MPEG-4%20AVC%20License%20Proposals1.pdf
http://www.streamingmedia.com/article.asp?id=10405...
I work for Microsoft and I've been involved with the NBC Olympics project and I can confirm much of what Sam has stated is true.
Move Networks is not being used for NBC Olympics adaptive streaming. NBC is using a custom solution built by Microsoft. Silverlight 2 offers an API called MediaStreamSource which allows anybody to build custom code for streaming/download - and this can easily be applied to adaptive streaming too.
The article that Phillip mentions specifically says that Televisa is using Move for adaptive streaming of Olympics content to Spanish-speaking audiences. That's not NBC.
Most content on the NBC website that isn't Live or Rewind, typically identified as Highlights or Encore, is using adaptive streaming for delivery to the Silverlight player. You must use the Enhanced mode of the NBC player to experience this, and have at least 1.5 Mbps of bandwidth available.
Comparing NBC Olympics to ESPN360 or ABC HD is comparing apples and oranges. NBC Olympics doesn't offer true HD and the maximum bitrate is intentionally limited to 1.5 Mbps in order to reach the broadest audience. VC-1 or VP7 quality doesn't enter into it at all - the bitrates simply don't match up for a fair comparison.
And to the best of my knowledge, I'm not aware of any plans for Silverlight 2 to offer native support for Move adaptive streaming or bundle the Move plugin with Silverlight. I know that Move is planning on supporting Silverlight - but that's all I've heard.