HOW TO: Get hardware accelerated DXVA playback of HD AVC High Profile L5.0 / L5.1 MKV / MP4 Files on ATI HD Series.
Well, technically speaking, not DXVA, but hardware accelerated playback of L5.0 / L5.1 files nevertheless.
(update: it *is* DXVA - not sure just yet why some decoders work and some don't - possibly because some decoders send more compliant bitstream?)I've recently built a HTPC from an old Pentium 4 HT. I know it has not enough grunt to decode AVC High Profile video, so I bought an ATI 4350 HD in the hope that it'll do all video decoding on its GPU (or UVD).
To my disappointment, I found this (
ATI does not support AVC with High Profile above L4.1)
after I bought the card. All my encodes are done with L5.1 as my other PC is a Core 2 Duo which has an NVidia 9600GT. For some reason, the NVidia driver is able to support DXVA for AVC High Profile L5.1, so I simply assumed ATI would be the same. Turns out that the maximum the ATI would do is L4.1 (There's a Quantum of Solace trailer encoded at L5 to test here -
http://nunnally.ahmygoddess.net/watching-h264-videos-using-dxva/).
Regardless of which decoder I use, my P4 HT simply isn't powerful enough to playback these files (CPU hits 100% all the time and frames drop very frequently).
Luckily for us ATI owners,
there is a solution. With
PowerDVD9 and Catalyst 9.5, I finally found a combination that would get 1920x1080 HD videos with ref-frames > 4 to play without taxing my CPU. In fact, I was pleasantly surprised when I reran the Quantum of Solace test video -- my CPU remained at 2% utilization!
I recommend the following setup for ATI users:
- PowerDVD 9 build 1530 ==> Must be this build! Other builds will not work
- ATI Catalyst 9.5 (non-hotfix version)
- AC3Filter
- Haali Media Splitter (to playback MKV files) ==> version 1.9.42.1 (or later)
*** New:
If you prefer to
use Media Player Classic - Home Cinema (MPC-HC), see this.
*** Note1:Rename .MKV to .MP4 to get PowerDVD to playback MKV files.
*** Note2:
Important - No other filters (e.g. FFDShow / CoreAVC / Codec Packs) should be installed in your system!
Try it out yourself (you could download the trial version of PowerDVD 9).
MAKE SURE you
DO NOT have any other filters installed (for example, CoreAVC or FFDShow which may have a higher merit than PowerDVD's own filter) or PowerDVD will not use its internal H264 decoder. Also, when opening MKV files, PowerDVD will complain that
xvidcore.dll could not be found, but will continue playing the video just fine. If you want to suppress the error message, simply download
xvidcore.dll and put it in the same folder as the PowerDVD executable (e.g.
c:\Program Files\CyberLink\PowerDVD\).
Leave a comment to let me know if it does / doesn't work for you with your card's configuration and OS, for example:
- HD 4350 PCIe x16 512MB
- WinXP SP3
*** Update 1:This clip (the 'Bird Scene' from Planet Earth) is the ultimate L5.1 super high bitrate MKV sample. On my nVidia 9600GT setup with a E7200 CPU @ 3.6GHz, it uses 50% of the CPU (playback using MPC - Home Cinema with driver supporting L5.1 bitstream DXVA). On my Pentium 4 HT (single core CPU) and the HD 4350 setup, I get 25% CPU usage. That is simply mind-boggling! What can we conclude? ATI is A LOT better at decoding H264 streams?
*** Update 2:I've found that PowerDVD has a problem with H264 encoded files that have been tagged with the wrong IDC. For example, if the file actually contains a high profile L5.1 bitstream but its IDC tag is marked incorrectly (e.g. L4.1), you will get stuttering problems. If that happens, you'll have to change the file's IDC tag back to L5.1 using
IDC Multi Changer.
*** Update 3:While testing my configuration with a ref-frame 12 encode at 1920x800, I found that certain scenes (usually panning slowly) would judder (i.e. a couple of frames get dropped) and they always happen at the exact same time code. I tried remuxing the .mkv file to .ts / .m2ts but to no avail. I also increased the input buffer size to 100000KB from 8192KB in the Haali Media Splitter settings, which also did not help. Having spent a few hours on it, I finally decided to look at PowerDVD's settings itself. Apparently, under Advanced Video Preferences (Right-click Main Screen, click on Configuration, select the
Video tab, click
Advanced...), there's a group box called
Video Quality. I had
Normal Mode selected from before when I was using PowerDVD without AVIVO. Setting it to
Best Mode solves the problem. GPU and CPU usages remain unchanged at 6-8% and ~12% (DTS is being decoded in software) respectively.
I can only make an educated guess on the reason behind the judder. Video Quality relates to the post processing / de-interlacing / pulldown settings. The judder which I picked up on slow panning scenes are probably due to the lack of pulldown under
Normal Mode. When set to Best Mode, pulldown (
what is this?) is activated to match the 24fps source to my 1080i LCD panel (1920x1080 at 30Hz).
*** Update 4:A full update on this topic has been
posted here.