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

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

?? owng729fp.c

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

    if (phDispState - phdState->prevDispState > 1 && !phdState->onset) phDispState -= 1;

    if (phdState->onset) {
        if (phDispState < 2) phDispState++;
    }

    phdState->prevDispState=phDispState;
    phdState->prevCbGain = valCodebookGain;

    if (phDispState == 0) {
       pTable = ImpLow;
    } else if (phDispState == 1) {
       pTable = ImpMiddle;
    } else if (phDispState == 2) {
       pTable = ImpHigh;
    }

    for (nPulse=0; nPulse<numNonZeroElem; nPulse++) {
      lPos = pPos[nPulse];
      for (i=lPos; i<SUBFR_LEN; i++)
         pSrcDstInnovation[i] += pMemory[lPos] * pTable[i-lPos];
      for (i=0; i < lPos; i++)
         pSrcDstInnovation[i] += pMemory[lPos] * pTable[SUBFR_LEN-lPos+i];
    }

    ippsAdaptiveCodebookContribution_G729_32f(-valCodebookGain, pSrcDstInnovation, pScaledLTP, pDstFltExcSignal);

    return;
}

static void GlobalStationnarityAdaptation_G729E(G729FPEncoder_Obj* encoderObj, float valBackwardPredGain, float valForwardPredGain, int valLPCMode)
{
    short sTmp;
    /* First adaptation based on previous backward / forward decisions */
    if (valLPCMode == 1) { /* Backward stationnary mode */

        (encoderObj->sBWDStatInd)++;
        CLIP_TO_UPLEVEL(encoderObj->sBWDStatInd,21);
        if(encoderObj->sValBWDStatInd < 32517) encoderObj->sValBWDStatInd  += 250;
        else encoderObj->sValBWDStatInd = 32767;

        /* after 20 backward frames => increase stat */
        if (encoderObj->sBWDStatInd == 20) {
            if(encoderObj->sGlobalStatInd < 30267) encoderObj->sGlobalStatInd += 2500;
            else encoderObj->sGlobalStatInd = 32767;
        }
        else if (encoderObj->sBWDStatInd > 20) encoderObj->sGlobalStatInd += 500;

    }

    else if ((valLPCMode == 0)&&(encoderObj->prevLPCMode == 1)) { /* Backward -> Forward transition */

        /* Transition occurs after less than 20 backward frames => decrease stat */
        if (encoderObj->sBWDStatInd < 20) {
            sTmp = (short)(5000 - encoderObj->sValBWDStatInd);
            encoderObj->sGlobalStatInd = (short)(encoderObj->sGlobalStatInd-sTmp);
        }

        /* Reset consecutive backward frames counter */
        encoderObj->sBWDStatInd = 0;
        encoderObj->sValBWDStatInd = 0;

    }

    /* Second adaptation based on prediction gains */

    if (encoderObj->sGlobalStatInd < 13000) {

        if      (valBackwardPredGain > valForwardPredGain + TH4) encoderObj->sGlobalStatInd += 3200;
        else if (valBackwardPredGain > valForwardPredGain + TH3) encoderObj->sGlobalStatInd += 2400;
        else if (valBackwardPredGain > valForwardPredGain + TH2) encoderObj->sGlobalStatInd += 1600;
        else if (valBackwardPredGain > valForwardPredGain + TH1) encoderObj->sGlobalStatInd +=  800;
        else if (valBackwardPredGain > valForwardPredGain)       encoderObj->sGlobalStatInd +=  400;

    }

    if      (valBackwardPredGain < valForwardPredGain -  TH5) encoderObj->sGlobalStatInd -= 6400;
    else if (valBackwardPredGain < valForwardPredGain -  TH4) encoderObj->sGlobalStatInd -= 3200;
    else if (valBackwardPredGain < valForwardPredGain -  TH3) encoderObj->sGlobalStatInd -= 1600;
    else if (valBackwardPredGain < valForwardPredGain -  TH2) encoderObj->sGlobalStatInd -=  800;
    else if (valBackwardPredGain < valForwardPredGain -  TH1) encoderObj->sGlobalStatInd -=  400;

    CLIP_TO_UPLEVEL(encoderObj->sGlobalStatInd,32000);
    CLIP_TO_LOWLEVEL(encoderObj->sGlobalStatInd,0);
    return;
}

void SetLPCMode_G729FPE(G729FPEncoder_Obj* encoderObj, float *pSrcSignal, float *pSrcForwardLPCFilter,
                      float *pSrcBackwardLPCFilter, int *pDstLPCMode, float *pSrcLSP,float *pExtBuff)
{

    int     i;
    float  *pLPCFlt, *PPtr;
    float  fGap, forwardPredGain, backwardPredGain, intBackwardPredGain;
    float  LSPThreshold, LSPDist, fTmp;
    float ener_DB_pSrcSignal;

    PPtr = &pExtBuff[0]; /*FRM_LEN elements*/

    ener_DB_pSrcSignal = CalcEnergy_dB_G729(pSrcSignal, FRM_LEN);

    pLPCFlt = pSrcBackwardLPCFilter + BWD_LPC_ORDERP1;
    /* Calc backward filter prediction gain (without interpolation ) */
    ippsConvBiased_32f(pLPCFlt,BWD_LPC_ORDER+1,pSrcSignal,FRM_LEN+BWD_LPC_ORDER,PPtr,FRM_LEN,BWD_LPC_ORDER);
    backwardPredGain = ener_DB_pSrcSignal - CalcEnergy_dB_G729(PPtr, FRM_LEN);

    /* Interpolated backward filter for the first sub-frame       */
    InterpolatedBackwardFilter_G729(pSrcBackwardLPCFilter, encoderObj->PrevFlt, &encoderObj->fInterpolationCoeff);

    /* Calc interpolated backward filter prediction gain */
    ippsConvBiased_32f(pSrcBackwardLPCFilter,BWD_LPC_ORDER+1,pSrcSignal,SUBFR_LEN+BWD_LPC_ORDER,PPtr,SUBFR_LEN,BWD_LPC_ORDER);
    ippsConvBiased_32f(pLPCFlt,BWD_LPC_ORDER+1,&pSrcSignal[SUBFR_LEN],SUBFR_LEN+BWD_LPC_ORDER,&PPtr[SUBFR_LEN],SUBFR_LEN,BWD_LPC_ORDER);
    intBackwardPredGain = ener_DB_pSrcSignal - CalcEnergy_dB_G729(PPtr, FRM_LEN);

    /* Calc forward filter prediction gain */
    ippsConvBiased_32f(pSrcForwardLPCFilter,LPC_ORDER+1,pSrcSignal,SUBFR_LEN+LPC_ORDER,PPtr,SUBFR_LEN,LPC_ORDER);
    ippsConvBiased_32f(&pSrcForwardLPCFilter[LPC_ORDERP1],LPC_ORDER+1,&pSrcSignal[SUBFR_LEN],SUBFR_LEN+LPC_ORDER,&PPtr[SUBFR_LEN],SUBFR_LEN,LPC_ORDER);
    forwardPredGain = ener_DB_pSrcSignal - CalcEnergy_dB_G729(PPtr, FRM_LEN);

    /* Choose: backward/forward mode.*/
    /* 1st criterion with prediction gains. The global stationnarity index
         is used to adapt the threshold value " GAP ".*/

    /* Do the threshold adaptation according to the global stationnarity indicator */
    fGap = (float)(encoderObj->sGlobalStatInd) * GAP_FACT;
    fGap += 1.f;

    if ( (intBackwardPredGain > forwardPredGain - fGap)&& (backwardPredGain > forwardPredGain - fGap)&&
         (backwardPredGain > 0.f)               && (intBackwardPredGain > 0.f) ) *pDstLPCMode = 1;
    else *pDstLPCMode = 0;

    if (encoderObj->sGlobalStatInd < 13000) *pDstLPCMode = 0; /* => Forward mode imposed */

    /* 2nd criterion with a distance between 2 successive LSP vectors */
    /* Computation of the LPC distance */
    LSPDist = 0;
    for(i=0; i<LPC_ORDER; i++){
        fTmp = encoderObj->OldLSP[i] - pSrcLSP[i];
        LSPDist += fTmp * fTmp;
    }

    /* Adaptation of the LSPs thresholds */
    if (encoderObj->sGlobalStatInd < 32000) {
        LSPThreshold = 0.f;
    }
    else {
        LSPThreshold = 0.03f;
    }

    /* Switching backward -> forward forbidden in case of a LPC stationnary */
    if ((LSPDist < LSPThreshold) &&(*pDstLPCMode == 0)&&(encoderObj->prevLPCMode == 1)
         &&(backwardPredGain > 0.f)&&(intBackwardPredGain > 0.f)) {
        *pDstLPCMode = 1;
    }

    /* Low energy frame => Forward mode chosen */

    if (ener_DB_pSrcSignal < THRES_ENERGY) {
        *pDstLPCMode = 0;
        if (encoderObj->sGlobalStatInd > 13000) encoderObj->sGlobalStatInd = 13000;
    }
    else isBackwardModeDominant_G729(&encoderObj->isBWDDominant, *pDstLPCMode,&encoderObj->sBWDFrmCounter,&encoderObj->sFWDFrmCounter);

    /* Adaptation of the global stationnarity indicator */
    if (ener_DB_pSrcSignal >= THRES_ENERGY) GlobalStationnarityAdaptation_G729E(encoderObj,backwardPredGain, forwardPredGain, *pDstLPCMode);
    if(*pDstLPCMode == 0) encoderObj->fInterpolationCoeff = 1.1f;
    return;
}

static void NormalizedCorrelation(float *pSrcExc, float *pSrcTargetVector, float *pSrcImpulseResponse,
                                  int len, int lagMin, int lagMax, float *pDstCorr, float *pTmpFltPastExc)
{
   int    i, k;
   Ipp64f dEnergy, dTmp;

   k = -lagMin;

   ippsConvBiased_32f( &pSrcExc[k], len , pSrcImpulseResponse, len ,  pTmpFltPastExc, len ,0);

   /* loop for every possible period */
   for (i = lagMin; i < lagMax; i++) {
      /* Compute energie of pFltExc[] */
      ippsDotProd_32f64f(pTmpFltPastExc, pTmpFltPastExc, len, &dEnergy);

      /* Compute correlation between pSrcTargetVector[] and pFltExc[] */
      ippsDotProd_32f64f(pSrcTargetVector, pTmpFltPastExc, len, &dTmp);

      /* Normalize correlation = correlation * (1/sqrt(energie)) */
      pDstCorr[i] = (Ipp32f)(dTmp)/((Ipp32f)sqrt(dEnergy+0.01));

      /* modify the filtered excitation pFltExc[] for the next iteration */
      k--;
      ippsFilteredExcitation_G729_32f( pSrcImpulseResponse, pTmpFltPastExc, len, pSrcExc[k]);
   }

   /* Compute energie of pFltExc[] */
   ippsDotProd_32f64f(pTmpFltPastExc, pTmpFltPastExc, len, &dEnergy);

   /* Compute correlation between pSrcTargetVector[] and pFltExc[] */
   ippsDotProd_32f64f(pSrcTargetVector, pTmpFltPastExc, len, &dTmp);

   /* Normalize correlation = correlation * (1/sqrt(energie)) */
   pDstCorr[lagMax] = (Ipp32f)(dTmp)/((Ipp32f)sqrt(dEnergy+0.01));

   return;

}

static __ALIGN32 CONST float ReorderInter_3[2*3*INTERPOL4_LEN] = {
 0.015738f,-0.047624f, 0.084078f, 0.900839f,
 0.084078f,-0.047624f, 0.015738f, 0.000000f,
 0.000000f, 0.016285f,-0.105570f, 0.760084f,
 0.424082f,-0.121120f, 0.031217f,-0.005925f,
-0.005925f, 0.031217f,-0.121120f, 0.424082f,
 0.760084f,-0.105570f, 0.016285f, 0.000000f
};

