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

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

?? decgsmamr.c

?? G.711,G.723.1,G.726,G.729,GSM CODEC C/C++ code
?? C
?? 第 1 頁 / 共 3 頁
字號:
GSMAMR_CODECFUN( APIGSMAMR_Status, apiGSMAMRDecoder_Mode, (GSMAMRDecoder_Obj* decoderObj, unsigned int mode))
{
   decoderObj->objPrm.mode = mode;
   return APIGSMAMR_StsNoErr;
}

static int ownDecode_GSMAMR(sDecoderState_GSMAMR *decState,  GSMAMR_Rate_t rate, short *pSynthParm,
    enum enDTXStateType newDTXState, RXFrameType frameType, short *pSynthSpeech, short *pA_LP);

/*************************************************************************
* apiGSMAMRDecode()
*   Decodes one frame: bitstream -> pcm audio
**************************************************************************/
GSMAMR_CODECFUN( APIGSMAMR_Status, apiGSMAMRDecode,
         (GSMAMRDecoder_Obj* decoderObj,const unsigned char* src, GSMAMR_Rate_t rate,
          RXFrameType rx_type, short* dst))
{
   IPP_ALIGNED_ARRAY(16, short, Az_dec, LP_ALL_FRAME);         /* Decoded Az for post-filter          */
   IPP_ALIGNED_ARRAY(16, short, prm_buf, MAX_NUM_PRM);
   short *prm = prm_buf;
   IPP_ALIGNED_ARRAY(16, short, tmp_synth, 160);
   enum enDTXStateType newDTXState;

   if(NULL==decoderObj || NULL==src || NULL ==dst)
      return APIGSMAMR_StsBadArgErr;
   if(0 >= decoderObj->objPrm.objSize)
      return APIGSMAMR_StsNotInitialized;
   if(rate > GSMAMR_RATE_DTX  || rate < 0)
      return APIGSMAMR_StsBadArgErr;
   if(DEC_KEY != decoderObj->objPrm.key)
      return APIGSMAMR_StsBadCodecType;
   decoderObj->rate = rate;
   newDTXState = ownRX_DTX_Handler_GSMAMR(decoderObj, rx_type);

   /* Synthesis */
   if( rx_type == RX_SID_BAD || rx_type == RX_SID_UPDATE) {
      ownBits2Prm_GSMAMR(src,prm,GSMAMR_RATE_DTX);
   }else{
      ownBits2Prm_GSMAMR(src,prm,decoderObj->rate);
   }
   ownDecode_GSMAMR(&decoderObj->stDecState, decoderObj->rate, prm,
          newDTXState, rx_type, (short*)dst, Az_dec);
   /* Post-filter */
   ippsPostFilter_GSMAMR_16s(Az_dec, (short*)dst, &decoderObj->stPFiltState.vMemPrevRes,
                             &decoderObj->stPFiltState.vPastGainScale,
                             decoderObj->stPFiltState.a_SynthBuf,
                             decoderObj->stPFiltState.a_MemSynPst,
                             tmp_synth, mode2rates[rate]);
   ippsCopy_16s(tmp_synth, (short*)dst, 160);
   /* post HP filter, and 15->16 bits */
   ippsHighPassFilter_G729_16s_ISfs((short*)dst, FRAME_SIZE_GSMAMR, 13, decoderObj->postProc);
   return APIGSMAMR_StsNoErr;
}

/***************************************************************************
*  Function: ownDecode_GSMAMR     Speech decoder routine.
***************************************************************************/
/*
*  decState  [in/out] -  State variables
*  rate          [in] - GSMAMR rate
*  pSynthParm    [in] - Vector of synthesis parameters (length of vector - PRM_SIZE)
*  newDTXState   [in] - State of DTX
*  frameType    [in] - Received frame type
*  pSynthSpeech [out] - Synthesis speech (length of vector - FRAME_SIZE_GSMAMR)
*  pA_LP        [out] - Decoded LP filter in 4 subframes (length of vector - LP_ALL_FRAME)
*/

static int ownDecode_GSMAMR(sDecoderState_GSMAMR *decState, GSMAMR_Rate_t rate, short *pSynthParm,
                            enum enDTXStateType newDTXState, RXFrameType frameType,
                            short *pSynthSpeech, short *pA_LP)
{
    /* LPC coefficients */
    short *Az;                /* Pointer on pA_LP */
    /* LSPs */
    IPP_ALIGNED_ARRAY(16, short, LspInter, SUBFR_SIZE_GSMAMR);
    /* LSFs */
    IPP_ALIGNED_ARRAY(16, short, prev_lsf, LP_ORDER_SIZE);
    IPP_ALIGNED_ARRAY(16, short, lsf_i, LP_ORDER_SIZE);
    /* Algebraic codevector */
    IPP_ALIGNED_ARRAY(16, short, code, SUBFR_SIZE_GSMAMR);
    /* excitation */
    IPP_ALIGNED_ARRAY(16, short, excp, SUBFR_SIZE_GSMAMR);
    IPP_ALIGNED_ARRAY(16, short, exc_enhanced, SUBFR_SIZE_GSMAMR);
    /* Scalars */
    short i, i_subfr;
    short T0, index, index_mr475 = 0;
    short gain_pit, gain_code, gain_code_mix, pit_sharp, pitch_fac;
    short tmp_shift, temp;
    short carefulFlag, excEnergy, subfrNr;
    int tmpRes;
    short evenSubfr = 0;
    short bfi = 0;   /* bad frame indication flag                          */
    short pdfi = 0;  /* potential degraded bad frame flag                  */
    IPP_ALIGNED_ARRAY(16, short, pDstAdptVector, SUBFR_SIZE_GSMAMR);
    sDTXDecoderSt *DTXState = &decState->dtxDecoderState;
    IppSpchBitRate irate = mode2rates[rate];

    /* find the new  DTX state  SPEECH OR DTX */
    /* function result */
    /* DTX actions */
    if (newDTXState != SPEECH)
    {
       ownDecoderInit_GSMAMR(decState,GSMAMR_RATE_DTX);
       ownDTXDecoder_GSMAMR(&decState->dtxDecoderState, decState->a_MemorySyn, decState->a_PastQntPredErr,
                            decState->a_PastLSFQnt, decState->a_PastQntEnergy, decState->a_PastQntEnergy_M122,
                            &decState->vHgAverageVar, &decState->vHgAverageCount, newDTXState, rate,
                            pSynthParm, pSynthSpeech, pA_LP);
       /* update average lsp */
       ippsLSFToLSP_GSMAMR_16s(decState->a_PastLSFQnt, decState->a_LSP_Old);
       ippsInterpolateC_NR_G729_16s_Sfs(decState->a_PastLSFQnt,EXP_CONST_016,
                                        decState->a_LSPAveraged,EXP_CONST_084,
                                        decState->a_LSPAveraged,LP_ORDER_SIZE,15);
       DTXState->eDTXPrevState = newDTXState;
       return 0;
    }
    /* SPEECH action state machine  */
    if((frameType == RX_SPEECH_BAD) || (frameType == RX_NO_DATA) || (frameType == RX_ONSET))
    {
       bfi = 1;
       if((frameType == RX_NO_DATA) || (frameType == RX_ONSET))
         ownBuildCNParam_GSMAMR(&decState->vCNGen, TableParamPerModes[rate],TableBitAllModes[rate],pSynthParm);
    }
    else if(frameType == RX_SPEECH_DEGRADED) pdfi = 1;

    if(bfi != 0)            decState->vStateMachine++;
    else if(decState->vStateMachine == 6) decState->vStateMachine = 5;
    else                     decState->vStateMachine = 0;

    if(decState->vStateMachine > 6) decState->vStateMachine = 6;
    if(DTXState->eDTXPrevState == DTX) {
       decState->vStateMachine = 5;
       decState->vPrevBadFr = 0;
    } else if (DTXState->eDTXPrevState == DTX_MUTE) {
       decState->vStateMachine = 5;
       decState->vPrevBadFr = 1;
    }

    /* save old LSFs for CB gain smoothing */
    ippsCopy_16s (decState->a_PastLSFQnt, prev_lsf, LP_ORDER_SIZE);
    /* decode LSF and generate interpolated lpc coefficients for the 4 subframes */
    ippsQuantLSPDecode_GSMAMR_16s(pSynthParm, decState->a_PastQntPredErr, decState->a_PastLSFQnt,
                                  decState->a_LSP_Old, LspInter, bfi, irate);
    ippsLSPToLPC_GSMAMR_16s(&(LspInter[0]), &(pA_LP[0]));  /* Subframe 1 */
    ippsLSPToLPC_GSMAMR_16s(&(LspInter[LP_ORDER_SIZE]), &(pA_LP[LP1_ORDER_SIZE]));  /* Subframe 2 */
    ippsLSPToLPC_GSMAMR_16s(&(LspInter[LP_ORDER_SIZE*2]), &(pA_LP[LP1_ORDER_SIZE*2]));  /* Subframe 3 */
    ippsLSPToLPC_GSMAMR_16s(&(LspInter[LP_ORDER_SIZE*3]), &(pA_LP[LP1_ORDER_SIZE*3]));  /* Subframe 4 */

    if(irate == IPP_SPCHBR_12200) pSynthParm += 5;
    else pSynthParm += 3;
    /*------------------------------------------------------------------------*
     *          Loop for every subframe in the analysis frame                 *
     *------------------------------------------------------------------------*/

    Az = pA_LP;      /* pointer to interpolated LPC parameters */
    evenSubfr = 0;
    subfrNr = -1;
    for (i_subfr = 0; i_subfr < FRAME_SIZE_GSMAMR; i_subfr += SUBFR_SIZE_GSMAMR)
    {
       subfrNr++;
       evenSubfr = 1 - evenSubfr;
       /* pitch index */
       index = *pSynthParm++;

       ippsAdaptiveCodebookDecode_GSMAMR_16s(
            index, &decState->vPrevPitchLag, &decState->vLTPLag, (decState->pExcVec - MAX_OFFSET),
            &T0, pDstAdptVector, subfrNr, bfi,
            decState->vBackgroundNoise, decState->vVoiceHangover, irate);

        if (irate == IPP_SPCHBR_12200)
        { /* MR122 */
            index = *pSynthParm++;
            if (bfi != 0)
                ownConcealGainPitch_GSMAMR(decState->a_LSFBuffer,decState->vPastGainZero, decState->vStateMachine, &gain_pit);
            else
                gain_pit = (TableQuantGainPitch[index] >> 2) << 2;
            ownConcealGainPitchUpdate_GSMAMR(decState->a_LSFBuffer, &decState->vPastGainZero,&decState->vPrevGainZero, bfi,
                                  decState->vPrevBadFr, &gain_pit);
        }
        ippsFixedCodebookDecode_GSMAMR_16s(pSynthParm, code, subfrNr, irate);

        if (irate == IPP_SPCHBR_10200) { /* MR102 */
            pSynthParm+=7;
            pit_sharp = Cnvrt_32s16s(decState->vFlagSharp << 1);
        } else if (irate == IPP_SPCHBR_12200) { /* MR122 */
            pSynthParm+=10;
            pit_sharp = Cnvrt_32s16s(gain_pit << 1);
        } else {
            pSynthParm+=2;
            pit_sharp = Cnvrt_32s16s(decState->vFlagSharp << 1);
        }

        if(T0 < SUBFR_SIZE_GSMAMR)
           ippsHarmonicFilter_16s_I(pit_sharp,T0,code+T0, (SUBFR_SIZE_GSMAMR - T0));

        if (irate == IPP_SPCHBR_4750) {
           /* read and decode pitch and code gain */
           if(evenSubfr != 0)
              index_mr475 = *pSynthParm++;        /* index of gain(s) */
           if (bfi == 0) {
              ownDecodeCodebookGains_GSMAMR(decState->a_PastQntEnergy,decState->a_PastQntEnergy_M122, irate, index_mr475, code,
                       evenSubfr, &gain_pit, &gain_code);
           } else {
              ownConcealGainPitch_GSMAMR(decState->a_LSFBuffer,decState->vPastGainZero, decState->vStateMachine, &gain_pit);
              ownConcealCodebookGain_GSMAMR(decState->a_GainBuffer,decState->vPastGainCode, decState->a_PastQntEnergy,
                            decState->a_PastQntEnergy_M122, decState->vStateMachine,&gain_code);
           }
           ownConcealGainPitchUpdate_GSMAMR(decState->a_LSFBuffer, &decState->vPastGainZero,&decState->vPrevGainZero, bfi, decState->vPrevBadFr,
                                 &gain_pit);
           ownConcealCodebookGainUpdate_GSMAMR(decState->a_GainBuffer,&decState->vPastGainCode,&decState->vPrevGainCode, bfi, decState->vPrevBadFr,
                                &gain_code);
           pit_sharp = gain_pit;
           if(pit_sharp > PITCH_SHARP_MAX) pit_sharp = PITCH_SHARP_MAX;
        }
        else if ((irate <= IPP_SPCHBR_7400) || (irate == IPP_SPCHBR_10200))
        {
            /* read and decode pitch and code gain */
            index = *pSynthParm++;                /* index of gain(s) */
            if(bfi == 0) {
               ownDecodeCodebookGains_GSMAMR(decState->a_PastQntEnergy,decState->a_PastQntEnergy_M122, irate, index, code,
                        evenSubfr, &gain_pit, &gain_code);
            } else {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色屁屁一区二区| 国产精品99久| 欧美电影一区二区| 午夜成人免费电影| 日韩欧美国产麻豆| 国内欧美视频一区二区| 久久精品日韩一区二区三区| 成人精品免费视频| 一区二区三区91| 欧美一二三四在线| 国产91清纯白嫩初高中在线观看| 国产精品传媒在线| 欧美军同video69gay| 精品制服美女久久| 亚洲欧洲精品一区二区三区不卡| 99riav一区二区三区| 午夜精品久久久久久久久久久| 91精品国产品国语在线不卡| 国产精品99久久久久久宅男| 亚洲手机成人高清视频| 91精品国产福利在线观看| 韩国av一区二区三区四区| ㊣最新国产の精品bt伙计久久| 欧洲人成人精品| 激情五月婷婷综合网| 亚洲免费在线看| 日韩一区二区在线免费观看| 成人免费视频网站在线观看| 亚洲超碰精品一区二区| 久久久国产精品不卡| 欧美日韩一区久久| 成人涩涩免费视频| 日韩福利视频网| 国产精品久久久久久亚洲伦| 69久久99精品久久久久婷婷| 成人av一区二区三区| 日韩av中文在线观看| 亚洲视频免费在线| 日韩欧美第一区| 日本精品裸体写真集在线观看 | 99久久婷婷国产| 日韩二区三区在线观看| 中文字幕亚洲电影| 久久亚洲精精品中文字幕早川悠里| 91麻豆国产精品久久| 国产一区二区久久| 日韩精品欧美成人高清一区二区| 自拍偷自拍亚洲精品播放| 精品少妇一区二区三区免费观看| 日本高清免费不卡视频| 国产91富婆露脸刺激对白| 午夜电影一区二区三区| 亚洲激情成人在线| 国产精品色噜噜| 精品日韩一区二区三区 | 首页综合国产亚洲丝袜| 国产精品福利一区| 日韩精品一区二区三区视频在线观看 | 欧美日韩在线综合| 91色.com| 91亚洲精品久久久蜜桃网站| 岛国一区二区三区| 国产露脸91国语对白| 蜜桃av一区二区三区电影| 亚洲第一av色| 亚洲第一福利一区| 亚洲一本大道在线| 亚洲综合激情小说| 亚洲欧美日本韩国| 亚洲精品乱码久久久久久黑人| 国产精品国产三级国产aⅴ入口| 久久婷婷一区二区三区| 久久综合久色欧美综合狠狠| 日韩精品一区国产麻豆| 欧美成人一区二区三区片免费 | 综合欧美亚洲日本| 国产精品麻豆视频| 中文字幕亚洲一区二区av在线| 久久久99久久| 国产午夜精品一区二区三区嫩草 | 色综合天天做天天爱| 99久久久无码国产精品| 91丨porny丨国产入口| 色婷婷亚洲综合| 欧美在线看片a免费观看| 欧美亚洲高清一区二区三区不卡| 色婷婷精品久久二区二区蜜臂av| 色播五月激情综合网| 在线免费不卡电影| 欧美午夜精品一区| 欧美一区二区精品| 久久品道一品道久久精品| 中文av一区特黄| 亚洲免费视频中文字幕| 亚洲精品亚洲人成人网| 五月激情综合网| 国产一区二区精品久久| 成人免费毛片a| 色先锋资源久久综合| 欧美人xxxx| 国产亚洲欧美日韩在线一区| 成人欧美一区二区三区小说| 亚洲成a人片在线观看中文| 日韩av中文在线观看| 国产精品亚洲第一区在线暖暖韩国 | 精品伦理精品一区| 欧美激情综合五月色丁香| 亚洲手机成人高清视频| 水野朝阳av一区二区三区| 国产一区福利在线| 91免费看视频| 欧美一区二区三区免费观看视频| 国产婷婷一区二区| 亚洲一二三四区不卡| 麻豆国产精品一区二区三区 | 91免费国产视频网站| 欧美一区二区三区四区视频| 国产日韩精品一区| 亚洲电影第三页| 国产成人av福利| 欧美顶级少妇做爰| 中文字幕一区二区三区精华液| 日韩国产精品久久| 色诱亚洲精品久久久久久| 欧美成人a∨高清免费观看| 亚洲美女偷拍久久| 国产伦精品一区二区三区在线观看 | 精品国产91乱码一区二区三区| 国产精品家庭影院| 日本欧洲一区二区| 91视频观看视频| 国产亚洲美州欧州综合国| 亚洲成人免费电影| 91啦中文在线观看| 日本一区二区免费在线观看视频| 性感美女极品91精品| 成人精品在线视频观看| 日韩免费观看高清完整版| 一区二区欧美视频| 不卡一区二区中文字幕| 欧美精品一区二区三区视频| 夜夜嗨av一区二区三区中文字幕| 国产成人自拍网| 欧美电视剧在线观看完整版| 一区二区久久久久久| 成人网在线播放| 国产午夜精品一区二区三区视频| 亚洲bt欧美bt精品| 色婷婷久久久久swag精品| 中文字幕av在线一区二区三区| 久久精品久久综合| 欧美一级日韩免费不卡| 亚洲成人在线网站| 欧美中文字幕久久| 亚洲黄一区二区三区| 91蜜桃网址入口| 国产精品麻豆网站| 成人av免费网站| 欧美激情在线一区二区三区| 国模冰冰炮一区二区| 日韩欧美一区电影| 激情小说亚洲一区| 精品福利一区二区三区| 麻豆传媒一区二区三区| 日韩欧美国产1| 精品一区二区在线播放| 日韩精品一区二区三区三区免费| 日韩av中文字幕一区二区三区| 在线观看91av| 久久国产精品99久久久久久老狼 | 99久久夜色精品国产网站| 欧美国产成人在线| 成人av手机在线观看| 亚洲免费观看在线视频| 一本到高清视频免费精品| 亚洲最大成人网4388xx| 欧美亚洲尤物久久| 日韩高清在线观看| 精品嫩草影院久久| 丁香婷婷综合网| 亚洲免费大片在线观看| 欧美日韩一区在线| 日本不卡在线视频| 精品av久久707| 国产成人精品亚洲午夜麻豆| 国产精品不卡视频| 欧美伊人久久大香线蕉综合69| 亚洲超碰97人人做人人爱| 日韩一区二区三区av| 国产夫妻精品视频| 亚洲三级在线免费观看| 欧美年轻男男videosbes| 伦理电影国产精品| 国产精品国产精品国产专区不片| 色综合色狠狠综合色| 天天免费综合色| 国产视频一区在线播放| 91福利视频久久久久| 日韩国产精品久久| 欧美激情一区二区三区不卡 |