📄 mp3dec_layer3_int.c
字号:
for(i = 0; i < 2; i++) { { Ipp32s i0 = (pDst[0+i]) << 1; Ipp32s i0P12 = (i0 + pDst[12+i]) >> _IMDCT32B_9P; Ipp32s s = pDst[8+i] + pDst[16+i] - pDst[4+i]; pSrc64[0+i*2] = (((Ipp64s)(i0 + pDst[12+i])) << 30) + MUL32_MP3_64S(pDst[ 4+i],c9_50) + MUL32_MP3_64S(pDst[ 8+i],c9_51) + MUL32_MP3_64S(pDst[16+i],c9_52); pSrc[1+i*9] = (i0 - s - pDst[12+i] - pDst[12+i]) >> _IMDCT32B_9P; pSrc[2+i*9] = i0P12 - MUL32_MP3_32S(pDst[ 4+i],c9_52) - MUL32_MP3_32S(pDst[ 8+i],c9_50) + MUL32_MP3_32S(pDst[16+i],c9_51); pSrc[3+i*9] = i0P12 - MUL32_MP3_32S(pDst[ 4+i],c9_51) + MUL32_MP3_32S(pDst[ 8+i],c9_52) - MUL32_MP3_32S(pDst[16+i],c9_50); if(0 == i) { pSrc[4+i*9] = (pDst[0+i] - pDst[12+i] + s) >> _IMDCT32B_9P; } else { pSrc[4+i*9] = MUL32_MP3_32S(pDst[0+i]- pDst[12+i] + s, const_0); } } { Ipp32s i6 = MUL32_MP3_32S(pDst[6+i],c9_43); pSrc64[1+i*2] = MUL32_MP3_64S(pDst[2+i],c9_40) + MUL32_MP3_64S(pDst[ 6+i],c9_43) + MUL32_MP3_64S(pDst[10+i],c9_41) + MUL32_MP3_64S(pDst[14+i],c9_42); pSrc[6+i*9] = MUL32_MP3_32S(pDst[2+i] - pDst[10+i] - pDst[14+i],c9_43); pSrc[7+i*9] = MUL32_MP3_32S(pDst[2+i],c9_41) - i6 - MUL32_MP3_32S(pDst[10+i],c9_42) + MUL32_MP3_32S(pDst[14+i],c9_40); pSrc[8+i*9] = MUL32_MP3_32S(pDst[2+i],c9_42) - i6 + MUL32_MP3_32S(pDst[10+i],c9_40) - MUL32_MP3_32S(pDst[14+i],c9_41); } } /* i loop */ } /* stage 2 */ /* output butterflies */ /* stage 3 */ { const Ipp32s* pWin = _pIMDCTWin[blockType == 3 ? 2: blockType]; Ipp32s o0, o1, e0, e1; Ipp32s mtmp, ptmp; Ipp64s mtmp64, ptmp64; ptmp64 = (pSrc64[0] + pSrc64[1]) + MUL32_MP3_64S((pSrc64[2] + pSrc64[3]) >> 30, _pIMDCT36CoeffStage3[0]); mtmp64 = (pSrc64[0] + pSrc64[1]) - MUL32_MP3_64S((pSrc64[2] + pSrc64[3]) >> 30, _pIMDCT36CoeffStage3[0]); pDst[26] = MUL32_MP3_32S(ptmp64>>30,pWin[26]); pDst[27] = MUL32_MP3_32S(ptmp64>>30,pWin[27]); pDst[8] = MUL32_MP3_32S(mtmp64>>28,pWin[8]); pDst[9] = MUL32_MP3_32S(mtmp64>>28,pWin[9]); ptmp64 = (pSrc64[0] - pSrc64[1]) + MUL32_MP3_64S((pSrc64[2] - pSrc64[3]) >> 28, _pIMDCT36CoeffStage3[1]); mtmp64 = (pSrc64[0] - pSrc64[1]) - MUL32_MP3_64S((pSrc64[2] - pSrc64[3]) >> 28, _pIMDCT36CoeffStage3[1]); pDst[18] = MUL32_MP3_32S(ptmp64>>30,pWin[18]); pDst[35] = MUL32_MP3_32S(ptmp64>>30,pWin[35]); pDst[0] = MUL32_MP3_32S(mtmp64>>30,pWin[0]); pDst[17] = MUL32_MP3_32S(mtmp64>>30,pWin[17]); for(i = 0; i < 3; i++) { o0 = MUL32_MP3_32S((pSrc[10+i] + pSrc[10+5+i])<<2,_pIMDCT36CoeffStage3[(i<<1)+2]); o1 = MUL32_MP3_32S((pSrc[10+i] - pSrc[10+5+i])<<2,_pIMDCT36CoeffStage3[(i<<1)+2+1]); e0 = (pSrc[i+1] + pSrc[i+1+5]); e1 = (pSrc[i+1] - pSrc[i+1+5]); ptmp = (e0+o0) << 2; mtmp = (e0-o0) << 2; pDst[25-i] = MUL32_MP3_32S(ptmp,pWin[25-i]); pDst[28+i] = MUL32_MP3_32S(ptmp,pWin[28+i]); pDst[ 7-i] = MUL32_MP3_32S(mtmp,pWin[ 7-i]); pDst[10+i] = MUL32_MP3_32S(mtmp,pWin[10+i]); ptmp = (e1+o1) << 2; mtmp = (e1-o1) << 2; pDst[19+i] = MUL32_MP3_32S(ptmp,pWin[19+i]); pDst[34-i] = MUL32_MP3_32S(ptmp,pWin[34-i]); pDst[ 1+i] = MUL32_MP3_32S(mtmp,pWin[ 1+i]); pDst[16-i] = MUL32_MP3_32S(mtmp,pWin[16-i]); } ptmp = (pSrc[4] + pSrc[9+4]) << 2; mtmp = (pSrc[4] - pSrc[9+4]) << 2; pDst[22] = MUL32_MP3_32S(ptmp,pWin[22]); pDst[31] = MUL32_MP3_32S(ptmp,pWin[31]); pDst[ 4] = MUL32_MP3_32S(mtmp,pWin[ 4]); pDst[13] = MUL32_MP3_32S(mtmp,pWin[13]); } /* output stage */ }} /* _sIMDCT_36_32s() *//*/////////////////////////////////////////////////////////////////////////////// Name:// _sIMDCT_12x3_32s//// Description:// Do 12 points IMDCT 3 times and windowing for short block.//// Input Arguments:// pSrc - Pointer to the input buffer to do IMDCT for short block.//// Output Arguments:// pDst - Pointer to the output buffer of IMDCT for short block.//// Returns:// ippStsNoErr - Success.// ippStsBadArgErr - Bad arguments.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -