FastLED 3.10.6
Loading...
Searching...
No Matches

◆ adaptXyzQ16()

void fl::adaptXyzQ16 ( const AdaptationMatrixQ16 & matrix,
const i32(&) xyz[3],
i32(&) out_xyz[3] )

Adapt one XYZ triple.

Public because it is the only way to exercise adaptation on its own. foldAdaptationIntoSourceMatrix cannot carry it: that folds into a source matrix and never exposes an adapted XYZ, so there is no existing seam this could route through. The tracker asks P5's vectors to be "serialized per stage so embedded phases can bisect failures", and bisecting a stage requires being able to run that stage alone – P7 and P8 will need this when their own budgets miss. The streaming path uses the fold.

Definition at line 143 of file chromatic_adaptation.cpp.hpp.

144 {
145 const i32 in[3] = {xyz[0], xyz[1], xyz[2]};
146 out_xyz[0] = dotAdaptationRowQ16(matrix.m[0], in);
147 out_xyz[1] = dotAdaptationRowQ16(matrix.m[1], in);
148 out_xyz[2] = dotAdaptationRowQ16(matrix.m[2], in);
149}

References FL_NO_EXCEPT, and fl::AdaptationMatrixQ16::m.

Referenced by fl::anonymous_namespace{pipeline.cpp.hpp}::buildWidePipelineQ16().

+ Here is the caller graph for this function: