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

◆ wave8_transpose_8()

FASTLED_FORCE_INLINE FL_IRAM FL_OPTIMIZE_FUNCTION void fl::detail::wave8_transpose_8 ( const Wave8Byte lane_waves[8],
u8 output[8 *sizeof(Wave8Byte)] )

Transpose 8 lanes of Wave8Byte data into interleaved format.

Parameters
lane_wavesArray of 8 Wave8Byte structures
outputOutput buffer (64 bytes)

Spread-LUT transpose (#2533): ~1.90× faster than the unrolled naive on the ESP32-P4 (RV32) — 3356→1764 us/frame, bit-exact. See bit_spread_lut.hpp.

Definition at line 205 of file wave8.hpp.

206 {
207 for (int symbol_idx = 0; symbol_idx < 8; symbol_idx++) {
208 u8 l[8];
209 for (int lane = 0; lane < 8; lane++) {
210 l[lane] = lane_waves[lane].symbols[symbol_idx].data;
211 }
212 spread_transpose8_symbol(l, output + symbol_idx * 8);
213 }
214}
FASTLED_FORCE_INLINE FL_IRAM FL_OPTIMIZE_FUNCTION void spread_transpose8_symbol(const u8 l[8], u8 out[8])
Transpose one symbol of 8 lanes (8 input bytes) into 8 output bytes: 8 pulses × 1 byte (bit L = lane ...
unsigned char u8
Definition stdint.h:131

References spread_transpose8_symbol().

Referenced by fl::wave8Transpose_8(), and fl::wave8Transpose_8().

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