FFmpeg integration with NVIDIA GPU
FFmpeg is widely used application. We have developed a set of GPU-accelerated FFmpeg filters and codecs for image and video processing. These codecs and filters show very high performance which are much faster in comparison with CPU-based versions. 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, BRAW, MLV, RAW SDI, 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 codecs and filters
GPU-accelerated FFmpeg codecs and filters allow us to free CPU for other tasks (for example video decoding) and to increase FFmpeg performance significantly. Great result for FFmpeg performance optimization gives combined GPU-accelarated filters with NVENC encoding. NVENC encoding is done at 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 in many cases.
We have designed that software as a part of our GPU Image & Video Processing SDK. Now our customers have opportunity to utilize GPU-accelerated components to boost raw processing and transcoding in their applications as a part of video processing pipeline.