FFmpeg integration with CUDA and Fastvideo SDK
FFmpeg is widely used application. We have developed a set of CUDA-accelerated FFmpeg filters for image and video processing. Also we have optimized FFmpeg memory manager for better integration with CUDA.
We've implemented FFmpeg integration with Fastvideo SDK at Fast CinemaDNG Processor software which is processing raw formats (DNG, CinemaDNG, CinemaDNG RAW, Magic Lantern Raw Video, etc.). FFmpeg just can't process them directly and we do that very fast on CUDA. After raw image processing we can apply FFmpeg filters or codecs to output video.
List of GPU-accelerated FFmpeg filters
List of CUDA-accelerated FFmpeg filters
Using CUDA-accelarated FFmpeg filters allows to free CPU for other tasks (for example video decoding) and to increase FFmpeg performance. Great result for FFmpeg performance optimization gives combined CUDA-accelarated filters with NVENC encoding. NVENC encoding works on separate hardware and does not affect CUDA performance.
For the best performance it is necessary to overlap CPU threads, CUDA kernels and GPU-based NVENC sessions at the same time by running two or more transcoding processes in parallel. For GeForce GPUs only two NVENC sessions are supported by hardware. But even just two processes could be sufficient. That feature (overlapping CPU threads, CUDA kernels and GPU-based NVENC) is implemented in Fastvideo SDK.
We have designed CUDA Image & Video Processing SDK to offer our customers an opportunity to utilize CUDA-accelerated components to boost transcoding in their applications as a part of video processing pipeline.