Tuesday, August 18, 2009

Watching HD Video in MPC-HC DXVA for ATI HD 4000 Series Card Owners

It's widely known that ATI card owners do not have the luxury of Nvidia card owners when it comes to playing HD video in MPC-HC in DXVA mode. With the built-in H.264/AVC video decoder, HD video such as 1920x800 with reference frames of 6 and above (i.e. L5.0 / L5.1 AVC streams) won't play (actually, it usually plays but with corrupted blocks and/or video freezing after a few seconds).

What I've gathered from the comments of the readers of my original post about this issue and from months of testing using a plethora of mixing and matching on my own HTPC, I thought it'll save everyone some time for me to post a summary of what settings worked with Media Player Classic - Home Cinema. I previously said it's necessary to use PowerDVD 9 for DXVA with ATI HD 4000 series (such as my ATI HD 4350) but that is no longer true and that a better combination has been found thanks to those who contributed in my previous blog post. This is only for ATI card owners with UVD 2 (or newer) though. HD3000 series owners, you guys are out of luck unfortunately (you have AMD / ATI to thank).

Here are some settings I've tested and their results:

Common settings:
Pentium 4 HT 3.0GHz (underclocked to 2.0GHz, DDR2@222MHz (444MHz effective), HT disabled)
ATI HD 4350 (Asus) - 512MB RAM @ 400MHz DDR2 (800MHz effective)
Windows XP SP3 (latest Windows Update as of 18 August 2009)
ATI Catalyst 9.7
Media Player Classic - Home Cinema Build 1237 x86 (download here)
Haali Media Splitter externally installed (i.e. not using MPC-HC's one)
DirectVobSub


Here's what I've found.

So long as you have the DXVA decoder output pin directly connected to the renderer, you'll get proper working DXVA decode with up to 16 ref-frames for full HD streams (1920x1080) regardless of the renderer (well, almost):

VMR7 (Windowed) = OK
VMR9 (Windowed) = failed (pink vertical stripes with Motion Vectors)
VMR7 Renderless = OK
VMR9 Renderless = OK

For the sake of discussion, let's use the VMR7 (Windowed) renderer. It has been proven to work with both Cyberlink's PDVD8 AVC decoder and ArcSoft's Video Decoder. With MPC's DXVA decoder, video with ref-frames of 12 and above will freeze after a few seconds of playback. Cyberlink's decoder suffers from occassional judder while ArcSoft's Video Decoder plays up to 16
ref-frames in DXVA mode perfectly. The results vary when other renderers are used. For example, the combo of VMR9 Renderless + MPC's DXVA decoder yielded the same pink vertical stripes.

I still have not found a combination that would get subtitles working without causing issues with DXVA decode. Under VMR9 Renderless + ArcSoft + MPC-HC internal subtitles renderer, the video would playback in like half the speed! Frames are decoded and rendered correctly though. If anyone has any idea how to solve that, I'd be all ears!

Update: With ATI Catalyst 9.8, the combo of "VMR9 Renderless + ArcSoft + MPC-HC internal subtitles renderer" now works properly. Although with DirectVobSub, the half-frame-rate playback issue is still there.

Update 2: It appears that, in order to get the results I've published here, you'll need to 'initialize' the ATI driver for proper operation of DirectX by opening the Catalyst Control Center each time you start / restart your PC (not sure about stand-by / hibernate). I was taken by surprise yesterday for not doing so - I got a blank white screen instead of the normal proper video playback. Once I opened the CCC (and closed it), reopening MPC-HC and the video then worked fine. *Bravo ATI!* You've got my standing ovation.

Anyway, this is the settings that I've found to work under MPC-HC without subtitles:

MPC-HC settings:
Renderer - VMR7 (Windowed)
Auto load subtitles - false (see Update above)
DirectVobSub options - disable autoload subtitles
Use ArcSoft Video Decoder as your AVC/H.264 decoder
Use AC3Filter directshow decoder

Again, make sure your DXVA decoder's output pin is connected directly to the renderer's input pin. This means under your DirectVobSub filter options, make sure it never loads subtitles and that it is blocked under your MPC-HC external filters page. The following is what I've configured under that page:

Arcsoft video decoder - preferred.
AC3Filter - preferred.
DirectVobSub - blocked.

38 comments:

Anonymous said...

Hi zack,

can u provide any guide how to enable ArcSoft Video Decoder to used as the primary video decoder as i tried to enable the ArcSoft Video Decoder by setting prefer on the external filter and yet my mpchc not able to used it, do u any guide to help me on this?

thanks

Zach Saw said...

That's all you should need to do.
If that doesn't work, try re-installing the video decoder.

Anonymous said...

Hi zack,

thanks for the answer do i need to block any specific video decoder so that the Arcsoft video decoder will work?

thanks again bro.

Zach Saw said...

No idea. It worked right off the bat for me.

Anonymous said...

hi zack,

If possible can u attached a picture showing how u set the ARCsoft video decoder under mpchc external filter option?

thanks

Anonymous said...

Don't waste your time on inferior ATI hardware and drivers.

Nvidia Geforce GT 220 supports full bitstream decoding for H.264, VC-1 and MPEG2 as well as 8 channel LPCM support!

It will just work in MPC-HC without doing stupid hacks and with full internal subtitle filter support in VMR9 Renderless and EVR CP.

http://img42.imageshack.us/img42/2078/dxvagt220.png

Zach Saw said...

Yup no doubt NVidia is far ahead of ATI/AMD.

Even if they get the driver working, it's still inferior to NVidia. NVidia's CUVID API is something ATI/AMD do not even have, let alone comparing their quality.

But to be fair, you're comparing a card that is about half a year newer and a lot more expensive. And, this blog is really for those who're stuck with an ATI HD 4000 series card for whatever reason.

Patch1 said...

This solution appears to depend on having ArcSoft Video Decoder. I had a look on their web site but could find no obvious place to download or even buy the codec. I'm no that keen on buying their suite as I like Media Player Classic Home Cinema. Where should I be looking?

Anonymous said...

Arcsoft Video Decoder comes with Arcsoft Total Media Theater. Which version of TMT did you use? Apparently TMT3 doesn't allow you to use their codec with third party apps like MPC-HC. Did you have TMT2?

- zinthesis - said...

new ATI 9.10 drivers have fixed these issues i believe,...

although i have removed anything to do with ATI from boot (no ati event programs running in background)

if i allow ati to boot up it's silly helper in the backgroup apps i tend 2 get freezes and restarts,..

xaueious said...

you have to search for 'hd pack' guys.

the new ati driver didn't fix anything for my hd3200.

Chislon said...
This comment has been removed by the author.
Chislon said...

To force arcsoft to play the video with Dxva without the drag trick using the arcsoft video decoder, add subtype "{48535356-0000-0010-8000-00AA00389B71}" to external filters

Anonymous said...

Great!!

Tried arcsoft decoder on my HTPC with Ati 4350 and now it plays all those problem "demo" videos using DXVA except that "pole to pole" where i had some artifacts.

Simply google "HD Pack", it contains the arcsoft h.264 decoder!

As of now, arcsoft seems better than CoreAVC, internal MPC decoder any any other h264 decoder - at lest for ATI cards!

Anonymous said...

Wich Windows you use for this?. I tried in Vista and didn´t work. In windows XP DXVAChecker says that my board only have DXVA1 for my ATI HD4570

Zach Saw said...

As said in the post, the OS is

"Windows XP SP3 (latest Windows Update as of 18 August 2009)"

And no, ATI's drivers are too broken to make DXVA work in Vista / Win7. These 2 operating systems ask a lot more from the drivers for hardware desktop composition (which requires GPU virtualization) and is very disruptive for DXVA.

If you're using Vista / Win7, go ahead and buy yourself an nVidia card. Even with XP, I'd still recommend an nVidia card - the hours you've likely spent and many more you'll spend on wrestling with ATI's buggy drivers (which can never do deinterlacing properly) isn't worth it.

Zach Saw said...

And yes, DXVA1 is all that's supported in XP. That's good enough.

Unknown said...

I am trying to get DXVA working with the ArcSoft video decoder. Using MPC-HD, I have shown that if I bring up the filter properties, and enable DXVA 1.0 I get hardware acceleration (10 fold drop in CPU). Unfortunately I can't get the setting to stick. Everytime I startup MPC-HD, I have to reset the DXVA 1.0 flag and of course, hardware acceleration doesn't work in any of my other applications.

I am running an ATI 4890 on WinXP SP3.

Zach Saw said...

That's odd. There should be no need to muck around with the settings of Arcsoft Video Decoder at all as it by default enables DXVA 1.0 on XP.

Is that a clean install of XP SP3? Which version of the decoder do you have? Have you tested your system with DXVA checker? My suggestion is that you look at my original post (and follow the links to the external website by Ranpha) and setup your system as suggested by that site. Then after that, setup your system to my recommendation.

Unknown said...

Unfortunately this isn't a clean install but it has been a very stable system and it is only used as an HTPC. SO I may be heading toward that.

In DXVAchecker, if I bring up the properties page on the ArcSoft video decoder, both DXVA options are unhchecked.

I will follow up on your other recommendations.

Zach Saw said...

DXVAChecker is a program that checks your driver's DXVA compatibility and you certainly can't "bring up the properties page on the ArcSoft video decoder" - and there's no point in doing that.

Again, my advice would be to read the links and understand them. Also, your system could be rock stable, but that doesn't say anything about its DXVA capabilities. They're completely two separate things.

Andrew said...

Any advice out there for Win7 users? I'm praying for a driver update that addresses this, but for now I'm still without options. Using VMR 7/9 slows down video way too much on my old 2.0ghz.

Zach Saw said...

Yeah... Get a $50 NVidia 9400GT and your nightmares will be over.

ATI doesn't care about HTPC.

Anonymous said...

Too bad there haven't been any AGP cards by nvidia since G80, upgrading old PCs for HD playback is such a PITA...

Malih said...

I actually got Cyberlink Video Decoder in DXVA to work with 1080p L5.0 and L5.1 without having to uninstall codecs,
that is using GOM Player and its internal Gretech Video filter. But still not working with that Ultimate "Tori no uta" clip.

I can't get ArcSoft Video Decoder to work on my system though.

I'm using GOM Player version 2.1.21.4846 and Radeon HD4800 Series (Catalyst 10.1).

When I tried using Haali instead of internal Gretech Video filter, the result is the same corrupted image as playing it in MPC HC.

The problem with GOM Player is the built in subtitle engine does not play well with embedded subtitle, this will be a pain if you're watching Anime, unless you speak Japanese.

Another problem is when seeking video, there's a lag, but if you're not seeking, video runs smoothly.

Anonymous said...

Malih:
How did you get the Cyberlink Decoder to work. I have been trying to use the PDVD9 Decoder but it will not connect.

ZudakaARG said...

I just installed Catalyst 10.2 and sadly i get macroblocks and bad decode on DXVA no compliant files (with higer reference frames); tested all the DXVA codecs and they have the same error (ATI MPEG Decoder, Arcsoft, Cyberlink, Mainconcept, MPC).
Guess i have to go back to Catalyst 9.9 that worked like a charm, at least for me (ATI HD4550 PCIe x16 512MB - WinXP SP3 OS).

Zach Saw said...

Thanks for the update. I'm using 9.12 and that works flawlessly with Arcsoft.

Anonymous said...

I just installed Catalyst 10.2 XPSP3, HD4350 and MPC-HC 1.3.1249.0.It works fine (720p).

Anonymous said...

Hi all,

Today I installed catalyst 10.8 (latest version) and DVXA works properly with MPC-HC video decoder H.264. It also works with Microsoft DTV codec.

Unfortunately, neither Ciberlynk PwDVD nor ArcSoft decoders are compatible.

I tested Samsung oceanic life (High@L.5.1) ref frames 16 1920x1080.

Moreover VLC 1.1.3 works with DVXA but samsung video decoding is not 100% fluent.

ZudakaARG said...

I installed Catalyst 10.8 and, like with 10.2, i get macroblocks and bad decode on DXVA no compliant files (with higer reference frames); tested all the DXVA codecs and they have the same error (ATI MPEG Decoder, Arcsoft, Cyberlink, Mainconcept, MPC).
9.12 is still the best, at least for me (ATI HD4550 PCIe x16 512MB - WinXP SP3 OS).

malih said...

fortunately now there is an alternative to Cyberlink and Arcsoft codec, there's now FFDSHOW DXVA codec available when you install new version of FFDSHOW, and it's quite good based on my experience so far.

I have no problem decoding "Lia - Tori no Uta (long version).mkv" I'm currently using Catalyst 10.6

Anonymous said...

Hi

as the 'lyxory' GeForce owner I can confirm that my NVIDIA GT240 CAN'T PLAY @L5.1 mkvs WITHOUT artifacts (neither win xp, win 7, win vista nor detonator 19* or 26*)

neither Cyberlink, Nero, Arcsoft nor even CoreAVC PRO with Cuda enabled (WITHOUT cUDA - no artifacts)

so, I don't know where you, Zach, and other guys, found that nvida's cards which plays @L5.1 videos - they NOT EXISTS neither in nvidia docs nor in Wikipedia -> "PureVideo HD -> 2. Realtime decoding of H.264 high-profile L4.1" (http://en.wikipedia.org/wiki/Nvidia_PureVideo)

I bought one MSI GeForce GT240 (last generation VP4, VDPAU feature set VP4, GDDR5) - and now I'm turned OFF any DXVA && CUDA axel to avoid problem and what I have - the card whithout any video axel (the same I had 10 years ago) :D

is this blog Nvida's advertsplace or smth?..

Zach Saw said...

I can confirm that with my 9600GT, MPC-HC supports L5.1 16 ref frames out of the box, starting about more than a year ago. I've not come across an encode that my 9600GT can't decode perfectly that a software decoder could. Did you try the BBC bird scene test clip?

John Doe said...

Zach,
Would 9400GT do the same job as your 9600GT ? (talking of video-decoding only, no 3D-tasks)

Zach Saw said...

Probably not. Deinterlacing requires a card with fast+fat memory, so for non-interlaced sources at lowerer bitrates, it'd probably be the same.

Nill3D said...

Hi Zach, Plis help me.
I'm already do everything that you said but don't work. I remeber that in the past I used a DXVA, but after a format pc this doesn't work anymore.

Specs
Windows XP SP3 Dual Boot Windows 7 Ultimate both 32bit

3GB ram
Dual Core Processor
ATI Mobility Radeon HD 2300 (M71) Device iD (7211)

you can help me with my GPU card?

sorry my bad english! :D

Anonymous said...

You can install the Arcsoft video decoder so that it can work with other direct show media players by using a hacked version of checkactivate.dll in the same folder. This article explains how it is done and where to obtain the software: http://www.mediasmartserver.net/2011/01/07/guide-using-the-arcsoft-video-decoder-with-an-intel-gpu/
The same collection of Arcsoft codecs is available in the freeware HDPack 2.4 or the donationware HDPack 2.7. Google for the full version.