⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mp3dec_layer3_int.c

📁 这是在PCA下的基于IPP库示例代码例子,在网上下了IPP的库之后,设置相关参数就可以编译该代码.
💻 C
📖 第 1 页 / 共 5 页
字号:
    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 + -