Earlier this summer, both Nvidia and ATI hosted press events to unveil their new hardware—and the excitement about GPU-based encoding was palpable. We were promised that our videocards would make Photoshop faster and better and our GPUs would encode video 10 times faster than our CPUs. In fact, someone lacking tech savvy would have left these presentations thinking, "Wow, these GPU things can make common computing tasks run insanely fast, and there are a couple of games that work with them too." Of course, as is typical, the truly big promises (like 10x faster video encodes) were off in the future, when the software was "ready."
Well, the software's nearly ready. Elemental's Badaboom uses Nvidia's CUDA interface to do lots of the grunt work of DVD ripping by using the GPU instead of your musty old CPU. I've been in the Lab for the last few days putting this app through the ringer. Our test bed for this challenge is an Intel Q6600 quad core, running at a stock 2.4GHz, with 4GB of memory and a GeForce GTX 280 reference board.
The short, short version, for anyone who wants to skip ahead, is that Badaboom is an extremely promising first-generation utility, and there's a lot to like. However, there are some serious problems for anyone looking to replace Handbrake (www.handbrake.fr) or AutoMKV (http://forum.doom9.org/showthread.php?t=134478) for their archival DVD rips.
To properly evaluate Badaboom, we compared its speed and video quality to Handbrake’s, which is essentially a GUI front end for a tweaked version of the CPU-powered X264 encoder. Unfortunately, we quickly discovered a hitch: Badaboom isn't capable of running H.264’s maximum quality settings, as Handbrake is. By default, Handbrake uses the H.264 high profile, while Badaboom uses the lower-quality baseline profile. To see how both apps performed in an apples-to-apples scenario, we ripped a copy of Pee-Wee's Big Adventure to our hard drive and then ripped it to H.264 with each app, using a variety of settings. Here's our test matrix:
|Elemental Badaboom Beta 2||Handbrake 0.9.2|
|Test #1: PS3 Stock Settings||upscales to 1280x720 (?!), 2500 kbits/sec, default settings||PS3 Stock settings, Single-pass, 720x480 resolution|
|Baseline Settings||PS3 preset, 2100kbit/s||2100kbit/sec, single pass,
Handbrake using baseline settings(see end of article)
|"Best" Quality||Custom Media Center Preset - 2500kbit/s||Deux Six Quatre preset - 2500kbit/s|
|iPhone||1500 kbit/s, preset settings||1500kbit/s, preset settings|
When using two different codecs, even when you're encoding the same content, it's extremely difficult to ensure that you're actually measuring similar workloads. As a case in point, examine the first test we ran, the PS3 stock settings. We chose the PS3 profile because video ripped for the PS3 will also work on many other devices, and includes options that are commonly used while ripping.
While Handbrake ripped the DVD video at native resolution using the PS3 preset, the default Badaboom PS3 profile ripped the disc using the H.264 baseline preset and then upscaled it to 1280x720. The two apps showed remarkably similar results, separated by about 3 minutes on a 40-minute rip, but the quality of the Handbrake encode was vastly superior, despite the higher resolution of Badaboom's output. When we ran the test again, without forcing Badaboom to upscale the video, our results strongly favored Badaboom. However, since Handbrake runs a High profile H.264 encode by default, we wanted to see how the GPU stacked up against the CPU when the workloads were more equal. (Be sure to click through to see the native-resolution, losslessly-compressed image. There are additional quality comparison images on the final page of the story.)
PS3 Stock Settings: When we stopped Badaboom from upscaling the video to 720p from DVD resolution, we saw a substantial speed boost for the GPU-accelerated app. However, Handbrake was encoding using the much more strenuous High H.264 profile. (click image for full-size)
|Elemental BadaBoom (PS3 preset, 2500bits/sec, 720p)||Elemental BadaBoom (baseline, PS3 preset, 2500bits/sec, 480p)||Handbrake .9.2 PS3 (high profile, 2500bits/sec, 480p)|
|File Size (gb)||1.56||1.53||1.7|
That's when we went to the video codec experts at Doom9.org and asked how to configure Handbrake to do a fair encoding test, in order to most effectively mimic the settings that Badaboom uses in Handbrake's X264 codec. After a few misfires, we settled on a fair baseline that uses roughly the same features and results in roughly the same image quality as Badaboom (The full settings are listed at the end of the article if you want to see the specific X264 options we used). We were surprised by the results. In a direct comparison, using as close to the same visual quality settings as we could, Handbrake's circa February 2008 X264 codec actually beat the Elemental encoder by almost a minute. Image quality was roughly the same; we've included several stills below so you can directly compare the results.
|Handbrake custom baseline (see command line at end of article)||BadaBoom PS3 (480p)|
|File Size (gb)||1.43||1.7|
Next up, we tested using the highest quality presets in both Badaboom and Handbrake. If the PS3 setting used above is a format commonly used by folks who want to stream video to their game consoles, this is the format for people who want true archival quality backups of their DVDs. The Handbrake Deuce Six Quatre profile uses a two-pass encode to transcode your video to a video that's nigh indistinguishable from the original DVD at a fraction of its original size. On the other hand, Badaboom uses the exact same baseline profile, scales the video up to 720p, and sets the average bitrate to a whopping 8,000kbit/sec. The end result for Handbrake was an encode that took about three times longer than Badaboom, but it created a file that's half the size of the and looks twice as good as the GPU-accelerated transcoder.
Best Quality: At the best quality settings for the two apps, Handbrake took much longer to complete, but the final encode was approximately half the size, and was the best looking of all of our test videos. The compression errors that we saw in previous test runs were exacerbated here by the unnecessary upscaling to 720p.
|Badaboom Custom Media Center Profile||Handbrake Deuce Six Quatre|
|File Size (gb)||4.58||1.84|
Things got a little more interesting for Badaboom when we started looking at decreasing the resolution at the same time we transcoded from MPEG2 content to H.264—as you would when you convert a movie to play on your iPhone. Performance damn near kicked ass for this test run, and we don't really mind sacrificing a little quality for a much faster transcode, especially since we'll be watching these videos on a tiny phone screen. So, how much faster is Badaboom in this test? The GPU-accelerated app finished the video transcode in approximately half the time it took Handbrake (again, using the presets, but using the same 1500kbit/s bitrate). Check the stills below for the image quality differences.
The iPhone Test: This is where Badaboom really shines. When scaling your video down to a lower resolution at the same time it transcodes, Badaboom absolutely crushes Handbrake, and because it's for viewing on a pocket-sized screen, we barely notice the image quality hit.
|Badaboom Custom iPhone||Handbrake iPhone|
|File Size (gb)||0.074
I was surprised by Badaboom—both by the image quality it produces using the baseline H.264 profile, and by its performance. However, I'm not surprised that the nascent app didn't deliver a 10X H.264 video encoding perforamnce boost, despite the benchmarks Nvidia demoed this spring and summer that seemed to indicate GPU-based encoding was insanely fast. When compared in an apples-to-apples fashion with a multi-threaded encoder running on the cheapest quad-core CPU available (2.4GHz Q6600s are available at Newegg for $185 today), the results are much less impressive than the 8x to 10x speed up promised by Nvidia's demos (which used a single-threaded iTunes plugin running on the same slow quad core, so only 25 percent of the rig's CPU power was being used).
For video encodes, Badaboom is promising. It will be more so when Elemental decides to support the H.264 high profile, which it must do to compete with free CPU-based applications. For people who want to archive their DVD collections, the baseline profile is insufficient. However, Badaboom is extremely compelling for converting videos to play on portable devices. The time savings for these transcodes are huge, whether they’re from an already converted file to a lower resolution and different bitrate or straight from the DVD source. More importantly, the image-quality sacrifices Badaboom imposes are less of a concern when watching movies on your phone's screen. While we wouldn't recommend Badaboom for people who want to make DVD backups for playback on the big screen, if you simply want a quick way to get video on your iPhone or PSP, it might be worth the $30.
I did experience a few glitches during my testing using Badaboom. These glitches manifested in different ways, but they typically affected the entire screen for just a few seconds. My personal favorite glitch made the Warner Brothers logo at the start of the movie we tested with look like a backdrop from the beautiful Xbox game, Braid. Check it out below if you want to see more.
Am I excited about the promise of GPU-based computing? Definitely. Am I going to spend $30 on Badaboom when it launches? Probably not, at least not without better-quality H.264 encoding. However, despite a few first-gen problems, Badaboom is off to a good start. Frankly, I don't understand how Elemental can reserve high-profile support for the more expensive Pro version when several free apps support the highest quality settings H.264 allows. The good news for Badaboom is that performance is only going to improve as the software matures and the hardware improves.
Does GPU-based computing deliver enough for us to trade in our quad cores for "optimized" PCs today? Hell no. While no one at Maximum PC thinks those fancy $1,000 CPUs that Intel sells make much sense for a value-oriented system builder, there simply aren't enough non-gaming applications that take advantage of the GPU today for us to consider dropping from a quad core to a dual core when quad-core CPUs are available for under $200. A quad-core CPU and a good codec deliver similar performance and superior image quality compared to the fledgling GPU-based encoder, and a quad-core CPU speeds more than just video encoding. Whether you're running four single-threaded apps or a single multi-threaded app, the CPU is too flexible to consider stepping back to a dual or single core to save a mere $15. The way we look at it, $200 quad cores mean that even gamers on a tight budget should be able to afford a kick-ass videocard and a kick-ass CPU.
Baseline Still Comparison: Again, both encoders produce roughly the same quality level. Check Pee-Wee's jacket, the skin on his cheeks, and the vertical lines on the Wig Factory's storefront to see potential compression problems.
Best Quality Motion: In this instance, upscaling the resolution and wildly increasing the bitrate don't really show any improvement on general visual quality. The edges of Pee-Wee's shadow are still jaggy, and the scene under delivers. On the other hand, the Handbrake Best Quality rip looks awesome.