xyz2rgb Video Filter
The xyz2rgb filter is an ffmpeg Video filter that converts from XYZ to RGB Rec 709 color space. It can be used to transform the colors of JPEG2000 image files in a DCP.
You may want to right-click and select download
The zip file contains 3 files
- vf_xyz2rgb.c source code of the filter
- allfilters.c modified to include xyz2rgb
- Makefile modified to include xyz2rgb
The xyz2rgb filter has no parameters and converts pixel by pixel from XYZ to sRGB. It does this by 4 steps
- convert from XYZ to XYZlinear (gamma 2.6)
- convert from XYZlinear to RGBlinear (colormatrix)
- limit values
- convert from RGBlinear to RGB Rec 709 (gamma 2.2222)
The color matrix used is
r = 3.2404542 * x - 1.5371385 * y - 0.4985314 * z g = - 0.9692660 * x + 1.8760108 * y + 0.0415560 * z b = 0.0556434 * x - 0.2040259 * y + 1.0572252 * z
The calculation is done in 12bit integer precision. The filter accepts 8bit and 16bit input.
The gamma values are precalculated to speed up the transformation
You can find theoretical documentation on the transformation here
The xyz2rgb Video Filter is released as LGPL. ffmpeg is a great tool so I am proud to add my little contribution on it. It took about 30 hours to code and check xyz2rgb.