552{
554 int32_t yLo, xBuf[18], xPrevWin[18];
556
557 es = 0;
558
559 if (gb < 7) {
560 es = 7 - gb;
561 for (i = 0; i < 18; i+=2) {
562 xCurr[i+0] >>= es;
563 xCurr[i+1] >>= es;
564 *xPrev++ >>= es;
565 }
566 xPrev -= 9;
567 }
568
569
573
574
576
577
578
579
580
582 mOut = 0;
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]));
596 }
597
598
599 for (i = 6; i < 9; i++)
600 *xPrev++ = xBuf[i] >> 2;
601 for (i = 12; i < 18; i++)
602 *xPrev++ = xBuf[i] >> 2;
603
604 xPrev -= 9;
606
607 return mOut;
608}
static int32_t FreqInvertRescale(int32_t *y, int32_t *xPrev, int32_t blockIdx, int32_t es) FL_NOEXCEPT
__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.
__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]
static __inline void imdct12(int32_t *x, int32_t *out) FL_NOEXCEPT