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

◆ processPixelQ16()

void fl::processPixelQ16 ( const StreamingPipelineQ16 & pipeline,
u8 r,
u8 g,
u8 b,
i32(&) drives[3] )

One pixel: an RGB8 code triple to three physical emitter drives in s16.16.

Drives always come back inside [0, 1]. No allocation, no state carried between calls, no RGB8 intermediate.

Definition at line 296 of file pipeline.cpp.hpp.

297 {
298 processPixelLinearQ16(pipeline, r, g, b, drives);
299 // C4's single amplitude stage scales linear light. Physical response
300 // inversion follows it; dimming compensated drive codes would skew hue.
301 applyFluxScalar(pipeline.flux, span<i32>(drives, 3));
302 if (pipeline.response) {
303 drives[0] = inverseResponseQ16(drives[0], pipeline.response->red);
304 drives[1] = inverseResponseQ16(drives[1], pipeline.response->green);
305 drives[2] = inverseResponseQ16(drives[2], pipeline.response->blue);
306 }
307}
void applyFluxScalar(FluxScalar scalar, span< i32 > drives) FL_NO_EXCEPT
Scale every drive by one scalar, in place.
void processPixelLinearQ16(const StreamingPipelineQ16 &pipeline, u8 r, u8 g, u8 b, i32(&drives)[3]) FL_NO_EXCEPT
Pre-response linear emitter light for a power prepass.
InputGamut g
Definition rgbw.h:124
shared_ptr< const ResponseLutsQ16 > response
Absent means linear code-to-light response.
Definition pipeline.h:102
FluxScalar flux
Brightness times power limiting, as one scalar (C4).
Definition pipeline.h:98

References applyFluxScalar(), FL_NO_EXCEPT, fl::StreamingPipelineQ16::flux, g, processPixelLinearQ16(), and fl::StreamingPipelineQ16::response.

Referenced by fl::ColorManagedPixelSource::loadAndScaleRGB(), and fl::ColorManagedPixelSource::loadAndScaleRGB16().

+ Here is the call graph for this function:
+ Here is the caller graph for this function: