Log in

View Full Version : WMV9 - DXVA - Performance Analysis and a (solved) Mystery


JohnnyFu
9th November 2006, 07:59
Hi,

First of all, English is not my native language. I hope you can understand my writing, I know how hard it is sometimes to read broken language, I am sorry for that.
I would appreciate PM´s with corrections on my sentences below, so I can edit them for more comfortable reading.

I wanted to see how software players and Nvidia PureVideo technologie performs on WMV9. So i made the following tests.
Please note, I am probably this what most of you guys would call a “newbie. I haven’t worked much often with Excel, i am not a video-nerd but an very experienced PC user. Howewer, I don’t claim the following to be correct.

Critics, feedback, ideas, corrections are very very welcome.

Edit: there are some things wrong in this post. i have posted a correct version below in this thread

System:
Asus A8N32-SLI Deluxe - Forceware 93.71 – nForce 6.86 – Audigy Driver 2-09.0016
AMD A64 3500+ Venice E6 @ 2700Mhz 1,35v - Media Player Classic 6.4.9.0
2x 512MB Corsair XMS CL2.5-3-3-7-1T @ 245Mhz 2,8v - Media Player 10 (DXVA patch)
2x WD360GD Raptor SATA Raid-0 (Workstation) - Media Player 11
1x Samsung 30GB IDE (Teststation) - PowerDVD 7 build 2211a
1x PCIe Gigabyte 7600GT (passive cooled) - 2x WinXP Pro SP2 (on both, Teststation and Workstation)
1x PCI Creative Audigy - Step into Liquid 1080p WMV9 Trailer.wmv
Samsung 940BW 19” TFT 16:10, (1440x900 native resolution)

http://home.arcor.de/johnnyfu/screen_shots/test_run_1.jpg

* “Use High Quality (VMR9)” enabled (default is “Use Overlays”).
** DirectX Video Acceleration – (supports Nvidia PureVideo)

I measured the CPU usage five times in a row with perfmon and calculated an average value (see excel sheets). The results were more consistent then I had expected to be. Error of measurement is about +-1%.
All software/driver settings are left by default except the HQ mode test.

As you can see, HQ mode needs about 6% more CPU than default “Use Overlays” mode. So I expected a steady behavior with the DXVA patch installed.
But after I had installed the DXVA patches, the results were equal, no difference between default and HQ mode. Either VMR9 is not working when DXVA is in use or PureVideo does a really good job. But I guess VMR9 doesn’t work with DXVA.

I also ran the whole test procedures with Forceware 84.21, but since there was no performance difference I decided not to include the results into this document.
VLC player had problems to scale the video correctly onto my monitor, and I couldn’t figure out how to configure it correctly. I don’t like VLC anyway, so I kicked it out of the tests.

Now begins the interesting part. After all tests were finished I booted my workstation to work with excel. I don’t know why but during all the excel work I downloaded GraphEdit and played the Step-into-Liquid trailer, I looked at the task-manager and was very surprised. So I decided also to run the trailer five times in GraphEdit.
See the result:
http://home.arcor.de/johnnyfu/screen_shots/graphedit_worksation_1.jpg
This was a huge performance boost from all what i saw before in my tests. Why GraphEdit gives such a good result ? I couldn’t believe that…. I couldn’t see any difference in the picture quality or something else. Does GraphEdit use DXVA ?
I decided to boot the teststation again to run GraphEdit under the same terms like the other tests before. The result was like that what I had expected before from the workstation.
http://home.arcor.de/johnnyfu/screen_shots/graphedit_teststation_1.jpg
Both, teststation and workstation are WinXP SP2, installed on the same computer but different hard drives. A hard drive can not cause such a huge difference :D
So it must be something in the software setup. But also the software was nearly identical, expect for: The Windows Media Player !
I was running WMP11 on the workstation and WMP10 on the teststation.

To check if my presumption was correct I had to install WMP11 on the teststation too. And yes… I was right… see the results:
http://home.arcor.de/johnnyfu/screen_shots/graphedit_teststation_2.jpg

Is it possible that GraphEdit is using DXVA when you have WMP11 installed ? But not when you have only WMP10 (+DXVA patch) installed ?

Anyway… I included WMP11 into tests procedure. And here is the final result:

http://home.arcor.de/johnnyfu/screen_shots/final_results.jpg
* “Use High Quality (VMR9)” enabled (default is “Use Overlays”).
** WMP10 DXVA patch installed – ( supports Nvidia PureVideo)
*** GraphEdit after WMP11 was installed or when WMP10 +DXVA patch was insatlled


At the end I don’t know what’s up and what’s below. I spend more than a whole day for the whole test procedures. I am totally empty :D
What’s left is the GraphEdit mystery and the question about VMR9+DXVA. Why does GraphEdit perfmon normal until you have WMP11 installed and then even outperforms WMP10 and WMP11 in DXVA mode ?
Does VMR9 not work with DXVA ?

Johnny

zambelli
9th November 2006, 08:58
OK, let me start first by explaining how DXVA WMV decoding works. You need 3 major components to have DXVA WMV decoding working properly:
1) hardware (i.e. Nvidia GeForce 6xxxx or better)
2) drivers (i.e. Forceware 93.71)
3) WMV decoder with DXVA support

As you can see, the WMV decoder plays an important role. Every new version of WMP comes with a new WM runtime, which includes WMV decoders. So yes, WMP10 and WMP11 install different WMV decoders on your machine.

Also note that there are two media paths for decoding WMV videos using the same decoder: one is through the WM Format SDK, and the other through DirectShow. Both media paths support DXVA decoding.

Hi,
But after I had installed the DXVA patches, the results were equal, no difference between default and HQ mode. Either VMR9 is not working when DXVA is in use or PureVideo does a really good job. But I guess VMR9 doesn’t work with DXVA.
WMP does not use VMR9. It uses VMR7, always. The difference between normal and HQ mode is that HQ mode uses VMR7 in YUV Mixing Mode. Check out http://msdn2.microsoft.com/en-us/library/ms788177.aspx for details on that mode.

Both VMR7 and VMR9 support DXVA, as does the new EVR in Vista.

VLC player had problems to scale the video correctly onto my monitor, and I couldn’t figure out how to configure it correctly. I don’t like VLC anyway, so I kicked it out of the tests.
I think VLC uses its own WMV decoder, which I doubt has DXVA support. No surprise there.

This was a huge performance boost from all what i saw before in my tests. Why GraphEdit gives such a good result ? I couldn’t believe that…. I couldn’t see any difference in the picture quality or something else. Does GraphEdit use DXVA ?
This is because GraphEdit uses DirectShow, while WMP uses WM Format SDK for WMV playback. Two different media paths, two different performances. The decoder is the same in both cases though.

Is it possible that GraphEdit is using DXVA when you have WMP11 installed ? But not when you have only WMP10 (+DXVA patch) installed ?
Indeed. WMP10+QFE only enabled DXVA for WMP. The WMP11 WMV decoder has DXVA working for both DirectShow and WMF SDK. Also, far more work was done on the DXVA decoding aspect in v11 than it was in v10, so that would explain the perf improvements.

What’s left is the GraphEdit mystery and the question about VMR9+DXVA. Why does GraphEdit perfmon normal until you have WMP11 installed and then even outperforms WMP10 and WMP11 in DXVA mode ?
Does VMR9 not work with DXVA ?
Yes, it does, and you can verify it by using VMR9 in GraphEdit, after all.

The bigger mystery to me is that DXVA decoding didn't kick in when you used Media Player Classic. It should've worked. Which VMR did you use in MPC?

JohnnyFu
9th November 2006, 09:44
Thank you very much for the detailed technical explanations.
Now i understand some things much better.


The bigger mystery to me is that DXVA decoding didn't kick in when you used Media Player Classic. It should've worked. Which VMR did you use in MPC?

I used the MPC default settings, "DirectShow Video: System default".
And I think i can solve the last mystery :D

The WMP11 WMV decoder has DXVA working for both DirectShow and WMF SDK

When i ran the MPC measurements the old WMP10 WMV decoder was installed.

I will rerun MPC measurements with the new WMP11 WMV decoder now. I guess the results will be about 25% CPU like the GraphEdit ones :D
Will edit the graphics above then.

Again, thank you very very much...
Johnny

JohnnyFu
9th November 2006, 13:59
Ok, i included MPC results using the WMV decoder wich comes with WMP11. And I attached the excel sheets too.

http://home.arcor.de/johnnyfu/screen_shots/final_results_fix.jpg
* using the WMV decoder wich comes with WMP11.
** using the WMV decoder wich comes with WMP10.
*** DXVA patch for WMP10 installed.
**** HQ mode (YUV mixing) activated in WMP performance options, not sure if this really works with DXVA. I tried to activate it manually for the MPC tests but it always unchecked itself when i closed the filter properties.
!GraphEdit used the system default renderer in both tests.

Edit:
I forgot something, since WMP11 is installed MPC no longer adjusts the step-into-liquid trailer correct onto my monitor (i have a widescreen TFT). WMP still adjusts the video correct, so this is maybe a compatibility issue between MPC and the WMV decoder wich comes with WMP11 ? Please have a look on the attached screenshot to see what i am talking about :)

