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

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

?? encoder.cpp

?? G711語(yǔ)音壓縮源碼
?? CPP
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):

            /*  third pulse loop */

            for (i2 = 4; i2 < SubFrLen2; i2 +=STEP)
            {
                ps2  = ps1 + Dn[i2];
                ps2a = ps1a + Dn[i2+1];

                alp2 = alp1 + *ptr_ri2i2++ + *ptr_ri0i2++ + *ptr_ri1i2++;

                /*  Decide the shift */

                shift = 0;
                if (ps2a > ps2)
                {
                    shift = 1;
                    ps2   = ps2a;
                }

                /*  Test threshold  */

                if (ps2 > thres)
                {

                    /*  Init. pointers that depend on 4th loop */

                    ptr_ri3i3 = rri3i3;

                    /*  4th pulse loop */

                    for (i3 = 6; i3 < SubFrLen2; i3 +=STEP)
                    {
                        ps3 = ps2 + Dn[i3+shift];
                        alp3 = alp2 + *ptr_ri3i3++ +
                        *ptr_ri0i3++ + *ptr_ri1i3++ + *ptr_ri2i3++;

                        ps3c = ps3 * ps3;
                        if ((ps3c * alpha) > (psc * alp3))
                        {
                            psc = ps3c;
                            alpha = alp3;
                            ip0 = i0;
                            ip1 = i1;
                            ip2 = i2;
                            ip3 = i3;
                            shif = shift;
                        }
                    }

                    time--;

                    /*  Maximum time finish  */

                    if (time <= 0)
                        goto end_search;
                    ptr_ri0i3 -= NB_POS;
                    ptr_ri1i3 -= NB_POS;
                }

                else
                    ptr_ri2i3 += NB_POS;
            }

            ptr_ri0i2 -= NB_POS;
            ptr_ri1i3 += NB_POS;
        }

        ptr_ri0i2 += NB_POS;
        ptr_ri0i3 += NB_POS;
    }

end_search:

    extra = time;

    /*  Set the sign of impulses  */

    i0 = p_sign[(ip0 >> 1)];
    i1 = p_sign[(ip1 >> 1)];
    i2 = p_sign[(ip2 >> 1)];
    i3 = p_sign[(ip3 >> 1)];

    /*  Find the codeword corresponding to the selected positions  */

    for (i=0; i<SubFrLen; i++)
        cod[i] = (float)0.0;

    if (shif > 0)
    {
        ip0++;
        ip1++;
        ip2++;
        ip3++;
    }

    cod[ip0] =  (float)i0;
    cod[ip1] =  (float)i1;
    if (ip2<SubFrLen)
        cod[ip2] = (float)i2;
    if (ip3<SubFrLen)
        cod[ip3] = (float)i3;

/*  find the filtered codeword  */

    for (i=0; i < SubFrLen; i++)
        y[i] = (float)0.0;

    if (i0 > 0)
        for (i=ip0, j=0; i<SubFrLen; i++, j++)
            y[i] = y[i] + h[j];
    else
        for (i=ip0, j=0; i<SubFrLen; i++, j++)
            y[i] = y[i] - h[j];

    if (i1 > 0)
        for (i=ip1, j=0; i<SubFrLen; i++, j++)
            y[i] = y[i] + h[j];
    else
        for (i=ip1, j=0; i<SubFrLen; i++, j++)
            y[i] = y[i] - h[j];

    if (ip2<SubFrLen)
    {
        if (i2 > 0)
            for (i=ip2, j=0; i<SubFrLen; i++, j++)
                y[i] = y[i] + h[j];
        else
            for (i=ip2, j=0; i<SubFrLen; i++, j++)
                y[i] = y[i] - h[j];
    }

    if (ip3<SubFrLen)
    {
        if (i3 > 0)
            for (i=ip3, j=0; i<SubFrLen; i++, j++)
                y[i] = y[i] + h[j];
        else
            for (i=ip3, j=0; i<SubFrLen; i++, j++)
                y[i] = y[i] - h[j];
    }

    *code_shift = shif;

    *sign = 0;
    if (i0 > 0)
        *sign += 1;
    if (i1 > 0)
        *sign += 2;
    if (i2 > 0)
        *sign += 4;
    if (i3 > 0)
        *sign += 8;

    i = ((ip3 >> 3) << 9) + ((ip2 >> 3) << 6) + ((ip1 >> 3) << 3) + (ip0 >> 3);

    return i;
}

