Log in

View Full Version : Windows 7, VC-1 and DXVA


XadoX
4th May 2011, 14:04
Is the Microsoft Windows 7 VC-1 codec able to playback VC-1 files with DXVA support?

renq
4th May 2011, 18:38
WMVideo Decoder? No, doesn't seem so, according to DXVAChecker and testing in MPC-HC

XadoX
5th May 2011, 06:38
Thx for the feedback.

NikosD
2nd June 2011, 16:30
According to DXVAChecker both WMVideo Decoder DMO and WMVideo Decoder MFT ARE DXVA capable, but both cannot be used by any program in order to accelerate WMV3 and VC-1 at least for ATI cards (I think the same goes for Nvidia)

The reason is that both codecs have partial DXVA acceleration, but ATI supports only full DXVA acceleration (VLD)

If you want to have VC-1 DXVA acceleration in Windows 7 built-in media player - Windows Media Player 12, you have to install the MFT codec that comes within Catalyst drivers (WMV/ VC-1 support).

That codec offers DXVA VC-1 and WMV in Windows 7 - WMP12 for ATI cards

JohnPeterson
5th June 2011, 17:01
If you want to have VC-1 DXVA acceleration in Windows 7 built-in media player - Windows Media Player 12, you have to install the MFT codec that comes within Catalyst drivers (WMV/ VC-1 support).

Can you explain why it only works in WMP? I'm specifically lacking a way, through external filter or otherwise, to get WMV3 MP and MP@HL VC-1 DXVA in MPC-HC.

NikosD
6th June 2011, 10:13
Because WMP12 is the only player I know (and probably the only player exists) that uses MFT codecs.

All the other players - like MPC-HC - use DS codecs.

And because ATI provides MFT only codec for VC-1/WMV3, WMP12 is the only solution for DXVA VC-1/ WMV3 using ATI codec in Windows 7.

JohnPeterson
6th June 2011, 15:26
All the other players - like MPC-HC - use DS codecs.
Thanks for the information. Can you give more information about this? For example External Filters, Add Filter in MPC-HC will only list DS filters? My MFT filters will not be listed there?

What is the plan to support MFT codecs in MPC-HC? AMD is not going to make anymore DS codecs.

nevcairiel
6th June 2011, 15:54
What is the plan to support MFT codecs in MPC-HC? AMD is not going to make anymore DS codecs.

You cannot mix Media Foundation and DirectShow, so i wouldn't hold my breath.

Thunderbolt8
6th June 2011, 16:32
tried to play an interlaced 29.97fps vc-1 file with mpc-hc & ffdshow (libavcodec), but the playback just wouldnt start. worked when I changed libav to wmv, but it was stuttering like hell then, didnt really look as if acceleration was working

nevcairiel
8th June 2011, 08:21
The ffmpeg based decoders do not support VC-1 interlaced. This includes the MPC-HC decoders (ffmped & DXVA), and ffdshow (libavcodec & DXVA).

JohnPeterson
8th June 2011, 21:09
You cannot mix Media Foundation and DirectShow
Except that WMP12 does that. Please explain.

Thunderbolt8
8th June 2011, 22:06
The ffmpeg based decoders do not support VC-1 interlaced. This includes the MPC-HC decoders (ffmped & DXVA), and ffdshow (libavcodec & DXVA).thats a pitty, because especially interlaced content requires more decoding power -.-

JanWillem32
9th June 2011, 01:30
thats a pitty, because especially interlaced content requires more decoding power -.-A slight correction, deinterlacing is a mixer/renderer task, not a decoding task. There are complex and less complex deinterlacing methods. The basic types hardly require any processing power at all.
For processing, the VMR-9 and EVR mixer can offload this to the GPU. Deinterlacing was one of the first GPU video filters to be implemented for usage with VMR.
From a correct rendering perspective, it's wrong to deinterlace while the chroma is still sub-sampled (4:2:0 or 4:2:2), as that will always lower chroma quality (saturation, sharpness in color contrasts, color-to-grayscale resolution and color accuracy). That's why it's quite understandable that DirectShow and Media Foundation allow interlacing flags for decoders to signal the mixer that it should perform deinterlacing. It's unfortunate that still not all decoders offer an interlacing-compatible color format and set the correct interlacing flags on the output pin (even while DirectShow exists since the introduction of Windows 98).
For even more advanced solutions, a renderer shouldn't use a non-linear colorspace (like those used with most encoded videos) when performing color blending and no 8-bit working surfaces, because of the big quantization errors. I'm currently trying to improve the current implementation for the mixing tasks in the VMR-9 r. and EVR CP renderers, so I've been studying these subjects a bit lately.

I've just downloaded an interlaced VC-1 sample, it plays fine with the default Windows 7 codec. For the output pin:Filter : WMVideo Decoder DMO - CLSID : {94297043-BD82-4DFD-B0DE-8177739C6D20}

