|
FastLED 3.10.6
|
| bool fl::buildRgbSolveMatrixFromQ16 | ( | const EmitterChromaticitiesQ16 & | profile, |
| EmitterSolveMatrixQ16 * | out ) |
Build the inverse emitter matrix from a Q16 profile, without floats.
The float-free counterpart of buildRgbSolveMatrixQ16, and the second half of P9 item 2: that one converts float chromaticities through xyY_to_XYZ and invert3x3 before quantising, so a target that never wants a float symbol cannot use it.
ci/color_fixed_profile_study.py prices what this costs against the float derivation: worst 0.1085 dE2000 on BT.2020, against A1's 0.5 and the ~0.35 the derivation has once the gamut mapper's 0.15 is counted.
False on the same profiles buildRgbSolveMatrixQ16 refuses – a non-positive or degenerate chromaticity, a non-positive luminance, or a matrix the inverse cannot represent – with one addition the float path has no equivalent of: a y small enough to quantise to zero, which would otherwise be divided by.
Definition at line 265 of file device_solve.cpp.hpp.
References FL_NO_EXCEPT, and invert3x3Q16().
Referenced by buildRgbSolveMatrixQ16().
Here is the call graph for this function:
Here is the caller graph for this function: