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

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

?? exc2.c

?? 本程序的壓縮編碼是G.723的編解碼程序
?? C
?? 第 1 頁 / 共 5 頁
字號:
**  Function:  G_code()
**
**  Description: Compute the gain of innovative code.
**
**
**  Links to the text: Section 2.16
**
** Input arguments:
**
**      FLOAT  X[]        Code target.  (in Q0)
**      FLOAT  Y[]        Filtered innovation code. (in Q12)
**
** Output:
**
**      FLOAT  *gain_q    Gain of innovation code.  (in Q0)
**
**  Return value:
**
**      int     index of innovation code gain
**
*/
int G_code(FLOAT X[], FLOAT Y[], FLOAT *gain_q)
{
    int     i;
    FLOAT   xy, yy, gain_nq;
    int     gain;
    FLOAT   dist, dist_min;

    /*  Compute scalar product <X[],Y[]> */

    xy = DotProd(X,Y,SubFrLen);

    if (xy <= 0)
    {
        gain = 0;
        *gain_q =FcbkGainTable[gain];
        return(gain);
    }

    /*  Compute scalar product <Y[],Y[]>  */

    yy = DotProd(Y,Y,SubFrLen);

    if (yy > (FLOAT) FLT_MIN)
        gain_nq = xy/yy;
    else
        gain_nq = (FLOAT)0.0;

    gain = 0;
    dist_min = (FLOAT)fabs(gain_nq - FcbkGainTable[0]);

    for (i=1; i <NumOfGainLev; i++)
    {
        dist = (FLOAT)fabs(gain_nq - FcbkGainTable[i]);
        if (dist < dist_min)
        {
            dist_min = dist;
            gain = i;
        }
    }
    *gain_q = FcbkGainTable[gain];
    return(gain);
}


/*
**
**  Function:       search_T0()
**
**  Description:          Gets parameters of pitch synchronous filter
**
**  Links to the text:    Section 2.16
**
**  Arguments:
**
**      int    T0         Decoded pitch lag
**      int    Gid        Gain vector index in adaptive gain vector codebook
**      FLOAT  *gain_T0   Pitch synchronous gain
**
**  Outputs:
**
**      FLOAT  *gain_T0   Pitch synchronous filter gain
**
**  Return Value:
**
**      int    T0_mod     Pitch synchronous filter lag
*/
int search_T0 (int T0, int Gid, FLOAT *gain_T0)
{
    int T0_mod;

    T0_mod = T0+epsi170[Gid];
    *gain_T0 = gain170[Gid];

    return(T0_mod);
}

/*
**
** 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 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)(((Word32)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:
**
**  Word16 Lag1    1st long term Lag of the tested zone
**  Word16 Lag2    2nd long term Lag of the tested zone
**
** Outputs: None
**
** Return value:
**  Word16      index iTest used to compute Acbk number of filters
*/
int 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 = (Word16)(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  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  = 3 + (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 = (FLOAT)0.0;
            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++)
            *lPnt++ = DotProd(Tv, FltBuf[i], SubFrLen);

        /*  Compute the energies */

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

        /*  Compute the between crosses */

        for (i=1; i < ClPitchOrd; i++)
            for (j = 0; j < i; j++)
                *lPnt++ = DotProd(FltBuf[i], FltBuf[j], SubFrLen);
    }

    /* Test potential error */
    Lag1 = Olp - Pstep;
    Lag2 = Olp - Pstep + Hb - 1;

    off_filt = Test_Err(Lag1, Lag2);

    Bound[0] =  NbFilt085_min + (off_filt << 2);
    if (Bound[0] > NbFilt085)
        Bound[0] = NbFilt085;
    Bound[1] =  NbFilt170_min + (off_filt << 3);
    if (Bound[1] > NbFilt170)
        Bound[1] = NbFilt170;

    Max = (FLOAT)0.0;
    for (k=0; k < Hb; k++)
    {

        /*  Select Quantization table */
        l = 0;
        if (WrkRate == Rate63)
        {
            if ((Sfc & 1) == 0)
            {
                if (Olp-Pstep+k >= SubFrLen-2)
                    l = 1;
            }
            else
            {
                if (Olp >= SubFrLen-2)
                    l = 1;
            }
        }
        else
            l = 1;

        /*  Search for maximum */

        sPnt = AcbkGainTablePtr[l];

        for (i=0; i < Bound[l]; i++)
        {
            Acc0 = DotProd(&CorVct[k*20],sPnt,20);
            sPnt += 20;

            if (Acc0 > Max)
            {
                Max = Acc0;
                Gid = i;
                Lid = k;
            }
        }
    }

    /*  Modify Olp for even sub frames */

    if ((Sfc & 1) == 0)
    {
        Olp = Olp - Pstep + Lid;
        Lid = Pstep;
    }


    /*  Save Lag, Gain and Olp */

    (*Line).Sfs[Sfc].AcLg = Lid;
    (*Line).Sfs[Sfc].AcGn = Gid;
    (*Line).Olp[Sfc>>1] = Olp;

    /*  Decode the Acbk contribution and subtract it */

    Decod_Acbk(RezBuf, PrevExc, Olp, Lid, Gid);

    for (i=0; i < SubFrLen; i++)
    {
        Acc0 = Tv[i];

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

        Tv[i] = Acc0;
    }
}


/*
**
** Function:        Get_Rez()
**
** Description:     Gets delayed contribution from the previous excitation
**                  vector.
**
** Links to text:   Sections 2.14, 2.18 & 3.4
**
** Arguments:
**
**  FLOAT  *Tv      delayed excitation
**  FLOAT  *PrevExc Previous excitation vector
**  int    Lag      Closed loop pitch lag
**
** Outputs:
**
**  FLOAT  *Tv      delayed excitation
**
** Return value:    None
**
*/
void  Get_Rez(FLOAT *Tv, FLOAT *PrevExc, int Lag)
{
    int i;

    for (i=0; i < ClPitchOrd/2; i++)
        Tv[i] = PrevExc[PitchMax - Lag - ClPitchOrd/2 + i];

    for (i=0; i < SubFrLen+ClPitchOrd/2; i++)
        Tv[ClPitchOrd/2+i] = PrevExc[PitchMax - Lag + i%Lag];
}


/*
**
** Function:        Decod_Acbk()
**
** Description:     Computes the adaptive codebook contribution from the previous
**                  excitation vector.
**                  With the gain index, the closed loop pitch lag, the jitter
**                  which when added to this pitch lag gives the actual closed
**                  loop value, and after having selected the proper codebook,
**                  the pitch contribution is reconstructed using the previous
**                  excitation buffer.
**

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产盗摄视频一区二区三区| 亚洲激情成人在线| 日韩一区二区三区精品视频| 91久久人澡人人添人人爽欧美| 粉嫩高潮美女一区二区三区 | 在线影视一区二区三区| 国产99久久久国产精品免费看| 美女尤物国产一区| 国产传媒日韩欧美成人| 99精品视频免费在线观看| 99国产精品一区| 色综合天天性综合| av一二三不卡影片| 91精品国产综合久久香蕉麻豆 | 日韩美女精品在线| 午夜亚洲国产au精品一区二区| 亚洲国产精品麻豆| 国产精品99久| 欧美少妇bbb| 国产精品久久久久一区二区三区| 亚洲激情成人在线| 国产一区二区不卡在线| 91片在线免费观看| 国产欧美日韩激情| 日本大胆欧美人术艺术动态| 97se亚洲国产综合在线| 日韩免费电影一区| 日韩中文字幕麻豆| 在线免费观看日本一区| 国产日韩欧美综合一区| 国内精品视频一区二区三区八戒 | 国产精品久久久久婷婷二区次| 亚洲成人精品在线观看| 91亚洲国产成人精品一区二区三| 在线不卡中文字幕播放| 一区二区三区色| 99精品视频在线观看免费| 国产欧美一区二区三区在线看蜜臀| 亚洲一本大道在线| 欧美日韩国产一级片| 亚洲电影一区二区| 欧美一区二区视频在线观看2020| 一级做a爱片久久| 91久久国产综合久久| 亚洲一区在线电影| 日本不卡在线视频| 国产乱码精品一区二区三区五月婷 | 国产精品家庭影院| 成人动漫一区二区三区| 亚洲国产精品成人综合色在线婷婷| 精品一区二区三区免费| 国产欧美一区二区在线观看| 粉嫩在线一区二区三区视频| 中文字幕不卡在线观看| 91在线一区二区三区| 一区二区欧美视频| 欧美一区二区在线播放| 成人高清免费观看| 亚洲sss视频在线视频| 精品国产第一区二区三区观看体验| 国产剧情av麻豆香蕉精品| 中文字幕一区在线| 日韩一区二区在线免费观看| 久久99九九99精品| 亚洲国产日韩一区二区| 国产欧美一区二区三区在线老狼| 欧美亚洲国产一区二区三区| 久久97超碰色| 亚洲大片精品永久免费| 国产偷v国产偷v亚洲高清| 欧美日韩一级二级| 99精品欧美一区| 国产精品一区二区在线观看网站| 香蕉成人伊视频在线观看| 精品国产乱子伦一区| 6080yy午夜一二三区久久| 99re视频这里只有精品| 国产精品自在欧美一区| 人妖欧美一区二区| 奇米精品一区二区三区在线观看| 亚洲欧美一区二区久久| 国产精品天干天干在观线| 久久精品日韩一区二区三区| 欧美mv日韩mv国产网站| 91精品国产综合久久精品图片 | 国产精品久久99| 国产欧美综合在线| 国产精品无码永久免费888| 精品粉嫩aⅴ一区二区三区四区| 欧美高清视频在线高清观看mv色露露十八| 99re免费视频精品全部| 99精品热视频| 91.麻豆视频| 欧美不卡在线视频| 中文成人av在线| 水蜜桃久久夜色精品一区的特点| 丝袜诱惑制服诱惑色一区在线观看| 亚洲国产精品自拍| 久久99国产乱子伦精品免费| 国产伦精品一区二区三区免费迷| 国产精品一品二品| 欧美色窝79yyyycom| 日韩美女主播在线视频一区二区三区| 欧美精品一区二区三区一线天视频| 欧美精品一区视频| 亚洲精品精品亚洲| 国产美女视频一区| 精品视频999| 国产精品国产三级国产普通话三级| 亚洲一区二区三区视频在线 | 亚洲激情在线播放| 免费在线观看视频一区| 99久久99久久精品免费看蜜桃| 欧美另类一区二区三区| 国产精品美女久久福利网站| 蜜桃av噜噜一区| 欧洲视频一区二区| 18欧美乱大交hd1984| 国产一区二区久久| 欧美一二三在线| 亚洲国产视频a| 欧美色电影在线| 一区二区三区电影在线播| 不卡的av电影| 亚洲国产成人一区二区三区| 捆绑变态av一区二区三区| 欧美日韩在线不卡| 亚洲午夜一区二区三区| 在线免费观看日本欧美| 亚洲综合色视频| 精品1区2区3区| 看片网站欧美日韩| 2020国产精品| 成人午夜免费电影| 国产精品久久久久久久久久久免费看| 国产成人鲁色资源国产91色综| 国产午夜精品在线观看| 精品一区二区日韩| 中国av一区二区三区| 99热国产精品| 日日夜夜免费精品| 亚洲精品在线观| 99国产麻豆精品| 久久精品国产在热久久| 国产午夜精品久久| 色88888久久久久久影院野外| 亚洲久草在线视频| 欧美精品一区二区三区很污很色的| 国产老妇另类xxxxx| 亚洲图片欧美一区| 久久精品男人的天堂| 欧美影院午夜播放| 国产精品一区二区三区网站| 亚洲美女在线国产| 久久精品在线免费观看| 欧美日韩午夜在线| 成人国产精品免费| 国产一区二三区好的| 亚洲一区二区三区国产| 国产精品免费免费| 欧美成人一级视频| 欧美喷水一区二区| 99精品视频在线免费观看| 国内偷窥港台综合视频在线播放| 一区二区在线观看免费视频播放| 精品国产百合女同互慰| 欧美美女bb生活片| 精品视频999| 欧美精品色一区二区三区| 色婷婷一区二区三区四区| 成人性生交大片| 国产mv日韩mv欧美| 国产成a人亚洲| 成人性视频免费网站| 懂色av一区二区在线播放| 经典三级视频一区| 国产成人免费在线观看不卡| 精品一区精品二区高清| 国产精品自拍av| 国产剧情在线观看一区二区| 国产传媒日韩欧美成人| 处破女av一区二区| 欧美亚洲国产一区二区三区| 色婷婷综合激情| 欧美绝品在线观看成人午夜影视| 欧美日韩视频在线观看一区二区三区 | 91丨九色丨蝌蚪丨老版| 国产不卡高清在线观看视频| 成人深夜视频在线观看| 99国产精品99久久久久久| 欧洲一区二区三区免费视频| 精品视频一区二区不卡| 欧美精品一区二| 亚洲三级电影全部在线观看高清| 一区二区欧美国产| 美女视频黄久久| 色综合天天综合色综合av | 亚洲六月丁香色婷婷综合久久 | 2021久久国产精品不只是精品| 国产精品嫩草99a|