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

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

?? encg729.c

?? G.711,G.723.1,G.726,G.729,GSM CODEC C/C++ code
?? C
?? 第 1 頁 / 共 5 頁
字號:
    encoderObj->gainNow = 0;
    encoderObj->ACFcounter = 0;
    encoderObj->speechDiff = 0;
    return;
}
void CNG_encoder(short *prevExcitat, short *prevSubfrLSPquant, short *pAq, short *pAna,
                G729Encoder_Obj *encoderObj) {
    short *seed = &encoderObj->seed;
    short VADPrev = ((VADmemory*)encoderObj->vadMem)->VADPrev;
    LOCAL_ARRAY(short, curAcf, LPF_DIM+1, encoderObj);
    LOCAL_ARRAY(int, acfInt, LPF_DIM+1, encoderObj);
    LOCAL_ARRAY(short, bidArr, LPF_DIM, encoderObj);
    LOCAL_ARRAY(short, Coeff, LPF_DIM+1, encoderObj);
    LOCAL_ARRAY(short, newLSP, LPF_DIM, encoderObj);
    LOCAL_ALIGN_ARRAY(32, short, lsp, LPF_DIM, encoderObj);
    LOCAL_ARRAY(short, lsfSid_q, LPF_DIM, encoderObj);
    LOCAL_ARRAY(short, s_ACFsum, LPF_DIM+1, encoderObj);
    LOCAL_ARRAY(int, sumMem, LPF_DIM+1, encoderObj);
    short *LPCc, energyVal, tmp1, tmp2, delay[2], foo;
    int   i, curIgain, dist, distSfs, thresh, ACnorm = encoderObj->ACnorm;
    short SIDframeCounter = encoderObj->SIDframeCounter;
    short speechDiff = encoderObj->speechDiff;
    short prevDTXEnergy = encoderObj->prevDTXEnergy;
    short sidGain = encoderObj->sidGain;
    short gainNow = encoderObj->gainNow;
    short ACFcounter = encoderObj->ACFcounter;
    short *energy = encoderObj->energy;
    short *energySfs = encoderObj->energySfs;
    short *pACF = encoderObj->pACF;
    short *ACFsfs = encoderObj->ACFsfs;
    short *reflC = encoderObj->reflC;
    short *prevCoeff = encoderObj->prevCoeff;
    short *quantLspSID = encoderObj->quantLspSID;
    short *exc = prevExcitat+L_prevExcitat;
    energy[1] = energy[0]; energySfs[1] = energySfs[0];
    Sum_G729_16s_Sfs(pACF, ACFsfs, curAcf, &energySfs[0], ACF_NOW,sumMem);
    if(curAcf[0] == 0) energy[0] = 0;
    else {
        for(i=0; i<LPF_DIM+1;i++)
            acfInt[i] = curAcf[i] << 16;
        if(ippStsOverflow == ippsLevinsonDurbin_G729B(acfInt, Coeff,bidArr,energy)) {
            ippsCopy_16s(encoderObj->prevSubfrLPC,Coeff,LPF_DIM+1);
            bidArr[0] = encoderObj->prevRC[0];
            bidArr[1] = encoderObj->prevRC[1];
        } else {
            ippsCopy_16s(Coeff,encoderObj->prevSubfrLPC,LPF_DIM+1);
            encoderObj->prevRC[0] = bidArr[0];
            encoderObj->prevRC[1] = bidArr[1];
        }
    }
    /* if 1-st frame of silence => SID frame */
    if(VADPrev != 0) {
        SIDframeCounter = 0;
        pAna[0] = 2;
        encoderObj->energyDim = 1;
        QuantSIDGain_G729B_16s(energy, energySfs, encoderObj->energyDim, &energyVal, &curIgain);

    } else {
        if(encoderObj->energyDim < GAIN_NUM) encoderObj->energyDim++;
        QuantSIDGain_G729B_16s(energy, energySfs, encoderObj->energyDim, &energyVal, &curIgain);
        ippsDotProdAutoScale_16s32s_Sfs(reflC,curAcf, LPF_DIM+1, &dist, &distSfs);
        tmp1 = ACnorm + 9;
        tmp2 = distSfs;
        tmp1 -= tmp2;
        thresh = energy[0] + ((energy[0] * 4855 + BWF_HARMONIC)>>15);
        if(tmp1<0)
            thresh >>= (- tmp1);
        else
            thresh <<= tmp1;
        if(dist > thresh) {
            speechDiff = 1;
        }
        if(Abs_16s(prevDTXEnergy - energyVal) > 2)
            speechDiff = 1;
        SIDframeCounter++;
        if(SIDframeCounter < SID_FRAME_MIN) {
            pAna[0] = 0;
        } else {
            pAna[0]=(speechDiff != 0)?2:0;
            SIDframeCounter = SID_FRAME_MIN;
        }
    }
    if(pAna[0] == 2) {
        SIDframeCounter = speechDiff = 0;
        {
            /* calculate the previous average filter */
            Sum_G729_16s_Sfs(encoderObj->ACFsum, encoderObj->ACFsumSfs, s_ACFsum, &tmp1, ACF_TOTAL,sumMem);
            if(s_ACFsum[0] == 0) {
                ippsCopy_16s(presetOldA,prevCoeff,LPF_DIM+1);
            } else {
                for(i=0; i<LPF_DIM+1;i++)
                    acfInt[i] = s_ACFsum[i] << 16;
                if(ippStsOverflow == ippsLevinsonDurbin_G729B(acfInt, prevCoeff,bidArr,&tmp1)) {
                    ippsCopy_16s(encoderObj->prevSubfrLPC,prevCoeff,LPF_DIM+1);
                    bidArr[0] = encoderObj->prevRC[0];
                    bidArr[1] = encoderObj->prevRC[1];
                } else {
                    ippsCopy_16s(prevCoeff,encoderObj->prevSubfrLPC,LPF_DIM+1);
                    encoderObj->prevRC[0] = bidArr[0];
                    encoderObj->prevRC[1] = bidArr[1];
                }
            }
        }
        ippsAutoCorr_NormE_NR_16s(prevCoeff,LPF_DIM+1,reflC,LPF_DIM+1,&ACnorm);
        ippsDotProdAutoScale_16s32s_Sfs(reflC,curAcf, LPF_DIM+1, &dist, &distSfs);
        tmp1 = ACnorm + 9;
        tmp2 = distSfs;
        tmp1 -= tmp2;
        thresh = energy[0] + ((energy[0] * 3161 + BWF_HARMONIC)>>15);
        if(tmp1<0)
            thresh >>= (- tmp1);
        else
            thresh <<= tmp1;

        if(dist <= thresh) {
            LPCc = prevCoeff;
        } else {
            LPCc = Coeff;
            ippsAutoCorr_NormE_NR_16s(Coeff,LPF_DIM+1,reflC,LPF_DIM+1,&ACnorm);
        }

        if(encoderObj->codecType==G729A_CODEC)
            ippsLPCToLSP_G729A_16s(LPCc, prevSubfrLSPquant, newLSP);
        else
            ippsLPCToLSP_G729_16s(LPCc, prevSubfrLSPquant, newLSP);
        ippsLSPToLSF_G729_16s(newLSP, lsp);
        if(lsp[0] < LSF_MIN)
            lsp[0] = LSF_MIN;
        for(i=0 ; i <LPF_DIM-1 ; i++)
            if((lsp[i+1] - lsp[i]) < (BW_EXP_FACT<<1))
                lsp[i+1] = lsp[i] + (BW_EXP_FACT<<1);
        if(lsp[LPF_DIM-1] > LSF_MAX)
            lsp[LPF_DIM-1] = LSF_MAX;
        if(lsp[LPF_DIM-1] < lsp[LPF_DIM-2])
            lsp[LPF_DIM-2] = lsp[LPF_DIM-1] - BW_EXP_FACT;
        ippsLSFQuant_G729B_16s(lsp, (Ipp16s*)(encoderObj->prevLSPfreq), lsfSid_q, &pAna[1]);

        ippsLSFToLSP_G729_16s(lsfSid_q,quantLspSID);

        prevDTXEnergy = energyVal;
        sidGain = SIDgain[curIgain];
        pAna[4] = curIgain;
    }
    if(VADPrev != 0) gainNow = sidGain;
    else {
        gainNow = ((gainNow * GAIN0) + BWF_HARMONIC) >> 15;
        gainNow +=((sidGain * GAIN1) + BWF_HARMONIC) >> 15;
    }

    if(gainNow == 0) {
        ippsZero_16s(exc,LP_FRAME_DIM);
        for(i = 0; i < LP_FRAME_DIM; i += LP_SUBFRAME_DIM)
            updateExcErr_G729(0, LP_SUBFRAME_DIM+1, encoderObj->coderErr);
    } else {
        for(i = 0;  i < LP_FRAME_DIM; i += LP_SUBFRAME_DIM) {
            int invSq;
            Ipp16s Gp;
            LOCAL_ARRAY(Ipp16s, pos, 4, encoderObj);
            LOCAL_ARRAY(Ipp16s, sign, 4, encoderObj);
            LOCAL_ALIGN_ARRAY(32, Ipp16s, excg, LP_SUBFRAME_DIM, encoderObj);
            LOCAL_ARRAY(Ipp16s,tmpArray,LP_SUBFRAME_DIM, encoderObj);
            const short *excCached;

            RandomCodebookParm_G729B_16s(seed,pos,sign,&Gp,delay);
            ippsDecodeAdaptiveVector_G729_16s_I(delay,&prevExcitat[i]);
            if(encoderObj->CNGidx > CNG_STACK_SIZE-1) { /* not cached */
                ippsRandomNoiseExcitation_G729B_16s(seed,excg,LP_SUBFRAME_DIM);
                ippsDotProd_16s32s_Sfs(excg,excg,LP_SUBFRAME_DIM,&invSq,0);
                ippsInvSqrt_32s_I(&invSq,1);
                excCached=excg;
            } else {
                *seed = cngSeedOut[encoderObj->CNGidx];
                invSq = cngInvSqrt[encoderObj->CNGidx];
                excCached=&cngCache[encoderObj->CNGidx][0];
                encoderObj->CNGidx++;
            }
            NoiseExcitationFactorization_G729B_16s(excCached,invSq,gainNow,excg,LP_SUBFRAME_DIM);
            if(ComfortNoiseExcitation_G729B_16s_I(excg,pos,sign,gainNow,Gp,&exc[i],&foo,tmpArray)<0) {
                Gp = 0;
            }
            updateExcErr_G729(Gp, delay[0], encoderObj->coderErr);
            LOCAL_ARRAY_FREE(Ipp16s,tmpArray,LP_SUBFRAME_DIM, encoderObj);
            LOCAL_ALIGN_ARRAY_FREE(32, Ipp16s, excg, LP_SUBFRAME_DIM, encoderObj);
            LOCAL_ARRAY_FREE(Ipp16s, sign, 4, encoderObj);
            LOCAL_ARRAY_FREE(Ipp16s, pos, 4, encoderObj);
        }
    }

    ippsInterpolate_G729_16s(prevSubfrLSPquant,quantLspSID,lsp,LPF_DIM);

    ippsLSPToLPC_G729_16s(lsp,&pAq[0]);
    ippsLSPToLPC_G729_16s(quantLspSID,&pAq[LPF_DIM+1]);
    ippsCopy_16s(quantLspSID,prevSubfrLSPquant,LPF_DIM);
    if(ACFcounter == 0) ACFsumUpd(encoderObj->ACFsum,encoderObj->ACFsumSfs,encoderObj->pACF,encoderObj->ACFsfs,sumMem);

    encoderObj->SIDframeCounter = SIDframeCounter;
    encoderObj->ACnorm = ACnorm;
    encoderObj->speechDiff = speechDiff;
    encoderObj->prevDTXEnergy = prevDTXEnergy;
    encoderObj->sidGain = sidGain;
    encoderObj->gainNow = gainNow;
    encoderObj->ACFcounter = ACFcounter;

    LOCAL_ARRAY_FREE(int, sumMem, LPF_DIM+1, encoderObj);
    LOCAL_ARRAY_FREE(short, s_ACFsum, LPF_DIM+1, encoderObj);
    LOCAL_ARRAY_FREE(short, lsfSid_q, LPF_DIM, encoderObj);
    LOCAL_ALIGN_ARRAY_FREE(32, short, lsp, LPF_DIM, encoderObj);
    LOCAL_ARRAY_FREE(short, newLSP, LPF_DIM, encoderObj);
    LOCAL_ARRAY_FREE(short, Coeff, LPF_DIM+1, encoderObj);
    LOCAL_ARRAY_FREE(short, bidArr, LPF_DIM, encoderObj);
    LOCAL_ARRAY_FREE(int, acfInt, LPF_DIM+1, encoderObj);
    LOCAL_ARRAY_FREE(short, curAcf, LPF_DIM+1, encoderObj);
    return;
}

void CNG_Update( short *pVal1, short pVal2, short Vad, G729Encoder_Obj *encoderObj
               ) {
    short i,*p1,*p2;
    LOCAL_ARRAY(int, sumMem, LPF_DIM+1, encoderObj);
    short *pACF = encoderObj->pACF;
    short *ACFsfs = encoderObj->ACFsfs;
    short ACFcounter = encoderObj->ACFcounter;

    p1 = pACF + ACF_DIM - 1;
    p2 = p1 - (LPF_DIM+1);
    for(i=0; i<(ACF_DIM-(LPF_DIM+1)); i++)
        *(p1--) = *(p2--);
    for(i=ACF_NOW-1; i>=1; i--)
        ACFsfs[i] = ACFsfs[i-1];
    ACFsfs[0] = -(16 + pVal2);
    for(i=0; i<LPF_DIM+1; i++)
        pACF[i] = pVal1[i];
    ACFcounter++;
    if(ACFcounter == ACF_NOW) {
        ACFcounter = 0;
        if(Vad != 0)
            ACFsumUpd(encoderObj->ACFsum,encoderObj->ACFsumSfs,encoderObj->pACF,encoderObj->ACFsfs, sumMem);
    }
    encoderObj->ACFcounter = ACFcounter;
    LOCAL_ARRAY_FREE(int, sumMem, LPF_DIM+1, encoderObj);
    return;
}
G729_CODECFUN( APIG729_Status, apiG729Encoder_InitBuff,
               (G729Encoder_Obj* encoderObj, char *buff)) {
#if !defined (NO_SCRATCH_MEMORY_USED)
    if(NULL==encoderObj || NULL==buff)
        return APIG729_StsBadArgErr;
    encoderObj->Mem.base = buff;
    encoderObj->Mem.CurPtr = encoderObj->Mem.base;
    encoderObj->Mem.VecPtr = (int *)(encoderObj->Mem.base+G729_ENCODER_SCRATCH_MEMORY_SIZE);
#endif
    return APIG729_StsNoErr;
}
static void vad_update_A(short *pAq_t, short *pAp_t, short *exc, short *speechHistory, short *val1,
                         short *wsp,  short *resFilMem0,  char* synFltw);
static void vad_update_I(short *pAq_t, short *pAp_t, short *exc, short *speech, short *val1,
                         short *wsp,  short *resFilMem0,  char* synFltw,  char* synFltw0, short *wfact1, short *wfact2,
                         short *pAp1, short *pAp2, short *resFilMem, short *error, short *pSynth, short *pGain);
static APIG729_Status G729Encode
(G729Encoder_Obj* encoderObj,const short *src, unsigned char* dst, G729Codec_Type codecType , int *frametype);
static APIG729_Status G729AEncode
(G729Encoder_Obj* encoderObj,const short *src, unsigned char* dst, int *frametype);
static APIG729_Status G729BaseEncode
(G729Encoder_Obj* encoderObj,const short *src, unsigned char* dst, int *frametype);

G729_CODECFUN(  APIG729_Status, apiG729Encode,
                (G729Encoder_Obj* encoderObj,const short *src, unsigned char* dst, G729Codec_Type codecType , int *frametype)) {
    short  baseMode, vadEnable = (encoderObj->objPrm.mode == G729Encode_VAD_Enabled);
    if(encoderObj->objPrm.codecType != G729I_CODEC) encoderObj->codecType = encoderObj->objPrm.codecType;
    else encoderObj->codecType = codecType;
    baseMode = (encoderObj->codecType == G729_CODEC)&&(vadEnable != 1);
    if(codecType==G729A_CODEC) {
        if(G729AEncode(encoderObj,src,dst,frametype) != APIG729_StsNoErr) {
            return APIG729_StsErr;
        }
    } else if(baseMode) {
        if(G729BaseEncode(encoderObj,src,dst,frametype) != APIG729_StsNoErr) {
            return APIG729_StsErr;
        }
    } else {
        if(G729Encode(encoderObj,src,dst,codecType,frametype) != APIG729_StsNoErr) {
            return APIG729_StsErr;
        }
    }
    return APIG729_StsNoErr;
}

