Video Transcoder on GPU

NVIDIA CUDA technology is a key for high performance imaging applications. It could be also applied to accelerate video transcoding solutions on GPU. We are developing highly optimized video transcoder software with GPU-accelerated video processing pipeline that significantly outperforms conventional CPU video processing pipelines in widely spread transcoding applications.

Video transcoder task should be solved to play video smoothly on different devices. That is why we need to convert source video to a new file with different quality, compression, format, resolution, bit depth, etc. Usually it's done on CPU with FFmpeg software which supports huge number of codecs, filters and formats. One more important solution is Quick Sync Video from Intel, which is a dedicated hardware core on the processor die. NVIDIA GPUs have hardware-based NVENC and NVDEC modules which are capable to encode and decode video with h.264 and h.265 algorithms and much more. Performance of that solution is much higher than realtime. Moreover, one can process several streams on just one GPU at the same time. Such a solution is now a part of FFmpeg package and it also includes resize and multiple output resolutions as well.

FFmpeg and NVENC/NVDEC are great, but they are unable to deal with MXF files which have internal JPEG2000 compression. Such an options does exist at FFmpeg to do J2K decoding with CPU-based OpenJPEG library, which is very slow. OpenJPEG is now multithreaded decoder, but it's still far from working in realtime even for 2K resolutions. You can try VLC or Windows Media Player to play MXF files on PC to see that they just can't do that smoothly. That's why we need to transcode source files from MXF format to MP4 with h264 compression.

Now we can do that on GPU by utilizing Fastvideo J2K decoder and NVIDIA NVENC encoder. As soon as NVENC can work in parallel with CUDA cores, we can do J2K decoding and h264 encoding at the same time. This is the way to improve total performance of transcoder.

GPU Transcoder Features

  • JPEG2000 decoding on GPU
  • High performance GPU transcoder engine to process UHD 4K video in realtime
  • Video processing options: rotate, resize, sharp, color transforms, gamma, various output video formats, etc.
  • Scalable solution
  • Low latency output
  • Optional integration with FFmpeg
  • Compatibility with Windows-10 and Linux Ubuntu/CentOS/RHEL

MXF transcoder pipeline for J2K sources

  • MXF import and parsing
  • Fast JPEG2000 decoding on GPU
  • Optional video processing on GPU: resize, sharp, color correction, bit depth and color space transforms, etc.
  • Output video encoding with NVENC for multiple resolutions

We have implemented that library as a part of our Image & Video Processing SDK. Our customers has opportunity to utilize GPU-accelerated SDK components to boost transcoder in their applications as a part of video processing pipeline.

Roadmap for Live GPU Transcoder

  • Date of release - Q2/2020
  • FFmpeg codec for MXF (J2K) decoding on GPU at multithreaded batch mode - Q2/2020
  • Further optimizations for transcoder pipeline
  • Live transcoder for raw data
  • Transcoder with built-in denoising option
  • Multi-process and multi-GPU custom solutions for transcoder

CPU vs GPU Video Encoding for H.264

We need to emphasize some important differences at H.264 encoding on GPU and CPU. This is frequently used scenario for transcoder solutions when initial and final streams are compressed according to H264 algorithm. GPU-based video encoding is usually optimized for high bitrate streaming rather than for playback. That's why GPU encoding is usually done without B-Frames with constant bitrate. CPU-based x264 solution is mostly intended for playback and storage.

Contact Form

This form collects your name and email. Check out our Privacy Policy on how we protect and manage your personal data.