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.
- 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 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:
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 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:
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:
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:
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.
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.
Hello Peter,I check your blog everyday and i'm excited to see how much tests you did already.I was wondering when you'll have the chance to test the XBMC Live version with Ubuntu Linux.According to the manufacturer it must be very easy to set it up with XBMC Live.Thank!Greetings from The Netherlands,Roland Duursma
I've been using XBMC Live (Linux) for 2 weeks now and it is working like a charm. Decoding 1080p x264 mkv causes no noticeable CPU load at all., all decoded from the GPU.From my experience, it has always been an issue playing & decoding HD content on WIndows. You either have to have a very powerful CPU or use a player that can use the GPU to decode the video stream
Hey Peter,great reviews! I also bought the the zbox id11 in newegg a couple of days ago. My config is 2gb ram and 80 gb intel x25m. i use this box to play bluray disk images stored in a network server. Playback seems smooth, I am using arcsoft TotalMedia Theater for Bluray playback, and wmp with shark 007 codecs for win 7 x32 and x64 hd video playback. Temps are around 65 for CPU and 70 for GPU, with fan at aroumd 4500 rpm (measured by hardware monitor) I am concerned on the temp. I am thinking about swapping the fan, but im not sure if it's feasible. I am probably going to try out the bios temp settings that you are using to see how it goes.
Peter,will you be testing with XBMC? It is what I am running and really like it.Going with only 2gb of ram not 4.Debating the value of keeping my hdd out of the case. Have you done any measurements with that?
I did test XBMC on Windows, I will not be testing on Linux.
You won't even be trying the live cd version? The overhead saved (Linux vs Windows) is pretty massive. The performance has been top notch for me.
Hello Peter,I found your blog and after reading it i just bought ZBOX :).This is really great device but unfortunately, after flashing new bios my zbox doesn't boot up. Do you know if there is any bios recovery procedure? I wrote an email to zotac support but i didn't get any response (yet?).Thanks and greetings from Poland.Sebastian
"Perrin", no, sorry, I "won't even be trying the live cd version". The AnandTech post describes what changes are required to get XBMC working with the ID11."Sebastian", I don't have any advice, maybe you can post a question in the Zotac support forum.
Peter,Have you tried testing CPU Fan speeds and temparatures while placing the ZBOX up-side-down? The motherboard in the HD-ID11 is inserted up-side-down in the case, so i was asuming since the natural way for heat is to flow upwards, the heat from the CPU cooler is flowing to the processor instead of to the CPU fan. Which heatens the CPU and thus speeding up the CPU fan.
Hi Pieter,Have you tried to use same Webcam on our zbox?Thanks Paolo
Nice article, and I've enjoyed your analysis of this HTPC's performance. I believe at this point in time low-end laptops with HDMI outputs are the more robust and powerful solution. The form factor is nearly as convenient, especially with the lid closed. Plus, you can always use it for something/anything else.That said, I also find the HTPC format factor appealing. There is something I like about a nice little black/white/purple box. However, it needs to have more capabilities and a lower price before it would ever be adopted by 'value' buyers like myself.
Hi Peter,Thank you very much for your guides to the HD-ID11. I received mine yesterday and spent quite a few hours trying to get things to work. Currently I have 2gb ram/250gb 7200rpm HDD.I am using windows 7 pro. I installed CoreAVC/Haali Media Splitter/and ffdshow. It plays video of 1080p mkv fine but there is still no audio. I tried MPC but the same. I noticed you used win7 ultimate. Do you think that makes a difference?Your posts are great!Thanks
I had no problems with HDMI or SPDIF audio. Are you running the latest nVidia drivers? Can Windows play audio, use the test buttons in the audio playback config?
I also had issues with the optical out under windows 7. Running the latest drivers.It isn't even an option.
Thanks for the quick reply. I have not had a chance to test HDMI yet (just ordered the cable). I am using DVI-VGA and the headphones out jack on the front to some external speakers. Yes Windows sound works fine, I have tried mp3 and youtube and starting up/shutting down. i tried the newest nvidia drives ??GeForce/ION Release 256 WHQL 258.96 July 19, 2010. Are these right? What about Pro vs Ultimate. Also I am using 32bit should I use 64bit? I have access to a copy of that.
You need the nVidia drivers for HDMI audio, and the Realtek drivers for SPDIF audio. After installing the drivers Windows could play audio over HDMI or SPDIF out, and so could ffdshow.
OK Great, thanks for the advice. Will that fix my problem though? I am using the headphone jack? I wasn't even going to use SPDIF. Also, windows sound works fine, seems to be only with movies (haven't tried anything but mkv), thats why I think its a codec issue?Thanks again for your help. Really great.
If you are using the headphone out then you have to make sure that you set the ffdshow audio mixer option to downmix to 2 channel. But I really can't say if it will fix the problem 😉
Hi Pieter,I just ordered one and have not been able to install anything using USB stick or otherwise. I tried Win7, WinXP various Ubuntu distro's but nothing. They all hang after a minute or so.What BIOS settings are you using? Specifically the ACPI and SATA and chipset settings?I might have a (almost) DOA but I am not sure.
Hmmm… I am starting to believe it is related to the memory I have used. I slipped in a Kingston 2GB PC2-6400 SODIMM. That should work, right?What are you guys using (in 2GB)?
Hi William,I am at work and cant check the bios settings. But I remember I had to switch the boot order (have usb boot first).I didnt change anything else.My ram is this one:http://www.newegg.com/Product/Product.aspx?Item=N82E16820233079&nm_mc=TEMC-RMA-Approvel&cm_mmc=TEMC-RMA-Approvel-_-Content-_-text-_-