/*
**
** Function:        ACELP_LBC_code()
**
** Description:     Find Algebraic codebook for low bit rate LBC encoder
**
** Links to text:   Section 2.16
**
** Arguments:
**
**   float  X[]              Target vector.     (in Q0)
**   float  h[]              Impulse response.  (in Q12)
**   int    T0               Pitch period.
**   float  code[]           Innovative vector.        (in Q12)
**   int    gain             Innovative vector gain.   (in Q0)
**   int    sign             Signs of the 4 pulses.
**   int    shift            Shift of the innovative vector
**   float  gain_T0          Gain for pitch synchronous fiter
**
** Inputs :
**
**   float  X[]              Target vector.     (in Q0)
**   float  h[]              Impulse response.  (in Q12)
**   int    T0               Pitch period.
**   float  gain_T0          Gain for pitch synchronous fiter
**
** Outputs:
**
**   float  code[]           Innovative vector.        (in Q12)
**   int    gain             Innovative vector gain.   (in Q0)
**   int    sign             Signs of the 4 pulses.
**   int    shift            Shift of the innovative vector.
**
** Return value:
**
**   int    index            Innovative codebook index
**
*/
int CLanAudioEncoder::ACELP_LBC_code(float X[], float h[], int T0, float code[],
    int *ind_gain, int *shift, int *sign, float gain_T0)
{
    int i, index;
    float gain_q;
    float Dn[SubFrLen2], tmp_code[SubFrLen2];
    float rr[DIM_RR];

    /*  Include fixed-gain pitch contribution into impulse resp. h[] */

    if (T0 < SubFrLen-2)
        for (i = T0; i < SubFrLen; i++)
            h[i] += gain_T0*h[i-T0];

    /*  Compute correlations of h[] needed for the codebook search */

    Cor_h(h, rr);

    /*  Compute correlation of target vector with impulse response. */

    Cor_h_X(h, X, Dn);

    /*  Find codebook index */

    index = D4i64_LBC(Dn, rr, h, tmp_code, rr, shift, sign);

    /*  Compute innovation vector gain. */
    /*  Include fixed-gain pitch contribution into code[]. */

    *ind_gain = G_code(X, rr, &gain_q);

    for (i=0; i < SubFrLen; i++)
        code[i] = tmp_code[i]*gain_q;

    if (T0 < SubFrLen-2)
        for (i=T0; i < SubFrLen; i++)
            code[i] += code[i-T0]*gain_T0;

    return index;
}

/*
**
** Function:    Update_Err()
**
** Description:   Estimation of the excitation error associated
**          to the excitation signal when it is disturbed at
**          the decoder, the disturbing signal being filtered
**          by the long term synthesis filters
**          one value for (SubFrLen/2) samples
**          Updates the table CodStat.Err
**
** Links to text:   Section
**
** Arguments:
**
**  int Olp    Center value for pitch delay
**  int AcLg   Offset value for pitch delay
**  int AcGn   Index of Gain LT filter
**
** Outputs: None
**
** Return value:  None
**
*/
void CLanAudioEncoder::Update_Err(int Olp, int AcLg, int AcGn)
{
    int     i, iz, temp2;
    int     Lag;
    float   Worst1, Worst0, wtemp;
    float   beta,*ptr_tab;

    Lag = Olp - Pstep + AcLg;

    /* Select Quantization tables */
    i = 0 ;
    ptr_tab = tabgain85;
    if ( WrkRate == Rate63 ) {
        if ( Olp >= (SubFrLen-2) )
            ptr_tab = tabgain170;
    }
    else {
        ptr_tab = tabgain170;
    }
    beta = ptr_tab[(int)AcGn];


    if (Lag <= (SubFrLen/2))
    {
        Worst0 = CodStat.Err[0]*beta + Err0;
        Worst1 = Worst0;
    }
    else
    {
        iz = (int)(((int)Lag*1092L) >> 15);
        temp2 = 30*(iz+1);

        if (temp2 != Lag)
        {
            if (iz == 1)
            {
                Worst0 = CodStat.Err[0]*beta + Err0;
                Worst1 = CodStat.Err[1]*beta + Err0;

                if (Worst0 > Worst1)
                    Worst1 = Worst0;
                else
                    Worst0 = Worst1;
            }
            else
            {
                wtemp = CodStat.Err[iz-1]*beta + Err0;
                Worst0 = CodStat.Err[iz-2]*beta + Err0;
                if (wtemp > Worst0)
                    Worst0 = wtemp;
                Worst1 = CodStat.Err[iz]*beta + Err0;
                if (wtemp > Worst1)
                    Worst1 = wtemp;
            }
        }
        else
        {
            Worst0 = CodStat.Err[iz-1]*beta + Err0;
            Worst1 = CodStat.Err[iz]*beta + Err0;
        }
    }

    if (Worst0 > MAXV)
        Worst0 = MAXV;
    if (Worst1 > MAXV)
        Worst1 = MAXV;

    for (i=4; i>=2; i--)
        CodStat.Err[i] = CodStat.Err[i-2];

    CodStat.Err[0] = Worst0;
    CodStat.Err[1] = Worst1;

    return;
}

