FastLED 3.10.6
Loading...
Searching...
No Matches
pipeline.h File Reference
+ Include dependency graph for pipeline.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  fl::ResponseLutsQ16
 Owned code-to-light samples for the three physical emitters. More...
 
struct  fl::StreamingPipelineQ16
 Everything the per-pixel path needs, derived once when a profile binds. More...
 
struct  fl::WidePipelineQ16
 Allocated only for a bound four- or five-emitter profile. More...
 

Namespaces

namespace  fl
 Base definition for an LED controller.
 

Functions

bool fl::buildStreamingPipelineQ16 (const SourceProfile &source, const colorimetric_response::EmitterProfile &device, GamutPolicy policy, StreamingPipelineQ16 *out, const Chromaticity *target_white=nullptr) FL_NO_EXCEPT
 Bind a source declaration and a device profile into a pipeline.
 
i32 fl::encodeLinearEmitterQ16 (const StreamingPipelineQ16 &pipeline, u8 emitter, i32 light, FluxScalar flux) FL_NO_EXCEPT
 Scale one linear emitter and invert its physical response, using the identical final stage as processPixel[Wide]Q16.
 
void fl::processPixelLinearQ16 (const StreamingPipelineQ16 &pipeline, u8 r, u8 g, u8 b, i32(&light)[3]) FL_NO_EXCEPT
 Pre-response linear emitter light for a power prepass.
 
void fl::processPixelQ16 (const StreamingPipelineQ16 &pipeline, u8 r, u8 g, u8 b, i32(&drives)[3]) FL_NO_EXCEPT
 One pixel: an RGB8 code triple to three physical emitter drives in s16.16.
 
void fl::processPixelWideLinearQ16 (const StreamingPipelineQ16 &pipeline, u8 r, u8 g, u8 b, i32(&drives)[5]) FL_NO_EXCEPT
 
void fl::processPixelWideQ16 (const StreamingPipelineQ16 &pipeline, u8 r, u8 g, u8 b, i32(&drives)[5]) FL_NO_EXCEPT
 Like processPixelQ16, but solves the physical 4/5-emitter hull.
 
void fl::setPipelineFluxQ16 (StreamingPipelineQ16 *pipeline, FluxScalar flux) FL_NO_EXCEPT
 Set the composed brightness-and-power scalar for the frames that follow.
 

Class Documentation

◆ fl::ResponseLutsQ16

struct fl::ResponseLutsQ16
+ Collaboration diagram for fl::ResponseLutsQ16:
Class Members
vector< u16 > blue
vector< u16 > green
vector< u16 > red

◆ fl::StreamingPipelineQ16

struct fl::StreamingPipelineQ16
+ Collaboration diagram for fl::StreamingPipelineQ16:
Class Members
FluxScalar flux = FluxScalar::unity() Brightness times power limiting, as one scalar (C4).

Initialized here because FluxScalar has no default constructor – there is no sensible "unset" amplitude, and unity is what a pipeline that has never been told a brightness should do.

GamutMapQ16 gamut The device hull, its solve, and the lightness bound.
GamutPolicy gamut_policy = GamutPolicy::ChromaCompress What to do with a target the device cannot reproduce.

ChromaCompress is the default and the one the P7 study selected; Clamp is the caller saying they would rather have the cheap answer. The study measured what that costs: clipping drives into range lands about 20 dE2000 from the reference against a budget of 0.5, because no amount of clamping substitutes for the objective. It is offered because ColorProfileBinding offers it, not because it is close.

shared_ptr< const ResponseLutsQ16 > response Absent means linear code-to-light response.

With a table, the inverse is applied after flux and before the final wire quantization.

SourceMatrixQ16 source Source primaries to XYZ, with adaptation to D65 already folded in.
TransferFunction transfer The source's transfer function, applied per code.
shared_ptr< const WidePipelineQ16 > wide

◆ fl::WidePipelineQ16

struct fl::WidePipelineQ16
+ Collaboration diagram for fl::WidePipelineQ16:
Class Members
GamutMapRgbwQ16 rgbw
GamutMapRgbwwQ16 rgbww
EmitterTopology topology
vector< u16 > white1_response
vector< u16 > white2_response