Fast MLV Player and Viewer on GPU
Magic Lantern (ML) is a firmware add-on for Canon digital single-lens reflex (DSLR) cameras and EOS M. It adds features for DSLR filmmaking and still photography, and is free and open-source. The most important feature of ML is the ability to shoot video in RAW.
The most interesting thing about Magic Lantern, that it adds 4K RAW mode to Canon 5D Mark III. Actually this is 14-bit raw format with lossless compression. The latest update brings 4K to the 5D Mark III as part of eight new resolution modes, including a 4,096 × 1,440 resolution at 25 fps, a 4,096 × 2,560 at 12.5 fps and a 3,840 × 1,600 at 24 fps. There are also some additional HD video options, including 1,920 × 800 at 60 fps as well as a square-crop-video mode.
What are main disadvantages of current solutions to play MLV files?
- One have to convert MLV to DNG, which is time consuming
- One can utilize mlvrawviewer/mlvfs/mlv_dump, but these methods are quite complicated and slow
- Full raw image processing pipeline on CPU is slow, even at MLVP and MLV App
- Smooth playback is mostly limited by insufficient debayer performance (Amaze demosaicing algorithm on CPU is good, but not fast)
- One can utilize Davinci Resolve for debayering on GPU, but it can't work with MLV directly
- Long time to prepare video (ProRes/MP4) out of MLV/RAW
Fast CinemaDNG Processor can work with Magic Lantern raw video files natively, without MLVFS or any other software. On NVIDIA GPU we can work with MLV very fast due to parallel approach to all stages of raw processing. To load MLV file, just click with right button on the file at Windows Explorer and run Fast CinemaDNG software via context menu or you can drag-n-drop MLV file to player/viewer window. Smooth MLV playback is achieved due to realtime image processing on GPU. To get high quality 3D LUTs for grading, there is interoperability with 3DLUT Creator software. Various options for output video encoding are available at Fast CinemaDNG Processor due to external FFmpeg.
What we can do for fast MLV processing on GPU
- MLV file import, parsing, decoding for single MLV and audio, including spanned files support (multi-file option)
- Focus pixels removal
- MLV viewer and MLV player with full processing pipeline on GPU
- Wavelet-based denoising
- MLV post processing with DCP and LCP profiles
- Realtime MLV grading with 3D LUT
- Smooth video output to the monitor
- Export MLV to DNG (uncompressed DNG or CDNG, lossless JPEG compression, lossy BMD RAW 3:1, 4:1 and 5:1)
- MLV converter: MLV to TIFF/JPG/EXR export, MLV to MP4 with external FFmpeg
- Export of processed video from MLV (mlv to movie)
To summarize, one can emphasize the most important features of Fast CinemaDNG Processor software for realtime MLV video processing on GPU: native support of MLV file format, fast MLV decoding on CPU, high quality debayering, realtime denoising, DCP and LCP profiles support, 3D LUT (RGB and HSV), smooth MLV playback for 4K, export options (MLV to cDNG), etc.
Instead of conventional MLV workflow, where we need to convert MLV to DNG sequence, then to create proxies for further processing and color grading, now we can do all these things at the same pipeline, because we don't need neither DNG nor proxies for MLV processing, everything could be done on GPU in realtime, starting from RAW MLV to final color corrected video.
Useful third-party software for better MLV processing
One can download and install that third-party software, then set correct path (dialog Options) and interoperability with FFmpeg and 3DLUT Creator will be established.
P.S. To read MLV files we utilize mlv_structure.h which is under LGPL 2.1.