This is the sixth post in a series of posts related to the Zotac ZBOX ZBOXHD-ID11.
- The CPU is not powerful enough to render / decode H.264 video, and GPU acceleration via DXVA is required, as well as a DXVA capable player.
- The Microsoft DTV-DVD Video Decoder, included as part of Windows 7 x64, worked perfectly for H.264 playback, and compared to other H.264 decoders had the lowest CPU usage.
- As standalone player, Media Player Classic Home Cinema, is a perfect choice, it supports MKV, H.264, DXVA, and subtitles without the need of any other software.
- Playback of MKV H.264 in Windows Media Player, Windows Media Center, MediaPortal, or XBMC requires the installation of Haali Media Splitter, and ffdshow audio and video decoders.
- For AC-3 / DTS pass-through playback via S/PDIF / HDMI, the ffdshow audio decoder is required.
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:
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:
Below are the MPC-HC graphs for CPU and GPU utilization:
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 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:
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]):
In order to use hardware acceleration in ffdshow, the ffdshow DXVA codec needs to be configured for H.264 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:
Below are GraphStudio graphs showing the various codecs in action:
Below are the WMP with Microsoft DTV-DVD Video Decoder graphs for fan speed, CPU and GPU temperature:
Below are the WMP with Microsoft DTV-DVD Video Decoder graphs for CPU and GPU utilization:
Below are the WMP with CoreAVC graphs for fan speed, CPU and GPU temperature:
Below are the WMP with CoreAVC graphs for CPU and GPU utilization:
Below are the WMP with ffdshow DXVA graphs for fan speed, CPU and GPU temperature:
Below are the WMP with ffdshow DXVA graphs for CPU and GPU utilization:
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 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:
Below are the MCE with ffdshow DXVA graphs for CPU and GPU utilization:
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:
Below are the MP with Microsoft DTV-DVD Video Decoder graphs for CPU and GPU utilization:
Below are the MP with ffdshow DXVA graphs for CPU and GPU utilization:
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:
Below are the XBMC DSPlayer MPC graphs for CPU and GPU utilization:
Below are the XBMC DSPlayer ffdshow DXVA graphs for CPU and GPU utilization:
Playback load summary:
|WMP, DTV-DVD||2400RPM||59C||78C||Very Low||Low|
|MCE, DTV-DVD||Very Low||Medium|
|XBMC, DXVA2||Very Low||Medium|
If all you need is video playback, you can’t go wrong with Media Player Classic Home Cinema.
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.
As long as your player of choice supports DXVA, the ID11 has no problem playing 1080p MKV H.264 content.