Zotac XBOXHD-ID11 MKV H.264 Video Playback Performance

When I started writing about the ID11, my intent was to document video playback and use as a HTPC, several posts later, and I am finally getting to MKV H.264 playback configuration and performance.

This is the sixth post in a series of posts related to the Zotac ZBOX ZBOXHD-ID11.

Summary:

 

I am not an expert in how these things work, but I have a basic understanding of video playback on Windows platforms, so let’s start with the file format; an MKV file is a Matroska Media Container file. A MKV file can contain multiple audio-, video-, subtitle-, and other, streams. A MKV file is not a video or audio compression format, it is just a container.

To play the contents of a MKV file, you need a de-multiplexer or splitter, the splitter understands the container format, and produces separate output streams.

The stream output is processed by the stream decoders, typically known as DirectShow filters. The stream filters need to understand the stream contents, e.g. H.264 video, DTS audio, subtitles, etc.

Lastly there are the renderers, the renderer produces the final output such as video display or audio output.

In case of DXVA, the video decoder and the video renderer have a close relationship, the DXVA decoded content can be directly rendered from GPU memory. In comparison, the CoreCodec CoreAVC codec supports GPU hardware acceleration, but it uses the NVIDIA CUDA platform for mathematical processing. The CUDA decoded content needs to be copied to GPU memory, resulting in higher CPU utilization.

An easy way to visualize the stream flow is to use MONOGRAM GraphStudio.

I spent quite a bit of time getting the right versions of the right software installed, and on two occasions new versions were released during my testing, and I had to test again. I started by using the K-Lite Codec Pack. But, I know not everybody installs codec packs, and not everybody uses K-Lite, so I wanted to find the minimum set of components required for playback without the use of a codec pack.

In my testing Windows and CoreCodec CoreAVC were the only commercial products, the remainder are free, and of the free products, only Haali Media Splitter is not open source.

I used the following product versions:

Product

Version

Media Player Classic Home Cinema 1.2.1249 (x64)
Haali Media Splitter 1.10.175.0 (x86, x64)
ffdshow tryouts rev 3452 (x86, x64)
MediaPortal 1.1.0 RC3 (x86)
XBMC DSPlayer rev 30385 (x86)
CoreCodec CoreAVC 2.0 (x86, x64)
Microsoft DTV-DVD Video Decoder Windows 7 Ultimate x64
Windows Media Player Windows 7 Ultimate x64
Windows Media Center Windows 7 Ultimate x64

 

I tested by letting the system idle, then playing a one minute, 1080p, MKV, H.264, DTS, subtitles, video clip, full screen, on a 1920×1200 display, then back to idle. Where possible the player was set to auto repeat and play for ten minutes, where the player did not support auto-repeat, I manually played the clip three times. While playing, I recorded the CPU utilization using Windows Task Manager, the GPU utilization using GPU-Z, and the fan speed, CPU and GPU temperature using CPUID Hardware Monitor Pro.

 

Media Player Classic Home Cinema is simple to use; install it, open the MKV file, and it plays, with subtitles, with MCE remote control support, no additional configuration required. MPC-HC includes all the components required for playback, and does not require any system installed components to function.

From what I read, MPC-HC was the first player to include DXVA accelerated playback. Both DSPlayer and MediaPortal include codecs based on MPC-HC code.

An alternative standalone player, that I did not test, is the VLC Media Player.

Below are the MPC-HC graphs for fan speed, CPU temperature, and GPU temperature:

MPC.CPUFANIN

MPC.CPUTIN

MPC.GPU.Temp

Below are the MPC-HC graphs for CPU and GPU utilization:

MPC.CPU

MPC.GPU

 

Windows Media Player is included with the standard Windows installation. WMP uses the system installed DirectShow filers for playback. Even on a x64 system, WMP is still a x86 process, as such, it requires the installation of x86 filters.

In order for WMP to open MKV files, a splitter is required, I used Haali Media Splitter.

I tested playback with three different video decoders; the Microsoft DTV-DVD Video Decoder, CoreCodec CoreAVC, and ffdshow tryouts.

I have read that it is possible to get subtitles working with WMP, but even with enabling subtitles in ffdshow, I could not get subtitles to show in WMP. I am sure it is possible, I just didn’t spend the effort to make it work.

 

When multiple codecs are installed, WMP player uses the preferred codec for playback. The preferred codec can be set using the Preferred Filter Tweaker for Windows 7, or it may be easier to just install one codec at a time:

Win7DSFilterTweaker

 

Haali Media Splitter provides an alternative way of forcing video decoding using ffdshow, HMS can change the video output type to a format that is only registered for decoding by ffdshow. This is accomplished by using the [Use custom media type for H.264]. This allows you to easily switch between the Windows default ([No]), and ffdshow ([Yes]):

Haali.Custom.Output

 

In order to use hardware acceleration in ffdshow, the ffdshow DXVA codec needs to be configured for H.264 hardware acceleration:

ffdshow.Hardware.Acceleration

You may also need to change the DirectShow control options in ffdshow to allow the filter to be used in your player’s process space:

ffdshow.DirectShow.Control

 

Below are GraphStudio graphs showing the various codecs in action:

Windows.Graph

CoreAVC.Graph

ffdshow.Graph

 

Below are the WMP with Microsoft DTV-DVD Video Decoder graphs for fan speed, CPU and GPU temperature:

MediaPlayer.Windows.CPUFANIN0

MediaPlayer.Windows.CPUTIN

MediaPlayer.Windows.GPU.Temp

Below are the WMP with Microsoft DTV-DVD Video Decoder graphs for CPU and GPU utilization:

MediaPlayer.Windows.CPU

MediaPlayer.Windows.GPU

 

Below are the WMP with CoreAVC graphs for fan speed, CPU and GPU temperature:

MediaPlayer.CoreAVC.CPUFANIN0

MediaPlayer.CoreAVC.CPUTIN

MediaPlayer.CoreAVC.GPU.Temp

Below are the WMP with CoreAVC graphs for CPU and GPU utilization:

MediaPlayer.CoreAVC.CPU

MediaPlayer.CoreAVC.GPU

 

Below are the WMP with ffdshow DXVA graphs for fan speed, CPU and GPU temperature:

MediaPlayer.ffdshow.CPUFANIN0

MediaPlayer.ffdshow.CPUTIN

MediaPlayer.ffdshow.GPU.Temp

Below are the WMP with ffdshow DXVA graphs for CPU and GPU utilization:

MediaPlayer.ffdshow.CPU

MediaPlayer.ffdshow.GPU

 

Windows Media Center is included with the Premier and Ultimate editions of Windows. MCE does not use DirectShow for playback, instead it uses Windows Media Foundation. In order to use DirectShow filters in MCE, either the media type is not natively supported by WMF but is supported by DS, or the WMF media type is disabled using e.g. Preferred Filter Tweaker for Windows 7. MCE runs as a x64 process on a x64 system, as such, it requires the installation of x64 filters.

As with WMP, MCE also requires the Haali Media Splitter to open MKV files. And to use ffdshow instead of the default WMF decoders, set the HMS [Use custom media type for H.264] option to [Yes].

I tested playback with two different video decoders; the Microsoft DTV-DVD Video Decoder, and ffdshow tryouts.

I have read that it is possible to get subtitles working with MCE, but even with enabling subtitles in ffdshow, I could not get subtitles to show in WMP. I also tried the Media Control plugin that is supposed to enable remote control support for ffdshow subtitles, but I could not get it to work. As with WMP, I am sure it is possible, I just didn’t spend the effort to make it work.

I could not find a way to loop playback in MCE, or in MediaPortal, or in XBMC, so instead I manually played the video three times in a row. The resulting fan speed, CPU and GPU temperature graphs are not very interesting, so I am only including the CPU and GPU utilization graphs.

 

