Watching 1080P x.264 / MKV videos completely decoded by your graphics card An accelerating GPU Video Acceleration Guide
Yours truly is a big movie buff, I like to playback high-definition content, preferably at 1080P Full HD. But face it, to be able to decode such content in a flawless manner, you will need a lot of raw processing power.
One of my more recent dillema's is that you can playback for example BluRay content fairly easily with software like PowerDVD, assisted by the graphics processor on your graphics card. Such a great feaure, as that GPU can do marvelous things when it comes to handeling that content. The problem with 3rd party vendor software like PowerDVD is however complex, if a file format or file-container is not supported you can't play back that content assisted (accelerated or enhanchanced) by your graphics card. And that's a waste of the GPU and definitely your CPU load.
Much like MP3 was up and coming many years ago, one of the most popular formats is x.264 (not to confuse with h.264 itself). x264 is a free and open library for encoding H.264/MPEG-4 AVC video streams.
The x.264 format is often synonym with Matroska MKV, a media file container which often embeds that x.264 content, a much admired container format for media files. Especially the 1920x1080p movies often have some form of h.264 encoding dropped within the x.264 format. As a result, you'll need a very beefy PC with powerful processor to be able to playback such movies, error free without frames dropping and nasty stuttersm as PowerDVD or other PureVideo HD supporting software by itself will not support it.
There is a way though. Today we are going to open up and investigate this topic, we'll show you how you can accelerate x.264 content nearly 100% accelerated and post processed (enhanced) with nothing other than your graphics card.
Why use a graphics card you might ask ? Well, first off, there are many software solutions at hand, the fantastic ffdshow, which is an open source DirectShow decoding filter with excellent image quality. But for it to be able to handle 1080p, you will need fairly decent hardware, especially if you flick on filters like image sharpening. Another option is to purchase CoreAVC, which is a codec that allows extremely efficient x.264 playback, assisted by your (preferably) multi-core processor. CoreAVC is extraordinary, however on bigger HD TVs you'll notice that this codec forfeits a little on image quality.
Running into CPU (system) bottlenecks or forfeiting on image quality is not something we should accept in the year 2009, especially when we have modern graphics cards that could easily handle this content.
Companies like ATI and NVIDIA have been evangelizing that their graphics cards are the best thing invented since the wheel was discovered, especially for that high-definition content playback. See, the graphics processors in your (reasonably modern) graphics card have excellent decoding, accelerating and post-processing (enhance image quality) functionality as they have dedicated core logic built in to the GPU to do exactly that.
ATI Radeon cards starting at series 3000 for example have the a UVD HD (Universal Video Decoder) engine embedded in the GPU. It's a small piece of core logic designed to handle smooth high-definition movie/content playback.
The same can be said for GeForce graphics cards starting at series 8000. GeForce series 8000 (GTX 320|640 and prior excluded) and newer have an updated version of the PureVideo (VP2) engine, allowing high-quality high-definition content playback.
But here's the thing, while both formats are really good, they do not support anything that is not officially supported by 3rd party vendor software like PowerDVD and WinDVD. As a result your hands are tied and you are extremely limited in utilizing UVD and Purevideo only for DVDs, WMV(HD) and Blu-ray disks. And we feel that poses an issue, as the other 80% of the content out there thus can not take advantage of these HD processing video engines.
As a result, you must use some sort of codec or filter forcing the decoding, acceleration and post processing processes over the CPU, and that CPU load will be tremendously high and certain image quality enhancements [can or] will be lost. Decoding and accelerating media content over the CPU is intensive, expensive and not at all optimal.
I believe in the evolution of new and open standards. XVID, DIVX, h.264. VC-1 and now x.264/MKV need native support.
What would have happened if we would have never embraced the MP3 format for example ?
What the majority of us would like to see ...
My personal vision of a Home Theater PC (HTPC) is using software like using Media Center and a remote control (point, click and play), then sit back, watch and enjoy 1080P high definition content, whatever the file container format is.
MKV and x.264 filter transcoded content has got to be the biggest and best open file container format available on the web. It is a revolutionary format, but is just not supported natively by your graphics card, forcing you to revert back to software like FFDSHOW or CoreAVC. Meanwhile you have GPU in your PC picking it's nose, while that GPU easily could handle the entire decoding processes, with very small use of system resources and power consumption.
There is however a way to get x.264 working in a nice symbiosis with your graphics card. And though it's not as charming as having a remote control in your hands and starting up that movie with Media Center, it is a great way to watch high definition x.264 content, accelerated and enhanced by your GPU.
Did you read our NVIDIA ION review ? With this Intel Atom 230 (single core) powered little box you will be able to decode full x.264 content at 1080P with merely 20-25% CPU utilization, interesting right ?
Head on over to the next page where we'll talk a little about the software after which I'll startup a guide explaining you what you need to do to get that MKV GPU accelerated content going.