Archive for the ‘divx7’ tag
Low Clock Speed Decoding : H.264 Decoders & Processor Speed
I recently did some investigating into h.264 decoding options for a aged Toshiba laptop that I have been using as my media center. The system in question is running Windows XP and sports an Intel mobile Celeron 2.2 Ghz processor (400mhz fsb + 256kb cache), 1GB Ram, Intel i852GM chipset, 82852/82855 GM/GME graphics adapter, and 4200 rpm hard drive. Hardly specs one would associate with any a modern media center.
The video card does not support hardware decoding of HD content, so I am forced to rely solely on processor power. However, I only outputting video to the laptops 15″ screen. My media center pc only needs to be able to handle my music collection, stream online media, and play a variety of offline video including, fairly low bitrate 720p h.264.
VLC is my media player of choice, but I was running into some problems playing 720p video. For h.264 playback, VLC utilizes the open source FFmpeg codec and does not support third party/system codecs. This is a blessing and a curse. VLC is well known for playing practically any media one can throw at it, but that comes at the price of not always offering the most efficient decoding options. This is not a problem in most cases, but I needed something highly efficient if my Celeron was going to have a chance at playing HD content.
In it’s default state VLC was unable to render watchable video. Processor usage was pegged at 100% and high bitrate scenes were suffering from constant frame drops. However, by utilizing the following tweaks, I was able to attain very watchable, good quality playback.

* Open the preferences
* Tick advanced in the lower right corner
* Go to “Input/Codec”
* Go to “other codecs” subcategory
* Go to “FFmpeg”
* Change “Low Resolution Decoding” to 1 or 2
* Tick “Allow Speed Tricks”
* Change “skip the loop filter for H.264 decoding” to all. <– aka Deblocking
* Restart VLC
Depending on system specs, one may not have to implement all of the tweaks. A good course of action would be to enable one at a time, then try combinations until a efficient decoding process emerges.
Another alternative is to use a different decoder. The CoreAVC codec and Divx 7 are two third party h.264 decoders said to offer superior performance compared to FFmpeg. However, both codecs are proprietary software. Divx 7 is available as a free decoder download, while CoreAVC is available for $10.
To enable these decoders, an different media player must be. My reliable fallback is the the aptly named Media Player Classic (MPC). In this case, I used Media Player Classic – Home Cinema. MPC is lightweight, open source, and most importantly, supports external filters/decoders.
After installing a 3rd party decoder, navigate to it’s start menu folder and you will be able to configure playback options, interlace methods, and deblocking preferences. Use the following steps to add decoding codecs to MPC.
* Click “View” -> “Options” -> “External Filters”
* Select “Add Filter” from the right menu and select your decoder
* You can then choose to ‘prefer’ or ‘block’ usage so as to ensure you are running the decoder of choice.

Between CoreAVC and Divx 7, CoreAVC was the clear winner. It succeded in blowing away both Divx 7 and FFmpeg. Processor usage with CoreAVC was 20%+/- lower AND I was able to leave deblocking turned on, something I was unable to do while running either of the other decoders.
VLC, MPC, and the decoders are fully supported by all recent flavors of Windows (XP, Vista, or 7). Decoding speeds will vary according to cpu type, chipset, and ram and decoding codecs should be tested to ensure optimal performance. For example, at the time of this post (01/24/2010), the VLC FFmpeg codec does not support multi-core processing. Also, while real world testing does hold the trump card, GraphStudio provides an excellent base for benchmarking decoders.
Since I have both VLC and MPC installed on the system, I will continue to run both programs as needed. I still like VLC a bit more, but MPCs ability to utilize the CoreAVC decoder and thus provide slightly higher quality playback makes it a must for my lowly mobile Celeron. H.264 Bitrates higher than 3600-3800 kb/s still choke the system, but I am no longer limited to non HD content. Even on more high end systems, these tweaks and decoders can aid in playback and provide some options as to performance preferences.
Great resources for digital video conversation include : forum.videolan.org – forum.doom9.org – forum.videohelp.com


