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

◆ WinPrevious()

static void fl::third_party::WinPrevious ( int32_t * xPrev,
int32_t * xPrevWin,
int32_t btPrev )
static

Definition at line 141 of file imdct.hpp.

142{
143 int32_t i;
144 int32_t x, *xp, *xpwLo, *xpwHi, wLo, wHi;
145 const int32_t *wpLo, *wpHi;
146
147 xp = xPrev;
148 /* mapping (see IMDCT12x3): xPrev[0-2] = sum[6-8], xPrev[3-8] = sum[12-17] */
149 if (btPrev == 2) {
150 /* this could be reordered for minimum loads/stores */
151 wpLo = imdctWin[btPrev];
152 xPrevWin[ 0] = MULSHIFT32(wpLo[ 6], xPrev[2]) + MULSHIFT32(wpLo[0], xPrev[6]);
153 xPrevWin[ 1] = MULSHIFT32(wpLo[ 7], xPrev[1]) + MULSHIFT32(wpLo[1], xPrev[7]);
154 xPrevWin[ 2] = MULSHIFT32(wpLo[ 8], xPrev[0]) + MULSHIFT32(wpLo[2], xPrev[8]);
155 xPrevWin[ 3] = MULSHIFT32(wpLo[ 9], xPrev[0]) + MULSHIFT32(wpLo[3], xPrev[8]);
156 xPrevWin[ 4] = MULSHIFT32(wpLo[10], xPrev[1]) + MULSHIFT32(wpLo[4], xPrev[7]);
157 xPrevWin[ 5] = MULSHIFT32(wpLo[11], xPrev[2]) + MULSHIFT32(wpLo[5], xPrev[6]);
158 xPrevWin[ 6] = MULSHIFT32(wpLo[ 6], xPrev[5]);
159 xPrevWin[ 7] = MULSHIFT32(wpLo[ 7], xPrev[4]);
160 xPrevWin[ 8] = MULSHIFT32(wpLo[ 8], xPrev[3]);
161 xPrevWin[ 9] = MULSHIFT32(wpLo[ 9], xPrev[3]);
162 xPrevWin[10] = MULSHIFT32(wpLo[10], xPrev[4]);
163 xPrevWin[11] = MULSHIFT32(wpLo[11], xPrev[5]);
164 xPrevWin[12] = xPrevWin[13] = xPrevWin[14] = xPrevWin[15] = xPrevWin[16] = xPrevWin[17] = 0;
165 } else {
166 /* use ARM-style pointers (*ptr++) so that ADS compiles well */
167 wpLo = imdctWin[btPrev] + 18;
168 wpHi = wpLo + 17;
169 xpwLo = xPrevWin;
170 xpwHi = xPrevWin + 17;
171 for (i = 9; i > 0; i--) {
172 x = *xp++; wLo = *wpLo++; wHi = *wpHi--;
173 *xpwLo++ = MULSHIFT32(wLo, x);
174 *xpwHi-- = MULSHIFT32(wHi, x);
175 }
176 }
177}
__inline int32_t MULSHIFT32(int32_t x, int32_t y) FL_NOEXCEPT
Multiply together two 32-bit numbers and return the top 32-bits of the result.
Definition assembly.h:503
const int32_t imdctWin[4][36]
Definition trigtabs.hpp:107
fl::i32 int32_t
Definition coder.h:220

References FL_NOEXCEPT, imdctWin, MULSHIFT32(), and fl::x.

Referenced by HybridTransform(), IMDCT12x3(), and IMDCT36().

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