87 for (k = nBfly; k > 0; k--) {
91 a0 =
x[-1]; c0 = *c; c++; b0 =
x[0]; c1 = *c; c++;
95 a0 =
x[-2]; c0 = *c; c++; b0 =
x[1]; c1 = *c; c++;
99 a0 =
x[-3]; c0 = *c; c++; b0 =
x[2]; c1 = *c; c++;
103 a0 =
x[-4]; c0 = *c; c++; b0 =
x[3]; c1 = *c; c++;
107 a0 =
x[-5]; c0 = *c; c++; b0 =
x[4]; c1 = *c; c++;
111 a0 =
x[-6]; c0 = *c; c++; b0 =
x[5]; c1 = *c; c++;
115 a0 =
x[-7]; c0 = *c; c++; b0 =
x[6]; c1 = *c; c++;
119 a0 =
x[-8]; c0 = *c; c++; b0 =
x[7]; c1 = *c; c++;
144 int32_t x, *xp, *xpwLo, *xpwHi, wLo, wHi;
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;
170 xpwHi = xPrevWin + 17;
171 for (i = 9; i > 0; i--) {
172 x = *xp++; wLo = *wpLo++; wHi = *wpHi--;
199 int32_t y0, y1, y2, y3, y4, y5, y6, y7, y8;
203 if (blockIdx & 0x01) {
230 if (blockIdx & 0x01) {
232 for (i = 0; i < 18; i+=2) {
233 d = *
y;
CLIP_2N(d, 31 - es); *
y =
static_cast<int>(
static_cast<unsigned int>(d) << es); mOut |=
FASTABS(*
y);
y +=
NBANDS;
234 d = -*
y;
CLIP_2N(d, 31 - es); *
y =
static_cast<int>(
static_cast<unsigned int>(d) << es); mOut |=
FASTABS(*
y);
y +=
NBANDS;
235 d = *xPrev;
CLIP_2N(d, 31 - es); *xPrev++ =
static_cast<int>(
static_cast<unsigned int>(d) << es);
238 for (i = 0; i < 18; i+=2) {
239 d = *
y;
CLIP_2N(d, 31 - es); *
y =
static_cast<int>(
static_cast<unsigned int>(d) << es); mOut |=
FASTABS(*
y);
y +=
NBANDS;
240 d = *
y;
CLIP_2N(d, 31 - es); *
y =
static_cast<int>(
static_cast<unsigned int>(d) << es); mOut |=
FASTABS(*
y);
y +=
NBANDS;
241 d = *xPrev;
CLIP_2N(d, 31 - es); *xPrev++ =
static_cast<int>(
static_cast<unsigned int>(d) << es);
268 static_cast<int32_t>(0x7f834ed0U),
static_cast<int32_t>(0x7ba3751dU),
static_cast<int32_t>(0x7401e4c1U),
static_cast<int32_t>(0x68d9f964U),
static_cast<int32_t>(0x5a82799aU),
static_cast<int32_t>(0x496af3e2U),
static_cast<int32_t>(0x36185aeeU), 0x2120fb83, 0x0b27eb5c,
274 int32_t a1, a2, a3, a4, a5, a6, a7, a8, a9;
275 int32_t a10, a11, a12, a13, a14, a15, a16, a17, a18;
276 int32_t a19, a20, a21, a22, a23, a24, a25, a26, a27;
277 int32_t m1, m3, m5, m6, m7, m8, m9, m10, m11, m12;
278 int32_t x0, x1, x2, x3, x4, x5, x6, x7, x8;
280 x0 =
x[0]; x1 =
x[1]; x2 =
x[2]; x3 =
x[3]; x4 =
x[4];
281 x5 =
x[5]; x6 =
x[6]; x7 =
x[7]; x8 =
x[8];
308 a12 =
x[0] + (
x[6] >> 1);
309 a13 = a12 + ( m1 * 2L);
310 a14 = a12 - ( m1 * 2L);
311 a15 = a1 + ( a11 >> 1);
312 a16 = ( m5 * 2L) + (m6 * 2L);
313 a17 = ( m7 * 2L) - (m8 * 2L);
315 a19 = ( m9 * 2L) + (m10 * 2L);
316 a20 = (m11 * 2L) - (m12 * 2L);
326 x0 = a22 + a19;
x[0] = x0;
327 x1 = a15 + (m3 * 2L);
x[1] = x1;
328 x2 = a24 + a20;
x[2] = x2;
329 x3 = a26 - a21;
x[3] = x3;
330 x4 = a1 - a11;
x[4] = x4;
331 x5 = a27 + a21;
x[5] = x5;
332 x6 = a25 - a20;
x[6] = x6;
333 x7 = a15 - (m3 * 2L);
x[7] = x7;
334 x8 = a23 - a19;
x[8] = x8;
343 static_cast<int32_t>(0x42aace8bU),
static_cast<int32_t>(0xc2e92724U),
static_cast<int32_t>(0x47311c28U),
static_cast<int32_t>(0xc95f619aU),
static_cast<int32_t>(0x4a868febU),
static_cast<int32_t>(0xd0859d8cU),
344 static_cast<int32_t>(0x4c913b51U),
static_cast<int32_t>(0xd8243ea0U),
static_cast<int32_t>(0x4d413cccU),
static_cast<int32_t>(0xe0000000U),
static_cast<int32_t>(0x4c913b51U),
static_cast<int32_t>(0xe7dbc161U),
345 static_cast<int32_t>(0x4a868febU),
static_cast<int32_t>(0xef7a6275U),
static_cast<int32_t>(0x47311c28U),
static_cast<int32_t>(0xf6a09e67U),
static_cast<int32_t>(0x42aace8bU),
static_cast<int32_t>(0xfd16d8ddU),
384 int32_t xBuf[18], xPrevWin[18];
386 int32_t xo, xe, c, *xp, yLo, yHi;
396 for (i = 8; i >= 0; i--) {
397 acc1 = ((*xCurr--) >> es) - acc1;
399 acc1 = ((*xCurr--) >> es) - acc1;
407 for (i = 8; i >= 0; i--) {
408 acc1 = (*xCurr--) - acc1;
410 acc1 = (*xCurr--) - acc1;
426 if (btPrev == 0 && btCurr == 0) {
429 for (i = 0; i < 9; i++) {
431 c = *cp--; xo = *(xp + 9); xe = *xp--;
438 (*xPrev++) = xe + xo;
455 for (i = 0; i < 9; i++) {
456 c = *cp--; xo = *(xp + 9); xe = *xp--;
462 (*xPrev++) = xe + xo;
464 yLo = (xPrevWin[i] +
MULSHIFT32(d, wp[i])) * 4L;
465 yHi = (xPrevWin[17-i] +
MULSHIFT32(d, wp[17-i])) * 4L;
488 int32_t x0, x1, x2, x3, x4, x5;
490 x0 = *
x;
x+=3; x1 = *
x;
x+=3;
491 x2 = *
x;
x+=3; x3 = *
x;
x+=3;
492 x4 = *
x;
x+=3; x5 = *
x;
x+=3;
521 *out = x0 + x1; out++;
522 *out = x2 + x3; out++;
523 *out = x4 + x5; out++;
524 *out = x4 - x5; out++;
525 *out = x2 - x3; out++;
554 int32_t yLo, xBuf[18], xPrevWin[18];
561 for (i = 0; i < 18; i+=2) {
583 for (i = 0; i < 3; i++) {
584 yLo = (xPrevWin[ 0+i] * 4L);
586 yLo = (xPrevWin[ 3+i] * 4L);
588 yLo = (xPrevWin[ 6+i] * 4L) + (
MULSHIFT32(wp[0+i], xBuf[3+i]));
590 yLo = (xPrevWin[ 9+i] * 4L) + (
MULSHIFT32(wp[3+i], xBuf[5-i]));
592 yLo = (xPrevWin[12+i] * 4L) + (
MULSHIFT32(wp[6+i], xBuf[2-i]) +
MULSHIFT32(wp[0+i], xBuf[(6+3)+i]));
594 yLo = (xPrevWin[15+i] * 4L) + (
MULSHIFT32(wp[9+i], xBuf[0+i]) +
MULSHIFT32(wp[3+i], xBuf[(6+5)-i]));
599 for (i = 6; i < 9; i++)
600 *xPrev++ = xBuf[i] >> 2;
601 for (i = 12; i < 18; i++)
602 *xPrev++ = xBuf[i] >> 2;
637 int32_t currWinIdx, prevWinIdx;
638 int32_t i, j, nBlocksOut, nonZero, mOut;
648 for(i = 0; i < bc->nBlocksLong; i++) {
650 currWinIdx = sis->blockType;
651 if (sis->mixedBlock && i < bc->currWinSwitch)
654 prevWinIdx = bc->prevType;
655 if (i < bc->prevWinSwitch)
659 mOut |=
IMDCT36(xCurr, xPrev, &(
y[0][i]), currWinIdx, prevWinIdx, i, bc->gbIn);
665 for ( ; i < bc->nBlocksTotal; i++) {
666 ASSERT(sis->blockType == 2);
668 prevWinIdx = bc->prevType;
669 if (i < bc->prevWinSwitch)
672 mOut |=
IMDCT12x3(xCurr, xPrev, &(
y[0][i]), prevWinIdx, i, bc->gbIn);
679 for ( ; i < bc->nBlocksPrev; i++) {
680 prevWinIdx = bc->prevType;
681 if (i < bc->prevWinSwitch)
688 for (j = 0; j < 9; j++) {
689 xp = xPrevWin[2*j+0] * 4L;
695 xp = xPrevWin[2*j+1] * 4L;
696 xp = (xp ^ sign_bit) + (i & 0x01);
709 for ( ; i < 32; i++) {
710 for (j = 0; j < 18; j++)
714 bc->gbOut =
CLZ(mOut) - 1;
746 if (!mp3DecInfo || !mp3DecInfo->FrameHeaderPS || !mp3DecInfo->SideInfoPS ||
747 !mp3DecInfo->HuffmanInfoPS || !mp3DecInfo->IMDCTInfoPS)
752 si = (
SideInfo *)(mp3DecInfo->SideInfoPS);
754 mi = (
IMDCTInfo *)(mp3DecInfo->IMDCTInfoPS);
struct _MP3DecInfo MP3DecInfo
static int32_t FreqInvertRescale(int32_t *y, int32_t *xPrev, int32_t blockIdx, int32_t es) FL_NOEXCEPT
struct fl::third_party::_IMDCTInfo IMDCTInfo
static const int32_t c9_2
__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.
static const int32_t c9_4
struct fl::third_party::_HuffmanInfo HuffmanInfo
__inline int32_t FASTABS(int32_t x) FL_NOEXCEPT
Absolute value of x.
static void WinPrevious(int32_t *xPrev, int32_t *xPrevWin, int32_t btPrev) FL_NOEXCEPT
const int32_t imdctWin[4][36]
struct fl::third_party::_FrameHeader FrameHeader
static int32_t HybridTransform(int32_t *xCurr, int32_t *xPrev, int32_t y[BLOCK_SIZE][NBANDS], SideInfoSub *sis, BlockCount *bc) FL_NOEXCEPT
static const int32_t c9_1
struct fl::third_party::_SideInfo SideInfo
struct fl::third_party::_BlockCount BlockCount
static __inline void idct9(int32_t *x) FL_NOEXCEPT
int IMDCT(MP3DecInfo *mp3DecInfo, int gr, int ch) FL_NOEXCEPT
static int32_t IMDCT12x3(int32_t *xCurr, int32_t *xPrev, int32_t *y, int32_t btPrev, int32_t blockIdx, int32_t gb) FL_NOEXCEPT
static const int32_t c9_0
static void AntiAlias(int32_t *x, int32_t nBfly) FL_NOEXCEPT
struct fl::third_party::_SideInfoSub SideInfoSub
__inline int32_t CLZ(int32_t x) FL_NOEXCEPT
Leading zeros.
static const int32_t c9_3
static __inline void imdct12(int32_t *x, int32_t *out) FL_NOEXCEPT
static const int32_t c18[9]
static int32_t IMDCT36(int32_t *xCurr, int32_t *xPrev, int32_t *y, int32_t btCurr, int32_t btPrev, int32_t blockIdx, int32_t gb) FL_NOEXCEPT
int32_t overBuf[MAX_NCHAN][MAX_NSAMP/2]
int32_t outBuf[MAX_NCHAN][BLOCK_SIZE][NBANDS]
int32_t prevType[MAX_NCHAN]
int32_t prevWinSwitch[MAX_NCHAN]
int32_t nonZeroBound[MAX_NCHAN]
int32_t huffDecBuf[MAX_NCHAN][MAX_NSAMP]
int32_t numPrevIMDCT[MAX_NCHAN]
const SFBandTable * sfBand
SideInfoSub sis[MAX_NGRAN][MAX_NCHAN]
Base definition for an LED controller.