亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? owng723.c

?? G.711,G.723.1,G.726,G.729,GSM CODEC C/C++ code
?? C
?? 第 1 頁 / 共 5 頁
字號:

            /* Write positions */
            for ( i = 0 ; i < 4 ; i ++ ) {
                pBitStream = Parm2Bits( Params->sPosition[i], pBitStream, 12 ) ;
            }
            /* Write Pamps */
            for ( i = 0 ; i < 4 ; i ++ ) {
                pBitStream = Parm2Bits( Params->sAmplitude[i], pBitStream, 4 ) ;
            }
            for ( i = 0 ; i < 160 ; i ++ )
               pDstBitStream[i>>3] ^= Bits[i] << (i & 0x7) ;
       }
       LOCAL_ARRAY_FREE(short, Bits,192,encoderObj);
       return;
    }

    LOCAL_ARRAY_FREE(short, Bits,192,encoderObj);
    return;
}

void   UpdateSineDetector(short *SineWaveDetector, short *isNotSineWave)
{
   int i, x, lNumTimes;

   *SineWaveDetector &= 0x7fff ;
   *isNotSineWave = 1;

   x= *SineWaveDetector;
   lNumTimes = 0;
   for ( i = 0 ; i < 15 ; i ++ ) {
       lNumTimes += x&1;
       x >>= 1;
   }
   if ( lNumTimes >= 14 ) /* Sine wave is detected*/
       *isNotSineWave = -1;
}
/*Usage GenPostFiltTable(Tbl, 0.65); GenPostFiltTable(Tbl+10, 0.75); */
#define SATURATE_fs(dVal,dRez)\
   if (dVal >= 0.0) dVal += 0.5;\
   else  dVal -= 0.5;\
   dRez = (short)dVal;

static void GenPostFiltTable(short *Tbl, double dInit)
{
   double dFac,dTmp;
   int i;
   dFac = dInit;
   for(i=0;i<10;i++) {
      dTmp = dFac*32768.f;
      SATURATE_fs(dTmp,Tbl[i]);
      dFac = dFac*dInit;
   }
}
static __ALIGN32 CONST short   PostFiltTable[2*G723_LPC_ORDER] = {
   21299 ,  13844,8999,5849,3802,2471,1606,1044, 679, 441 , /* Zero part */
   24576,18432,13824,10368,7776,5832,4374,3281,2460,1845 , /* Pole part */
};
void  PostFilter(G723Decoder_Obj* decoderObj, short *pSrcDstSignal, short *pSrcLPC )
{
   int   i, lTmp, lSignalEnergy, lSfs;
   short sTmp;

   LOCAL_ARRAY(short, FltCoef,2*G723_LPC_ORDER, decoderObj);
   LOCAL_ARRAY(int, pFltSignal,G723_LPC_ORDER+G723_SBFR_LEN, decoderObj);
   LOCAL_ARRAY(int, pAutoCorr,2, decoderObj);
   LOCAL_ARRAY(short, pTmpVec,G723_SBFR_LEN, decoderObj);

   /* Normalize the input speech vector.  */
   lSfs=3;
   ippsAutoScale_16s(pSrcDstSignal,  pTmpVec, (short) G723_SBFR_LEN, &lSfs ) ;

   /* Compute the first two autocorrelation coefficients*/
   ippsDotProd_16s32s_Sfs(pTmpVec,pTmpVec,G723_SBFR_LEN,pAutoCorr,0);
   ippsDotProd_16s32s_Sfs(pTmpVec,pTmpVec+1,G723_SBFR_LEN-1,pAutoCorr+1,0);
   /* Compute new reflection coefficient.*/
   sTmp = pAutoCorr[0]>>15;
   if ( sTmp ) {
      sTmp = (pAutoCorr[1]>>1)/(sTmp);
   }

   /* Compute interpolated reflection coefficient use the new and previouse one.*/
   lTmp =  ((decoderObj->ReflectionCoeff << 2) - decoderObj->ReflectionCoeff + sTmp);
   decoderObj->ReflectionCoeff = (lTmp+0x2)>>2;

   sTmp  = (decoderObj->ReflectionCoeff * SmoothCoeff)>>15;
   sTmp &= 0xfffc ;

   /* Compute FIR and IIR coefficients. Note the table can be generated using the GenPostFiltTable function */
   ippsMul_NR_16s_Sfs(pSrcLPC,PostFiltTable,FltCoef,G723_LPC_ORDER,15);
   ippsMul_NR_16s_Sfs(pSrcLPC,PostFiltTable+G723_LPC_ORDER,FltCoef+G723_LPC_ORDER,G723_LPC_ORDER,15);

   /* 32s output needs for compensate filter */
   for(i=0; i<G723_LPC_ORDER; i++){
      pFltSignal[i] = decoderObj->PostFilterMem[G723_LPC_ORDER+i]<<16;
   }
   ippsIIR16s_G723_16s32s(FltCoef,pSrcDstSignal,&pFltSignal[G723_LPC_ORDER],decoderObj->PostFilterMem);

   /* perform the tilt fitering. */
   ippsTiltCompensation_G723_32s16s(sTmp, &pFltSignal[G723_LPC_ORDER-1], pSrcDstSignal);

   /* Gain scaling.  Section 3.9 */
   /* Compute normalized signal energy.*/
   sTmp = (short)(2*lSfs + 3);
   if (sTmp < 0) {
      lSignalEnergy = ShiftL_32s(pAutoCorr[0],(unsigned short)(-sTmp));
   } else {
      lSignalEnergy = pAutoCorr[0]>>sTmp;
   }
   ippsGainControl_G723_16s_I(lSignalEnergy,pSrcDstSignal,&decoderObj->PstFltGain);

   LOCAL_ARRAY_FREE(short, pTmpVec,G723_SBFR_LEN, decoderObj);
   LOCAL_ARRAY_FREE(int, pAutoCorr,2, decoderObj);
   LOCAL_ARRAY_FREE(int, pFltSignal,G723_LPC_ORDER+G723_SBFR_LEN, decoderObj);
   LOCAL_ARRAY_FREE(short, FltCoef,2*G723_LPC_ORDER, decoderObj);

   return;
}

