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

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

?? decg729fp.c

?? G.711,G.723.1,G.726,G.729,GSM CODEC C/C++ code
?? C
?? 第 1 頁 / 共 4 頁
字號:
                  CodeGain = 0.;
               }
            } else {
               PitchGain = decoderObj->fPitchGain;
               CodeGain = decoderObj->fCodeGain;
            }
            ippsInterpolateC_G729_32f(&Excitation[NSbfr], PitchGain, ACELPCodeVec, CodeGain, &Excitation[NSbfr], SUBFR_LEN);

            if (rate == G729D_MODE) {
               PhaseDispersion_G729D(&Excitation[NSbfr], PhaseDispExc, decoderObj->fCodeGain, decoderObj->fPitchGain, ACELPCodeVec,decoderObj->phdMem,(char *)TmpAlignVec);
               ippsSynthesisFilter_G729_32f(pLPC, aqLen, PhaseDispExc, &pSynth[NSbfr], SUBFR_LEN, &decoderObj->SynFltMemory[BWD_LPC_ORDER-aqLen]);
            } else {
               ippsSynthesisFilter_G729_32f(pLPC, aqLen, &Excitation[NSbfr], &pSynth[NSbfr], SUBFR_LEN, &decoderObj->SynFltMemory[BWD_LPC_ORDER-aqLen]);

               /* Updates state machine for phase dispersion in
                6.4 kbps mode, if running at other rate */
               PhaseDispersionUpdate_G729D(decoderObj->fPitchGain, decoderObj->fCodeGain,decoderObj->phdMem);
            }

            ippsCopy_32f(&pSynth[NSbfr+SUBFR_LEN-BWD_LPC_ORDER], decoderObj->SynFltMemory, BWD_LPC_ORDER);
         } else {
            ippsInterpolateC_G729_32f(&Excitation[NSbfr], decoderObj->fPitchGain, ACELPCodeVec, decoderObj->fCodeGain, &Excitation[NSbfr], SUBFR_LEN);

            ippsSynthesisFilter_G729_32f(pLPC, LPC_ORDER, &Excitation[NSbfr], &flDst[NSbfr], SUBFR_LEN, decoderObj->SynFltMemory);
            for (i = 0; i < LPC_ORDER; i++)  decoderObj->SynFltMemory[i] =flDst[NSbfr+(SUBFR_LEN-LPC_ORDER)+i];
         }
         pLPC += aqLen+1;    /* interpolated LPC parameters for next subframe */
      }
   }

   if(bfi == 0) {
      double tmp;

      ippsDotProd_32f64f(Excitation, Excitation, FRM_LEN, &tmp);
      decoderObj->SID = (Ipp32f)tmp;
   }
   decoderObj->prevFrameType = FrameType;
   ippsCopy_32f(&decoderObj->OldExcitationBuffer[FRM_LEN], &decoderObj->OldExcitationBuffer[0], PITCH_LAG_MAX+INTERPOL_LEN);

   if(decoderObj->objPrm.codecType!=G729A_CODEC) {
      energy = CalcEnergy_dB_G729(pSynth, FRM_LEN);
      if (energy >= 40.) isBackwardModeDominant_G729(&isBWDDominant, LPCMode, &decoderObj->sBWDFrmCounter,&decoderObj->sFWDFrmCounter);

      decoderObj->lPrevBFI     = bfi;
      decoderObj->prevLPCMode    = LPCMode;
      decoderObj->lPrevVoicing = decoderObj->lVoicing;

      if (bfi != 0) decoderObj->fFEInterpolationCoeff = 1.;
      else {
         if (LPCMode == 0) decoderObj->fFEInterpolationCoeff = 0;
         else {
            if (isBWDDominant == 1) decoderObj->fFEInterpolationCoeff -= 0.1f;
            else decoderObj->fFEInterpolationCoeff -= 0.5f;
            if (decoderObj->fFEInterpolationCoeff < 0)  decoderObj->fFEInterpolationCoeff= 0;
         }
      }
   }
   if(decoderObj->objPrm.codecType!=G729A_CODEC) {
      /* Control adaptive parameters for postfiltering */
      if( LPCMode == 0) {
         pLPC = forwardLPC;
         pstLPCOrder = LPC_ORDER;
      } else {
         pLPC = backwardLPC;
         pstLPCOrder = BWD_LPC_ORDER;
      }
      post_filter_I(decoderObj, pSynth, pLPC, T2[0], ((parm2 == 1) && (isBWDDominant == 1)), Vad, pstLPCOrder, flDst,rate);
   } else {
      Post_G729A(decoderObj,flDst, forwardLPC, T2, Vad);
   }
   /* Highpass filter */
   ippsIIR_32f_I(flDst,FRM_LEN,decoderObj->iirstate);

   /* Round to nearest and convert to short*/
   {
      for(i=0;i<FRM_LEN;i++) {
         fTmp = flDst[i];
         if (fTmp >= 0.0)
            fTmp += 0.5;
         else  fTmp -= 0.5;
         if (fTmp >  32767.0 ) fTmp =  32767.0;
         if (fTmp < -32768.0 ) fTmp = -32768.0;
         dst[i] = (short) fTmp;
      }
   }
   //ippsConvert_32f16s_Sfs(flDst,dst,FRM_LEN,ippRndNear,0); /*A few difference between original code*/

   CLEAR_SCRATCH_MEMORY(decoderObj);

   return APIG729_StsNoErr;
}
static void post_filter_I(G729FPDecoder_Obj* decoderObj, float *pSynth, float *pLPC, int pitchDelay, int dominant,
                          int Vad, int pstLPCOrder, float *dst,int rate)
{
   int i, lSFVoice, len;

   if (rate != G729E_MODE) {
      len = SHORTTERM_POSTFLT_LEN;
      decoderObj->g1PST = GAMMA1_POSTFLT;
      decoderObj->g2PST = GAMMA2_POSTFLT;
      decoderObj->gHarmPST = GAMMA_HARM_POSTFLT;
   } else {
      len = SHORTTERM_POSTFLT_LEN_E;
      /* If backward mode is dominant => progressively reduce postfiltering */
      if (dominant) {
         decoderObj->gHarmPST -= 0.0125f;
         CLIP_TO_LOWLEVEL(decoderObj->gHarmPST,0);
         decoderObj->g1PST -= 0.035f;
         CLIP_TO_LOWLEVEL(decoderObj->g1PST,0);
         decoderObj->g2PST -= 0.0325f;
         CLIP_TO_LOWLEVEL(decoderObj->g2PST,0);
      } else {
         decoderObj->gHarmPST += 0.0125f;
         CLIP_TO_UPLEVEL(decoderObj->gHarmPST,GAMMA_HARM_POSTFLT_E);
         decoderObj->g1PST += 0.035f;
         CLIP_TO_UPLEVEL(decoderObj->g1PST,GAMMA1_POSTFLT_E);
         decoderObj->g2PST += 0.0325f;
         CLIP_TO_UPLEVEL(decoderObj->g2PST,GAMMA2_POSTFLT_E);
      }
   }

   decoderObj->lVoicing = 0;
   for(i=0; i<FRM_LEN; i+=SUBFR_LEN) {
      Post_G729E(decoderObj, pitchDelay, &pSynth[i], pLPC, &dst[i], &lSFVoice, len, pstLPCOrder, Vad);
      if (lSFVoice != 0) decoderObj->lVoicing = lSFVoice;
      pLPC += pstLPCOrder+1;
   }
   return;
}

static void Post_G729A(G729FPDecoder_Obj *decoderObj, float *pSrcDstSynthSpeech, float *pSrcLPC,
                        int *pSrcDecodedPitch, int Vad)
{
   LOCAL_ALIGN_ARRAY(32, float, SynthBuffer, (FRM_LEN+LPC_ORDER),decoderObj);  /* Synthesis                  */
   LOCAL_ALIGN_ARRAY(32, float, pResidual, SUBFR_LEN,decoderObj);      /* ResidualMemory after pitch postfiltering */
   LOCAL_ALIGN_ARRAY(32, float, pSynthPST, FRM_LEN,decoderObj);       /* post filtered synthesis speech   */
   LOCAL_ARRAY(float, LPCGama2, LPC_ORDERP1,decoderObj);                         /* bandwidth expanded LP parameters */
   LOCAL_ARRAY(float, LPCGama1, LPC_ORDERP1,decoderObj);
   LOCAL_ARRAY(float, ImpRespPST, PST_IMPRESP_LEN,decoderObj);
   float *pLPC;
   int   PitchDelay, pitchMaxBound, pitchMinBound;     /* closed-loop pitch search range  */
   int   i, NSbfr;            /* index for beginning of subframe */
   float fTmp, fTmp1, fTmp2;
   float *pSynth;
   Ipp64f sum, sum1;
   Ipp64f dGain,dg0;
   float  fMaxCorr;
   float  gainM1, gain;
   float  fEnergy, fEnergy0;

   pLPC = pSrcLPC;

   pSynth = &SynthBuffer[LPC_ORDER];

   ippsCopy_32f(decoderObj->PstFltMemoryA,SynthBuffer,LPC_ORDER);
   ippsCopy_32f(pSrcDstSynthSpeech,pSynth,FRM_LEN);

   for (NSbfr = 0; NSbfr < FRM_LEN; NSbfr += SUBFR_LEN) {
      /* Find pitch range t0_min - t0_max */

      pitchMinBound = *pSrcDecodedPitch++ - 3;
      pitchMaxBound = pitchMinBound+6;
      if (pitchMaxBound > PITCH_LAG_MAX) {
         pitchMaxBound = PITCH_LAG_MAX;
         pitchMinBound = pitchMaxBound-6;
      }

      /* Find weighted filter coefficients LPCGama2 and LPCGama1 */

      WeightLPCCoeff_G729(pLPC, GAMMA2_POSTFLT, LPC_ORDER, LPCGama2);
      WeightLPCCoeff_G729(pLPC, GAMMA1_POSTFLT, LPC_ORDER, LPCGama1 );

      /* filtering of synthesis speech by A(z/GAMMA2_POSTFLT) to find ResidualMemory */

      ippsConvBiased_32f(LPCGama2,LPC_ORDER+1,&pSynth[NSbfr],SUBFR_LEN+LPC_ORDER,decoderObj->ResidualMemory,SUBFR_LEN,LPC_ORDER);

      /* pitch postfiltering */

      if (Vad > 1) {

         ippsCrossCorrLagMax_32f64f(decoderObj->ResidualMemory, &decoderObj->ResidualMemory[-pitchMaxBound], SUBFR_LEN, pitchMaxBound-pitchMinBound, &sum, &PitchDelay);
         PitchDelay = (pitchMaxBound-pitchMinBound-PitchDelay) + pitchMinBound;
         fMaxCorr = (Ipp32f)sum;

         /* Compute the energy of the signal delayed by PitchDelay */

         ippsDotProd_32f64f(&decoderObj->ResidualMemory[-PitchDelay], &decoderObj->ResidualMemory[-PitchDelay], SUBFR_LEN, &sum);
         fEnergy = (Ipp32f)(sum+0.5);

         /* Compute the signal energy in the present subframe */

         ippsDotProd_32f64f(decoderObj->ResidualMemory, decoderObj->ResidualMemory, SUBFR_LEN, &sum);
         fEnergy0 = (Ipp32f)(sum+0.5);

         if (fMaxCorr < 0.0) fMaxCorr = 0.0;

         /* prediction gain (dB)= -10 log(1-fMaxCorr*fMaxCorr/(fEnergy*fEnergy0)) */

         fTmp = fMaxCorr*fMaxCorr;
         if (fTmp < fEnergy*fEnergy0*0.5) {       /* if prediction gain < 3 dB   */
            ippsCopy_32f(decoderObj->ResidualMemory, pResidual, SUBFR_LEN);
         } else {
            if (fMaxCorr > fEnergy) {    /* if pitch gain > 1 */
               gainM1 = INV_GAMMA_POSTFLT_G729A;
               gain = GAMMA2_POSTFLT_G729A;
            } else {
               fMaxCorr *= GAMMA_POSTFLT_G729A;
               gain = 1.0f/(fMaxCorr+fEnergy) * fMaxCorr;
               gainM1   = 1.0f - gain;
            }
            ippsInterpolateC_G729_32f(decoderObj->ResidualMemory, gainM1, &decoderObj->ResidualMemory[-PitchDelay], gain, pResidual, SUBFR_LEN);
         }
      } else
         ippsCopy_32f(decoderObj->ResidualMemory,pResidual,SUBFR_LEN);

      /* impulse response of A(z/GAMMA2_POSTFLT)/A(z/GAMMA1_POSTFLT) */

      ippsCopy_32f(LPCGama2, ImpRespPST, LPC_ORDERP1);
      ippsZero_32f(&ImpRespPST[LPC_ORDERP1],PST_IMPRESP_LEN-LPC_ORDERP1);
      ippsSynthesisFilter_G729_32f(LPCGama1, LPC_ORDER, ImpRespPST, ImpRespPST, PST_IMPRESP_LEN, &ImpRespPST[LPC_ORDER+1]);

      /* 1st correlation of impulse response */
      ippsDotProd_32f64f(ImpRespPST, ImpRespPST, PST_IMPRESP_LEN, &sum);
      ippsDotProd_32f64f(ImpRespPST, &ImpRespPST[1], PST_IMPRESP_LEN-1, &sum1);
      if(sum1 <= 0.0) {
         fTmp2 = 0.0;
      } else {
         fTmp1 = (Ipp32f)sum;
         fTmp2 = (Ipp32f)sum1;
         fTmp2 = fTmp2*TILT_FLT_FACTOR/fTmp1;
      }
      ippsPreemphasize_32f_I(fTmp2, pResidual, SUBFR_LEN,&decoderObj->fPreemphMemoryA);

      /* filtering through  1/A(z/GAMMA1_POSTFLT) */

      ippsSynthesisFilter_G729_32f(LPCGama1, LPC_ORDER, pResidual, &pSynthPST[NSbfr], SUBFR_LEN, decoderObj->PstSynMemoryA);
      for (i = 0; i < LPC_ORDER; i++)  decoderObj->PstSynMemoryA[i] =pSynthPST[NSbfr+(SUBFR_LEN-LPC_ORDER)+i];



      /* scale output to input */
      ippsDotProd_32f64f(&pSynthPST[NSbfr], &pSynthPST[NSbfr], SUBFR_LEN, &dGain);
      if(dGain == 0.) {
         decoderObj->fPastGain = 0.f;
      } else {
         ippsDotProd_32f64f(&pSynth[NSbfr], &pSynth[NSbfr], SUBFR_LEN, &dg0);
         if(dg0 > 0) {
            dg0 = sqrt(dg0/ dGain);
            dg0 *=  AGC_FACTOR_1M_G729A;
         }

         /* compute gain(n) = AGC_FACTOR gain(n-1) + (1-AGC_FACTOR)gain_in/dGain */
         ippsGainControl_G729_32f_I((float)dg0, AGC_FACTOR_G729A, &pSynthPST[NSbfr], &decoderObj->fPastGain);
      }

      /* update residual memory */

      ippsCopy_32f(&decoderObj->ResidualMemory[SUBFR_LEN-PITCH_LAG_MAX], &decoderObj->ResidualMemory[-PITCH_LAG_MAX], PITCH_LAG_MAX);

      pLPC += LPC_ORDERP1;
   }

   /* update pSynth[] buffer */

   ippsCopy_32f(&pSynth[FRM_LEN-LPC_ORDER], decoderObj->PstFltMemoryA, LPC_ORDER);

   /* overwrite synthesis speech by postfiltered synthesis speech */

   ippsCopy_32f(pSynthPST, pSrcDstSynthSpeech, FRM_LEN);

   LOCAL_ARRAY_FREE(float, ImpRespPST, PST_IMPRESP_LEN,decoderObj);
   LOCAL_ARRAY_FREE(float, LPCGama1, LPC_ORDERP1,decoderObj);
   LOCAL_ARRAY_FREE(float, LPCGama2, LPC_ORDERP1,decoderObj);
   LOCAL_ALIGN_ARRAY_FREE(32, float, pSynthPST, FRM_LEN,decoderObj);       /* post filtered synthesis speech   */
   LOCAL_ALIGN_ARRAY_FREE(32, float, pResidual, SUBFR_LEN,decoderObj);      /* ResidualMemory after pitch postfiltering */
   LOCAL_ALIGN_ARRAY_FREE(32, float, SynthBuffer, (FRM_LEN+LPC_ORDER),decoderObj);  /* Synthesis                  */

   return;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国精产品一区一区三区mba桃花| 色哟哟国产精品| 欧美精品在线视频| 美日韩一区二区| 午夜精品福利久久久| 亚洲欧美日韩小说| 亚洲欧美国产毛片在线| 综合久久综合久久| 亚洲伦在线观看| 亚洲猫色日本管| 一区二区不卡在线播放| 亚洲综合成人在线视频| 亚洲电影一级片| 日韩电影在线观看网站| 青青草伊人久久| 国产综合一区二区| 丁香网亚洲国际| 99精品欧美一区二区三区综合在线| youjizz久久| 欧洲一区在线电影| 欧美精品日韩精品| 日韩一二在线观看| 久久精品人人做人人综合 | 日韩欧美国产wwwww| 欧美日韩国产高清一区二区三区| 欧美电影在线免费观看| 日韩一级视频免费观看在线| 日韩精品一区二区三区视频| 久久精品亚洲国产奇米99| 中文字幕一区在线观看视频| 一区二区三区91| 日韩av网站在线观看| 国产一区二区三区四| 97久久精品人人做人人爽| 欧美午夜精品久久久久久超碰 | 欧美成va人片在线观看| 精品国产伦一区二区三区观看方式| 国产目拍亚洲精品99久久精品| 亚洲欧美日韩精品久久久久| 日韩高清欧美激情| 国产**成人网毛片九色 | 欧美另类z0zxhd电影| 欧美精品一区二区三区四区| 国产精品久久毛片| 日本午夜一区二区| 成人av手机在线观看| 欧美色男人天堂| 久久青草欧美一区二区三区| 亚洲裸体xxx| 国内成+人亚洲+欧美+综合在线| 99热这里都是精品| 91精品国产91久久综合桃花| 亚洲国产精品av| 视频在线观看一区二区三区| 国产白丝精品91爽爽久久| 欧美视频一区二| 国产三级欧美三级日产三级99| 一区二区三区四区在线免费观看| 精品在线视频一区| 在线观看免费一区| 亚洲国产高清aⅴ视频| 日本aⅴ亚洲精品中文乱码| 成人99免费视频| 日韩欧美中文字幕精品| 亚洲精品国产一区二区精华液| 久久电影网站中文字幕| 欧美视频在线一区二区三区 | 夜夜嗨av一区二区三区网页 | 日本丰满少妇一区二区三区| 久久久久久夜精品精品免费| 五月综合激情网| 色综合天天性综合| 久久久精品天堂| 日韩成人av影视| 91福利国产成人精品照片| 国产欧美日韩亚州综合 | 成人精品视频一区二区三区 | 亚洲成av人片www| 91在线观看免费视频| 久久蜜桃av一区精品变态类天堂 | 在线免费亚洲电影| 国产精品久久久久婷婷二区次| 久草热8精品视频在线观看| 7777精品伊人久久久大香线蕉经典版下载| 亚洲国产成人自拍| 国产一区欧美一区| 精品免费一区二区三区| 青娱乐精品视频| 欧美高清性hdvideosex| 亚洲午夜精品网| 色狠狠桃花综合| 亚洲精品欧美综合四区| jizzjizzjizz欧美| 中文字幕乱码一区二区免费| 国产一区高清在线| 欧美精品一区二区三区在线播放 | 国产精品一区免费视频| 精品国产乱码久久久久久闺蜜| 亚洲国产精品一区二区www| 91九色最新地址| 亚洲欧美偷拍三级| 色欲综合视频天天天| 国产精品二区一区二区aⅴ污介绍| 国产福利一区二区三区视频在线 | 欧美色综合久久| 亚洲综合激情另类小说区| 91蜜桃网址入口| 亚洲乱码中文字幕| 日本韩国欧美一区| 亚洲一区二区三区四区的| 欧美性欧美巨大黑白大战| 午夜精品一区二区三区三上悠亚| 欧美久久久影院| 日韩电影在线一区二区| 日韩你懂的在线播放| 久久99久久精品| 国产欧美日韩亚州综合 | av一区二区三区黑人| 1024精品合集| 一本大道久久a久久精二百| 亚洲高清在线视频| 欧美一区国产二区| 韩国精品免费视频| 国产精品美女视频| 在线观看日韩毛片| 日本不卡不码高清免费观看| 精品理论电影在线观看 | 欧美精品久久久久久久久老牛影院| 亚洲va韩国va欧美va| 日韩免费一区二区| 成人免费福利片| 亚洲一卡二卡三卡四卡五卡| 91精品国产一区二区| 国产成人免费在线| 亚洲黄色小视频| 日韩午夜中文字幕| 成人在线综合网| 亚洲二区在线视频| 精品国产麻豆免费人成网站| 99久久婷婷国产| 天天色天天操综合| 国产午夜精品一区二区三区嫩草| 91片黄在线观看| 日本成人在线网站| 国产精品欧美经典| 在线成人av影院| 成人网页在线观看| 亚洲综合在线五月| 精品国一区二区三区| av毛片久久久久**hd| 日本美女一区二区三区视频| 久久久久久久电影| 欧美综合久久久| 国产精品69毛片高清亚洲| 亚洲一区二区三区在线看| wwwwww.欧美系列| 欧美日韩日本视频| 国产福利精品一区二区| 石原莉奈在线亚洲二区| 国产精品色呦呦| 91精品国产综合久久国产大片| 成人免费看视频| 天堂精品中文字幕在线| 国产精品视频一二| 日韩欧美亚洲另类制服综合在线| 成人蜜臀av电影| 精品一区二区三区免费| 亚洲成人一区二区| 国产精品你懂的在线欣赏| 欧美一区二区久久| 91网上在线视频| 国产经典欧美精品| 奇米色一区二区| 亚洲国产欧美另类丝袜| 国产精品久久久久久久久动漫| 日韩情涩欧美日韩视频| 在线欧美一区二区| 91免费看片在线观看| 欧洲av在线精品| 成人一区二区三区视频 | 精品视频在线免费看| 成人avav影音| 国产精品69久久久久水密桃| 久久99国内精品| 亚洲va中文字幕| 亚洲在线免费播放| 亚洲欧洲成人av每日更新| 久久久国产精品不卡| 欧美成人r级一区二区三区| 欧美精品久久天天躁| 欧美日韩综合在线| 色婷婷久久久亚洲一区二区三区 | 国产欧美日韩视频一区二区| 精品国产91洋老外米糕| 日韩一区二区三区在线观看| 欧美视频你懂的| 欧美三级电影网| 欧美丝袜自拍制服另类| 色久优优欧美色久优优| 色999日韩国产欧美一区二区|