DXVA VC-1 playback on Intel GMA 500

This will only work on Vista or Windows 7. I suggest using the following test clips since they are already on your computer if using Windows 7:

  • C:\Users\Public\Videos\Sample Videos\Wildlife.wmv
  • C:\Windows\Performance\WinSAT\Clip_1080_5sec_VC1_15mbps.wmv

As you can see from the DXVA Checker tool, the GMA 500 can decode VC-1 in hardware. Though Windows 7 includes DXVA hardware assisted playback of H.264 out of the box, for some reason it only considers the GMA 500 capable of VC-1 motion compensation acceleration which is a small part of the entire decode process – so VC-1 playback is choppy.

The good news is that for Windows Vista Intel released a bundle of DXVA codecs for the GMA 500. They’re not available from the Intel drivers website but fortunately Sony’s US site has them. The installer will only extract the drivers if it’s running on a Vaio P, but you can use a tool like Universal Extractor to unpack them (look in \tempexefolder). On Windows 7 you will need to run Setup.exe in Vista compatibility mode otherwise it will fail.

Once the decoder is installed you may notice that you cannot get it to work in Media Player Classic Home Cinema, even by forcing it to be the preferred decoder (as with H.264 in my other post). This is because MPC-HC works with the DirectShow multimedia framework, but the Intel VC-1 decoder is written for Media Foundation – Microsoft’s replacement framework which launched with Windows Vista.

This unfortunately means that you’re limited to using Windows Media Player for hardware accelerated VC-1 content, so subtitles are not going to be possible. The next problem is that WMP aggressively selects its own decoder in favour of the Intel one. There is no neat way to set preference order as with DirectShow, so we need to make some Registry edits.

Open Regedit and navigate to HKLM\Software\Classes\MediaFoundation\Transforms\Preferred.

Export the whole branch and keep it somewhere safe (say foundation-orig.reg). Still in Regedit, right-click on this Preferred key and edit the permissions. Take ownership (Advanced > Owner tab), then grant Full Control to Administrators.

At the level \Transforms notice that there is an entry with a long alphanumeric CLSID for each registered decoder. Find the one called WMVideo Decoder MFT, which should be {82d353df-90bd-4382-8bc2-3f6192b76e34}. Find the CLSID for Intel® Media Codecs VC-1 Decoder for Intel® System Controller Hub, which ought to be {2b53d708-ffe1-4da3-b3a8-f8ec247c374f}.

Using Notepad, load the registry backup of the Preferred key you exported. This is a list of video formats also represented by CLSIDs, together with the CLSID of the decoder which will be used to play them back. So all we need to do is replace all instances of {82d353df-90bd-4382-8bc2-3f6192b76e34} with {2b53d708-ffe1-4da3-b3a8-f8ec247c374f} and save as foundation-mod.reg (always keep the original just in case!). Then double-click it and commit the changes.

Now if you run DXVA Checker and click on Check DirectShow/MediaFoundation Decoders at the bottom and browse to a VC-1 clip, you should see the following:

Intel Media Codec VC-1 DXVA

Note that some guides will tell you to take ownership then rename the file C:\WINDOWS\SYSTEM32\WMVDECOD.DLL which may well achieve the same result, but it will break the Windows Experience Index test process – it plays a WMV clip with this decoder during the benchmark and will fail with an error if that file is missing.

By switching between the original and modified .reg files and comparing playback you’ll notice that the Intel VC-1 decoder uses around 50% CPU on a 1.33GHz Atom Z520 Vs. 100% and stuttering with the Windows one.

Update – the Intel decoder seems to have difficulty rendering crossfades, as you can see from the artifacting while playing this nVidia demo clip and some of the content on the Microsoft WMV HD content showcase. It’s a shame the decoder doesn’t seem to be actively maintained, however all of these clips are years old so perhaps they were encoded with immature encoders.

Update 2 – I have since noticed that the clips from Microsoft’s showcase and that nVidia one are not in fact VC-1. They’re WMV3 which was a slightly earlier codec. The true VC-1 clips which I have tried are decoded without artifacts. You can check the video codec used in a file by running ffmpeg -i on them.

Continue to DXVA H.264 playback on Intel GMA 500 with subtitles (Windows 7)

Advertisements

One thought on “DXVA VC-1 playback on Intel GMA 500

  1. Pingback: How To Play Videos On Your Mini 10 (not v) - The Definitive Guide (Work In Progress) - Page 3

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s