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

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

?? encgsmamr.c

?? G.711,G.723.1,G.726,G.729,GSM CODEC C/C++ code
?? C
?? 第 1 頁 / 共 2 頁
字號(hào):
/*/////////////////////////////////////////////////////////////////////////////
//
//                  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) 2005 Intel Corporation. All Rights Reserved.
//
//     Intel(R) Integrated Performance Primitives
//     USC - Unified Speech Codec interface library
//
// By downloading and installing USC codec, 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 ipplic.htm located in the root directory of your Intel(R) IPP
// product installation for more information.
//
// A speech coding standards promoted by ITU, ETSI, 3GPP and other
// organizations. Implementations of these standards, or the standard enabled
// platforms may require licenses from various entities, including
// Intel Corporation.
//
//
// Purpose: GSMAMR speech codec: encoder API.
//
*/

#include "owngsmamr.h"

/* filter coefficients (fc = 140 Hz, coeff. b[] is divided by 2) */
static __ALIGN32 CONST short pTblCoeff_b140[3] = {1899, -3798, 1899};      /* 1/2 in Q12 */
static __ALIGN32 CONST short pTblCoeff_a140[3] = {4096, 7807, -3733};      /* Q12 */

/* Spectral expansion factors */

static __ALIGN32 CONST short pTableGamma1[4*LP_ORDER_SIZE+4] =
{
   32767, 30802, 28954, 27217, 25584, 24049, 22606, 21250, 19975, 18777, 17650,
   32767, 30802, 28954, 27217, 25584, 24049, 22606, 21250, 19975, 18777, 17650,
   32767, 30802, 28954, 27217, 25584, 24049, 22606, 21250, 19975, 18777, 17650,
   32767, 30802, 28954, 27217, 25584, 24049, 22606, 21250, 19975, 18777, 17650
};

/* pTableGamma1 differs for the 12k2 coder */
static __ALIGN32 CONST short pTableGamma1_M122[4*LP_ORDER_SIZE+4] =
{
    32767, 29491, 26542, 23888, 21499, 19349, 17414, 15672, 14105, 12694, 11425,
    32767, 29491, 26542, 23888, 21499, 19349, 17414, 15672, 14105, 12694, 11425,
    32767, 29491, 26542, 23888, 21499, 19349, 17414, 15672, 14105, 12694, 11425,
    32767, 29491, 26542, 23888, 21499, 19349, 17414, 15672, 14105, 12694, 11425
};

static __ALIGN32 CONST short pTableGamma2[4*LP_ORDER_SIZE+4] =
{
   32767, 19661, 11797, 7078, 4247, 2548, 1529, 917, 550, 330, 198,
   32767, 19661, 11797, 7078, 4247, 2548, 1529, 917, 550, 330, 198,
   32767, 19661, 11797, 7078, 4247, 2548, 1529, 917, 550, 330, 198,
   32767, 19661, 11797, 7078, 4247, 2548, 1529, 917, 550, 330, 198
};

GSMAMR_CODECFUN( APIGSMAMR_Status, apiGSMAMREncoder_GetSize,
         (GSMAMREncoder_Obj* encoderObj, unsigned int *pCodecSize))
{
   if(NULL == encoderObj)
      return APIGSMAMR_StsBadArgErr;
   if(NULL == pCodecSize)
      return APIGSMAMR_StsBadArgErr;
   if(encoderObj->objPrm.key != DEC_KEY)
      return APIGSMAMR_StsNotInitialized;

   *pCodecSize = encoderObj->objPrm.objSize;
   return APIGSMAMR_StsNoErr;
}


/*************************************************************************
*  Function:   apiGSMAMREncoder_Alloc
*     Enquire a size of the coder state memory
**************************************************************************/
GSMAMR_CODECFUN( APIGSMAMR_Status, apiGSMAMREncoder_Alloc,
         (const GSMAMREnc_Params *gsm_Params, unsigned int *pSizeTab))
{
   int fltSize;
   int allocSize=sizeof(GSMAMREncoder_Obj);
   ippsHighPassFilterSize_G729(&fltSize);
   allocSize += fltSize;
   if(GSMAMR_CODEC != gsm_Params->codecType)
      return APIGSMAMR_StsBadCodecType;
   ownEncDetectSize_GSMAMR(gsm_Params->mode,&allocSize);
   pSizeTab[0] =  allocSize;
   return APIGSMAMR_StsNoErr;
}

int ownDtxEncoderInit_GSMAMR(sDTXEncoderSt* dtxSt)
{
   short i;

   dtxSt->vHistoryPtr = 0;
   dtxSt->vLogEnergyIndex = 0;
   dtxSt->vLSFQntIndex = 0;
   dtxSt->a_LSPIndex[0] = 0;
   dtxSt->a_LSPIndex[1] = 0;
   dtxSt->a_LSPIndex[2] = 0;

   for(i = 0; i < DTX_HIST_SIZE; i++)
     ippsCopy_16s(TableLSPInitData, &dtxSt->a_LSPHistory[i * LP_ORDER_SIZE], LP_ORDER_SIZE);

   ippsZero_16s(dtxSt->a_LogEnergyHistory, DTX_HIST_SIZE);
   dtxSt->vDTXHangoverCt = DTX_HANG_PERIOD;
   dtxSt->vDecExpireCt = 32767;

   return 1;
}

int ownGainQuantInit_GSMAMR(sGainQuantSt *state)
{

   state->vExpPredCBGain = 0;
   state->vFracPredCBGain = 0;
   state->vExpTargetEnergy = 0;
   state->vFracTargetEnergy = 0;

   ippsZero_16s(state->a_ExpEnCoeff, 5);
   ippsZero_16s(state->a_FracEnCoeff, 5);
   state->pGainPtr = NULL;
   ippsSet_16s(MIN_ENERGY, state->a_PastQntEnergy, NUM_PRED_TAPS);
   ippsSet_16s(MIN_ENERGY_M122, state->a_PastQntEnergy_M122, NUM_PRED_TAPS);
   ippsSet_16s(MIN_ENERGY, state->a_PastUnQntEnergy, NUM_PRED_TAPS);
   ippsSet_16s(MIN_ENERGY_M122, state->a_PastUnQntEnergy_M122, NUM_PRED_TAPS);
   state->vOnSetQntGain = 0;
   state->vPrevAdaptOut = 0;
   state->vPrevGainCode = 0;
   ippsZero_16s(state->a_LTPHistoryGain,NUM_MEM_LTPG);

   return 1;
}

int ownVAD1Init_GSMAMR(IppGSMAMRVad1State *state)
{

   state->pitchFlag = 0;
   state->complexHigh = 0;
   state->complexLow = 0;
   state->complexHangTimer = 0;
   state->vadReg = 0;
   state->statCount = 0;
   state->burstCount = 0;
   state->hangCount = 0;
   state->complexHangCount = 0;

   ippsZero_16s( state->pFifthFltState, 6 );
   ippsZero_16s( state->pThirdFltState, 5 );

   ippsSet_16s(INIT_BACKGROUND_NOISE, state->pBkgNoiseEstimate, NUM_SUBBANDS_VAD);
   ippsSet_16s(INIT_BACKGROUND_NOISE, state->pPrevSignalLevel, NUM_SUBBANDS_VAD);
   ippsSet_16s(INIT_BACKGROUND_NOISE, state->pPrevAverageLevel, NUM_SUBBANDS_VAD);
   ippsZero_16s( state->pPrevSignalSublevel, NUM_SUBBANDS_VAD );

   state->corrHp = INIT_LOWPOW_SEGMENT;
   state->complexWarning = 0;

   return 1;
}

int ownVAD2Init_GSMAMR(IppGSMAMRVad2State *state)
{
    ippsZero_16s((Ipp16s *)state, sizeof(IppGSMAMRVad2State)/2);
    return 1;
}

int ownEncDetectSize_GSMAMR(int mode, int* pEncSize)
{
   //if (mode == GSMAMREncode_VAD1_Enabled)
      *pEncSize += sizeof(IppGSMAMRVad1State);
   //if (mode == GSMAMREncode_VAD2_Enabled)
      *pEncSize += sizeof(IppGSMAMRVad2State);

   return 1;
}

int ownEncoderInit_GSMAMR(GSMAMREncoder_Obj* pEnc)
{
   sEncoderState_GSMAMR *stEnc = &pEnc->stEncState;
   stEnc->vFlagDTX = pEnc->objPrm.mode;

   stEnc->pSpeechPtrNew = stEnc->a_SpeechVecOld + SPEECH_BUF_SIZE - FRAME_SIZE_GSMAMR;   /* New speech     */
   stEnc->pSpeechPtr = stEnc->pSpeechPtrNew - SUBFR_SIZE_GSMAMR;                  /* Present frame  */
   stEnc->pWindowPtr = stEnc->a_SpeechVecOld + SPEECH_BUF_SIZE - LP_WINDOW_SIZE;    /* For LPC window */
   stEnc->pWindowPtr_M122 = stEnc->pWindowPtr - SUBFR_SIZE_GSMAMR; /* EFR LPC window: no lookahead */

   stEnc->pWeightSpeechVec = stEnc->a_WeightSpeechVecOld + PITCH_MAX_LAG;
   stEnc->pExcVec = stEnc->a_ExcVecOld + PITCH_MAX_LAG + FLT_INTER_SIZE;
   stEnc->pZeroVec = stEnc->a_ZeroVec + LP1_ORDER_SIZE;
   stEnc->pErrorPtr = stEnc->a_MemoryErr + LP_ORDER_SIZE;
   stEnc->pImpResVec = &stEnc->a_ImpResVec[0];

   ippsZero_16s(stEnc->a_SpeechVecOld, SPEECH_BUF_SIZE);
   ippsZero_16s(stEnc->a_ExcVecOld,PITCH_MAX_LAG + FLT_INTER_SIZE);
   ippsZero_16s(stEnc->a_WeightSpeechVecOld,PITCH_MAX_LAG);
   ippsZero_16s(stEnc->a_MemorySyn,LP_ORDER_SIZE);
   //ippsZero_16s(stEnc->a_Memory_W1,LP_ORDER_SIZE);
   ippsZero_16s(stEnc->a_Memory_W0,LP_ORDER_SIZE);
   ippsZero_16s(stEnc->a_MemoryErr,LP_ORDER_SIZE);
   ippsZero_16s(stEnc->pZeroVec,SUBFR_SIZE_GSMAMR);

   ippsSet_16s(40, stEnc->a_LTPStateOld, 5);

   ippsZero_16s(stEnc->a_SubState, (LP_ORDER_SIZE + 1));
   stEnc->a_SubState[0] = 4096;

   ippsCopy_16s(TableLSPInitData, &stEnc->a_LSP_Old[0], LP_ORDER_SIZE);
   ippsCopy_16s(stEnc->a_LSP_Old, stEnc->a_LSPQnt_Old, LP_ORDER_SIZE);
   ippsZero_16s(stEnc->a_PastQntPredErr,LP_ORDER_SIZE);

   stEnc->vTimePrevSubframe = 0;

   ownGainQuantInit_GSMAMR(&stEnc->stGainQntSt);

   stEnc->vTimeMedOld = 40;
   stEnc->vFlagVADState = 0;
   //stEnc->wght_flg = 0;

   stEnc->vCount = 0;
   ippsZero_16s(stEnc->a_GainHistory, PG_NUM_FRAME);    /* Init Gp_Clipping */

  // if (stEnc->vFlagDTX == GSMAMREncode_VAD1_Enabled)
      ownVAD1Init_GSMAMR((IppGSMAMRVad1State*)stEnc->pVAD1St);
  // if (stEnc->vFlagDTX == GSMAMREncode_VAD2_Enabled)
      ownVAD2Init_GSMAMR((IppGSMAMRVad2State*)stEnc->pVAD2St);
   ownDtxEncoderInit_GSMAMR(&stEnc->stDTXEncState);

   stEnc->vFlagSharp = PITCH_SHARP_MIN;
   stEnc->vLagCountOld = 0;
   stEnc->vLagOld = 0;
   stEnc->vFlagTone = 0;
   stEnc->vBestHpCorr = INIT_LOWPOW_SEGMENT;

   return 1;
}
GSMAMR_CODECFUN( APIGSMAMR_Status, apiGSMAMREncoder_Mode,
                (GSMAMREncoder_Obj* encoderObj, unsigned int mode))
{
   encoderObj->objPrm.mode = mode;
   encoderObj->stEncState.vFlagDTX = mode;
   return APIGSMAMR_StsNoErr;
}
/*************************************************************************
*  Function:   apiGSMAMREncoder_Init
*     Initializes coder state memory
**************************************************************************/
GSMAMR_CODECFUN( APIGSMAMR_Status, apiGSMAMREncoder_Init,
                (GSMAMREncoder_Obj* encoderObj, unsigned int mode))
{
   int fltSize;
   IPP_ALIGNED_ARRAY(16, Ipp16s, abEnc, 6);
   int obj_size = sizeof(GSMAMREncoder_Obj);
   ippsZero_16s((short*)encoderObj,sizeof(GSMAMREncoder_Obj)>>1) ;
   encoderObj->objPrm.mode = mode;
   encoderObj->objPrm.key = ENC_KEY;
   encoderObj->preProc = (char*)encoderObj + sizeof(GSMAMREncoder_Obj);
   ippsHighPassFilterSize_G729(&fltSize);
   obj_size += fltSize;
   ownEncDetectSize_GSMAMR(mode,&obj_size);
   encoderObj->stEncState.pVAD1St = (char*)encoderObj->preProc + fltSize;
   fltSize = sizeof(IppGSMAMRVad1State);
   encoderObj->stEncState.pVAD2St = (char*)encoderObj->stEncState.pVAD1St + fltSize;
   obj_size += fltSize;
   encoderObj->objPrm.objSize = obj_size;

   abEnc[0] = pTblCoeff_a140[0];
   abEnc[1] = pTblCoeff_a140[1];
   abEnc[2] = pTblCoeff_a140[2];
   abEnc[3] = pTblCoeff_b140[0];
   abEnc[4] = pTblCoeff_b140[1];
   abEnc[5] = pTblCoeff_b140[2];
   ownEncoderInit_GSMAMR(encoderObj);
   ippsHighPassFilterInit_G729(abEnc, encoderObj->preProc);

   return APIGSMAMR_StsNoErr;
}
/*************************************************************************
*  Function:   apiGSMAMREncode
**************************************************************************/

GSMAMR_CODECFUN(  APIGSMAMR_Status, apiGSMAMREncode,
         (GSMAMREncoder_Obj* encoderObj,const short* src,  GSMAMR_Rate_t rate,
          unsigned char* dst, int *pVad ))
{
   IPP_ALIGNED_ARRAY(16, short, pSynthVec, FRAME_SIZE_GSMAMR);        /* Buffer for synthesis speech           */
   IPP_ALIGNED_ARRAY(16, short, pParamVec, MAX_NUM_PRM);
   short *pParamPtr = pParamVec;
   short *pNewSpeech = encoderObj->stEncState.pSpeechPtrNew;

   if(NULL==encoderObj || NULL==src || NULL ==dst )
      return APIGSMAMR_StsBadArgErr;
   if(0 >= encoderObj->objPrm.objSize)
      return APIGSMAMR_StsNotInitialized;
   if(rate > GSMAMR_RATE_DTX  || rate < 0)
      return APIGSMAMR_StsBadArgErr;
   if(ENC_KEY != encoderObj->objPrm.key)
      return APIGSMAMR_StsBadCodecType;
   encoderObj->rate = rate;

   /* filter + downscaling */
   ippsCopy_16s(src, pNewSpeech, FRAME_SIZE_GSMAMR);
   ippsHighPassFilter_G729_16s_ISfs(pNewSpeech, FRAME_SIZE_GSMAMR, 12, encoderObj->preProc);

   /* Call the speech encoder */
   ownEncode_GSMAMR(&encoderObj->stEncState, encoderObj->rate, pParamPtr, pVad, pSynthVec);

   if(!*pVad) rate = GSMAMR_RATE_DTX;
   ownPrm2Bits_GSMAMR(pParamVec, dst, rate);

   return APIGSMAMR_StsNoErr;
}

/***************************************************************************
 * Function: ownEncode_GSMAMR
 ***************************************************************************/
int ownEncode_GSMAMR(sEncoderState_GSMAMR *encSt,GSMAMR_Rate_t rate, short *pAnaParam,
                     int *pVad, short *pSynthVec)
{
   /* LPC coefficients */
   IPP_ALIGNED_ARRAY(16, short, A_t, (LP1_ORDER_SIZE) * 4);
   IPP_ALIGNED_ARRAY(16, short, Aq_t, (LP1_ORDER_SIZE) * 4);
   short *A, *Aq;
   IPP_ALIGNED_ARRAY(16, short, pNewLSP, 2*LP_ORDER_SIZE);

   IPP_ALIGNED_ARRAY(16, short, pPitchSrch, SUBFR_SIZE_GSMAMR);

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区在线看| 九色综合狠狠综合久久| 2017欧美狠狠色| 91视频观看视频| 激情综合色播激情啊| 亚洲欧美日韩成人高清在线一区| 日韩免费性生活视频播放| 91国模大尺度私拍在线视频| 国产精品99久久久久久似苏梦涵| 夜夜夜精品看看| 国产日韩欧美一区二区三区综合| 欧美日韩精品一区二区天天拍小说 | 久久99精品国产.久久久久| 亚洲人成精品久久久久| 国产日韩欧美精品一区| 精品国产亚洲一区二区三区在线观看| 色婷婷av一区| 丰满少妇在线播放bd日韩电影| 蜜桃一区二区三区在线观看| 夜夜嗨av一区二区三区四季av| 欧美极品少妇xxxxⅹ高跟鞋| 日韩精品一区二区三区在线播放 | 五月婷婷另类国产| 国产精品久久久久久久久免费丝袜 | 成人久久18免费网站麻豆| 中文字幕在线一区二区三区| 亚洲天堂久久久久久久| 亚洲bt欧美bt精品777| 日本 国产 欧美色综合| 国产99久久久国产精品免费看| 91小宝寻花一区二区三区| 91精品麻豆日日躁夜夜躁| 久久精品日韩一区二区三区| 一区二区三区精品久久久| 蜜桃av一区二区| 99久久er热在这里只有精品15| 在线电影院国产精品| 国产精品久久久久久亚洲毛片| 天堂资源在线中文精品| 成人免费视频视频| 欧美三级三级三级| 国产精品全国免费观看高清| 日韩成人伦理电影在线观看| 色女孩综合影院| 欧美电影免费观看高清完整版| 亚洲伦理在线免费看| 国产精品888| 欧美一区二区三区精品| 亚洲精品高清在线观看| 成人精品小蝌蚪| 精品久久久久久亚洲综合网| 亚洲成人精品在线观看| 9色porny自拍视频一区二区| 亚洲精品在线免费观看视频| 亚洲伊人伊色伊影伊综合网| 成人网男人的天堂| 26uuu色噜噜精品一区| 日韩va欧美va亚洲va久久| 91激情在线视频| 亚洲日本乱码在线观看| 大陆成人av片| 国产性天天综合网| 国产麻豆9l精品三级站| 欧美videofree性高清杂交| 香蕉久久一区二区不卡无毒影院| 色婷婷亚洲精品| 亚洲乱码日产精品bd| 色婷婷激情久久| 亚洲精品国产视频| 日本久久电影网| 亚洲一区二区五区| 91精彩视频在线| 亚洲愉拍自拍另类高清精品| 欧美视频一二三区| 日日摸夜夜添夜夜添精品视频| 欧美性xxxxx极品少妇| 一级女性全黄久久生活片免费| 在线欧美小视频| 亚洲国产你懂的| 欧美电影在哪看比较好| 蜜桃在线一区二区三区| 欧美精品一区二区三区蜜臀| 国产精品自在在线| 中文字幕欧美日韩一区| 91丨九色丨国产丨porny| 亚洲综合色噜噜狠狠| 欧美精品一二三| 韩国精品主播一区二区在线观看| 久久久久久久久99精品| 91在线国产观看| 亚洲国产精品久久久男人的天堂| 欧美高清www午色夜在线视频| 欧美a级一区二区| 国产亚洲女人久久久久毛片| 91香蕉视频在线| 婷婷六月综合网| 久久女同性恋中文字幕| 91在线国产福利| 日韩va欧美va亚洲va久久| 久久久久久久精| 日本二三区不卡| 美女视频黄a大片欧美| 国产精品无遮挡| 欧美日韩高清一区二区不卡| 国产黄色精品网站| 亚洲电影在线免费观看| 久久综合精品国产一区二区三区| 99久久久国产精品免费蜜臀| 亚洲成av人在线观看| 国产亚洲欧美在线| 欧美另类z0zxhd电影| 东方aⅴ免费观看久久av| 天堂蜜桃91精品| 国产精品二三区| 欧美mv日韩mv| 欧美日韩三级在线| 成人av在线一区二区| 麻豆国产精品视频| 亚洲另类中文字| 久久久精品欧美丰满| 欧美精品少妇一区二区三区| av午夜精品一区二区三区| 蜜臀久久久久久久| 亚洲免费av观看| 国产亚洲成av人在线观看导航| 欧美酷刑日本凌虐凌虐| 91农村精品一区二区在线| 国产乱码精品一区二区三 | 欧美极品另类videosde| 日韩三级免费观看| 欧美亚洲高清一区二区三区不卡| 国产激情视频一区二区在线观看| 日本亚洲欧美天堂免费| 午夜精品久久一牛影视| 亚洲女同ⅹxx女同tv| 国产精品妹子av| 久久久综合精品| 欧美tickling挠脚心丨vk| 欧美精品一二三| 在线不卡a资源高清| 欧美亚洲高清一区| 色琪琪一区二区三区亚洲区| 成人妖精视频yjsp地址| 国产jizzjizz一区二区| 国产麻豆精品在线观看| 国产精品一区二区你懂的| 韩国欧美国产1区| 国产一区二区精品久久| 国产精品99久久久久久有的能看| 国内精品国产三级国产a久久 | 久久久精品日韩欧美| 久久一夜天堂av一区二区三区| 欧美成人a∨高清免费观看| 欧美成人精品3d动漫h| 日韩午夜激情电影| 精品少妇一区二区三区日产乱码| 日韩美女天天操| 久久精品视频在线免费观看| 国产精品色婷婷| 亚洲精品欧美在线| 日韩电影网1区2区| 久久99九九99精品| 国产盗摄一区二区三区| 波多野结衣亚洲| 欧美色视频在线| 91精品国产综合久久精品| 日韩欧美三级在线| 国产视频一区二区在线| 亚洲欧美一区二区视频| 亚洲一区二区在线免费观看视频| 婷婷成人综合网| 国产美女精品一区二区三区| 91亚洲午夜精品久久久久久| 欧美日韩视频第一区| 久久久久久久久久久久久女国产乱 | 欧美人与禽zozo性伦| 日韩一级在线观看| 国产精品污污网站在线观看| 一区二区在线观看免费| 麻豆成人久久精品二区三区红 | 欧美激情综合在线| 亚洲国产日韩一级| 国产精品一二三四五| 在线精品视频免费播放| 日韩欧美一区二区免费| 国产精品国产自产拍高清av| 午夜伊人狠狠久久| 高清国产午夜精品久久久久久| 欧美体内she精高潮| 国产女人18毛片水真多成人如厕 | 欧美私模裸体表演在线观看| 日韩欧美一级精品久久| 亚洲视频在线观看三级| 日韩精品乱码av一区二区| 成a人片亚洲日本久久| 制服丝袜亚洲网站| 日韩毛片一二三区| 国产乱码精品一区二区三区忘忧草| 欧洲在线/亚洲| 国产精品久久免费看|