Since launching EditReady, we’ve heard from a number of users who can’t believe just how fast it is. How can it be that one application is so much faster than other applications, when they’re all doing “the same thing”? We’re going to use this post to talk about how EditReady manages to do what it does.
Transcoding a video involves a few different stages. First, you need to decompress the video to raw, uncompressed frames. Then, you may need to do some color conversion on these frames to get them ready for the destination format. Finally, you need to compress them into the new destination format. Each of these stages takes time – how much time depends on the complexity of the formats involved.
Video encoding and decoding is highly CPU-intensive. Modern formats like H.264 are able to leverage very complicated mathematical processes to minimize their space utilization. There are a lot of operations that need to be performed on each frame of a video, and other operations that need to be performed across frame groups (GOPs).
Hardware acceleration for video encoding and decoding has been around for decades in the form of dedicated cards or accessories. By focusing on optimizing specific algorithms, hardware codecs are able to dramatically increase performance. But, very few users are interested in buying dedicated transcoding hardware.
Due to the rise of formats like H.264 for online video delivery, Intel saw a need for better video support on mainstream computers. To address this, they introduced their QuickSync technology with the Sandy Bridge architecture in 2011.
QuickSync, now in its third generation with the Haswell architecture, provides dramatic speed increases for H.264 encoding and decoding (and some flavors of MPEG-2). EditReady is able to offload a lot of the work of dealing with H.264 to this dedicated hardware, leaving your CPU free for working with non-accelerated formats like ProRes.
This means that, in some cases, a fast Macbook Pro, Macbook Air, or iMac will outperform even a loaded Mac Pro.
This also creates some interesting disparities in performance. The newest Intel Xeon chips, like those used in the powerhouse Mac Pro, don’t support QuickSync. Because Xeons are primarily intended for use in servers, Intel doesn’t deem it necessary. This means that, in some cases, a fast Macbook Pro, Macbook Air, or iMac will outperform even a loaded Mac Pro.
There are a few other ways in which EditReady is able to maximize performance. For example, some video transcodes require the raw, uncompressed frames to be converted between color formats or sampling schemes. Your source codec may store video as RGB data, while your destination codec may expect it in YCbCr. While this conversion isn’t computationally complex, it needs to take place for every pixel of every frame, which means there’s a lot of data that needs alteration. Luckily, the graphics card in your computer is designed for this type of operation. EditReady uses OpenCL to perform GPU-accelerated conversions, giving your CPU more time for other tasks.
There’s an added benefit to using specialized hardware like QuickSync and the GPU – battery life. Not only is the hardware decoder far faster, but it’s also more power efficient. And by doing all your processing in a shorter amount of time, your system can more quickly return to an “idle” state and save even more power.
Good ol’ Fashioned Hard Work
Finally, and unlike other conversion tools on the market, we’ve spent months making sure every single operation EditReady performs is absolutely necessary. One of the real “killers” of performance in an application is the act of copying data in memory. Sometimes when developers write software, we end up adding extraneous memory copies without realizing it – “I need this data over here now, I’ll just make a copy.” Doing that even a few times has a big impact on performance. By meticulously mapping every single operation EditReady performs, we’ve been able to remove any unnecessary operations.
So just how quick is EditReady? We’ve prepared a video to demonstrate.