Fastvideo MXF Converter transcodes MXF files and streams that use JPEG2000 to MP4 (H.264/H.265) on NVIDIA GPUs, decoding and encoding entirely on the GPU. It runs in real time and fits into a larger video transcoding pipeline for broadcast and post-production workflows.
Detailed benchmark data. Measured results are published on our benchmark pages: all benchmarks.
Features of MXF Converter on CUDA
MXF decoding and encoding for grayscale and color images
Lossy (wavelet CDF 9/7) and lossless (wavelet CDF 5/3) image compression and decompression
Bit depth: 8-12 bits per channel (up to 24 bits per channel)
Color spaces: sRGB, Rec.709, Adobe RGB, ProPhoto RGB, DCI P3, XYZ, Linear
Number of decomposition levels from 1 to 7
Code-block size 16×16, 32×32 or 64×64
Option for arbitrary size of codeblock
Color sampling modes: 4:4:4, 4:2:2, 4:2:0
Image quality in the range of 1–100 (float value)
Modes of operation: Single image mode and Batch mode (multiple image streaming)
MXF input from HDD/RAID/SSD/CPU/GPU
Workflow for MXF converter on CPU and GPU:
MXF reading and frame extraction
Frame parsing
Tag Tree Decoding
Binary Decoding
Inverse Quantization
IDWT
Inverse Color Transform
Output formatting
Resize accoding to anticipated resolution
Encoding to destination format
Integration with OpenGL to ensure smooth playback during convertion
Options: zoom, rotation, etc.
MXF Converter is compatible with Windows-10 and Linux Ubuntu/CentOS
One can convert MXF files to different video or audio formats at the same time. Just choose output format from profile drop-down for each file respectively and then hit convert image button to finish all file conversions.
How to convert MXF files with FFmpeg?
Apart from our sample application from Fastvideo SDK which is intended for MXF encoding or decoding on GPU, we've also implemented a solution for FFmpeg to be able to convert and to transcode MXF (J2K) files or streams with FFmpeg.
In general, if we need to convert MXF files with FFmpeg, we have to create a codec which is capable of JPEG2000 decoding and to build FFmpeg with source codes of that codec. Most of users at the moment are doing JPEG2000 decoding at FFmpeg via OpenJPEG library, which is sofisticated, but very slow, because J2K algorithm is very complicated and CPU-based processing just can't give good performance even at multithreading, and this is vitally important for real-time applications.
Slow performance of FFmpeg with OpenJPEG was the reason why we've implemented FFmpeg J2K codec for MXF encoding or decoding on CUDA. That solution is fully based on our JPEG2000 codec from Fastvideo SDK and here you can see the benchmarks or J2K decoding on GPU.
Current version of our FFmpeg J2K codec (which is called jp2k_cuda) is working with MXF (J2K) files to accomplish J2K decoding or transcoding on GPU. We've implemented on CUDA just J2K decoding part, all the rest is done by FFmpeg.
This is quite conventional task to convert MXF with J2K-encoded stream to H.264 or HEVC (H.265) via FFmpeg with maximum possible performance. CPU-based solutions are based on libx264 (libx265) and OpenJPEG are increadibly slow, though GPU-based transcoding solutions (jp2k_cuda + nvenc or jp2k_cuda + hevc) could work faster than real time.
About the author
Fyodor Serzhenko, PhD, is the founder and CEO of Fastvideo. He earned his PhD at the Moscow Institute of Physics and Technology (MIPT) in 1993. Since 2009 he has led the development of Fastvideo’s GPU-accelerated image codecs and ISP modules, including the Fastvideo SDK. Connect on LinkedIn.
Why you can trust these results
Fastvideo has built GPU-accelerated image processing software since 2009. Our codecs comply with the standards they implement — JPEG (ITU-T T.81 / ISO IEC 10918) and JPEG2000 (ITU-T T.800 / ISO IEC 15444) — and our tools are open source on GitHub. Every performance figure we publish is reproducible: see our benchmark methodology, download the Fastvideo SDK benchmark report (PDF), and measure it on your own GPU.