FastLED 3.10.8
Loading...
Searching...
No Matches

◆ wave8Transpose_16_bf1()

FL_OPTIMIZE_FUNCTION FL_IRAM void fl::wave8Transpose_16_bf1 ( const u8(&) lanes[16],
const Wave8ByteExpansionLut & lut,
u8(&) output[16 *sizeof(Wave8Byte)] )

BF1: chipset-aware direct encode for 16-lane Wave8 (#2548 deep-dive).

Bypasses the byte_lut. Uses the algebraic identity output_bit(s, p, lane) = M0_p XOR (input_bit_(7-s) AND D_p) where W0/W1 are the bit-0/bit-1 waveform patterns extracted from the lut. Bit-identical to wave8Transpose_16 for ANY Wave8 chipset. The bit-transpose of input bytes is computed ONCE (not 8× per symbol). Measured 9 651 → 4 465 µs/frame (2.16×) vs baseline on P4 v1.3.

Definition at line 161 of file wave8.cpp.hpp.

163 {
164 // Extract W0/W1 chipset constants from the lut.
165 // byte_lut[0x00].symbols[0] = waveform for input bit 7 == 0 = W0
166 // byte_lut[0xFF].symbols[0] = waveform for input bit 7 == 1 = W1
167 const u8 W0 = lut.lut[0x00].symbols[0].data;
168 const u8 W1 = lut.lut[0xFF].symbols[0].data;
169 detail::wave8_transpose_16_bf1(lanes, W0, W1, output);
170}
FL_IRAM FL_OPTIMIZE_FUNCTION void wave8_transpose_16_bf1(const u8 lanes[16], u8 W0, u8 W1, u8 output[16 *sizeof(Wave8Byte)]) FL_NO_EXCEPT
unsigned char u8
Definition stdint.h:131
@ W1
White is second.
Definition eorder.h:28
@ W0
White is first.
Definition eorder.h:29

References FL_NO_EXCEPT, FL_RESTRICT_PARAM, W0, W1, and fl::detail::wave8_transpose_16_bf1().

+ Here is the call graph for this function: