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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? encoder.c

?? Intel開發(fā)的IPP庫的應(yīng)用實例
?? C
?? 第 1 頁 / 共 5 頁
字號:
/*
//
//                  INTEL CORPORATION PROPRIETARY INFORMATION
//     This software is supplied under the terms of a license agreement or
//     nondisclosure agreement with Intel Corporation and may not be copied
//     or disclosed except in accordance with the terms of that agreement.
//          Copyright(c) 2003-2006 Intel Corporation. All Rights Reserved.
//
//     Intel(R) Integrated Performance Primitives Advanced Aurora Sample for Windows*
//
//   By downloading and installing this sample, you hereby agree that the
//   accompanying Materials are being provided to you under the terms and
//   conditions of the End User License Agreement for the Intel(R) Integrated
//   Performance Primitives product previously accepted by you. Please refer
//   to the file ippEULA.rtf located in the root directory of your Intel(R) IPP
//   product installation for more information.
//
//   ES 202 050 v1.1.1 is the international standard promoted by ETSI
//   and other organizations. Implementations of these standards, or the standard
//   enabled platforms may require licenses from various entities, including
//   Intel Corporation.
//
*/

#include <malloc.h>
#include <stdio.h>
#include <math.h>

#include "encoderapi.h"
#include "tab_8kHz.inc"
#include "tab_16kHz.inc"
#include "mframe.h"

#define STARTING_FREQ            64.0f
#define WINHANNSIZE 200
#define WAVEFORMSIZE 200

#define FFTSIZE 256
#define FFTSPEC ((FFTSIZE>>2)+1)
#define FFTSPEC16 128
#define FFTORDER 8
#define FRAMESHIFT 80

/* 16KHz*/
#define KFB16 3
#define FFTSPEC16 128

/*VAD*/
#define NB_FRAME_THRESHOLD_LTE 10
#define LAMBDA_LTE 0.97
#define SNR_THRESHOLD_UPD_LTE 20
#define ENERGY_FLOOR 80
#define MIN_FRAME 10
#define lambdaLTEhigherE 0.99
#define SNR_THRESHOLD_VAD 15
#define MIN_SPEECH_FRAME_HANGOVER 4
#define HANGOVER 15

/* Wiener filter design */
#define NB_FRAME_THRESHOLD_NSE 100
#define LAMBDA_NSE 0.99f
#define EPS  1e-16f
#define BETA 0.98f
#define NTH 0.079432823

/*MelFilter*/
#define NUM_CHANNELS 23
#define FL 17
#define FILTERLENGTH 118

static int append=0;

static float RefCep[NUM_CEP_COEFF-1] = { -6.618909f, 0.198269f, -0.740308f, 0.055132f, -0.227086f,
   0.144280f, -0.112451f, -0.146940f, -0.327466f, 0.134571f, 0.027884f, -0.114905f} ;

static float FIRCoef[FILTERLENGTH]={0.000189f, 0.000096f, -0.000500f, -0.001071f, -0.000714f,
 0.000308f, 0.000555f, -0.000362f, -0.000835f, 0.000184f, 0.001069f, 0.000068f, -0.001302f,
 -0.000448f, 0.001469f, 0.000948f, -0.001525f, -0.001555f, 0.001421f, 0.002240f, -0.001112f,
 -0.002957f, 0.000560f, 0.003644f, 0.000266f, -0.004225f, -0.001374f, 0.004611f, 0.002755f,
 -0.004706f, -0.004375f, 0.004411f, 0.006175f, -0.003626f, -0.008065f, 0.002260f, 0.009932f,
 -0.000230f, -0.011631f, -0.002537f, 0.012990f, 0.006105f, -0.013809f, -0.010542f, 0.013844f,
 0.015940f, -0.012786f, -0.022471f, 0.010192f, 0.030493f, -0.005322f, -0.040853f, -0.003360f,
 0.055801f, 0.020003f, -0.083066f, -0.061967f, 0.172388f, 0.424683f, 0.424683f, 0.172388f,
 -0.061967f, -0.083066f, 0.020003f, 0.055801f, -0.003360f, -0.040853f, -0.005322f, 0.030493f,
 0.010192f, -0.022471f, -0.012786f, 0.015940f, 0.013844f, -0.010542f, -0.013809f, 0.006105f,
 0.012990f, -0.002537f, -0.011631f, -0.000230f, 0.009932f, 0.002260f, -0.008065f, -0.003626f,
 0.006175f, 0.004411f, -0.004375f, -0.004706f, 0.002755f, 0.004611f, -0.001374f, -0.004225f,
 0.000266f, 0.003644f, 0.000560f, -0.002957f, -0.001112f, 0.002240f, 0.001421f, -0.001555f,
 -0.001525f, 0.000948f, 0.001469f, -0.000448f, -0.001302f, 0.000068f, 0.001069f, 0.000184f,
 -0.000835f, -0.000362f, 0.000555f, 0.000308f, -0.000714f, -0.001071f, -0.000500f, 0.000096f,
 0.000189f};

static Ipp32f pLambdaNSE[]={0.000000f,0.500000f,0.666667f,0.750000f,0.800000f,0.833333f,0.857143f,0.875000f,
  0.888889f,0.900000f,0.909091f,0.916667f,0.923077f,0.928571f,0.933333f,0.937500f,0.941176f,0.944444f,0.947368f,
  0.950000f,0.952381f,0.954545f,0.956522f,0.958333f,0.960000f,0.961538f,0.962963f,0.964286f,0.965517f,0.966667f,
  0.967742f,0.968750f,0.969697f,0.970588f,0.971429f,0.972222f,0.972973f,0.973684f,0.974359f,0.975000f,0.975610f,
  0.976190f,0.976744f,0.977273f,0.977778f,0.978261f,0.978723f,0.979167f,0.979592f,0.980000f,0.980392f,0.980769f,
  0.981132f,0.981481f,0.981818f,0.982143f,0.982456f,0.982759f,0.983051f,0.983333f,0.983607f,0.983871f,0.984127f,
  0.984375f,0.984615f,0.984848f,0.985075f,0.985294f,0.985507f,0.985714f,0.985915f,0.986111f,0.986301f,0.986486f,
  0.986667f,0.986842f,0.987013f,0.987179f,0.987342f,0.987500f,0.987654f,0.987805f,0.987952f,0.988095f,0.988235f,
  0.988372f,0.988506f,0.988636f,0.988764f,0.988889f,0.989011f,0.989130f,0.989247f,0.989362f,0.989474f,0.989583f,
  0.989691f,0.989796f,0.989899f};

struct VADN{
 int nbSpeechFrame;
 float Eloglowtrack;
 char flagVAD;
 int hangOver;
 float pNoise16[KFB16];
};


struct s16Khz{
    IppsFBankState_32f* pFBank16;
   float dataHP[560];
   struct VADN vad16;
};

struct NoiseReduction{
    IppsFBankState_32f* pFBank;
    IppsFFTSpec_R_32f* ctxFFT;
    float winHannCoeff[WINHANNSIZE];
    float winHannFilter[FL];
    int FFTOrder;
   float pMulCoeff[NUM_CHANNELS+2];
   float **pIDCT;
    float pPSDprev_1[FFTSPEC];
    float pPSDprev_2[FFTSPEC];
   float pDenPrev_1[FFTSPEC];
   float pDenPrev_2[FFTSPEC];
    float pNoisePrev_2[FFTSPEC];
    float pNoiseTn[FFTSPEC];
    float pNoiseTnPrev_1[FFTSPEC];
   float pBStateBig[640+FILTERLENGTH];
    float pBStateBuf[960];
   float pFFT[FFTSIZE*6];
    float Eden,Eden1,Eden2;
    float SNRlowPrev, SNRlow;
   float agfPrev;
   float pSrc0, Dst0;
   int Cur_TPrpocess;
   int tail;
   int start;
   int end;
   struct VADN vad;
   struct s16Khz s16;
};

struct s11Khz{
    IppsResamlingPolyphaseFixed_16s **ppState;
    int history;
    double time;
    int lastread;
    short *p11;
    int len;
};

struct EncoderStruct{
    IppsFBankState_32f* pFBank;
    IppsDCTLifterState_32f* pDCTLifter;
    IppsCdbkState_32f  **ppCdbkState;
     IppsFFTSpec_R_32f* ctxFFT;
    float bias[NUM_CEP_COEFF-1];
    struct s11Khz s11;
    struct NoiseReduction noise;
    char *pVadMem;
    float *workBuffer;
    unsigned char pIndexVQBuffer[2*NUM_CODEBOOK];
    float *pFeatBuffer;
    float *pFeatCyclicBuf;
    float *HammingWindow;
    MFrame *pFrame;
    int FFTOrder;
    int FrameLength;
    int FrameShift;
    int FFTLength;
    int numCepCoeff;
    int numChannels;
    float Dst0;
    float pSrc0;
    float preFloat;
    int curPosition;
    AuroraDataType EncoderOutput;
    AuroraDataType EncoderInput;
    AuroraRate freq;
    double weight_c0;
    double weight_logE;
    int iCountFrame;
    int NumberFrame;
    int mframeCounter;
    int crc;
    int BufferData;
    int Curr;
    int Prev;
    int Last;
    int Start;
    int BufferSize;
    int done;
    int VadFrame;
};

void SpecSubHighFreqBands (AuroraEncoder *pCodec, float *pDataInOut, float *pHPBands, int t ){

  int i;
  int flagVAD;
  float lambdaNSE;
  float Elog, Eloglowtrack;

  Eloglowtrack = pCodec->noise.s16.vad16.Eloglowtrack;

  if (t < NB_FRAME_THRESHOLD_NSE){
    lambdaNSE = pLambdaNSE[t-1];
  }
  else
    lambdaNSE = LAMBDA_NSE;

  Elog = 0.0f;
  for (i=0 ; i<KFB16 ; i++)
    Elog += pDataInOut[i];

  if (Elog > 0.001)
    ippsLn_32f_I(&Elog,1);
  else
    Elog = -6.90776f;

  if (((Elog - Eloglowtrack) < 1.2) || (t < 10)){
     if (t < 10){
        Eloglowtrack = (1 - lambdaNSE) * Elog + lambdaNSE * Eloglowtrack;
     }else{
        if (Elog < Eloglowtrack)
           Eloglowtrack = 0.02f * Elog + 0.98f * Eloglowtrack;
          else
           Eloglowtrack = 0.005f * Elog + 0.995f *  Eloglowtrack;
     }
  }

  if ((Elog - Eloglowtrack) > 2.2f){
      flagVAD = 1;
      pCodec->noise.s16.vad16.nbSpeechFrame++;
  }else{
     if (pCodec->noise.s16.vad16.nbSpeechFrame > MIN_SPEECH_FRAME_HANGOVER)
        pCodec->noise.s16.vad16.hangOver = 5;
       pCodec->noise.s16.vad16.nbSpeechFrame = 0;
      if (pCodec->noise.s16.vad16.hangOver != 0){
         pCodec->noise.s16.vad16.hangOver--;
         flagVAD = 1;
      } else
         flagVAD = 0;
  }

  if (flagVAD == 0){
     for (i=0 ; i<KFB16 ; i++){
        pCodec->noise.s16.vad16.pNoise16 [i] = (1-lambdaNSE) * pCodec->noise.s16.vad16.pNoise16 [i] + lambdaNSE * pDataInOut [i];
     }
  }

  for (i=0 ; i<KFB16 ; i++){
     pHPBands[i] = IPP_MAX(pDataInOut [i] - 1.5f * pCodec->noise.s16.vad16.pNoise16 [i], 0.1f * pDataInOut [i]);
  }
  pCodec->noise.s16.vad16.Eloglowtrack = Eloglowtrack;
  pCodec->noise.s16.vad16.flagVAD = flagVAD;

}


/* Functions for noise reduction block */
/* Copy buffers for noise reduction */
void CopyBuffers(AuroraEncoder *pCodec,short *pInputSignal, int offset, int InputLength){
   ippsConvert_16s32f(pInputSignal, pCodec->noise.pBStateBig+offset+append,
           InputLength);
   pCodec->noise.start = offset;
   pCodec->noise.end = InputLength;
}

/* Prepare buffers for perform noise reduction and count number frame */
int PrepareForCalculation(AuroraEncoder *pCodec, short *pInputSignal, int InputLength){
   int FrameCounter;
   int CurLen = InputLength;
   float *pBState_2 = pCodec->noise.pBStateBuf+320;
   float *pBstate_1 = pBState_2+320;
   if(pCodec->noise.Cur_TPrpocess < 1){
      if(InputLength+pCodec->noise.tail<pCodec->FrameShift*3){
         CopyBuffers(pCodec,pInputSignal,pCodec->FrameShift+pCodec->noise.tail,InputLength);
         pCodec->noise.tail+=InputLength;
         return 0;
      }
      CopyBuffers(pCodec,pInputSignal,pCodec->noise.tail+pCodec->FrameShift,pCodec->FrameShift*3 - pCodec->noise.tail);
      pCodec->noise.start = pCodec->FrameShift;
      pCodec->noise.end = pCodec->FrameShift*3;

      if(pCodec->freq == r16KHz){
         ippsLowHighFilter_Aurora_32f(pCodec->noise.pBStateBig+160,
            pBstate_1+80, pCodec->noise.s16.dataHP+320, 160, FIRCoef, FILTERLENGTH);

         ippsLowHighFilter_Aurora_32f(pCodec->noise.pBStateBig+320,
            pBstate_1+160, pCodec->noise.s16.dataHP+400, 160, FIRCoef, FILTERLENGTH);
      }

      CurLen = InputLength+pCodec->noise.tail;

      pCodec->noise.tail = pCodec->noise.tail + InputLength - pCodec->FrameShift*3;

      FrameCounter = (CurLen)/pCodec->FrameShift-1;
   }
   else{
      if(InputLength+pCodec->noise.tail < pCodec->FrameShift){
         CopyBuffers(pCodec,pInputSignal,3*pCodec->FrameShift+pCodec->noise.tail,InputLength);
         pCodec->noise.tail+=InputLength;
         return 0;
      }
      CopyBuffers(pCodec,pInputSignal,3*pCodec->FrameShift+pCodec->noise.tail,pCodec->FrameShift - pCodec->noise.tail);
      CurLen = InputLength+pCodec->noise.tail;
      FrameCounter = (CurLen )/pCodec->FrameShift;
      pCodec->noise.tail = CurLen - pCodec->FrameShift;
      pCodec->noise.start = pCodec->FrameShift*3;
      pCodec->noise.end = pCodec->FrameShift;

      if(CurLen - (FrameCounter-1)*pCodec->FrameShift >= pCodec->FrameShift)
         FrameCounter++;
   }
   return FrameCounter;
}


/*VAD for noise estimation (VADNest)*/
char VADNest(struct VADN *vad,int tc, float *pBuffer){
    float frameEn;
   float lambdaLTE;
    float sum=0.0f;

    if( (tc) < NB_FRAME_THRESHOLD_LTE)
        lambdaLTE = 1 - 1.0f/(tc);
    else
        lambdaLTE = (float)LAMBDA_LTE;

    ippsDotProd_32f(pBuffer,pBuffer,FRAMESHIFT,&sum);
    sum+=64.0f;
   ippsLn_32f_I(&sum,1);

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品视频1区2区| 日韩一级成人av| 久久精品国内一区二区三区| 国产女人aaa级久久久级 | 石原莉奈一区二区三区在线观看| 久久久久久久性| 欧美日韩国产一二三| eeuss鲁片一区二区三区在线看| 日本aⅴ亚洲精品中文乱码| 亚洲黄色录像片| 中文字幕一区在线观看| 精品国产露脸精彩对白 | 欧美性感一区二区三区| 高清不卡在线观看av| 日本成人中文字幕| 一区二区三区不卡在线观看| 中文成人av在线| 久久精品视频一区| 欧美成人精品1314www| 欧美日韩国产片| 成人综合婷婷国产精品久久| 日韩av高清在线观看| 亚洲成av人片在线观看无码| 亚洲精品一卡二卡| 国产精品嫩草久久久久| 国产精品久久久久影视| 国产亚洲短视频| 久久一区二区三区四区| xnxx国产精品| 久久综合网色—综合色88| 欧美一区二区三区四区高清| 欧美日韩不卡一区二区| 欧美视频一区二区三区| 欧美日韩精品免费| 欧美精品在线一区二区| 5月丁香婷婷综合| 在线播放中文字幕一区| 日韩一区二区三区高清免费看看| 欧美一区二区三区免费视频 | 884aa四虎影成人精品一区| 欧美日韩美女一区二区| 欧美日韩专区在线| 欧美日韩精品免费观看视频| 欧美日韩高清一区| 日韩三级中文字幕| 欧美精品一区二区在线观看| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 欧美日韩一区精品| 9191国产精品| 欧美大白屁股肥臀xxxxxx| 欧美tk丨vk视频| 久久亚洲二区三区| 国产精品毛片久久久久久| 国产精品久久久久永久免费观看 | 欧美妇女性影城| 欧美肥大bbwbbw高潮| 91精品国产91热久久久做人人| 欧美一级理论性理论a| 久久综合狠狠综合久久激情| 日本一区二区三区电影| 亚洲三级在线免费观看| 亚洲18影院在线观看| 久久精品999| 国产成人在线看| 色久优优欧美色久优优| 91精品国产综合久久蜜臀| 337p粉嫩大胆噜噜噜噜噜91av| 中文字幕制服丝袜一区二区三区| 亚洲在线视频一区| 狠狠色2019综合网| 99r精品视频| 日韩欧美激情四射| 国产精品伦一区| 亚洲成人av一区二区| 韩国av一区二区三区| 色综合色综合色综合色综合色综合| 欧美中文字幕亚洲一区二区va在线| 欧美另类久久久品| 欧美国产日韩亚洲一区| 亚洲va国产天堂va久久en| 国产精品一区二区视频| 色综合久久88色综合天天6 | 色婷婷亚洲婷婷| 欧美变态tickle挠乳网站| 日韩美女视频19| 男女性色大片免费观看一区二区| 九一久久久久久| 欧美最新大片在线看 | 精品国产电影一区二区| 中文一区二区在线观看| 午夜精品久久久久久久久久 | 91色综合久久久久婷婷| 欧美一区二区三区四区高清| 亚洲日本在线看| 国内精品伊人久久久久av影院| 欧美在线视频全部完| 国产片一区二区| 日韩国产一二三区| 色哟哟亚洲精品| 久久精品亚洲一区二区三区浴池 | 日韩一区日韩二区| 精品一区免费av| 欧美日韩午夜在线| 亚洲欧美国产三级| 国产寡妇亲子伦一区二区| 欧美日韩中字一区| 亚洲免费观看高清完整| 成人免费高清视频在线观看| 久久综合九色综合欧美98| 婷婷成人激情在线网| 日本精品视频一区二区| 国产精品久久久久久久久久久免费看| 精品在线一区二区| 717成人午夜免费福利电影| 一区二区三区日韩欧美精品| 成人av手机在线观看| 337p粉嫩大胆色噜噜噜噜亚洲| 亚洲成人免费观看| 在线视频欧美精品| 亚洲视频1区2区| 夫妻av一区二区| 久久精品一区二区三区av| 精品一区精品二区高清| 欧美mv日韩mv国产网站| 麻豆高清免费国产一区| 91精品中文字幕一区二区三区| 香蕉久久一区二区不卡无毒影院 | 欧美久久久一区| 一区二区在线观看免费| 色婷婷av一区二区三区大白胸| 中文字幕一区二区三| 粉嫩一区二区三区在线看| 久久久一区二区三区捆绑**| 国产一区二区三区美女| wwwwxxxxx欧美| 国产精品一区二区不卡| 欧美电影免费观看完整版 | 一本色道久久综合亚洲精品按摩| 日韩毛片一二三区| 91久久香蕉国产日韩欧美9色| 亚洲天堂网中文字| 色婷婷综合激情| 一区二区国产盗摄色噜噜| 91麻豆免费看片| 亚洲一区在线观看网站| 91福利小视频| 日韩精品国产精品| 这里只有精品免费| 美女一区二区久久| 久久久99精品久久| aa级大片欧美| 午夜精品在线看| 精品日韩成人av| av男人天堂一区| 一区二区不卡在线播放| 欧美一区二区三区在线观看| 韩国成人在线视频| 亚洲欧洲一区二区三区| 欧美色综合网站| 国产在线精品免费av| 国产精品久久久久久久第一福利 | 不卡电影免费在线播放一区| 亚洲色图在线看| 欧美精品色一区二区三区| 久久66热re国产| 国产精品毛片无遮挡高清| 欧美日韩中文精品| 久久激情五月婷婷| 亚洲丝袜自拍清纯另类| 3atv一区二区三区| 国产大片一区二区| 亚洲午夜精品17c| 欧美一区二区三区思思人| 成人午夜又粗又硬又大| 亚洲一区二区三区三| 欧美精品一区二区三区在线播放| 99精品视频在线观看| 日本欧美一区二区| 国产精品久久久久四虎| 欧美午夜寂寞影院| 国产999精品久久| 日韩精品每日更新| 国产精品久久久一区麻豆最新章节| 欧美久久一二三四区| 成人精品视频一区二区三区 | 久久久久国产精品人| 在线精品观看国产| 激情国产一区二区| 夜夜嗨av一区二区三区网页| 久久精品夜夜夜夜久久| 91精品国产91热久久久做人人 | 奇米影视一区二区三区| 中文在线免费一区三区高中清不卡| 欧美美女一区二区| av电影天堂一区二区在线观看| 久久精品国产精品亚洲红杏 | 日韩av午夜在线观看| 亚洲视频一区二区在线观看| 久久这里只有精品首页| 欧美日韩在线播放三区四区|