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

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

?? encoder.c

?? Intel開發的IPP庫的應用實例
?? C
?? 第 1 頁 / 共 5 頁
字號:
    frameEn = 0.5f + 23.0831f * (sum-4.15888f);

    if(  ((frameEn-vad->Eloglowtrack) < SNR_THRESHOLD_UPD_LTE) || (tc < MIN_FRAME)  ){
        if( (frameEn<vad->Eloglowtrack) || ((tc) < MIN_FRAME))
            vad->Eloglowtrack = vad->Eloglowtrack + (1 - lambdaLTE )*( frameEn - vad->Eloglowtrack );
        else
            vad->Eloglowtrack = vad->Eloglowtrack + (1.0f - (float)lambdaLTEhigherE )*( frameEn - vad->Eloglowtrack );
        if (vad->Eloglowtrack < ENERGY_FLOOR)vad->Eloglowtrack = ENERGY_FLOOR;
    }
    if(tc>4){
        if(  ( (frameEn-vad->Eloglowtrack) > SNR_THRESHOLD_VAD)  ){
            vad->nbSpeechFrame++;
            vad->flagVAD = 1;
        }
        else {
            if( vad->nbSpeechFrame > MIN_SPEECH_FRAME_HANGOVER)
                vad->hangOver = HANGOVER;
            vad->nbSpeechFrame = 0;
            if(vad->hangOver!=0){
                vad->hangOver--;
                vad->flagVAD = 1;
            }
            else
                vad->flagVAD = 0;
        }
    }
    return vad->flagVAD;
}

/* Perform noise reduction */
void DoNoiseReduction(AuroraEncoder *pCodec,float *pBuffer, int tc, float *pOutFFT, float *pOutputBuffer, int *tcur,
                      float *pOutMel, float *pOutDen,char flagVAD){
    int i;
   float lambdaNSE;
   float pFFT[FFTSIZE+2];
    float pPSD[FFTSPEC];
    float pNoise[FFTSPEC];
    float pDen[FFTSPEC];
   float pDataOut[200];
   /* Gain factorization */
    float SNRlow = 0.0f;
   float agf=0.0f;
    float Enoise;
   float SNRaver;
    float lsnr;

   /* Mel filter-bank */
   float pMelBank[NUM_CHANNELS+2];

    float phWF[(NUM_CHANNELS+1)*2+1];
   float phWFtrunc[FL+1];

   float *pState2 = pBuffer+320;
   float *pState1 = pState2+320;
   /*!!!! FIRST STAGE !!!!*/
   /* Spectrum estimation */
   ippsMul_32f(pCodec->noise.winHannCoeff, pState1+60,pFFT, WINHANNSIZE);
   ippsZero_32f(pFFT+WINHANNSIZE, FFTSIZE-WINHANNSIZE);

   ippsFFTFwd_RToPerm_32f(pFFT,pFFT,pCodec->noise.ctxFFT,NULL);

   ippsSmoothedPowerSpectrumAurora_32f(pFFT,pFFT,FFTSIZE);

   ippsCopy_32f(pFFT,pOutFFT,FFTSIZE);

   /* Power spectral density mean */
   ippsWeightedSum_32f(pFFT,pCodec->noise.pPSDprev_1,pPSD,FFTSPEC,1.0f,1.0f);


   ippsCopy_32f(pFFT,pCodec->noise.pPSDprev_1,FFTSPEC);
    ippsSqrt_32f_I(pPSD,FFTSPEC);
    ippsSqrt_32f_I(pFFT,FFTSPEC);

    /* Wiener filter design */
    if( tc+1 < NB_FRAME_THRESHOLD_NSE)
      lambdaNSE = 1 - 1.0f/(tc);
   else
      lambdaNSE = LAMBDA_NSE;

   if(!flagVAD){
      ippsWeightedSum_32f(pCodec->noise.pNoiseTnPrev_1,pPSD,pCodec->noise.pNoiseTn,FFTSPEC,lambdaNSE,(1-lambdaNSE));
      ippsThreshold_32f_I(pCodec->noise.pNoiseTn,FFTSPEC,EPS,ippCmpLess);
   }
   ippsCopy_32f(pCodec->noise.pNoiseTn,pNoise,FFTSPEC);
   ippsCopy_32f(pCodec->noise.pNoiseTn,pCodec->noise.pNoiseTnPrev_1,FFTSPEC);

   ippsWienerFilterDesign_Aurora_32f(pPSD,pNoise,pCodec->noise.pDenPrev_1,pDen,FFTSPEC);

   ippsMul_32f(pFFT, pDen, pCodec->noise.pDenPrev_1, FFTSPEC);
   pCodec->noise.Eden2 = pCodec->noise.Eden1;pCodec->noise.Eden1 = pCodec->noise.Eden;
   ippsSum_32f(pCodec->noise.pDenPrev_1,FFTSPEC,&pCodec->noise.Eden,ippAlgHintAccurate);

   /* Mel filter-bank */
   ippsEvalFBank_32f(pDen,pMelBank,pCodec->noise.pFBank);

   ippsCopy_32f(pDen,pOutDen,FFTSPEC);
   ippsCopy_32f(pMelBank,pOutMel,NUM_CHANNELS+2);

   /* Mel IDCT */
   ippsMatVecMul_32f_D2L((const float**)pCodec->noise.pIDCT,pMelBank,NUM_CHANNELS+2,phWF,10);

   /* Apply filter and forming second buffer */
   ippsTabsCalculation_Aurora_32f(phWF,phWFtrunc);

   ippsMul_32f_I(pCodec->noise.winHannFilter, phWFtrunc, FL);

   ippsResidualFilter_Aurora_32f(pState1+FRAMESHIFT-8,pState2+FRAMESHIFT*3,phWFtrunc);

   /*!!! Start 2nd state !!!*/
   if(tc>2){
      /* Spectrum estimation 2 */
      ippsMul_32f(pCodec->noise.winHannCoeff, pState2+60,pFFT, WINHANNSIZE);
      ippsZero_32f(pFFT+WINHANNSIZE, FFTSIZE-WINHANNSIZE);

      ippsFFTFwd_RToPerm_32f(pFFT,pFFT,pCodec->noise.ctxFFT,NULL);
      ippsSmoothedPowerSpectrumAurora_32f(pFFT,pFFT,FFTSIZE);

      /* Power spectral density mean 2 */
      ippsWeightedSum_32f(pFFT,pCodec->noise.pPSDprev_2,pPSD,FFTSPEC,1.0f,1.0f);

      ippsCopy_32f(pFFT,pCodec->noise.pPSDprev_2,FFTSPEC);
      ippsSqrt_32f_I(pFFT,FFTSPEC);

        /* Wiener filter design 2*/
      if( tc+1 < NB_FRAME_THRESHOLD_NSE)
         lambdaNSE = 1 - 1.0f/(tc-2);
      else
         lambdaNSE = LAMBDA_NSE;
      if( tc-2 < 11) {
         lambdaNSE = 1 - 1.0f/(tc-2);
         ippsWeightedSum_32f(pCodec->noise.pNoisePrev_2,pPSD,pNoise,FFTSPEC,lambdaNSE,(1-lambdaNSE));
      }else{
         ippsNoiseSpectrumUpdate_Aurora_32f(pPSD,pCodec->noise.pNoisePrev_2,pNoise,FFTSPEC);
      }

      ippsCopy_32f(pNoise,pCodec->noise.pNoisePrev_2,FFTSPEC);
      ippsSqrt_32f_I(pPSD,FFTSPEC);
      ippsSqrt_32f_I(pNoise,FFTSPEC);

      ippsWienerFilterDesign_Aurora_32f(pPSD,pNoise,pCodec->noise.pDenPrev_2,pDen,FFTSPEC);

      ippsMul_32f(pFFT, pDen, pCodec->noise.pDenPrev_2, FFTSPEC);

      /* Mel filter-bank 2 */
      ippsEvalFBank_32f(pDen,pMelBank,pCodec->noise.pFBank);

      /* Gain factorization */
      ippsSum_32f(pNoise,FFTSPEC,&Enoise,ippAlgHintAccurate);

      SNRaver = (pCodec->noise.Eden2 * pCodec->noise.Eden1 * pCodec->noise.Eden)/(Enoise * Enoise * Enoise);
      if (SNRaver > 0.00001)
         SNRaver = (float)((20 * log10 (SNRaver)) / 3.0);
      else
         SNRaver = -33.3333f;

      if( ((SNRaver-pCodec->noise.SNRlowPrev)<10.0f) || (tc-2) < 10){
         if((tc-2)<10)
            lsnr = 1.0f - 1.0f/(tc-2);
         else{
            if(SNRaver < SNRlow)
               lsnr = 0.95f;
            else
               lsnr = 0.99f;
         }
         SNRlow = lsnr * pCodec->noise.SNRlowPrev + (1-lsnr) * SNRaver;
         pCodec->noise.SNRlowPrev = SNRlow;
      }
      if(SNRaver < (SNRlow+3.5f)){
         agf = pCodec->noise.agfPrev+0.15f;
         if(agf > 0.8)
            agf = 0.8f;
      }else{
         agf = pCodec->noise.agfPrev-0.3f;
         if(agf < 0.1f)agf = 0.1f;
      }
      pCodec->noise.agfPrev = agf;

      for (i=0; i <=NUM_CHANNELS+1; i++){
         pMelBank[i] = 1.0f + agf * (pMelBank[i]-1.0f);
      }

      /* Mel IDCT 2 */
      ippsMatVecMul_32f_D2L((const float**)pCodec->noise.pIDCT,pMelBank,NUM_CHANNELS+2,phWF,10);

      /* Apply filter 2 */
      ippsTabsCalculation_Aurora_32f(phWF,phWFtrunc);
      ippsMul_32f_I(pCodec->noise.winHannFilter, phWFtrunc, FL);
      ippsResidualFilter_Aurora_32f(pState2+FRAMESHIFT-8,pBuffer+FRAMESHIFT*2,phWFtrunc);

        /* Offset compensation */
      ippsCompensateOffset_32f_I(pBuffer+FRAMESHIFT*2,FRAMESHIFT,
         &(pCodec->noise.pSrc0),pCodec->noise.Dst0,0.9990234375f);

      pCodec->noise.Dst0 = pBuffer[3*FRAMESHIFT-1];

      /* Waveform Processing */
      if(tc > 4){
         ippsWaveProcessing_Aurora_32f(pBuffer,pDataOut);

         /* output result */
         ippsCopy_32f(pDataOut,pOutputBuffer,FRAMESHIFT*4);
         (*tcur)++;
      }
   }
}


void ResetAuroraEncoder(AuroraEncoder *pCodec){
   pCodec->Dst0=0.0;
   pCodec->preFloat=0.0;
   pCodec->pSrc0=0.0;
   pCodec->curPosition = 0;
   pCodec->iCountFrame = 0;
   pCodec->mframeCounter = 1;
   pCodec->pFrame->pos=6;
   pCodec->NumberFrame = 0;
   pCodec->VadFrame = 0;
   ippsZero_32f(pCodec->bias,NUM_CEP_COEFF-1);
   ippsZero_8u(pCodec->pIndexVQBuffer,2*NUM_CODEBOOK);
   /* For noice reduction block */
   ippsZero_32f(pCodec->noise.pPSDprev_1,FFTSPEC);
    ippsZero_32f(pCodec->noise.pPSDprev_2,FFTSPEC);
   ippsZero_32f(pCodec->noise.pDenPrev_1,FFTSPEC);
   ippsZero_32f(pCodec->noise.pDenPrev_2,FFTSPEC);
    ippsSet_32f((float)EPS,pCodec->noise.pNoiseTnPrev_1,FFTSPEC);
    ippsSet_32f((float)EPS*EPS,pCodec->noise.pNoisePrev_2,FFTSPEC);
    ippsSet_32f((float)EPS,pCodec->noise.pNoiseTn,FFTSPEC);
    ippsZero_32f(pCodec->noise.pBStateBuf, 960);
   ippsZero_32f(pCodec->noise.pBStateBig,640+FILTERLENGTH);
    pCodec->noise.Eden=pCodec->noise.Eden1=pCodec->noise.Eden2=0.0f;
    pCodec->noise.SNRlowPrev=0.0f;
   pCodec->noise.agfPrev=0.8f;
   pCodec->noise.pSrc0 = pCodec->noise.Dst0=0.0f;
   pCodec->noise.Cur_TPrpocess=0;
   pCodec->noise.tail=0;
   pCodec->noise.start=0;
   pCodec->noise.end=0;
   pCodec->noise.vad.nbSpeechFrame=0;
   pCodec->noise.vad.Eloglowtrack=0;
   pCodec->noise.vad.flagVAD=0;
   pCodec->noise.vad.hangOver = 0;
   ippsZero_32f(pCodec->noise.s16.dataHP,560);

   /* for 16Khz processing */
   pCodec->noise.s16.vad16.nbSpeechFrame=0;
   pCodec->noise.s16.vad16.Eloglowtrack=0;
   pCodec->noise.s16.vad16.flagVAD=0;
   pCodec->noise.s16.vad16.hangOver = 0;
   pCodec->noise.s16.vad16.pNoise16[0]=0.0f;
   pCodec->noise.s16.vad16.pNoise16[1]=0.0f;
   pCodec->noise.s16.vad16.pNoise16[2]=0.0f;

   pCodec->s11.time = (Ipp64f)pCodec->s11.history;
   pCodec->s11.lastread = pCodec->s11.history;

   ippsZero_16s((short*)pCodec->s11.p11,+pCodec->s11.len);
}

int InitAuroraEncoder(AuroraEncoder **pCodec, AuroraRate SamplingFrequency,AuroraDataType EncoderInput,AuroraDataType EncoderOutput){
   IppStatus status;
   int FrameShift=0;
   int FrameLength=0;
   float startingFeq=0,Frequency;
   int i,j,k,n;
   float *qCoeffLog, *qCoeff,*qCoeffVad;
   float pLiftCoeff[NUM_CEP_COEFF-1] = {1.0f,1.0f,1.0f,1.0f,1.0f,1.0f,1.0f,1.0f,1.0f,1.0f,1.0f,1.0f,};
   float pFCentres[NUM_CHANNELS+2+2];
   float norm;
   float pDFK[NUM_CHANNELS+2+2];
   float pCoeff[65];
   float *pTmp;

   int pCenters[NUM_CHANNELS+2+2];
/*   float pLiftCoeff[NUM_CEP_COEFF-1] = {0.740585f,1.18330f,1.60780f,2.00544f,2.36814f,2.68850f,
      2.96001f,3.17714f,3.33547f,3.43178f,3.46410f,3.43178f};
*/
   pCodec[0] = (AuroraEncoder*)malloc(sizeof(AuroraEncoder));
   if (pCodec[0]==NULL) return -1;
   status = ippStsNoErr;
   pCodec[0]->pFBank = NULL;
   pCodec[0]->ctxFFT = NULL;
   pCodec[0]->EncoderInput = EncoderInput;
   pCodec[0]->pDCTLifter = NULL;
   pCodec[0]->workBuffer = NULL;
   pCodec[0]->ppCdbkState = NULL;
   pCodec[0]->pFeatBuffer = NULL;
   pCodec[0]->pFeatCyclicBuf = NULL;
   pCodec[0]->HammingWindow = NULL;
   pCodec[0]->pFeatBuffer = NULL;
   pCodec[0]->pFeatCyclicBuf = NULL;
   ippsVADGetBufSize_Aurora_32f(&n);
   pCodec[0]->pVadMem = NULL;
   pCodec[0]->VadFrame = 0;
   pCodec[0]->iCountFrame = 0;
   pCodec[0]->mframeCounter = 1;
   pCodec[0]->NumberFrame = 0;
   pCodec[0]->pFrame = NULL;
   pCodec[0]->s11.ppState = NULL;
   pCodec[0]->s11.p11 = NULL;
   pCodec[0]->noise.ctxFFT = NULL;
   pCodec[0]->noise.pFBank = NULL;
   pCodec[0]->noise.pIDCT = NULL;
   pCodec[0]->noise.s16.pFBank16 = NULL;

   pCodec[0]->pFrame = (MFrame*)ippsMalloc_8u(sizeof(MFrame));
   if(pCodec[0]->pFrame==NULL){
      ReleaseAuroraEncoder(pCodec[0]);
      return -1;
   }

   pCodec[0]->pFeatBuffer = ippsMalloc_32f(NUM_CEP_COEFF+1);
   if(pCodec[0]->pFeatBuffer==NULL){
      ReleaseAuroraEncoder(pCodec[0]);
      return -1;
   }

   pCodec[0]->pFeatCyclicBuf = ippsMalloc_32f((NUM_CEP_COEFF+1)*7);
   if(pCodec[0]->pFeatCyclicBuf==NULL){
      ReleaseAuroraEncoder(pCodec[0]);
      return -1;
   }

   pCodec[0]->pVadMem = ippsMalloc_8u(n);

   if(pCodec[0]->pVadMem==NULL){
      ReleaseAuroraEncoder(pCodec[0]);
      return -1;
   }

   if(ippsVADInit_Aurora_32f(pCodec[0]->pVadMem)!=ippStsNoErr){
      ReleaseAuroraEncoder(pCodec[0]);
      return -1;
   }


   pCodec[0]->s11.history = 33;
   pCodec[0]->s11.len = (pCodec[0]->s11.history+3)*2;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区在线免费播放| 欧美一级理论性理论a| 久久久美女毛片| 久久电影国产免费久久电影| 精品视频全国免费看| 亚洲国产wwwccc36天堂| 日本福利一区二区| 亚洲精品久久7777| 色婷婷综合久色| 一区二区在线看| 色婷婷久久久久swag精品 | 成人午夜激情在线| 成人一区二区三区视频在线观看| 欧美成人高清电影在线| 久久99久久99| 国产欧美一二三区| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 国产成a人无v码亚洲福利| 日本一区二区三区四区在线视频| 成人精品一区二区三区中文字幕| 最近日韩中文字幕| 欧美日韩视频在线观看一区二区三区 | 中文字幕 久热精品 视频在线| 一区二区欧美在线观看| 成人性色生活片| 欧美一区二区二区| 国产精品久久久久影视| 成人久久18免费网站麻豆| 亚洲欧美另类久久久精品2019| 久久久久久久久久久久电影| 国产精品嫩草影院av蜜臀| 一区二区三区欧美亚洲| 欧美bbbbb| 国产精品99久久久久久久vr| 亚洲欧美日韩人成在线播放| 91网站在线观看视频| 国产欧美日韩麻豆91| 久久国产三级精品| 精品国产sm最大网站| 激情五月播播久久久精品| 精品日韩一区二区| 激情六月婷婷久久| 国产视频911| 成人午夜免费电影| 日本成人在线不卡视频| 亚洲欧洲日韩在线| 欧美日韩你懂得| 成人a免费在线看| 视频一区视频二区中文字幕| 亚洲伦在线观看| 日韩一区二区三区视频在线| 欧美日韩中文精品| 99久久99久久精品免费观看| 热久久久久久久| 日韩精品一二三四| 香蕉影视欧美成人| 久久精品一区八戒影视| 7777精品伊人久久久大香线蕉 | 国产99久久久国产精品| 久久国产免费看| 肉肉av福利一精品导航| 日韩一区在线免费观看| 欧美国产欧美综合| 亚洲国产精品精华液2区45| 亚洲精品一区二区在线观看| 精品国产免费一区二区三区四区 | 亚洲欧美电影院| 亚洲午夜久久久| 免费人成在线不卡| 成人av资源网站| 欧美亚洲综合一区| 久久免费电影网| 一区二区激情视频| 国产一区二区三区不卡在线观看 | 久久久久久久久久久久久夜| 久久久久久久久伊人| 国产精品人人做人人爽人人添| 国产日韩欧美一区二区三区乱码| 久久久久久**毛片大全| 国产精品人妖ts系列视频| 亚洲精品国产一区二区三区四区在线| 一区二区免费看| 麻豆91小视频| 成人不卡免费av| 欧美久久一二三四区| 欧美精品一区男女天堂| 一区二区三区波多野结衣在线观看| 亚洲国产精品成人综合| 亚洲综合色噜噜狠狠| 久久99国产精品久久| 成人免费观看男女羞羞视频| 欧美午夜精品久久久久久超碰| 精品国产髙清在线看国产毛片| 国产精品久久久久7777按摩| 午夜激情久久久| 成人av第一页| 日韩精品一区二区在线| 亚洲六月丁香色婷婷综合久久 | 制服丝袜亚洲播放| 国产女人aaa级久久久级| 日韩经典中文字幕一区| 99国产精品国产精品久久| 日韩一区二区三区视频在线观看 | heyzo一本久久综合| 欧美一级精品在线| 亚洲成年人影院| 色综合天天综合网国产成人综合天| 精品久久久久久久久久久久久久久久久| 中文字幕一区二区三区在线观看 | 欧美一区二区三区在线观看 | 亚洲少妇中出一区| 国产精品18久久久久久vr| 欧美一区二区三区四区在线观看| 1区2区3区欧美| 不卡一区在线观看| 欧美国产亚洲另类动漫| 国产高清精品久久久久| 欧美成人官网二区| 蜜桃av一区二区| 日韩一区二区在线观看| 三级一区在线视频先锋| 在线看日本不卡| 尤物在线观看一区| 欧美综合天天夜夜久久| 亚洲曰韩产成在线| 欧美日韩中字一区| 午夜精品久久久久久久久久| 欧美日韩中文一区| 日韩电影在线观看网站| 91精品国产综合久久婷婷香蕉| 日本成人在线网站| 久久综合丝袜日本网| 国产九色精品成人porny| 中文字幕不卡的av| 91免费国产在线观看| 亚洲一区在线观看网站| 91精品国产综合久久蜜臀| 久久精品国产第一区二区三区| 精品国产精品网麻豆系列| 懂色中文一区二区在线播放| 亚洲另类在线视频| 7777精品久久久大香线蕉| 国产在线精品免费av| 国产精品美女久久久久久久久| 欧美怡红院视频| 经典三级在线一区| 亚洲精品亚洲人成人网| 91精品国产aⅴ一区二区| 国产成人精品一区二| 依依成人综合视频| 精品精品欲导航| 91麻豆蜜桃一区二区三区| 午夜不卡av免费| 国产亚洲人成网站| 欧美美女直播网站| 成人一二三区视频| 美腿丝袜亚洲一区| 一区二区三区免费| 国产欧美日韩精品一区| 51精品秘密在线观看| 色综合视频在线观看| 国产一区激情在线| 日韩黄色免费电影| |精品福利一区二区三区| 精品国产露脸精彩对白| 欧美午夜寂寞影院| 91在线丨porny丨国产| 国产精品一区免费视频| 日韩av在线播放中文字幕| 亚洲综合色网站| 自拍av一区二区三区| 国产精品免费视频网站| 久久综合av免费| 久久久久亚洲蜜桃| 日韩一区二区三| 欧美一级理论片| 91精品国产综合久久久蜜臀粉嫩 | 91成人网在线| 一本久久精品一区二区| 91在线看国产| 91香蕉视频黄| 一本久久a久久精品亚洲| 不卡av在线免费观看| 成人亚洲精品久久久久软件| 国产成人av电影免费在线观看| 久久99精品视频| 国产精品综合二区| 成人av在线一区二区| 99久久精品情趣| 欧美伊人久久久久久午夜久久久久| 欧美制服丝袜第一页| 欧美日韩在线电影| 欧美一级黄色片| 国产欧美一区二区三区鸳鸯浴| 欧美国产一区视频在线观看| 国产精品毛片无遮挡高清| 亚洲精品欧美二区三区中文字幕| 亚洲综合丝袜美腿| 日本va欧美va精品发布| 国产一区二区毛片|