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

◆ wave8_transpose_8_bf1()

FASTLED_FORCE_INLINE FL_IRAM FL_OPTIMIZE_FUNCTION void fl::detail::wave8_transpose_8_bf1 ( const u8 lanes[8],
u8 W0,
u8 W1,
u8 output[8 *sizeof(Wave8Byte)] )

BF1 for 8-lane Wave8 — same algebraic identity as 16-lane BF1.

Output: 8 symbols × 8 pulses × 1 byte = 64 bytes. Each pulse byte carries 8 lanes' bits at the corresponding pulse position. Uses spread_transpose8_symbol to compute the bit transpose in one call.

Definition at line 345 of file wave8.hpp.

347 {
348 u8 d_mask[8];
349 u8 m0_mask[8];
350 const u8 D_byte = W0 ^ W1;
351 for (int p = 0; p < 8; ++p) {
352 const int shift = 7 - p;
353 d_mask[p] = ((D_byte >> shift) & 1) ? 0xFFu : 0x00u;
354 m0_mask[p] = ((W0 >> shift) & 1) ? 0xFFu : 0x00u;
355 }
356 u8 cols[8];
357 spread_transpose8_symbol(lanes, cols);
358 for (int s = 0; s < 8; ++s) {
359 const u8 col = cols[s];
360 for (int p = 0; p < 8; ++p) {
361 output[s * 8 + p] = m0_mask[p] ^ (col & d_mask[p]);
362 }
363 }
364}
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
@ W1
White is second.
Definition eorder.h:26
@ W0
White is first.
Definition eorder.h:27

References spread_transpose8_symbol(), fl::W0, and fl::W1.

Referenced by fl::wave8Transpose_8_bf1().

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