Fast CinemaDNG

High performance software for CinemaDNG processing on GPU

Fast CinemaDNG Processor on CUDA
What's the main task for Fast CinemaDNG Processor?

Task description: you have a couple of terabytes of footage in CinemaDNG (RAW) or RAW 3:1 from BlackMagic cameras. Before NLE one have to choose the best series, remove bad footages, tests, etc. It will last too long with Adobe Camera Raw or Lightroom. It's much faster with Adobe Premiero Pro, but debayer quality is not excellent and there are no denoisers in that software. Full version of DaVinci Resolve software can do that in realtime only with proxies, though free version doesn't have built-in denoisers.

Solution: Fast CinemaDNG Processor in realtime can read CinemaDNG images from SSD, parce and decode RAW, do all image processing on GPU and play video smoothly with any resolution. Now you don't need proxies at all, everything could be done on GPU in realtime with maximum resolution. Finally one can get at output image series of JPEG (8/12 bits per channel, quality 95%, 4:4:4), 16-bit TIFF/PPM or high quality video in Motion JPEG (AVI) or MotionJPEG2000 (MXF). Other output encoding options and formats are available via external FFmpeg.

What's CinemaDNG format?

The CinemaDNG file format (CDNG) is designed to store high-resolution video streams in camera raw format and typically adds less than 1 KB overhead per image. Each video frame is independently encoded in a lossless way using the DNG (Digital Negative) image format. The video stream is stored either as a picture track in an MXF (Material Exchange Format) file or as a sequence of individual frame files. CinemaDNG uses fully-documented, vendor-neutral, standard formats for video and imaging – DNG, TIFF/EP, and MXF. The format is unencrypted and free from intellectual property encumbrances or license requirements. The CinemaDNG format allows vendors to add functionality on set or in post, for example, by extending the decoder SDKs with additional image processing or metadata processing.

What's the DNG format? The camera sensor output can be stored directly into the DNG image file, without in-camera pixel processing or repackaging of the sensor data. The DNG image format is widely used to capture and archive camera raw images. Tools are available to convert images from over 200 proprietary camera raw file formats to the DNG format. The DNG format specification is now being incorporated into the ISO 12234-2 standard as TIFF/EP Profile 2.

Which CinemaDNG images could be processed with Fast CinemaDNG software?

Fast CinemaDNG software can work with uncompressed and losslessly compressed CinemaDNG images. It can also work with proprietary extension to the CinemaDNG format, usually referred to as RAW 3:1 and 4:1, introduced by Blackmagic Design in DaVinci Resolve for their URSA cameras. CinemaDNG parsing and decoding are performed on multicore CPU in realtime. Bit depth of RAW data could vary from 8-bit to 16-bit.

Can the software work with non-DNG RAW images?

The software can work with various RAW images from cameras which have Bayer pattern, but not directly at the moment. First you need to convert these RAW images to DNG format with Adobe DNG Converter software. Usually it's better to run Adobe DNG Converter to create corresponding DNG images and to store them in a separate folder. Then one can run Fast CinemaDNG Processor software.

Can we run the software at PC or laptop without NVIDIA GPU?

No. GPU-based image and video processing in Fast CinemaDNG Processor is implemented for NVIDIA GPUs only. The software doesn't have CPU-based version because one can't offer realtime processing on CPU for CinemaDNG footage with modern camera resolutions and bit depths without proxies. To get better results, please utilize GPUs with NVIDIA Maxwell or Pascal architecture and with 8-12 GB memory or better.

Is it possible to get a speed up with AMD or Intel GPUs?

No. AMD and Intel GPUs could be utilized for visualization purposes only.

How one can get significant acceleration from GPU for image and video processing?

To get significant acceleration from GPU usage we need to perform full image and video processing pipeline on GPU, rather than to get GPU acceleration for some stages of image processing. There are lots of software which announce significant acceleration on GPU for image and video processing. Nevertheless, quite often this is not the case. For example, one could easily get 10-20-30 times acceleration on GPU for White Balance transform in comparison with CPU, but it could hardly improve significantly the total performance. We need to consider the timing for the whole workflow to be able to say that we do have acceleration. Usually we have up to ~20 transforms in the pipeline and we need to accelerate all of them on GPU to get better performance. That's exactly what we do with Fast CinemaDNG Processor.

How to choose PC and monitor for realtime CinemaDNG processing?

Realtime CinemaDNG processing is very complicated task, so the hardware should be well balanced to do lots of things at the same time at frame rates 24-30 fps or even more. For example, just to read 4.6K losslessly compressed 12-bit CinemaDNG images at 24-30 fps, we need SSD with minimum performance 250-350 MB/s for reading, that's why the choice of SSD or RAID with 500 MB/s or better is quite reasonable. For fast DNG decoding we need powerfull multicore CPU as well. Below you can find some recommendations concerning the hardware:

  • Fast SSD for image and video reading/writing
  • RAM 8-16-32 GB or more: CPU processing, cache, all temp buffers
  • Intel Core i7 or Xeon with 8-12 logical cores for multithreaded software: CDNG reading, parsing and decoding, other CPU-based computations, optional output encoding on CPU
  • NVIDIA GeForce/Quadro (Maxwell or Pascal): main part of CinemaDNG processing
  • Motherboard with PCI-Express 3.0 to insure fast data transfer over PCIE to and from GPU
  • Well-calibrated monitor with resolution from Full HD to 4K