Hi, I have been looking at some unexpected results coming from simple gamma profiles, as the ones you can generate via DisplayCAL synthetic profile tool. I found that the gamma curve is actually replaced by a piecewise linear segment + gamma curve using a parametric curve tag. I was wondering if there are any reasons for ColorSync to do that or if anything is wrong in my assertion of the situation. I saw that an earlier topic mentioned a similar issue in Aug 2019 ( https://lists.apple.com/archives/colorsync-users/2019/Aug/msg00005.html), but I'm not sure I understand how to reply to it directly so spinning this new thread. To inspect ColorSync transformations, I re-purposed an example Objective-C program converting image colour space from an older Apple Tech Note / Documentation and added some debug print to get the transform details of the ColorSync fragment. Some truncated output from a sRGB to AdobeRGB conversion (for demonstration purposes only), focusing on TRC handling. sRGB EOTF decoding part: "com.apple.cmm.ParamCurve3" = ( "2.4", "0.9478673", "0.0521327", "0.07739938", "0.04045", 0, 0 ); "com.apple.cmm.PureGammaOriginalTRC" = 0; AdobeRGB EOTF encoding part: "com.apple.cmm.ParamCurve3" = ( "0.4545455", 1, 0, 16, "0.006200788", 0, 0 ); "com.apple.cmm.PureGammaOriginalTRC" = 1; You can see the AdobeRGB 2.2 gamma is gone (notice the PureGammaOriginalTRC=1) and replaced with a piecewise curve. According to my tests, this happens for simple gamma curv tag as well as para tag with type 1. If I use a para tag of type 3 emulating a pure gamma, I can get ColorSync to respect the pure gamma. When I plug the numbers into a homebrew parametric curve implementation, it does match what is happening in ColorSync which lead me to believe this method of inspection is working. Any idea what is happening?
participants (1)
-
Rémi Achard