Graphics cards have been the most important component of a gamer’s PC build for years. The way these builders show off those massive boards is akin to a gearhead showcasing a turbocharger on their engine. They are a huge deal to gamers, and as a result the industry has become massive. As games have grown in complexity, the need for larger and more powerful graphics cards has become apparent. The GPU has become so powerful today that developers have begun to take advantage of their massively parallel architectures for high level computing, and today, rendering graphics is only part of the rapidly expanding capabilities of the GPU.
The year of the GPU is upon us. Everywhere you look, people in the industry are talking about GPGPU, or GPU computing—the act of enabling the GPU to handle computation of the likes that are typically reserved for the CPU. I’ve watched the transition happen. At the 2007 ACM SIGGRAPH conference in San Diego, GPGPU was hardly even mentioned. It was barely on the radar. At the 2008 conference in Los Angeles, AMD and NVIDIA were both talking about it, and there were a few presentations covering the subject. At the 2009 conference in New Orleans however, GPGPU was everywhere you looked. Hardware was being shown that offered a complete computing experience operating on just a GPU. There were talks, papers, and demonstrations on GPU computing. It was glaringly obvious—GPGPU is going to play a huge focus of future computing systems.
So how about practical examples of GPU computing that users can experience today? Look no further than the recently unleashed Adobe Creative Suite 5. Adobe’s legendary suite burst onto the scenes with its latest version just two months ago, and with it, they ushered in a powerful new ally in GPU computing. Premiere Pro CS5 has seen the fruits of this alliance, and has the fantastic Mercury Playback Engine to show for it.
Talking the Talk
Mercury Playback Engine is an absolute game changer in the nonlinear video editing segment. It uses the GPU to produce real-time results in ways that could only be imagined previously. Tasks that are normally reserved for the CPU can now be offloaded to a Mercury Playback-compatible GPU, leaving the CPU free to focus on other tasks. What results is lightning quick editing performance.
There is a process known as rendering in all non-linear video editors. Whenever an effect is applied, such as layering and scaling video sources, color correction, image keying, 3D motion, or applying transitions, the frames have to be rendered—created by the editor—so the video can be played back smoothly in the software. In Premiere Pro, unrendered frames are represented by a red line above the clips in the timeline. A project can be completely edited without rendering, but playback would become so choppy that the workflow would be reduced to a complete crawl. Premiere Pro CS5 is faster than ever in this regard, but it still becomes limited as modern CPUs and memory struggle to deal with the influx of HD video sources being moved and adjusted in real time.
Mercury Playback removes the need for rendering a project while editing. When effects are applied to a video source and playback is initiated, the engine moves all of the frame generation to the GPU. Unrendered frames being handled by Mercury Playback are represented by an orange bar above the timeline clips. The editor can tweak any effect they want and not have to worry about re-rendering the project. Better yet, they can even view the project in full screen mode while maintaining a smooth framerate. Working with HD content becomes easier than ever.
Mercury Playback also assists in video export time. Exporting is generally a very time consuming process. On a non-Mercury Playback enabled system, the export process has three steps: The software first tells the CPU to render all necessary frames, which takes up a large portion of time. The CPU then returns the frames back to the editing software. Finally, the rendered frames are sent to the media encoder to be converted and compressed to the selected video codec, and output to a movie file. With Mercury Playback enabled, exporting is able to bypass the entire rendering with CPU process, sending the unrendered frames directly to the media encoder. Bypassing the frame rendering step saves a considerable amount of time in exporting, especially when working with HD footage and projects with a high amount of effects.
That’s what all the press talk says, anyways. I decided to put Mercury Playback through the real world test paces on my own computer. Let’s take a look at how Adobe Premiere Pro CS5 handles effects-laden HD video content in a real world scenario.
A few notes: Mercury Playback uses CUDA to do its rendering voodoo, and because of that, there is a limited list of compatible NVIDIA GPUs than can take advantage of the engine. As of this writing, the current list of Mercury Playback-compatible graphics cards are the Quadro FX 3800, 4800, and 5800. Furthermore, not all of Adobe Premiere Pro CS5’s video effects are accelerated. However, many of the most intensive and oft-used effects are accelerated by Mercury Playback, and Premiere Pro CS5 offers a filter to display only accelerated effects for your convenience.
The Setup and Tests
The evaluation of Adobe Premiere Pro CS5 and Mercury Playback Engine is being performed on our testbench comprised of an AMD Phenom II X6 1090T hexa-core processor at 3.20 GHZ, 8 Gigabytes of DDR3 1600 memory, data coming from a 1 Terabyte Western Digital Caviar Black SATA HDD, all plugged into the new MSI 890FXA motherboard and running Windows 7 Professional 64bit installed to an OCZ Vertex SSD. The graphics card used is the NVIDIA Quadro FX 3800. This GPU can be found for around $700.
The GPU was swapped with an NVIDIA GeForce 8800GTX to test editor performance without Mercury Playback support.
The first test involved the project timeline from the May 16th episode of Mind of UPSLynx. I chose this episode because it contains many effects and color correction adjustments, and I remember quite vividly how this project managed to bog down my old Core 2 Duo system with 3 gigabyte of RAM.
Timeline scrubbing and fullscreen playback were both very smooth operations with Mercury Playback enabled. The software did not choke once. Export time was also fast, clocking in at 1 minute and 36 seconds. Unfortunately, when swapping to the 8800GTX and removing Mercury Playback support, the performance was almost exactly the same. Export time without Mercury Playback was 1 minute and 42 seconds, a difference margin that doesn’t lend real credence to the GPU making a difference.
So does this project suggest that Mercury Playback does not actually affect the performance of the editor? Not necessarily. This project consists of compressed 640×480 video footage. These small video files were being eaten alive by the massive 1090T hexa-core processor and 8GB of RAM. Premiere Pro CS5’s increased performance with multi-core systems coupled with bleeding fast hardware will make fast work of any simple projects such as this, not giving the GPU enough work to really make a difference. These results do suggest that if you’re editing small-time video footage, you will not benefit much from using Mercury Playback.
It became clear that I was going to have to pull out the big guns to really put Mercury Playback to the test. For the next evaluation, I started a new project and imported two HD clips to the timeline shot by @chrismskibbe. These clips were shot on a Canon HV20. They are 1080p resolution, 16×9 pixel aspect ratio, and clock in at 30 frames per second. Each clip is just a touch over 1GB in size. I arranged both clips in the timeline, added a long dissolve between the two, added Gaussian blur and levels filters to tweak the look, and threw in some text layers for good measure. I left all of the frames unrendered.
Video playback at full resolution without Mercury Playback support managed to keep its head above water, but just barely. The video would choke every 15 seconds or so, and then work its way back up to smooth playback. The eye opener happened when I brought the playback window to fullscreen. Immediately, the framerate dropped from a smooth 30 FPS down to 10-15 FPS. Scrubbing became a struggle at this resolution, and all interactions with the playback became immediately sloppy.
When switching over to the Quadro FX 3800, playback became just as smooth as it was with the Mind of UPSLynx project. I scrubbed the timeline with ease, and when fullscreen playback kicked in, the video maintained a buttery-smooth 30 FPS. We have found our champion.
Export times were definitely affected with Mercury Playback in this HD round. Exporting this project with the Quadro FX 3800 clocked in at 1 minute an 12 seconds. Exporting the same unrendered project with the 8800GTX brought an export time of 1 minute and 33 seconds. A 21 second difference may not seem like much, but when you start dealing with project lengths closer to short or even feature length films, that difference will grow exponentially.
It was now obvious that HD editing and playback are the kind of operations that would benefit most from Mercury Playback support. The results just begged the question—how far can we push its potential? There has been much talk on the web of Mercury Playback-enabled workstations ingesting massive projects full of five, six, seven or more layers of RAW HD content, such as RED footage or native AVCHD, without even breaking a sweat in the playback. While I don’t have access to RED or AVCHD footage, I do have an archive full of 1080p footage from my work on the short film “The Man Who Knew Nothing.” It was time to build the most obnoxious stack of layered HD video composites that I could possibly achieve and see what Mercury Playback could really do.
I organized eight HD clips on the timeline, all layered upon one another in a pyramid shape. Each clip has been resized and moved to a different portion of the frame so all eight HD sources are displayed at once. To push it further, the bottom two fullscreen sources have a chroma key enabled, throwing in real time color keying into the mix. As the video plays, the complexity grows, and the performance can be gauged as each new layer is added. You can see the results for yourself (I advise turning down the volume, this one gets annoying. Also, I apologize for the singing.):
As you can see, the non-Mercury Playback session really struggled with the video preview once there were six sources in action. When the video went fullscreen, it was out for the count. As for the Mercury Playback session, it wasn’t perfect, but managed to perform admirably under the stress. It was especially impressive once the video went fullscreen, as the Mercury Playback Engine kept consistent performance from when it was downsized. It’s worth noting that I tested this on the lowest end GPU that supports Mercury Playback. With a Quadro 4800 or 5800, you can be assured that the playback performance will scale significantly in these situations.
Exporting this massive layer stack of doom told a story similar to the previous test. When exporting the project with Mercury Playback, the total time was 2 minutes and 24 seconds. When the hardware was swapped and the export was done without the support of Mercury Playback, the time jumped up to 2 minutes and 56 seconds. That’s an increase of over 30 seconds. Such time makes a world of difference to an editor when exporting such complex projects.
So what have we learned? The Mercury Playback Engine is an incredible assistant to any video editor working on HD and RAW video projects. Being able to playback a full resolution fullscreen video feed in real time is a massive advantage to these professionals. Having such a small selection of compatible video cards definitely hurts the potential of the Engine, and ramps up the price of such a build considerably, but to those in the industry, it is money well spent.
If you’re editing simple family movies or fun little YouTube projects, Mercury Playback is not for you. As we discovered with the SD video project test, the performance differences will be negligible at best if your computer’s components are worth their salt. However, at the price of workstation GPUs alone, the casual consumer is essentially ruled out from the beginning.
GPU computing is a freight train running towards our computers at breakneck speeds. It brings wonderful potential in future applications and computer performance. Adobe Premiere Pro CS5 and Mercury Playback Engine serve as a testament to the technology’s bright future, and it is only the tip of the iceberg of what we can expect. It would be wonderful to see this engine being used in more of Adobe’s creative products, such as After Effects. In the meantime however, video editors will be absolutely thrilled with the performance and productivity gains from working with GPGPU and the Mercury Playback Engine.