/*
**
** Function:    Test_Err()
**
** Description:   Check the error excitation maximum for
**          the subframe and computes an index iTest used to
**          calculate the maximum nb of filters (in Find_Acbk) :
**          Bound = Min(Nmin + iTest x pas, Nmax) , with
**          AcbkGainTable085 : pas = 2, Nmin = 51, Nmax = 85
**          AcbkGainTable170 : pas = 4, Nmin = 93, Nmax = 170
**          iTest depends on the relative difference between
**          errmax and a fixed threshold
**
** Links to text:   Section
**
** Arguments:
**
**  short Lag1    1st long term Lag of the tested zone
**  short Lag2    2nd long term Lag of the tested zone
**
** Outputs: None
**
** Return value:
**  short      index iTest used to compute Acbk number of filters
*/
int CLanAudioEncoder::Test_Err(int Lag1, int Lag2)
{
    int     i, i1, i2;
    int     zone1, zone2, iTest;
    float   Err_max;

    i2 = Lag2 + ClPitchOrd/2;
    zone2 = i2/30;

    i1 = - SubFrLen + 1 + Lag1 - ClPitchOrd/2;
    if (i1 <= 0)
        i1 = 1;
    zone1 = i1/30;

    Err_max = (float)-1.0;
    for (i=zone2; i>=zone1; i--)
    {
        if (CodStat.Err[i] > Err_max)
            Err_max = CodStat.Err[i];
    }
    if ((Err_max > ThreshErr) || (CodStat.SinDet < 0 ) )
    {
        iTest = 0;
    }
    else
    {
        iTest = (short)(ThreshErr - Err_max);
    }

    return(iTest);
}

