FastLED 3.9.15
Loading...
Searching...
No Matches

◆ wave3_transpose_16()

FASTLED_FORCE_INLINE FL_IRAM FL_OPTIMIZE_FUNCTION void fl::detail::wave3_transpose_16 ( const Wave3Byte lane_waves[16],
u8 output[16 *sizeof(Wave3Byte)] )

Transpose 16 lanes of Wave3Byte data into interleaved format.

Parameters
lane_wavesArray of 16 Wave3Byte structures
outputOutput buffer (48 bytes = 16 * 3)

Spread-LUT transpose (#2533): ~1.9× faster than the unrolled naive on the ESP32-P4 (RV32), bit-exact. See bit_spread_lut.hpp. Each 16-lane sample is 2 output bytes: low = lanes 0-7, high = lanes 8-15. (wave3 = 3 symbols.)

Definition at line 170 of file wave3.hpp.

171 {
172 for (int symbol_idx = 0; symbol_idx < 3; symbol_idx++) {
173 u8 l[16];
174 for (int lane = 0; lane < 16; lane++) {
175 l[lane] = lane_waves[lane].data[symbol_idx];
176 }
177 spread_transpose16_symbol(l, output + symbol_idx * 16);
178 }
179}
FASTLED_FORCE_INLINE FL_IRAM FL_OPTIMIZE_FUNCTION void spread_transpose16_symbol(const u8 l[16], u8 out[16])
Transpose one symbol of 16 lanes (16 input bytes) into 16 output bytes: 8 pulses × 2 bytes,...
unsigned char u8
Definition stdint.h:131
u8 data[3]
Definition wave3.h:21

References fl::Wave3Byte::data, and spread_transpose16_symbol().

Referenced by fl::wave3Transpose_16().

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