MCPcopy Create free account
hub / github.com/FastLED/FastLED / wave3Untranspose_2

Function wave3Untranspose_2

src/fl/channels/wave3.cpp.hpp:166–193  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

164// ============================================================================
165
166FL_OPTIMIZE_FUNCTION
167void wave3Untranspose_2(const u8 (&FL_RESTRICT_PARAM transposed)[2 * sizeof(Wave3Byte)],
168 u8 (&FL_RESTRICT_PARAM output)[2 * sizeof(Wave3Byte)]) {
169 Wave3Byte lane_waves[2];
170
171 for (int symbol_idx = 0; symbol_idx < 3; symbol_idx++) {
172 u16 interleaved = ((u16)transposed[symbol_idx * 2] << 8) |
173 transposed[symbol_idx * 2 + 1];
174
175 u8 lane0_bits = 0;
176 u8 lane1_bits = 0;
177
178 for (int bit = 0; bit < 8; bit++) {
179 if (interleaved & (1 << (bit * 2 + 1))) {
180 lane0_bits |= (1 << bit);
181 }
182 if (interleaved & (1 << (bit * 2))) {
183 lane1_bits |= (1 << bit);
184 }
185 }
186
187 lane_waves[0].data[symbol_idx] = lane0_bits;
188 lane_waves[1].data[symbol_idx] = lane1_bits;
189 }
190
191 fl::isr::memcpy(output, &lane_waves[0], sizeof(Wave3Byte));
192 fl::isr::memcpy(output + sizeof(Wave3Byte), &lane_waves[1], sizeof(Wave3Byte));
193}
194
195FL_OPTIMIZE_FUNCTION
196void wave3Untranspose_4(const u8 (&FL_RESTRICT_PARAM transposed)[4 * sizeof(Wave3Byte)],

Callers 1

FL_TEST_FILEFunction · 0.85

Calls 1

memcpyFunction · 0.50

Tested by

no test coverage detected