APIG729_Status G729Encode

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品国产77777蜜臀| 久久久久国色av免费看影院| 久久久三级国产网站| 亚洲精品日韩一| 国产一区二区三区av电影| 欧美羞羞免费网站| 国产精品免费久久久久| 蜜臀久久99精品久久久久久9| 色噜噜夜夜夜综合网| 国产日韩欧美精品综合| 日韩av网站在线观看| 在线亚洲一区观看| 1024精品合集| 国产成人精品一区二| 欧美成人aa大片| 亚洲线精品一区二区三区| av成人免费在线观看| 在线观看亚洲一区| 欧美一区二区三区系列电影| 一区二区三区四区在线免费观看| 国产在线观看免费一区| 在线播放亚洲一区| 亚洲一区二区三区爽爽爽爽爽| 成人黄色片在线观看| 久久综合狠狠综合| 麻豆freexxxx性91精品| 欧美图片一区二区三区| 亚洲人成在线观看一区二区| 成人av动漫网站| 国产日本亚洲高清| 国产成人亚洲精品狼色在线| 欧美成人aa大片| 麻豆一区二区三| 欧美一二三四区在线| 日韩精品国产欧美| 欧美裸体一区二区三区| 亚洲成人在线观看视频| 欧美三级视频在线| 亚洲国产日韩一级| 欧美视频自拍偷拍| 亚洲线精品一区二区三区八戒| 欧美又粗又大又爽| 一区二区三区在线视频免费观看| 91丨九色丨蝌蚪富婆spa| 综合久久久久久久| 97精品久久久午夜一区二区三区| 国产精品入口麻豆原神| 成人手机在线视频| 国产精品久久毛片| 91蝌蚪porny| 亚洲一区二区在线免费观看视频| 色天天综合色天天久久| 亚洲一区在线观看免费 | 亚洲欧洲制服丝袜| 91福利资源站| 亚洲成人黄色影院| 欧美一区永久视频免费观看| 奇米影视在线99精品| 日韩美女主播在线视频一区二区三区| 麻豆精品视频在线观看免费| 精品第一国产综合精品aⅴ| 精品无人码麻豆乱码1区2区| 久久精品一区二区| 91亚洲国产成人精品一区二区三| 亚洲日本在线视频观看| 欧洲av在线精品| 日韩综合一区二区| 精品国内二区三区| 99在线热播精品免费| 一区二区免费在线| 日韩一卡二卡三卡四卡| 国产黄色精品视频| 成人午夜激情视频| av电影在线观看不卡| 久久精品国产一区二区三区免费看| 亚洲精品第一国产综合野| 亚洲三级视频在线观看| 国产欧美日韩中文久久| 日韩一区二区电影网| 91蜜桃传媒精品久久久一区二区| 久久精品国产亚洲一区二区三区| 天天综合日日夜夜精品| 国产宾馆实践打屁股91| 欧美美女一区二区在线观看| 在线观看国产精品网站| 青青国产91久久久久久| 国产午夜精品一区二区三区嫩草 | 国产精品国产自产拍高清av王其| 91免费观看在线| 天堂精品中文字幕在线| 久久久久久久网| 91福利资源站| 国产在线一区观看| 夜夜精品视频一区二区| 日韩美一区二区三区| 色综合视频在线观看| 乱一区二区av| 亚洲精品视频免费看| 日韩美女视频在线| 色噜噜狠狠成人网p站| 精品一区二区av| 亚洲精品免费在线观看| 久久美女高清视频| 在线观看亚洲a| 国产一区二区福利| 亚洲国产sm捆绑调教视频| 久久久综合视频| 欧美日韩二区三区| 成人av高清在线| 精品一区免费av| 亚洲午夜视频在线观看| 中文字幕免费不卡| 日韩欧美国产一区二区在线播放| 一本一道久久a久久精品| 国产专区综合网| 亚洲一区二区三区激情| 中文字幕巨乱亚洲| 日韩欧美第一区| 欧美丝袜第三区| 99久精品国产| 国产精品一区二区黑丝| 日韩电影在线观看电影| 一区二区欧美国产| 国产精品剧情在线亚洲| 精品福利在线导航| 欧美电影在哪看比较好| 91国偷自产一区二区三区观看| 国产99久久精品| 亚洲日本在线天堂| 久久久综合视频| 日韩亚洲欧美高清| 欧美亚洲国产bt| 免费成人美女在线观看| 欧美亚州韩日在线看免费版国语版| 久久影院午夜论| 午夜精品国产更新| 91福利在线观看| 国产精品人人做人人爽人人添| 亚洲精品你懂的| 色网站国产精品| 中文字幕日韩av资源站| 国产成人在线免费观看| 欧美一区二区在线观看| 天堂一区二区在线免费观看| 欧美这里有精品| 亚洲丝袜另类动漫二区| 风间由美一区二区av101 | 午夜电影久久久| 欧美日本一区二区在线观看| 亚洲一区二区三区激情| 91精品国产乱| 日韩va亚洲va欧美va久久| 日本一区二区动态图| 91麻豆精品国产91久久久久久| 久久爱另类一区二区小说| 国产精品你懂的在线| 欧美日韩一区二区三区高清 | 自拍偷拍国产精品| 久久福利资源站| 久久婷婷一区二区三区| 国产成人一级电影| 国产精品国产a级| 精品国产精品网麻豆系列 | 亚洲电影一区二区三区| 6080午夜不卡| 欧美私模裸体表演在线观看| 欧美亚洲高清一区| 6080日韩午夜伦伦午夜伦| 欧美一级欧美三级在线观看 | 国产一区二区h| 国产自产高清不卡| 国产v综合v亚洲欧| av在线播放不卡| 国产精品一区免费在线观看| 日日摸夜夜添夜夜添国产精品| 天天操天天色综合| 久久国产剧场电影| 国产v综合v亚洲欧| 91视频你懂的| 欧美视频完全免费看| 欧美日韩aaaaaa| 日韩欧美亚洲国产精品字幕久久久| 精品黑人一区二区三区久久| 久久久久国产精品厨房| 中文字幕不卡三区| 亚洲尤物在线视频观看| 日本免费在线视频不卡一不卡二 | 中文字幕制服丝袜一区二区三区| 日韩久久一区二区| 日韩在线观看一区二区| 国产精品一二三区在线| 97精品国产露脸对白| 欧美高清www午色夜在线视频| 精品国产网站在线观看| 最近中文字幕一区二区三区| 夜夜揉揉日日人人青青一国产精品| 日韩国产精品91| 国产成人av电影在线播放| 在线看国产日韩| 精品国产乱码久久久久久浪潮|