/*
**
** Function:        Find_Acbk()
**
** Description:     Computation of adaptive codebook contribution in
**                  closed-loop around open-loop pitch lag (subframes 0 & 2)
**                  around the previous subframe closed-loop pitch lag
**                  (subframes 1 & 3).  For subframes 0 & 2, the pitch lag is
**                  encoded whereas for subframes 1 & 3, only the difference
**                  with the previous value is encoded (-1, 0, +1 or +2).
**                  The pitch predictor gains are quantized using one of two
**                  codebooks (85 entries or 170 entries) depending on the
**                  rate and on the pitch lag value.
**                  Finally, the contribution of the pitch predictor is decoded
**                  and subtracted to obtain the residual signal.
**
** Links to text:   Section 2.14
**
** Arguments:
**
**  float  *Tv      Target vector
**  float  *ImpResp Impulse response of the combined filter
**  float  *PrevExc Previous excitation vector
**  LINEDEF *Line   Contains pitch parameters (open/closed loop lag, gain)
**  int    Sfc      Subframe index
**
** Outputs:
**
**  float  *Tv     Residual vector
**  LINEDEF *Line  Contains pitch related parameters (closed loop lag, gain)
**
** Return value:    None
**
*/
void  CLanAudioEncoder::Find_Acbk(float *Tv, float *ImpResp, float *PrevExc,
                LINEDEF *Line, int Sfc)
{
    int i,j,k,l;

    float Acc0,Max;

    float RezBuf[SubFrLen+ClPitchOrd-1];
    float FltBuf[ClPitchOrd][SubFrLen];
    float CorVct[4*(2*ClPitchOrd + ClPitchOrd*(ClPitchOrd-1)/2)];
    float *lPnt;
    float *sPnt;

    int   Olp,Lid,Gid,Hb;
    int   Bound[2];
    int   Lag1, Lag2;
    int   off_filt;

    Olp = (*Line).Olp[Sfc>>1];
    Lid = Pstep;
    Gid = 0;
    Hb  = 2;  ;// + (Sfc & 1);

    /*  For even frames only */

    if ((Sfc & 1) == 0)
    {
        if (Olp == PitchMin)
            Olp++;
        if (Olp > (PitchMax-5))
            Olp = PitchMax-5;
    }

    lPnt = CorVct;
    for (k=0; k < Hb; k++)
    {

        /*  Get residual from the exitation buffer */

        Get_Rez(RezBuf, PrevExc, Olp-Pstep+k);

        /*  Filter the last one (ClPitchOrd-1) using the impulse responce */

        for (i=0; i < SubFrLen; i++)
        {
            Acc0 = RezBuf[ClPitchOrd-1+i];
            for (j=0; j < i; j++)
                Acc0 += RezBuf[ClPitchOrd-1+j]*ImpResp[i-j];

            FltBuf[ClPitchOrd-1][i] = Acc0;
        }

        /*  Update the others (ClPitchOrd-2 down to 0) */

        for (i=ClPitchOrd-2; i >= 0; i --)
        {
            FltBuf[i][0] = RezBuf[i];
            for (j = 1; j < SubFrLen; j++)
                FltBuf[i][j] = RezBuf[i]*ImpResp[j] + FltBuf[i+1][j-1];
        }

        /*  Compute the cross products with the signal */

        for (i=0; i < ClPitchOrd; i++)
//DotProd10           *lPnt++ = DotProd(Tv, FltBuf[i], SubFrLen);
            *lPnt++ = DotProd10(Tv, FltBuf[i], SubFrLen);

        /*  Compute the energies */

        for (i=0; i < ClPitchOrd; i++)
//DotProd10            *lPnt++ = ((float)0.5)*DotProd(FltBuf[i], FltBuf[i], SubFrLen);
            *lPnt++ = ((float)0.5)*DotProd10(FltBuf[i], FltBuf[i], SubFrLen);

        /*  Compute the between crosses */

        for (i=1; i < ClPitchOrd; i++)

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一本久道中文字幕精品亚洲嫩| 色偷偷久久一区二区三区| 亚洲成人中文在线| 亚洲精品成人精品456| 中文字幕一区二区5566日韩| 国产精品灌醉下药二区| 中文字幕免费不卡| 国产精品国产馆在线真实露脸| 国产精品久久久久久久久搜平片 | 成人免费观看男女羞羞视频| 国产精品一卡二卡| 国产成人综合在线| 成人免费高清在线| 99久久精品国产观看| 色综合一个色综合| 欧美性生交片4| 欧美日韩激情一区| 欧美白人最猛性xxxxx69交| 精品国产免费一区二区三区香蕉| 久久久美女毛片| 中文字幕不卡的av| 亚洲最快最全在线视频| 亚洲h动漫在线| 久久成人麻豆午夜电影| 国产成人精品免费视频网站| 成人av在线资源| 精品视频在线看| 日韩精品最新网址| 中文字幕电影一区| 亚洲最新视频在线观看| 另类中文字幕网| 懂色av一区二区三区免费观看| 91色在线porny| 欧美精品色一区二区三区| 日韩欧美在线影院| 国产精品国产自产拍在线| 一区二区激情视频| 激情综合色播五月| 99re66热这里只有精品3直播 | 久久精品亚洲乱码伦伦中文| 国产精品视频一二三| 亚洲一级二级在线| 狠狠网亚洲精品| 色av一区二区| 日韩精品专区在线影院观看| 欧美国产精品专区| 天堂蜜桃91精品| 成人动漫一区二区三区| 欧美日韩一区二区不卡| 久久嫩草精品久久久精品一| 亚洲午夜精品一区二区三区他趣| 精品综合免费视频观看| 97久久超碰国产精品电影| 日韩一区二区三区在线视频| 国产精品国产a| 另类调教123区| 在线观看免费亚洲| 欧美激情一区二区三区全黄| 丝袜脚交一区二区| 94-欧美-setu| 久久蜜臀精品av| 亚洲高清免费在线| voyeur盗摄精品| 日韩欧美久久一区| 亚洲综合图片区| 丁香婷婷综合五月| 日韩一级免费观看| 一个色在线综合| www.在线成人| 久久婷婷成人综合色| 亚洲bt欧美bt精品| 色综合久久88色综合天天免费| 2020国产精品| 蜜桃视频免费观看一区| 欧美色网站导航| 中文字幕亚洲在| 国产精品亚洲专一区二区三区 | 99国产精品久久久久| 精品电影一区二区| 日日嗨av一区二区三区四区| 97aⅴ精品视频一二三区| 国产人伦精品一区二区| 狠狠色丁香婷婷综合| 欧美精品一级二级| 一区二区三区国产精华| hitomi一区二区三区精品| 国产亚洲成av人在线观看导航 | 久久精品国产免费| 欧美日韩亚洲综合在线| 亚洲精品久久久久久国产精华液| 成人免费视频国产在线观看| 久久久久88色偷偷免费| 精彩视频一区二区| 日韩久久久久久| 日本sm残虐另类| 91精品国产综合久久蜜臀| 亚洲综合男人的天堂| 91浏览器打开| 亚洲三级电影网站| 91丨porny丨国产| 一色屋精品亚洲香蕉网站| 不卡视频在线看| 国产精品久久久久久久久快鸭 | 国模娜娜一区二区三区| 日韩美一区二区三区| 久久国产精品露脸对白| 日韩欧美高清在线| 激情图区综合网| 久久一夜天堂av一区二区三区| 韩国精品主播一区二区在线观看 | 国产精品影视网| 国产日韩视频一区二区三区| 国产精品亚洲视频| 国产欧美精品国产国产专区| 国v精品久久久网| 国产精品成人一区二区三区夜夜夜 | 亚洲欧美日韩国产成人精品影院 | 色噜噜久久综合| 亚洲伊人色欲综合网| 欧美三级三级三级爽爽爽| 亚洲va欧美va天堂v国产综合| 91麻豆精品国产自产在线 | 色综合天天综合色综合av | 亚洲成av人片在线观看无码| 欧美人妖巨大在线| 日本在线不卡一区| 欧美精品一区二区高清在线观看| 国产伦理精品不卡| 亚洲婷婷在线视频| 欧美电影一区二区三区| 狠狠狠色丁香婷婷综合久久五月| 国产精品色在线观看| 91国产福利在线| 蜜臀久久99精品久久久久宅男| 久久中文字幕电影| 91麻豆视频网站| 日韩激情一二三区| 国产亚洲1区2区3区| 日本韩国精品在线| 久久国产精品72免费观看| 国产精品美女久久久久aⅴ| 欧美视频中文一区二区三区在线观看| 日本人妖一区二区| 欧美国产禁国产网站cc| 欧美自拍偷拍午夜视频| 激情综合五月婷婷| 一区二区三区在线免费视频| 欧美tk—视频vk| 97aⅴ精品视频一二三区| 奇米色一区二区三区四区| 欧美激情一二三区| 欧美顶级少妇做爰| 欧美成人三级在线| 成人动漫一区二区| 日本不卡视频一二三区| 国产嫩草影院久久久久| 欧美日韩免费观看一区二区三区| 国产又粗又猛又爽又黄91精品| 亚洲色图视频网站| 日韩欧美亚洲国产另类 | 欧美刺激午夜性久久久久久久| av成人老司机| 精品亚洲免费视频| 亚洲六月丁香色婷婷综合久久| 精品国产乱码久久久久久蜜臀| 91蜜桃在线观看| 国产精品一区二区x88av| 视频一区欧美精品| 亚洲日本乱码在线观看| 欧美精品一区二区三区久久久| 欧美三级蜜桃2在线观看| 成人激情开心网| 狠狠色伊人亚洲综合成人| 午夜电影久久久| 中文字幕人成不卡一区| 久久精品一区二区三区四区| 欧美日韩亚洲综合| 色综合久久久久综合99| 国产精一品亚洲二区在线视频| 视频一区视频二区中文| 亚洲最大成人综合| 中文字幕一区二区三区色视频 | 麻豆成人在线观看| 亚洲一区二区三区中文字幕 | 亚洲一区在线视频| 国产精品久久久久久久午夜片| 精品国产乱码久久久久久浪潮| 欧美日韩黄视频| 欧美色男人天堂| 日本高清不卡在线观看| 99re热这里只有精品免费视频| 国产福利一区在线| 精品系列免费在线观看| 日本不卡的三区四区五区| 亚洲第一二三四区| 亚洲五码中文字幕| 亚洲精品欧美综合四区| 最新国产の精品合集bt伙计| 国产精品初高中害羞小美女文| 欧美激情中文字幕|