void  LSPInterpolation(const short *pSrcLSP, const short *pSrcPrevLSP, short *pDstLPC)
{

    pDstLPC[0] = 4096;
    ippsInterpolateC_NR_G729_16s_Sfs(pSrcLSP,4096,pSrcPrevLSP,12288,&pDstLPC[1],G723_LPC_ORDER,14);
    ippsLSFToLPC_G723_16s(&pDstLPC[1], &pDstLPC[1]);

    pDstLPC[G723_LPC_ORDERP1] = 4096;
    ippsInterpolateC_NR_G729_16s_Sfs(pSrcLSP,8192,pSrcPrevLSP,8192,&pDstLPC[1+G723_LPC_ORDERP1],G723_LPC_ORDER,14);
    ippsLSFToLPC_G723_16s(&pDstLPC[1+G723_LPC_ORDERP1], &pDstLPC[1+G723_LPC_ORDERP1]);

    pDstLPC[2*G723_LPC_ORDERP1] = 4096;
    ippsInterpolateC_NR_G729_16s_Sfs(pSrcLSP,12288,pSrcPrevLSP,4096,&pDstLPC[1+2*G723_LPC_ORDERP1],G723_LPC_ORDER,14);
    ippsLSFToLPC_G723_16s(&pDstLPC[1+2*G723_LPC_ORDERP1], &pDstLPC[1+2*G723_LPC_ORDERP1]);

    pDstLPC[3*G723_LPC_ORDERP1] = 4096;
    ippsCopy_16s(pSrcLSP,&pDstLPC[1+3*G723_LPC_ORDERP1],G723_LPC_ORDER);
    ippsLSFToLPC_G723_16s(&pDstLPC[1+3*G723_LPC_ORDERP1], &pDstLPC[1+3*G723_LPC_ORDERP1]);

    return;
}

static void GetAverScaleTable(short *pTbl)
{
   int i;
   double dTmp, dAlphaW=2.70375;
   dTmp = 32768.f/((double)G723_HALFFRM_LEN);
   SATURATE_fs(dTmp,pTbl[0]);
   for(i=1;i<4;i++) {
      dTmp = 32768.f*dAlphaW*dAlphaW/((double)i*(double)G723_FRM_LEN);
      SATURATE_fs(dTmp,pTbl[i]);
   }
   return;
}

static __ALIGN32 CONST short AverScaleTbl_G723[4] = {273, 998,
                              499, 333}; /*This table can be generateg using GetAverScaleTable function.*/
static __ALIGN32 CONST int LogEnerLevel[3] = {2048, 18432, 231233};
static __ALIGN32 CONST short FirstCode[3] = {0, 32, 96};

void QuantSIDGain_G723_16s(const Ipp16s *pSrc, const Ipp16s *pSrcSfs, int len, int *pIndx)
{
   short sTmp, sNseg, sNsegP1;
   short j, m, k, expBase;
   int lTmp1, lTmp2, lTmp3;
   short sfs;
   int i;

   if(len == 0) {
      /* Quantize energy  */
      sTmp = (*pSrcSfs)<<1;
      sTmp = 16 - sTmp;
      lTmp1 = MulC_32s(AverScaleTbl_G723[0], (*pSrc)<<sTmp);
   } else {
      /* Compute weighted average sum*/
      sfs = pSrcSfs[0];
      for(i=1; i<len; i++) {
         if(pSrcSfs[i] < sfs) sfs = pSrcSfs[i];
      }
      for(i=0, lTmp1=0; i<len; i++) {
         sTmp = pSrcSfs[i] - sfs;
         sTmp = pSrc[i]>>sTmp;
         sTmp = ((AverScaleTbl_G723[len]*sTmp)+0x4000)>>15;
         lTmp1 += sTmp;
      }
      sTmp = 15 - sfs;
      if(sTmp < 0) lTmp1 >>= (-sTmp);
      else         lTmp1 <<= sTmp;
   }

   *pIndx = 63;
   if(lTmp1 < LogEnerLevel[2]) {

      /* Compute segment number */
      if(lTmp1 >= LogEnerLevel[1]) {
         expBase = 4; sNseg = 2;
      } else {
         expBase  = 3;
         sNseg=(lTmp1 >= LogEnerLevel[0])?1:0;
      }

      sNsegP1 = sNseg + 1;
      j = 1<<expBase;
      k = j>>1;

      /* Binary search */
      for(i=0; i<expBase; i++) {
         sTmp = FirstCode[sNseg] + (j<<sNsegP1);
         lTmp2 = 2*sTmp * sTmp;
         if(lTmp1 >= lTmp2) j += k;
         else j -= k;
         k >>= 1;
      }

      sTmp = FirstCode[sNseg] + (j<<sNsegP1);
      lTmp2 = 2* sTmp * sTmp - lTmp1;
      if(lTmp2 <= 0) {
         m    = j + 1;
         sTmp  = FirstCode[sNseg] + (m<<sNsegP1);
         lTmp3 = lTmp1 - 2 * sTmp * sTmp;
         if(lTmp2 > lTmp3) sTmp = (sNseg<<4) + j;
         else sTmp = (sNseg<<4)+m;
      } else {
         m    = j - 1;
         sTmp  = FirstCode[sNseg] + (m<<sNsegP1);
         lTmp3 = lTmp1 - 2 * sTmp * sTmp;
         if(lTmp2 < lTmp3) sTmp = (sNseg<<4) + j;
         else sTmp = (sNseg<<4) + m;
      }
      *pIndx = sTmp;
   }
   return;
}

void DecodeSIDGain_G723_16s (int pIndx, Ipp16s *pGain)
{
   short i, sNseg;
   short sTmp;

   sNseg = pIndx>>4;
   if(sNseg == 3) sNseg = 2;
   i = pIndx - (sNseg<<4);
   sTmp = sNseg + 1;
   sTmp = i<<sTmp;
   sTmp += FirstCode[sNseg];  /* SidGain */
   sTmp <<= 5; /* << 5 */
   *pGain = sTmp;

   return;
}

void FixedCodebookGain_G723_16s(const Ipp16s *pSrc1, const Ipp16s *pSrc2,
                                Ipp16s *pGainCoeff, int *pGainIdx, short *pAlignTmp)
{
   short i;
   short sNormCorr, sNormEnergy, sCorrSFS, sEnergySFS, sBestQntGain, sCurrGain;
   int lCorr, lEnergy;
   short sCurrDist, sMinDist;

   ippsRShiftC_16s (pSrc2, 3, pAlignTmp, G723_SBFR_LEN); /* to avoid overflow */

   ippsDotProd_16s32s_Sfs(pSrc1, pAlignTmp, G723_SBFR_LEN,&lCorr,0);

   sBestQntGain = 0;

   if(lCorr > 0) {
      sCorrSFS = Norm_32s_I(&lCorr);
      sNormCorr = lCorr>>17; /* Be sure sNormCorr < sNormEnergy */

      ippsDotProd_16s32s_Sfs(pAlignTmp,pAlignTmp,G723_SBFR_LEN, &lEnergy,0);

      sEnergySFS = Norm_32s_I(&lEnergy);
      sNormEnergy     = lEnergy>>16;

      sCurrGain = (sNormEnergy > 0)? (sNormCorr<<15)/sNormEnergy : IPP_MAX_16S;/* compute sCurrGain = sNormCorr/sNormEnergy */

      i = sCorrSFS - sEnergySFS + 5;          /* Denormalization of division */

      if(i < 0) sCurrGain = ShiftL_16s(sCurrGain, (unsigned short)(-i));
      else
         sCurrGain >>= i;

      sBestQntGain = 0;
      sMinDist = abs(sCurrGain + GainDBLvls[0]);
      for ( i =  1; i <N_GAINS ; i ++ ) {
         sCurrDist = abs(sCurrGain + GainDBLvls[i]);
         if ( sCurrDist< sMinDist) { sMinDist = sCurrDist; sBestQntGain = i; }
      }
   }
   *pGainCoeff = -GainDBLvls[sBestQntGain];
   *pGainIdx = sBestQntGain;
}

void ExcitationResidual_G723_16s(const Ipp16s *pSrc1, const Ipp16s *pSrc2,  Ipp16s *pSrcDst,G723Encoder_Obj *encoderObj)
{
   int i;

   LOCAL_ARRAY(int, lConv,G723_SBFR_LEN,encoderObj) ;
   LOCAL_ARRAY(short, sNormConv,G723_SBFR_LEN,encoderObj) ;

   ippsConvPartial_16s32s(pSrc1,pSrc2,lConv,G723_SBFR_LEN);
   for ( i = 0 ; i < G723_SBFR_LEN ; i ++ ) {
       sNormConv[i] = (-lConv[i] + 0x2000) >> 14;
   }
   ippsAdd_16s_I(sNormConv,pSrcDst,G723_SBFR_LEN);

   LOCAL_ARRAY_FREE(short, sNormConv,G723_SBFR_LEN,encoderObj) ;
   LOCAL_ARRAY_FREE(int, lConv,G723_SBFR_LEN,encoderObj) ;

}

#define COMBTBL_LINE_LEN (G723_SBFR_LEN/GRIDSIZE)
static __ALIGN32 CONST int CombTbl[N_PULSES*COMBTBL_LINE_LEN] =
{
   118755,  98280,  80730,  65780,  53130, 42504,  33649,  26334,  20349,  15504,

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久91精品国产一区二区精品 | 亚洲精品va在线观看| 自拍视频在线观看一区二区| 国产福利不卡视频| 中文字幕不卡在线| av高清不卡在线| 亚洲精选一二三| 欧美日韩高清一区二区| 亚洲成人精品一区| 国产精品网曝门| 91麻豆国产精品久久| 午夜不卡在线视频| 一本一道久久a久久精品| 一区二区三区资源| 欧美日韩一级片网站| 亚洲欧美另类小说视频| 欧美午夜精品免费| 日韩理论片中文av| 欧美日韩成人综合在线一区二区| 免费亚洲电影在线| 欧美亚洲国产怡红院影院| 精品一区二区三区影院在线午夜| 久久久91精品国产一区二区三区| 99精品视频免费在线观看| 亚洲国产精品久久人人爱蜜臀| 制服丝袜在线91| 蓝色福利精品导航| 久久精品夜色噜噜亚洲a∨| fc2成人免费人成在线观看播放| 亚洲精品高清视频在线观看| 精品国产免费一区二区三区四区 | 狠狠色丁香九九婷婷综合五月| 精品成人a区在线观看| 91网站黄www| 全部av―极品视觉盛宴亚洲| 中文字幕av一区二区三区高| 91精品免费在线观看| 91丨porny丨国产入口| 免费在线观看精品| 中文字幕一区免费在线观看| 欧美日韩一区二区三区不卡| 久久99久久精品欧美| 欧美熟乱第一页| 91亚洲大成网污www| 黑人精品欧美一区二区蜜桃| 一区二区不卡在线视频 午夜欧美不卡在| 国产一区亚洲一区| 五月婷婷激情综合| 欧美日韩国产高清一区二区 | 国产 欧美在线| 中文字幕一区av| 国产精品女同互慰在线看| 久久精品这里都是精品| 精品综合久久久久久8888| 欧美tk—视频vk| 九一久久久久久| 日韩一级片在线观看| 亚洲激情在线激情| 亚洲精品一区二区三区香蕉| 久久精工是国产品牌吗| 亚洲欧美视频一区| 一区二区三区久久| 午夜免费欧美电影| 成人av手机在线观看| 蜜桃av一区二区三区电影| 亚洲一二三级电影| 亚洲品质自拍视频| 中文字幕一区二区三中文字幕| 欧美r级在线观看| 成人动漫精品一区二区| 国产综合色精品一区二区三区| 丝袜a∨在线一区二区三区不卡| 亚洲资源在线观看| 亚洲欧美自拍偷拍| 中文av一区特黄| 欧美精三区欧美精三区| 欧美视频完全免费看| 国产在线精品一区二区| 欧美激情一二三区| 中文字幕乱码一区二区免费| 欧美三级乱人伦电影| 日本不卡一二三区黄网| 亚洲午夜久久久久久久久电影网| 欧美一区二区三区色| 欧美熟乱第一页| 久久久精品免费网站| 欧美乱妇20p| 欧美午夜视频网站| 色诱亚洲精品久久久久久| 国产成人在线电影| 国产一区91精品张津瑜| 国产一区二区剧情av在线| 久久国产福利国产秒拍| 亚洲国产一二三| 一区二区三区欧美亚洲| 亚洲国产aⅴ成人精品无吗| 欧美激情在线免费观看| 国产精品拍天天在线| 欧美国产精品中文字幕| 国产精品视频看| 国产精品青草久久| 亚洲精品视频在线| 亚洲国产精品天堂| 欧美a级理论片| 国产一区二区免费看| 亚洲欧美一区二区不卡| 亚洲成人福利片| 麻豆一区二区三区| 成人免费毛片嘿嘿连载视频| 99精品视频中文字幕| 91精品国产麻豆| 国产欧美一区二区三区在线老狼| 国产精品久久久一区麻豆最新章节| 亚洲日本va在线观看| 亚洲激情五月婷婷| 国产精品无遮挡| 国产高清不卡一区二区| 91香蕉国产在线观看软件| 欧美日韩卡一卡二| 久久综合狠狠综合久久激情 | 欧洲另类一二三四区| 成人精品小蝌蚪| 欧美www视频| 亚洲婷婷综合久久一本伊一区 | 3d成人动漫网站| 精品国产伦理网| 亚洲欧洲日本在线| 国产精品成人免费在线| 亚洲国产一区二区三区 | 中文字幕一区二区5566日韩| 久久99精品一区二区三区三区| 日韩欧美黄色影院| 26uuu色噜噜精品一区| 欧美日韩中文字幕一区二区| 日韩亚洲欧美成人一区| 精品国产污污免费网站入口| 免费看日韩a级影片| www.综合网.com| 91九色02白丝porn| 在线视频你懂得一区| 欧美哺乳videos| 综合电影一区二区三区| 久久66热re国产| 色屁屁一区二区| 精品国产乱码久久久久久浪潮| 久久色成人在线| 国产一区二区三区在线观看精品| 在线观看亚洲精品视频| 久久综合九色综合欧美就去吻| 亚洲免费电影在线| 国内精品视频666| 91免费看片在线观看| 一区二区激情视频| 成人av电影免费在线播放| 欧美一区二区三区免费视频| 国产精品午夜久久| 亚洲人妖av一区二区| 蜜桃av一区二区三区电影| 色噜噜狠狠一区二区三区果冻| 久久久精品日韩欧美| 老司机精品视频一区二区三区| 午夜精品在线视频一区| 国产一区高清在线| 精品国产一区二区三区忘忧草| 亚洲午夜在线电影| 91首页免费视频| 国产欧美一区二区精品性色 | 日韩一区二区免费高清| 亚洲美女视频一区| 成人av动漫网站| 亚洲国产精品成人综合| 五月天视频一区| 欧美日韩大陆在线| 日韩 欧美一区二区三区| 欧美系列日韩一区| 亚洲国产精品久久久男人的天堂 | av影院午夜一区| 久久综合国产精品| 99热国产精品| 一区二区三区色| 亚洲成人动漫在线观看| 国产999精品久久久久久绿帽| 1024成人网| 日本韩国欧美在线| 丝袜美腿一区二区三区| 91精品久久久久久久99蜜桃| 国产综合色精品一区二区三区| 亚洲国产电影在线观看| 在线91免费看| 精品一区二区三区欧美| 日韩亚洲国产中文字幕欧美| 欧美不卡在线视频| av不卡免费电影| 亚洲成人午夜电影| 中文字幕第一区第二区| 在线电影国产精品| 91日韩精品一区| 精品亚洲国产成人av制服丝袜| 一区二区三区在线视频免费观看| 26uuu精品一区二区在线观看|