Below are the MCE with Microsoft DTV-DVD Video Decoder graphs for CPU and GPU utilization:

MediaCenter.Windows.CPU

MediaCenter.Windows.GPU

 

Below are the MCE with ffdshow DXVA graphs for CPU and GPU utilization:

MediaCenter.ffdshow.CPU

MediaCenter.ffdshow.GPU

 

MediaPortal is a Home Theater PC frontend, similar to Windows Media Center, but open source. Like WMP, MP uses DirectShow for playback, but unlike WMP, or MCE, MP allows for explicit filter configuration, including which filters to use for which media types:

MediaPortal.Codec

I tested playback with two different video decoders; the Microsoft DTV-DVD Video Decoder, and ffdshow tryouts.

 

Below are the MP with Microsoft DTV-DVD Video Decoder graphs for CPU and GPU utilization:

MediaPortal.Windows.CPU

MediaPortal.Windows.GPU

 

Below are the MP with ffdshow DXVA graphs for CPU and GPU utilization:

MediaPortal.ffdshow.CPU

MediaPortal.ffdshow.GPU

 

XBMC is a Home Theater PC frontend, similar to Windows Media Center, but like MediaPortal, it is open source. Unlike MediaPortal, that just supports Windows, XBMC also supports Mac, Linux, and XBox. XBMC has its roots in the XBox, but XBox support has just been suspended. In order to support DXVA on Windows, a Windows only DirectShow port of XBMC was created called DSPlayer.

In order to switch between codecs used in XBMC DSPlayer, you have to edit a configuration file. Details of the process can be found here.

I read that DXVA2 support will be natively supported in future XBMC builds. The DSPlayer build of XBMC is much newer than the latest released XBMC. This build of XBMC included native support for DXVA2 without the need to use DSPlayer. The DXVA2 option is in the system menu. I did notice that the first few seconds of playback produced screen artifacts, hopefully this will be corrected when this functionality is released.

I tested playback with three different video decoders; built in DXVA2, DSPlayer MPC codec, and DSPlayer ffdshow tryouts.

 

Below are the XBMC with DXVA2 graphs for CPU and GPU utilization:

XBMC.DVDPlayer.CPU

XBMC.DVDPlayer.GPU

 

Below are the XBMC DSPlayer MPC graphs for CPU and GPU utilization:

XBMC.DSPlayer.MPC.CPU

XBMC.DSPlayer.MPC.GPU

 

Below are the XBMC DSPlayer ffdshow DXVA graphs for CPU and GPU utilization:

XBMC.DSPlayer.ffdshow.CPU

XBMC.DSPlayer.ffdshow.GPU

 

Playback load summary:

Configuration

Fan Speed

CPU Temp

GPU Temp

CPU Load

GPU Load

MPC-HC 2700RPM 62C 84C Low High
WMP, DTV-DVD 2400RPM 59C 78C Very Low Low
WMP, CoreAVC 1800RPM 54C 86C Medium Medium
WMP, ffdshow 2400RPM 59C 78C Low Medium
MCE, DTV-DVD       Very Low Medium
MCE, ffdshow       Low Medium
MP, DTV-DVD       Low Low
MP, ffdshow       Low Medium
XBMC, DXVA2       Very Low Medium
XBMC, MPC       Low Medium
XBMC, ffdshow       Low Medium

 

Conclusion:

If all you need is video playback, you can’t go wrong with Media Player Classic Home Cinema.

All other configurations require Haali Media Splitter and ffdshow.

If you want to use Windows Media Center or Windows Media Player with subtitles, you will need to do some more research.

If you run Windows and want a MCE alternative that is easily configurable, use MediaPortal.

If you need Mac or Linux support use XBMC, or if don’t mind configuration files and bleeding-edge code on Windows, use DSPlayer.

As long as your player of choice supports DXVA, the ID11 has no problem playing 1080p MKV H.264 content.