There’s an old proverb in the video encoding world: “Speed, size, quality: pick two.” It means that you always have to make a trade-off between the time it takes to encode a video, the amount of compression used, and the picture quality. Well, this release of HandBrake refuses to compromise. It picks all three.
A large portion of these speed, size, and quality improvements come to us for free, from the x264 project. The past year, like every year, has seen some massive improvements for that video encoding engine. As always, it has been further hand-optimized for better performance. But it has also gained new features like macroblock tree rate control and weighted P-Frame prediction. The end result? Better picture quality, at a smaller size, faster.
HandBrake has a new, much improved compilation system, which allows easy 64-bit and parallel builds, as well as providing easy extendability for future improvements to the application. 64-bit builds tend to perform approximately 10% better than their 32-bit brethren.
HandBrake now uses a better DVD reading library called libdvdnav. This means it can now read some DVDs it had trouble with before, and it can also select different angles on a DVD. As well, some bugs in underlying libraries have been patched.
As we’ve had on our roadmap for quite awhile now, one of our goals for version 0.9.4 was to refocus on HandBrake’s key strengths and to remove dead weight. As part of this process, several containers and a codec have been removed from HandBrake.
AVI: AVI is a rough beast. It is obsolete. It does not support modern container features like chapters, muxed-in subtitles, variable framerate video, or out of order frame display. Furthermore, HandBrake’s AVI muxer is vanilla AVI 1.0 that doesn’t even support large files. The code has not been actively maintained since 2005. Keeping it in the library while implementing new features means a very convoluted data pipeline, full of conditionals that make the code more difficult to read and maintain, and make output harder to predict. As such, it is now gone. It is not coming back, and good riddance.
OGG/OGM: HandBrake’s OGM muxer is just as out of date. It hasn’t been actively maintained in years either, and it too lacks support for HandBrake’s best features. It requires conditionals to work around missing functionality too…only this one gets tested so infrequently the conditionals were never even put in the code, so it just fails when you try to do anything advanced. This one is not coming back either. And yes, we’re aware of HTML 5. For patent-free muxing, HandBrake still has Matroska, which is a much better container anyway.
XviD: HandBrake, these days, is almost entirely about H.264 video, aka MPEG-4 Part 10. This makes it rather…superfluous to include two different encoders for an older codec, MPEG-4 Part 2. When choosing between FFmpeg’s and XviD’s, it came down to a matter of necessity. We need to include libavcodec (FFmpeg) for a bunch of other parts of its API, like decoding. Meanwhile, XviD’s build system causes grief (it’s the most common support query we get about compiling, after x264’s requirement of yasm). Since we mainly use MPEG-4 Part 2 for testing/debugging, and recommend only H.264 for high quality encodes, Xvid’s undisputed quality edge over FFmpeg’s encoder is inconsequential, while FFmpeg’s speed edge over XviD is important to us.
Mac users can now encode AAC audio using OS X’s Core Audio, rather than using the open source libfaac. Core Audio offers far superior audio quality.
More info and download link here.