static float Interpolation_3(float *pSrc, int lFrac)
{
   int i;
   float sum, *x1;
   const float *c;

   x1 = &pSrc[-(INTERPOL4_LEN-1)];
   if (lFrac < 0) {
      x1--;
      lFrac += UP_SAMPLING;
   }
   c = &ReorderInter_3[2*INTERPOL4_LEN*lFrac];

   sum = 0.0f;
   for(i=0; i< 2*INTERPOL4_LEN; i++)
      sum+= x1[i] * c[i];

   return sum;
}

int AdaptiveCodebookSearch_G729_32f(float *pSrcExc, float *pSrcTargetVector, float *pSrcImpulseResponse, int len,
                        int minLag, int maxLag, int valSubframeNum, int *pDstFracPitch, G729Codec_Type codecType,float *pExtBuff)
{
   int    i, lFracPart;
   int    lBestLag, lMin, lMax;
   float  max;
   float  fIntCorr;
   float  *pFltExc;     /* filtered past excitation */
   float  *pCorr;
   int midLag;

   pFltExc = &pExtBuff[0];

   /* Find interval to compute normalized correlation */
   lMin = minLag - INTERPOL4_LEN;
   lMax = maxLag + INTERPOL4_LEN;

   pCorr = &pExtBuff[SUBFR_LEN - lMin]; /*Actually (10+2*INTERPOL4_LEN) from [SUBFR_LEN]. pCorr[lMin:lMax]*/

   /* Compute normalized correlation between target and filtered excitation */
   NormalizedCorrelation(pSrcExc, pSrcTargetVector, pSrcImpulseResponse, len, lMin, lMax, pCorr,pFltExc);

   /* find integer pitch */
   max = pCorr[minLag];
   lBestLag  = minLag;

   for(i= minLag+1; i<=maxLag; i++) {
      if( pCorr[i] >= max) {
         max = pCorr[i];
         lBestLag = i;
      }
   }

   /* If first subframe and lBestLag > 84 do not search fractionnal pitch */

   if( (valSubframeNum == 0) && (lBestLag > 84) ) {
      *pDstFracPitch = 0;
      return(lBestLag);
   }

   /* test the fractions around lBestLag and choose the one which maximizes the interpolated normalized correlation */

   if (codecType == G729D_CODEC) {    /* 6.4 kbps */
      if (valSubframeNum == 0) {
         max  = Interpolation_3(&pCorr[lBestLag], -2);
         lFracPart = -2;

         for (i = -1; i <= 2; i++) {
            fIntCorr = Interpolation_3(&pCorr[lBestLag], i);
            if(fIntCorr > max) {
               max = fIntCorr;
               lFracPart = i;
            }
         }
      } else {
         midLag = maxLag - 4;
         if ((lBestLag == midLag - 1) || lBestLag == midLag) {
            max  = Interpolation_3(&pCorr[lBestLag], -2);
            lFracPart = -2;

            for (i = -1; i <= 2; i++) {
               fIntCorr = Interpolation_3(&pCorr[lBestLag], i);
               if(fIntCorr > max) {
                  max = fIntCorr;
                  lFracPart = i;
               }
            }
         } else if (lBestLag == midLag - 2) {
            max  = Interpolation_3(&pCorr[lBestLag], 0);
            lFracPart = 0;

            for (i = 1; i <= 2; i++) {
               fIntCorr = Interpolation_3(&pCorr[lBestLag], i);
               if(fIntCorr > max) {
                  max = fIntCorr;
                  lFracPart = i;
               }
            }
         } else if (lBestLag == midLag + 1) {
            max  = Interpolation_3(&pCorr[lBestLag], -2);
            lFracPart = -2;

            for (i = -1; i <= 0; i++) {
               fIntCorr = Interpolation_3(&pCorr[lBestLag], i);
               if(fIntCorr > max) {
                  max = fIntCorr;
                  lFracPart = i;
               }
            }
         } else
            lFracPart = 0;
      }
   } else {
      max  = Interpolation_3(&pCorr[lBestLag], -2);
      lFracPart = -2;

      for (i = -1; i <= 2; i++) {
         fIntCorr = Interpolation_3(&pCorr[lBestLag], i);
         if(fIntCorr > max) {
            max = fIntCorr;
            lFracPart = i;
         }
      }
   }

   /* limit the fraction value in the interval [-1,0,1] */

   if (lFracPart == -2) {
      lFracPart = 1;
      lBestLag -= 1;
   }
   if (lFracPart == 2) {
      lFracPart = -1;
      lBestLag += 1;
   }

   *pDstFracPitch = lFracPart;

   return lBestLag;
}

void CNGGetSize(Ipp32s *pDstSize)
{
   *pDstSize = sizeof(CNGmemory);
   return;
}

void CNGInit(char *cngMem)
{
   CNGmemory *cngState = (CNGmemory *)cngMem;
   ippsZero_16s((short*)cngState,sizeof(CNGmemory)>>1) ;

   ippsZero_32f(cngState->SumAutoCorrs,SUMAUTOCORRS_SIZE);
   ippsZero_32f(cngState->AutoCorrs,AUTOCORRS_SIZE);
   ippsZero_32f(cngState->Energies,GAINS_NUM);

   cngState->fCurrGain = 0.;
   cngState->lAutoCorrsCounter = 0;
   cngState->lFltChangeFlag = 0;
}

static float gaussGen(short *sCNGSeed)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩一区欧美二区| 欧美大片国产精品| 国产制服丝袜一区| 欧美日本国产视频| 欧美特级限制片免费在线观看| 国产电影一区二区三区| 美女www一区二区| 久久国产精品无码网站| 久久av老司机精品网站导航| 日韩福利视频导航| 另类专区欧美蜜桃臀第一页| 捆绑调教美女网站视频一区| 麻豆精品在线播放| 国产精品69毛片高清亚洲| 蜜臀av性久久久久蜜臀av麻豆| 蜜臀av一区二区在线免费观看| 久久97超碰色| 成人免费视频视频在线观看免费| 丁香六月综合激情| 色综合亚洲欧洲| 欧美一区二区三区日韩视频| 日韩精品一区二| 欧美日本一区二区| 欧美日韩精品一区视频| 精品国免费一区二区三区| 久久久国际精品| 国产精品九色蝌蚪自拍| 亚洲一区电影777| 青青国产91久久久久久| 成人91在线观看| 欧美日本在线看| 国产人成亚洲第一网站在线播放| 国产精品久久777777| 亚洲高清免费观看高清完整版在线观看| 日日夜夜一区二区| 丁香天五香天堂综合| 欧美性猛交一区二区三区精品| 欧美一区二区美女| 国产精品电影一区二区三区| 天天色 色综合| 国产suv精品一区二区6| 欧美日韩情趣电影| 国产免费成人在线视频| 秋霞av亚洲一区二区三| 99久久精品免费观看| 在线播放欧美女士性生活| 国产欧美视频一区二区三区| 亚洲永久精品国产| 国产高清视频一区| 欧美精品xxxxbbbb| 亚洲精品中文在线| 国产一区二区中文字幕| 欧美日韩综合不卡| 中文字幕在线免费不卡| 久久99这里只有精品| 欧美喷水一区二区| 亚洲欧美日韩中文字幕一区二区三区| 美女看a上一区| 欧美二区三区91| 亚洲成人一二三| 91免费看视频| 亚洲国产成人在线| 国产成人综合精品三级| 日韩一区二区三| 日韩国产精品久久| 欧美日韩不卡一区| 一区二区三区在线视频观看58| 国产电影精品久久禁18| 久久久噜噜噜久噜久久综合| 免费观看久久久4p| 56国语精品自产拍在线观看| 亚洲一区免费在线观看| 在线免费一区三区| 伊人婷婷欧美激情| 色综合激情久久| 亚洲女爱视频在线| 99久久婷婷国产综合精品| 国产精品久久久爽爽爽麻豆色哟哟| 国模一区二区三区白浆| 日韩午夜激情av| 老司机精品视频线观看86| 精品免费国产二区三区| 精品在线观看免费| 久久综合久色欧美综合狠狠| 狠狠色综合日日| 欧美电影免费提供在线观看| 日本人妖一区二区| 欧美精品第1页| 久久精品国产亚洲一区二区三区 | 亚洲国产日韩精品| 欧美视频一区二区三区在线观看 | 欧美激情一二三区| 国产91丝袜在线18| 亚洲乱码中文字幕| 欧美三级电影精品| 久久不见久久见中文字幕免费| 精品日韩欧美在线| 成人激情校园春色| 亚洲综合av网| 日韩一区二区电影| 成人在线综合网| 亚洲视频资源在线| 欧美一区二区免费观在线| 国产又粗又猛又爽又黄91精品| 欧美国产一区视频在线观看| 99久久精品国产麻豆演员表| 天天综合色天天综合| 久久免费精品国产久精品久久久久| 国产91精品一区二区麻豆网站| 亚洲欧美视频在线观看视频| 欧美另类高清zo欧美| 懂色av一区二区三区免费观看| 亚洲特级片在线| 日韩欧美国产1| 成人av网在线| 日本亚洲最大的色成网站www| 国产欧美一区二区精品婷婷| 欧美在线观看18| 国产乱色国产精品免费视频| 一区二区三区在线视频观看58 | 自拍av一区二区三区| 69堂成人精品免费视频| 北条麻妃国产九九精品视频| 日韩精品一二区| 亚洲欧美日韩综合aⅴ视频| 精品国精品自拍自在线| 欧美日韩精品电影| av电影一区二区| 青青草国产精品97视觉盛宴| 欧美激情一区二区三区不卡| 91精品综合久久久久久| 国产成人无遮挡在线视频| 日本人妖一区二区| 一区二区三区影院| 国产精品久久精品日日| 久久综合久久久久88| 91麻豆精品国产91久久久资源速度 | 欧洲日韩一区二区三区| 国产精品亚洲第一| 精品一区二区三区av| 日韩精品一卡二卡三卡四卡无卡| 亚洲三级电影网站| 中文字幕国产一区| 国产欧美精品一区二区色综合| 欧美成人a∨高清免费观看| 欧美性高清videossexo| 91污在线观看| 99re6这里只有精品视频在线观看| 国产精品一区二区果冻传媒| 美女国产一区二区| 久久精品国产**网站演员| 午夜精品免费在线观看| 亚洲午夜影视影院在线观看| 亚洲专区一二三| 亚洲最色的网站| 亚洲一区二区三区四区在线观看| 1024亚洲合集| 欧美国产日韩a欧美在线观看 | 亚洲精品国产一区二区精华液| 亚洲少妇最新在线视频| 一区二区三区中文字幕| 亚洲成av人片一区二区梦乃| 亚洲va欧美va国产va天堂影院| 亚洲高清在线视频| 奇米888四色在线精品| 久久机这里只有精品| 国产剧情一区二区| av一二三不卡影片| 日本道免费精品一区二区三区| 欧美艳星brazzers| 91精品国产美女浴室洗澡无遮挡| 欧美成人艳星乳罩| 亚洲国产激情av| 一二三区精品福利视频| 秋霞国产午夜精品免费视频 | 国产精品久久久久一区二区三区共| 中文一区在线播放| 亚洲日本在线观看| 天天av天天翘天天综合网色鬼国产 | 欧美日韩另类国产亚洲欧美一级| 欧美一级久久久| 国产精品美女久久久久aⅴ | 色琪琪一区二区三区亚洲区| 欧美亚洲另类激情小说| 国产成人av网站| 欧美主播一区二区三区美女| 欧美一卡2卡三卡4卡5免费| 国产日本亚洲高清| 日韩二区在线观看| 成人三级伦理片| 精品国产第一区二区三区观看体验| 亚洲精品国产品国语在线app| 精品无人码麻豆乱码1区2区 | 国产精品每日更新在线播放网址| 亚洲精品国产成人久久av盗摄 | 天天操天天色综合| 欧美日韩国产一区| 欧美一区二区三区在线电影 | 日本伊人色综合网| 亚洲一区成人在线|