I've been using DemoIccMAX to generate test values for my own implementation of colour conversion using ICC profiles. The last time I generated test data was 25 October 2024, and my results matched to many decimal places.
I've just updated the DemoIccMAX code and half of my tests are now failing.
In particular, profiles using TRC matrix conversions (such as sRGB v2 and D65 XYZ) are half the value they used to be for perceptual and absolute rendering intents.
e.g. sRGB v2: [1, 1, 1] to PCS, after applying XYZ scaling to the PCS values (in IccUtil.cpp), used to equal [0.964279, 0.999969, 0.825089], now equals [0.482147, 0.499992, 0.412551]
Elsewhere, the results of many values using Fogra39, Swop2006, and many others - across all rendering intents and in both directions - are also noticeably different, though not to the above extent, but enough for me to consider my conversion now inaccurate and in need of fixing.
Can you share details on what has changed to the calculations? Should conversion values have changed since October?
In case my process of generating data is wrong, I've been using IccEval.cpp as a reference, roughly...
CIccCmm profileApplier
profileApplier.AddXform(profile, intent, icInterpLinear, nullptr, icXformLutColorimetric, false)
profileApplier.Begin()
profileApplier.Apply(dstPixel, srcPixel)
I've been using DemoIccMAX to generate test values for my own implementation of colour conversion using ICC profiles. The last time I generated test data was 25 October 2024, and my results matched to many decimal places.
I've just updated the DemoIccMAX code and half of my tests are now failing.
In particular, profiles using TRC matrix conversions (such as sRGB v2 and D65 XYZ) are half the value they used to be for perceptual and absolute rendering intents.
e.g. sRGB v2: [1, 1, 1] to PCS, after applying XYZ scaling to the PCS values (in
IccUtil.cpp), used to equal [0.964279, 0.999969, 0.825089], now equals [0.482147, 0.499992, 0.412551]Elsewhere, the results of many values using Fogra39, Swop2006, and many others - across all rendering intents and in both directions - are also noticeably different, though not to the above extent, but enough for me to consider my conversion now inaccurate and in need of fixing.
Can you share details on what has changed to the calculations? Should conversion values have changed since October?
In case my process of generating data is wrong, I've been using
IccEval.cppas a reference, roughly...