Log in

View Full Version : DXVA - how does it works?


vlada
9th June 2008, 10:15
Hi,

please let me help to understand how exactly DXVA works. What is and what is not possible. I heard a lot of different information and don't know what is true and what is not.

Please tell me if these statements are truth or not:

1) DXVA doesn't run in GPU, current graphics cards have a special chip dedicated to video decoding.

2) DXVA 1 can only display the decoded video, can't return it back to the application. So it can't be used in transcoding or NLE.

3) DXVA 2 can be used in NLE.

Now what exactly is the difference between DXVA 1 and 2? Is it a HW or SW issue or both? Thanks.

Edit: I can't change the thread name, if you can, please remove the last 's'.

Kado
9th June 2008, 13:51
GPU's have built-in decoders for specific videos like H264, WMV9/VC-1 and MPEG-2.
Basically to have hardware video decoding the renderer must support dxva, thats why haali renderer does not support dxva.
DXVA1 requires vmr9 or overlay mixer and dxva2 requires evr.
depending on the gpu, operating system and video you may only have access to dxva1 or dxva2.
A 6800gs that's supports motion compensation with dxva1 for H264 will not have motion compensation for dxva2 because DX cannot translate the dxva1 instructions for use with dxva2 in vista.
Use this tool (http://bluesky23.hp.infoseek.co.jp/#DXVAChecker) to see the available dxva modes your system supports, current version is 1.6.0.0. Also drag and drop a video to see the modes the codecs in your system support as well

roozhou
10th June 2008, 03:56
Is that true with DXVA once data stream is sent to display memory, it cannot be sent back main memory?

Casimir666
10th June 2008, 07:30
2) DXVA 1 can only display the decoded video, can't return it back to the application. So it can't be used in transcoding or NLE.
DXVA1 was design for display only yes. There is a ugly method to catch the framebuffer after decoding, but only decoder can do that (i have done this for debug purpose only).
DXVA2 (as DXVA1) provide the uncompressed frame in a directX surface. This surface can be read to do something else than diplay if you like.

Mpc-hc filter cannot be used for transcoding at the moment, because DXVA2 processor is ask to the EVR. Using DXVA2 without EVR should be possible with Media Foundation but i haven't look for this.

3) DXVA 2 can be used in NLE.
You mean to render NLE timeline? This will not play the video effects, and the problem will be to decode 2 streams at a time... I think i have seen somewhere a graphic card than can accelerate 2 DXVA streams at a time but I'm not sure of this.

Now what exactly is the difference between DXVA 1 and 2? Is it a HW or SW issue or both?
Only software differences. Buffers and control structure send to the accelerator are identical for 2.

vlada
10th June 2008, 08:33
Thank you for the answers. It's now much clearer to me.

As for NLE I meant if an editor can use DXVA for decoding video and then apply effects on it or transcode it to a different format. Decoding more streams at the same time will of course be a problem.

Also with DXVA2 I heard it would be possible to use a postprocessing filter (like ffdshow) during playback? Is this correct?

As for EVR I don't understand one thing - is it available only in Vista or can I use it in XP too? In MPC-HC there is written in needs Vista/.Net3. Does the slash stand for "and" or "or"? If I select EVR on my computer with XP and play a video, I can only see overlay mixer in filter list.

ranpha
10th June 2008, 09:57
Thank you for the answers. It's now much clearer to me.

As for NLE I meant if an editor can use DXVA for decoding video and then apply effects on it or transcode it to a different format. Decoding more streams at the same time will of course be a problem.

Also with DXVA2 I heard it would be possible to use a postprocessing filter (like ffdshow) during playback? Is this correct?

As for EVR I don't understand one thing - is it available only in Vista or can I use it in XP too? In MPC-HC there is written in needs Vista/.Net3. Does the slash stand for "and" or "or"? If I select EVR on my computer with XP and play a video, I can only see overlay mixer in filter list.

You can't use ffdshow post-processing with DXVA2. Only hardware-based post-processing is possible.

The / in EVR refers to OR. Means you need to have Vista OR XP+.Net3 to use EVR.

Yong
10th June 2008, 11:48
@vlada
EVR does not accept YV12, thats why you only see overlay mixer on filter list.
well, please correct me if im wrong :p