Страницы

вторник, 15 октября 2013 г.

CUDA & DXVA Easily Explained


Speed up video conversion
Many users of Freemake Video Converter heard of CUDA and DXVA technologies integrated into the software to speed up video conversion. However, not everyone knows how and when these technologies actually work and what real value they add. This post is an attempt to explain CUDA and DXVA in plain English.

From CPU to GPU

Inside of each modern PC there is a graphics card, its quality often tells on the possibility to run video games and mighty graphics software. Technically speaking, video card has its own memory and GPU, or Graphics Processing Unit. GPUs appeared not long ago, they descended from 3D accelerators used to render 3D graphics. The term “GPU” was coined by NVidia upon the launch of GeForce video chips. The general purpose of GPU was to relieve the Central Processing Unit (CPU) of graphics-related tasks to ensure efficient workload.
As manufacturing capabilities improved, graphics cards could handle more calculation-intensive tasks. Hardly anyone knows that modern video chips may contain up to 1000 cores which of course are not so powerful as CPU cores but they ideally suit to cope with graphics processing.

GPU in video conversion

Roughly, a digital video consists of a series of still image frames, from 24 to 72 per second. If all still frames were displayed “as-is”, one-minute video would weigh several gigabytes. Therefore, video frames are compressed, each format using its own algorithm of video compression.
The process of video conversion falls into two stages – decoding (decompression of an original file) and encoding (a new compression). Both processes require a lot of of processing power, so to complete a conversion as quickly as possible, it’s necessary to use 100% of the processor output. To offload the CPU, the power of video cards comes to the aid. However, it’s not that easy to unlock the potential of video cards. So the leading video cards manufacturers put forward their own GPU-based technologies: CUDA by NVidia, DXVA by Microsoft, ATI Stream by AMD.

What is CUDA?

NVidia CUDA
CUDA, or Compute Unified Device Architecture, is NVidia’s technology which ensures dramatic increases in software performance by using the GPU power. CUDA works in some video games, 3D apps, web browsers, TV out tools, and video apps. However, not all software functionality can be GPU assisted, e.g. video encoding tools can speed up only conversion to H.264 codec. It means that you can convert video times faster with Freemake Video Converter, if you choose AVI, MP4, MKV,  Apple,  Android,  Sony  as output formats. Don’t forget that CUDA works  only  with  NVidia graphics cards, starting with GeForce 8 series and later. Just don’t forget to update the video card driver if your card supports CUDA.

What is DXVA?

DirectX Video Acceleration, or DXVA, is Microsoft’s technology for the Windows Vista, 7 and Xbox 360 platforms that allows video decoding to be GPU accelerated. DXVA is more picky than CUDA: it works only for video decoding and only for files with input H.264, MPEG2, and VC-1 codecs. This technology is majorly used by video converters, DVD rippers, and video players. A big plus is that the list of supported video cards includes ATI Radeon HD, NVidia GeForce, and some Intel cards. So chances that your graphics card supports DXVA are rather high. Please note that Freemake Video Converter supports DXVA only for H.264 and MPEG2 decoding. It means that DXVA starts working on your PC when you rip DVD or convert AVI/MKV/MP4 with H.264 video codec. The best results may be achieved if you convert a high resolution video to a smaller resolution one.

CUDA & DXVA compared

Here is the table summarizing the key points of CUDA and DXVA technologies:
CUDADXVA
DeveloperNVidia Corp.Microsoft
Supporting video cardsNVidia Geforce 8 series and later, NVidia Quadro, NVidia TeslaATI Radeon HD (series 2, 3, 4, 5), NVidia GeForce (series 7, 8, 9, GTX 2), Intel G45 and GMA500
Operating OSWindows XP and later, Mac OS X, LinuxWindows Vista, Windows Server, Windows 7 and Xbox 360
AcceleratesVideo encodingVideo decoding
Works with video codecsOnly H.264H.264, MPEG2, VC-1
Best manifestedWhen saving the original video resolution (“Same as source” preset)When converting DVD or HD video to a small resolution video

Our tests

Let’s see CUDA and DXVA in action. These are the results of in-house testing of Freemake Video Converter with four combinations of CUDA/DXVA use:
1. No CUDA/DXVA
2. Only CUDA
3. Only DXVA
4. CUDA+DXVA.
The tests were carried out on the following machine: OS Vista x64, Core 2 Quad 2.66 GHz, NVidia 480 GTX. The original videos have either H.264 or MPEG2 video codec and the output format/preset has H.264 codec, so both CUDA and DXVA should be working.
1) MKV to MP4
Input: MKV (00:05:07, H.264, 1280×720). Output: MP4 (H.264, 1280×720)
Test: MKV to MP4
2) DVD to MKV
Input: DVD (00:02:02, MPEG2, 720×576). Output: MKV (H.264, 320×240)
Test: DVD to MKV
3) MP4 to AVI
Input: MP4 (00:03:34, H.264, 1920×1080). Output: AVI (H.264, 640×480)
Test: MP4 to AVI
As you can see, the tests prove that the combination CUDA+DXVA is the fastest one, the original videos are converted two times quicker with CUDA and DXVA than without any acceleration.
You needn’t run the above tests on your PC to figure out what’s the best option for your machine in each particular conversion case. Freemake developers have integrated a special auto-algorithm which detects whether CUDA, DXVA, both or none should be enabled for the fastest video conversion. All you need is just to tick the option “Auto-detect the optimal conversion parameters” and your videos will be converted as fast as possible.
Auto-algorithm for CUDA/DXVA
*Image sources: 1, 2.

Комментариев нет:

Отправить комментарий