DXVA and MKV in Windows 7

This is an old post recovered from the Internet Archive, unfortunately the images could not be recovered

The Microsoft WMF codec supplied with Windows 7 does a pretty good job of decoding most formats including VC1 and x264. Unfortunately it doesn’t understand the Matroska container. So step 1 is get this recognised, for this we need the Haali Media Splitter. This will register splitters for Ogg (.ogm/.ogg), Matroska (.mkv) and MPEG4 (.mp4/.mov) containers.

Once this is installed you will find that your Matroska files will play in Media Center/Player but not using DXVA, so will be using a lot of cpu (a 30mbit 1080p VC1 video I have was maxing out my Core 2 Duo E6300 1.86GHz). So step 2 is to find and install a DXVA capable codec. Media Player Classic Home Cinema has such a codec, amongst many others which are available as a standalone filters (in 32bit and 64bit form). The one we’re interested in here is MPCVideoDec.ax. So copy this file to your system32 directory (Syswow64 on 64bit systems, i think ? The 64bit codecs go in system32 on 64bit systems, if you need the codec to work in 32bit applications you’ll the 32bit version as well and that would go in SysWOW64) and run the following command from a command prompt (make sure to run the prompt as administrator if you have UAC enabled)

¯\(ツ)

Now we’re close, sadly Media Player/Center will still use the Microsoft decoder as that is the preferred decoder so we need to change this. We could dive in to the registry and faff around with loads of CLSIDs ourselves, or we could use the Preferred Filter Tweaker for Windows 7 from clsid on the doom9 forums. Download and run this, and then select MPCVideoDec for H264/AVC and VC1.

Apply those changes and restart Media Center/Player (if its open), and try opening a Matroska file again. Now you should find the CPU much reduced thanks to DXVA. My CPU usage playing back the same 1080p file as before is now under 5% as you can see below.

¯\(ツ)

There is one downside to this however, because this codec requires the decoder to be connected directly to the renderer there is no way (that I can find anyway) to display subtitles within Media Player/Center. If you have a Matroska file with subtitles you’ll have to drop out and play them in MPC-HC, which can display subtitles and still decode with DXVA. If anyone has a way of enabling this in Media Center please let me know.


UPDATE 11/11/09

Added subtitle caveat and corrected the 32/64 bit file locations. Isn’t it somewhat ridiculous to put 32bit dlls in a folder with ‘64′ in its name, and vice versa ?


recovered-from-ia