- Connected to:

CLSID: {FA10746C-9B63-4B6C-BC49-FC300EA5F256}
Filter: Enhanced Video Renderer (custom presenter)
Pin: EVR Input0

- Connection media type:

Video: NV12 2048x1080 (16:9) 25.00fps

AM_MEDIA_TYPE:
majortype: MEDIATYPE_Video {73646976-0000-0010-8000-00AA00389B71}
subtype: MEDIASUBTYPE_NV12 {3231564E-0000-0010-8000-00AA00389B71}
formattype: FORMAT_VideoInfo2 {F72A76A0-EB0A-11D0-ACE4-0000C0CC16BA}
bFixedSizeSamples: 1
bTemporalCompression: 0
lSampleSize: 3317760
cbFormat: 1152

VIDEOINFOHEADER:
rcSource: (0,0)-(1920,1080)
rcTarget: (0,0)-(1920,1080)
dwBitRate: 0
dwBitErrorRate: 0
AvgTimePerFrame: 400000

VIDEOINFOHEADER2:
dwInterlaceFlags: 0x000000a5
dwCopyProtectFlags: 0x00000000
dwPictAspectRatioX: 16
dwPictAspectRatioY: 9
dwControlFlags: 0x00000000
dwReserved2: 0x00000000

NikosD
9th June 2011, 13:18
Except that WMP12 does that. Please explain.

NO, it doesn't.

WMP12 uses ONLY MFT codecs.

nevcairiel
9th June 2011, 14:28
NO, it doesn't.

WMP12 uses ONLY MFT codecs.

Thats not true. WMP12 has basically two playback engines, one for MFT and one for DirectShow.
Its really double effort, and MS probably only kept the DirectShow chain because MF is not widely used yet.

However, the fact remains that you cannot mix them, unless your player is basically two players in one - and all components in the playback chain need to be MF then.

Thunderbolt8
9th June 2011, 19:53
I've just downloaded an interlaced VC-1 sample, it plays fine with the default Windows 7 codec.but does the default windows 7 codec support dxva? (is madvr compatible with dxva for vc-1 as well?)

adam777
10th June 2011, 07:27
but does the default windows 7 codec support dxva? (is madvr compatible with dxva for vc-1 as well?)

Yes, the built-in windows 7 codec (Microsoft DTV-DVD Video Decoder) will use DXVA if available.
madVR does not support DXVA.

nevcairiel
10th June 2011, 07:48
Yes, the built-in windows 7 codec (Microsoft DTV-DVD Video Decoder) will use DXVA if available

But not for VC-1. Only WMP itself can do DXVA with VC-1, all other players need a third-party decoder for that.

NikosD
10th June 2011, 08:03
Thats not true. WMP12 has basically two playback engines, one for MFT and one for DirectShow.
Its really double effort, and MS probably only kept the DirectShow chain because MF is not widely used yet.

However, the fact remains that you cannot mix them, unless your player is basically two players in one - and all components in the playback chain need to be MF then.

OK, I'll be more accurate.

WMP12 by default, prefers MFT ONLY and Microsoft's codecs ONLY.

This is the default behavior of WMP12.

If you tweak registry, you can force it to use DirectShow filters and non Microsoft codecs.

But you can mess things in registry and OS and you alter the use of the one and only MFT capable player out there in a wrong way.

Thunderbolt8
10th June 2011, 09:18
well if dxva cannot be used for madvr and interlaced stuff, then its pretty much superfluous.

CruNcher
10th June 2011, 11:31
Not entirely you can still go over other APIs "non windows native" granted it will need more resources (for 1080p you need a balanced system) but you will also be able to capture what you see Nvidia = Nvcuvid, Ati = Open Video Decode and Intel = MediaSDK (this though will also change with the ongoing Socinizing of CPU/GPU), though in some extreme cases "native hardware vendor APis" fail on some system configurations (especially older GPU) where DXVA still gets the Performance benefit not needing to copy frames around (but can do it if you need to VMR9 Renderless/EVR custom and still will be pretty fast and with shader you can compensate mostly the same problematic issues that MadVR compensates not all obviously but the most important, jan does excellent work here) ;)

Though madshi is experimenting with a DXVA mode and sooner or later it will come, and you will also be able to load custom shaders by then like you can currently with VMR9/EVR just that it's a complete new Renderer (designed entirely for GPUs, doing allot better then the "NEW" EVR does), still with 1 little difference it's not system wide used (not the default, with a supporting GPU) but Application specific, but who knows what Microsoft is thinking about it, though it will look odd for them if everyone recommends MadVr later on which is to some part happening already (in its non 1.00 stage)
WMP13 with MadVR support would sound odd somehow though with EVR2 better ;)