FFmpeg integration with NVIDIA GPU
FFmpeg is widely used application. We have developed a set of GPU-accelerated FFmpeg filters for image and video processing. Also we have optimized FFmpeg memory manager for better integration with NVIDIA GPU.
As an example of FFmpeg integration with our SDK we can consider Fast CinemaDNG Processor application which is working with raw data (DNG, CinemaDNG, CinemaDNG RAW, MLV, etc.). There are no means at FFmpeg to process all these formats and we can do that quite fast on GPU. At the end of image processing pipeline we could apply any FFmpeg codecs or filters.
List of GPU-accelerated FFmpeg filters
Using GPU-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 GPU-accelarated filters with NVENC encoding. NVENC encoding works on separate hardware and does not affect GPU performance.
For the best performance it is necessary to overlap CPU threads, GPU 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.
We have designed that software as a part of our GPU image and video processing SDK. Now our customers have opportunity to utilize GPU-accelerated components to boost transcoding in their applications as a part of video processing pipeline.