HD Video Playback with Hardware H.264 Decoding

From VuzeWiki
Jump to: navigation, search

HD Video Playback with Hardware H.264 Decoding[edit]

H.264 (also called MPEG4 part 10) is a widely used video codec used to distribute video. H264 video covers a wide range of resolutions and quality levels, from low-bandwidth internet video-conferencing, to high-definition video (Blu-ray Disc, satellite TV.) HD content distributed by Vuze.com uses H264 video embedded inside Matroska .mkv container format).

Prior to Microsoft Windows 7, Windows Media Player lacked the ability to video H264 video. Such functionality required additional software, such as a separate third-party media player (including the Vuze Embedded Media Player, and most mplayer clones, Apple's Quicktime Player for Windows.) And until recently, none of the free third-party players took advantage of hardware-acceleration offered by modern video cards. For example, Apple's Quicktime relies entirely on the software-based (host CPU) decoding for all types of video, and for H.264 in particular, the demands on the host processor are substantial, limiting the audience of high-definition H264 to more powerful PCs.

Microsoft now includes their own AAC and H264 decoder with every edition of Windows 7, except Home Basic. Although Microsoft's decoder offers DXVA2 acceleration on capable GPU hardware, Windows Media Player still lacks built-in support for open-source container and codec formats (example, MKV, OGG, FLAC.) Once again, unless third-party software is installed, Microsoft Windows is unable to play a great deal of user-authored and distributed video content.

Media Player Classic and Hardware H264 decoding[edit]

Those of you interested in how to enable the hardware decoding in my ATI HD4670 based video card: Finally I managed to find and configure Media Player Classic Home Cinema (MPCHC) for the task.

The results are pretty amazing. The content used in the next example is "Return to the Moon" (MPEG4 Video H264 1248x688 29.97fps) from official Vuze website.

HDvideoCPUload3.png

First the video was played with Vuze Embedded Media Player and then with MPCHC. The CPU consumption decreases from "normal" 15-20% down to 2-5%, when using hardware decoding for HD video player. Naturally CPU temps keep low and there is no need to CPU cooling fans to ramp up. (I use Speedfan for fan management, so my fan speeds change according to the temps.)

I wrote this to encourage others to try to find and configure a suitable media player for themselves.

Using MPCHC in Vista for H.264 Hardware Playback with ATI HD4670[edit]

The video player, which works for me for H.264 hardware decoding is Media Player Classic Home Cinema (MPCHC), a freeware media player (from SourceForge) that offers DXVA support for H.264 hardware decoding.

MPCHC-About.png

I found a nice guide for configuring it: Watching h.264 videos using DirectX Video Acceleration (DXVA).

Based on advice from that article, here are the main steps in configuring the MPCHC:

  1. In Output options, select EVR Custom for DirectShow Video output for Vista. (With Windows XP you should select WMR7-9).
    MPCHC-Output.png
  2. In Internal Filters options, disable Matroska, MP4/MOV and Ogg as Source Filters, and make sure that H264/AVC(DXVA) and H264/AVC(FFmpeg) are enabled for Transform Filters.
    MPCHC-InternalFilters.png
  3. In External filters, you need to ensure that there are no software H.264 decoders allowed. There is possibly something from your video card manufacturer, and possibly also software codec ffdshow Video Decoder. Add them to the Filter list with the Block status. (For me it was ATI MPEG Video Decoder as I did not have ffdshow installed.)
    MPCHC-ExtFilters.png
    Add Filter Dialog:
    MPCHC-ExtFiltersSetup.png

There are also other options to take care of (e.g. regarding subtitles), but these were the main steps for me. Should you need more explanations, please read the original article with more guidance: Watching h.264 videos using DirectX Video Acceleration (DXVA)


Read the Playback Guide.