CruNcher
9th November 2006, 23:20
That is strange my (older decoding) test showed that VMR9(windowed) should be more performant (on Nvidia Cards Drivers at least) then VMR7/renderless/windowed (VMR7 playback created high spikes every x seconds for me) hmm wich mode did you tested here in MPC ? (but that was for Mpeg-2 HD and some Nvidia Driver revisions back).
And about the second Graphedit Bar the one that shows 25,88% was this connected to the standard "Video Renderer" or Video Renderer 7 difference is the VMR Input0 Pin i think.


I forgot something, since WMP11 is installed MPC no longer adjusts the step-into-liquid trailer correct onto my monitor (i have a widescreen TFT). WMP still adjusts the video correct, so this is maybe a compatibility issue between MPC and the WMV decoder wich comes with WMP11 ? Please have a look on the attached screenshot to see what i am talking about

Yeah as MPC is almost abondend in its Development i think that more such Problems gonna show up in the future with DMO codecs.

PS: Trying to capture DXVA output and Overlay won't work but we know what you mean :)

JohnnyFu
10th November 2006, 02:39
Hi,

That is strange my (older decoding) test showed that VMR9(windowed) should be more performant (on Nvidia Cards Drivers at least) then VMR7/renderless/windowed (VMR7 playback created high spikes every x seconds for me)
(but that was for Mpeg-2 HD and some Nvidia Driver revisions back).

I`ll compare VMR7 and VMR9 on MPEG2-HD today or tomorrow.

hmm wich mode did you tested here in MPC ?

Do you mean windowed or renderless ? It was windowed.

And about the second Graphedit Bar the one that shows 25,88% was this connected to the standard "Video Renderer" or Video Renderer 7 difference is the VMR Input0 Pin i think.

I used the default renderer in both GraphEdti tests, "VMR Input0" i think but not for sure. Does "VMR Input0" means VMR7 ?
The huge performance difference in both GraphEdit results is due to the old WMV decoder , not the renderer.

Btw, I couldn't find VMR7 in the filter list. There is "Video Mixing Renderer 9" and two times "Video Renderer" (one of them shows up as "Input - Video Renderer" and one as "VMR Input0 - Video Renderer".) but nothing that includes a "7".

arfster
10th November 2006, 22:11
"Btw, I couldn't find VMR7 in the filter list. There is "Video Mixing Renderer 9" and two times "Video Renderer" (one of them shows up as "Input - Video Renderer" and one as "VMR Input0 - Video Renderer".) but nothing that includes a "7"."



From memory....


VMR9 : called "video mixing renderer 9" in graphedit, has "VMR input 0" before connected, and VMR input 1/2/3 when connected

VMR7 : "video renderer", has VMR0 as input

Overlay : "video renderer" also, has "input" as input, has a directdraw tab that VMR modes don't have


Black level and perhaps colours are kinda different between the three, so i always stick to VMR9.

JohnnyFu
11th November 2006, 02:52
VMR9 : called "video mixing renderer 9" in graphedit, has "VMR input 0" before connected, and VMR input 1/2/3 when connected

VMR7 : "video renderer", has VMR0 as input

Overlay : "video renderer" also, has "input" as input, has a directdraw tab that VMR modes don't have

Thank you. Yes VMR9 seems to have the best colours, i use it too from now on.

CruNcher
11th November 2006, 03:06
VMR9 uses TV Scale and that is bad for PC Monitor viewing (you gonna see foggy shades and blacks not being black) CoreAVC has a fix for that in it's Decoder Cyberlink and others don't also Cyberlinks chroma upsampleing isn't the best Mainconcept/Elecard has better Chroma quality (only with Hardware accelleration tough) also CoreAVC fails in this regards and all of this also impacts the rendering speeds (dunno about WMV) ;)

KoD
11th November 2006, 12:20
VMR9 is meant for watching on TV-out material that is destined to be watched on a TV screen. PC color levels are different from those used in the TV world, just like CruNcher said. Blacks will look gray when viewed with VMR9 on a PC monitor, and image levels will be shifted as the gamma ramp is no longer the same. Differences in hue will also be visible.

arfster
11th November 2006, 15:12
So does VMR7 or overlay expand tv-scale material to 0-255?

KoD
11th November 2006, 15:25
VMR 7 will use overlay when possible (not the VMR7 renderless mode, though). And yes, Overlay does TV scale -> PC scale color conversion (or so it has always done - well, maybe on Nvidia cards things were a little bit weird for a couple of driver revisions).

CruNcher
11th November 2006, 19:58
you can at least define PC/TV scale on the DVI output of Nvidia cards via Registry settings yourself :)