FastLED 3.10.6
Loading...
Searching...
No Matches

◆ wave3_transpose_4()

void fl::detail::wave3_transpose_4 ( const Wave3Byte lane_waves[4],
u8 output[4 *sizeof(Wave3Byte)] )

Transpose 4 lanes of Wave3Byte data.

Definition at line 55 of file wave3.cpp.hpp.

56 {
57 for (int symbol_idx = 0; symbol_idx < 3; symbol_idx++) {
58 u8 l0 = lane_waves[0].data[symbol_idx];
59 u8 l1 = lane_waves[1].data[symbol_idx];
60 u8 l2 = lane_waves[2].data[symbol_idx];
61 u8 l3 = lane_waves[3].data[symbol_idx];
62
63 output[symbol_idx * 4 + 0] =
64 ((l3 >> 7) & 1) << 7 |
65 ((l2 >> 7) & 1) << 6 |
66 ((l1 >> 7) & 1) << 5 |
67 ((l0 >> 7) & 1) << 4 |
68 ((l3 >> 6) & 1) << 3 |
69 ((l2 >> 6) & 1) << 2 |
70 ((l1 >> 6) & 1) << 1 |
71 ((l0 >> 6) & 1);
72
73 output[symbol_idx * 4 + 1] =
74 ((l3 >> 5) & 1) << 7 |
75 ((l2 >> 5) & 1) << 6 |
76 ((l1 >> 5) & 1) << 5 |
77 ((l0 >> 5) & 1) << 4 |
78 ((l3 >> 4) & 1) << 3 |
79 ((l2 >> 4) & 1) << 2 |
80 ((l1 >> 4) & 1) << 1 |
81 ((l0 >> 4) & 1);
82
83 output[symbol_idx * 4 + 2] =
84 ((l3 >> 3) & 1) << 7 |
85 ((l2 >> 3) & 1) << 6 |
86 ((l1 >> 3) & 1) << 5 |
87 ((l0 >> 3) & 1) << 4 |
88 ((l3 >> 2) & 1) << 3 |
89 ((l2 >> 2) & 1) << 2 |
90 ((l1 >> 2) & 1) << 1 |
91 ((l0 >> 2) & 1);
92
93 output[symbol_idx * 4 + 3] =
94 ((l3 >> 1) & 1) << 7 |
95 ((l2 >> 1) & 1) << 6 |
96 ((l1 >> 1) & 1) << 5 |
97 ((l0 >> 1) & 1) << 4 |
98 ((l3 >> 0) & 1) << 3 |
99 ((l2 >> 0) & 1) << 2 |
100 ((l1 >> 0) & 1) << 1 |
101 ((l0 >> 0) & 1);
102 }
103}
unsigned char u8
Definition stdint.h:131
u8 data[3]
Definition wave3.h:21

References fl::Wave3Byte::data, and fl::FL_NO_EXCEPT.

Referenced by fl::wave3Transpose_4().

+ Here is the caller graph for this function: