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

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

?? exc2.c

?? 包含G723 G729 Gsm iLBC PCM音頻編碼的動態(tài)庫
?? C
?? 第 1 頁 / 共 5 頁
字號:
/*
**
** File:    exc2.c
**
** Description: Functions that implement adaptive and fixed codebook
**       operations.
**
** Functions:
**
**  Computing Open loop Pitch lag:
**
**      Estim_Pitch()
**
**  Harmonic noise weighting:
**
**      Comp_Pw()
**      Filt_Pw()
**
**  Fixed Cobebook computation:
**
**      Find_Fcbk()
**      Gen_Trn()
**      Find_Best()
**      Fcbk_Pack()
**      Fcbk_Unpk()
**      ACELP_LBC_code()
**      Cor_h()
**      Cor_h_X()
**      reset_max_time()
**      D4i64_LBC()
**      G_code()
**      search_T0()
**
**  Adaptive Cobebook computation:
**
**      Find_Acbk()
**      Get_Rez()
**      Decod_Acbk()
**
**  Pitch postfilter:
**      Comp_Lpf()
**      Find_B()
**      Find_F()
**      Filt_Lpf()
**
**  Residual interpolation:
**
**      Comp_Info()
**      Regen()
**
** Functions used to avoid possible explosion of the decoder
** excitation in case of series of long term unstable filters
** and when the encoder and the decoder are de-synchronized
**
**      Update_Err()
**      Test_Err()
*/

/*
    ITU-T G.723.1 Floating Point Speech Coder ANSI C Source Code.  Version 5.1F

    Original fixed-point code copyright (c) 1995,
    AudioCodes, DSP Group, France Telecom, Universite de Sherbrooke.
    All rights reserved.

    Floating-point code copyright (c) 1995,
    Intel Corporation and France Telecom (CNET).
    All rights reserved.
*/

#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <float.h>

#include "typedef2.h"
#include "cst2.h"
#include "tab2.h"
#include "lbccode2.h"
#include "coder2.h"
#include "util2.h"
#include "exc2.h"
#include "utilcng2.h"

/*
**
** Function:        Estim_Pitch()
**
** Description: Open loop pitch estimation made twice per frame (one for
**              the first two subframes and one for the last two).
**              The method is based on the maximization of the
**              crosscorrelation of the speech.
**
** Links to text:   Section 2.9
**
** Arguments:
**
**  FLOAT *Dpnt    Perceptually weighted speech
**  int   Start    Starting index defining the subframes under study
**
** Outputs:
**
** Return value:
**
**  int      Open loop pitch period
**
*/
int Estim_Pitch(FLOAT *Dpnt, int Start)
{
    int     i;

    int     Pr,Indx = PitchMin;
    FLOAT   MaxE = (FLOAT)1.0;
    FLOAT   MaxC = (FLOAT)0.0;
    FLOAT   E,C,C2,Diff;

    Pr = Start - PitchMin + 1;

    /* Init the energy estimate */

    E = DotProd(&Dpnt[Pr],&Dpnt[Pr],2*SubFrLen);

    /* Main Open loop pitch search loop */

    for (i=PitchMin; i <= PitchMax-3; i++)
    {
        Pr--;

        /* Update energy, compute cross */

        E = E - Dpnt[Pr+2*SubFrLen]*Dpnt[Pr+2*SubFrLen] + Dpnt[Pr]*Dpnt[Pr];
        C = DotProd(&Dpnt[Start],&Dpnt[Pr],2*SubFrLen);
        C2 = C*C;

        /* Check for new maximum */

        Diff = C2*MaxE - E*MaxC;
        if (E > (FLOAT)0.0 && C > (FLOAT)0.0)
        {
            if ((Diff > (FLOAT)0.0 && ((i - Indx) < PitchMin))
                 || (Diff > (FLOAT)0.25*C2*MaxE))
            {
                Indx = i;
                MaxE = E;
                MaxC = C2;
            }
        }
    }
    return Indx;
}

/*
**
** Function:        Comp_Pw()
**
** Description:     Computes harmonic noise filter coefficients.
**                  For each subframe, the optimal lag is searched around the
**                  open loop pitch lag based on only positive correlation
**                  maximization.
**
** Links to text:   Section 2.11
**
** Arguments:
**
**  FLOAT *Dpnt    Formant perceptually weighted speech
**  int   Start
**  int   Olp      Open loop pitch lag
**
** Outputs:         None
**
** Return value:
**
**  PWDEF   Word16  Indx  lag of the harmonic noise shaping filter
**          FLOAT   Gain  gain of the harmonic noise shaping filter
**
*/
PWDEF Comp_Pw(FLOAT *Dpnt, int Start, int Olp)
{

    int     i, k;
    FLOAT   Energy,C,E,C2,MaxE,MaxC2,MaxC,Gopt;
    PWDEF   Pw;

    /* Compute target energy */

    Energy = DotProd(&Dpnt[Start],&Dpnt[Start],SubFrLen);

    /* Find position with maximum C2/E value */

    MaxE = (FLOAT)1.0;
    MaxC = (FLOAT)0.0;
    MaxC2 = (FLOAT)0.0;
    Pw.Indx = -1;
    Pw.Gain = (FLOAT)0.0;
    k = Start - (Olp-PwRange);

    for (i=0; i <= 2*PwRange; i++)
    {
        C = DotProd(&Dpnt[Start],&Dpnt[k],SubFrLen);
        E = DotProd(&Dpnt[k],&Dpnt[k],SubFrLen);
        k--;

        if (E > (FLOAT)0.0 && C > (FLOAT)0.0)
        {
            C2 = C*C;
            if (C2*MaxE > E*MaxC2)
            {
                Pw.Indx = i;
                MaxE = E;
                MaxC = C;
                MaxC2 = C2;
            }
        }
    }

    if ( Pw.Indx == -1 )
    {
        Pw.Indx = Olp ;
        return Pw ;
    }

    Pw.Gain = (FLOAT)0.0;
    if (MaxC2 > MaxE*Energy*(FLOAT)0.375)
    {
        if (MaxC > MaxE || MaxE == (FLOAT)0.0)
            Gopt = (FLOAT)1.0;
        else
            Gopt = MaxC/MaxE;

        Pw.Gain = (FLOAT)0.3125*Gopt;
    }
    Pw.Indx = Olp - PwRange + Pw.Indx;
    return Pw;
}

/*
**
** Function:        Filt_Pw()
**
** Description:     Applies harmonic noise shaping filter.
**                  Lth order FIR filter on each subframe (L: filter lag).
**
** Links to text:   Section 2.11
**
** Arguments:
**
**  FLOAT *DataBuff     Target vector
**  FLOAT *Dpnt         Formant perceptually weighted speech
**  int   Start
**  PWDEF Pw            Parameters of the harmonic noise shaping filter
**
** Outputs:
**
**  FLOAT *DataBuff     Target vector
**
** Return value:        None
**
*/
void  Filt_Pw(FLOAT *DataBuff, FLOAT *Dpnt, int Start, PWDEF Pw)
{
    int i;

    /* Perform the harmonic weighting */

    for (i=0; i < SubFrLen; i++)
        DataBuff[Start+i] = Dpnt[PitchMax+Start+i] -
                            Pw.Gain*Dpnt[PitchMax+Start-Pw.Indx+i];
    return;
}

/*
**
** Function:        Find_Fcbk()
**
** Description:     Fixed codebook excitation computation.
**
**
** Links to text:   Sections 2.15 & 2.16
**
** Arguments:
**
**  FLOAT  *Dpnt    Target vector
**  FLOAT  *ImpResp Impulse response of the synthesis filter
**  LineDef *Line   Excitation parameters for one subframe
**  int    Sfc      Subframe index
**
** Outputs:
**
**  FLOAT  *Dpnt    Excitation vector
**  LINEDEF *Line   Fixed codebook parameters for one subframe
**
** Return value:        None
**
*/
void  Find_Fcbk(FLOAT *Dpnt, FLOAT *ImpResp, LINEDEF *Line, int Sfc)
{
    int      i;
    int      Srate, T0_acelp;
    FLOAT    gain_T0;

    BESTDEF  Best;

    switch(WrkRate)
    {
    case Rate63:
        Srate = Nb_puls[Sfc];
        Best.MaxErr = (FLOAT)(-99999999.9);

        Find_Best(&Best, Dpnt, ImpResp, Srate, SubFrLen);

        if ((*Line).Olp[Sfc>>1] < SubFrLen-2)
            Find_Best(&Best, Dpnt, ImpResp, Srate, (*Line).Olp[Sfc>>1]);

        /* Reconstruct the excitation */

        for (i=0; i <  SubFrLen; i++)
            Dpnt[i] = (FLOAT)0.0;

        for (i=0; i < Srate; i++)
            Dpnt[Best.Ploc[i]] = Best.Pamp[i];

        /* Code the excitation */

        Fcbk_Pack(Dpnt, &((*Line).Sfs[Sfc]), &Best, Srate);

        if (Best.UseTrn == 1)
            Gen_Trn(Dpnt, Dpnt, (*Line).Olp[Sfc>>1]);
        break;

    case Rate53:
        T0_acelp = search_T0 ( (Word16) ((*Line).Olp[Sfc>>1]-1+(*Line).Sfs[Sfc].AcLg),
                            (*Line).Sfs[Sfc].AcGn, &gain_T0);

        (*Line).Sfs[Sfc].Ppos = ACELP_LBC_code(Dpnt, ImpResp, T0_acelp, Dpnt,
                                   &(*Line).Sfs[Sfc].Mamp,
                                   &(*Line).Sfs[Sfc].Grid,
                                   &(*Line).Sfs[Sfc].Pamp, gain_T0);

        (*Line).Sfs[Sfc].Tran = 0;
        break;
    }

    return;
}

/*
**
** Function:        Gen_Trn()
**
** Description:     Generation of a train of Dirac functions with the period
**                  Olp.
**
** Links to text:   Section 2.15
**
** Arguments:
**
**  FLOAT  *Dst     Fixed codebook excitation vector with  train of Dirac
**  FLOAT  *Src     Fixed codebook excitation vector without train of Dirac
**  int    Olp      Closed-loop pitch lag of subframe 0 (for subframes 0 & 1)
**                  Closed-loop pitch lag of subframe 2 (for subframes 2 & 3)
**
** Outputs:
**
**  FLOAT  *Dst     excitation vector
**
** Return value:    None
**
*/
void  Gen_Trn(FLOAT *Dst, FLOAT *Src, int Olp)
{
    int    i;
    int    Tmp0;
    FLOAT  Tmp[SubFrLen];

    Tmp0 = Olp;

    for (i=0; i < SubFrLen; i++) {
        Tmp[i] = Src[i];
        Dst[i] = Src[i];
    }

    while (Tmp0 < SubFrLen) {
        for (i=Tmp0; i < SubFrLen; i++)
            Dst[i] += Tmp[i-Tmp0];

        Tmp0 += Olp;
    }
    return;
}


/*
**
** Function:        Find_Best()
**
** Description:     Fixed codebook search for the high rate encoder.
**                  It performs the quantization of the residual signal.
**                  The excitation made of Np positive or negative pulses
**                  multiplied by a gain and whose positions on the grid are
**                  either all odd or all even, should approximate as best as
**                  possible the residual signal (perceptual criterion).
**
** Links to text:   Section 2.15
**
** Arguments:
**
**  BESTDEF *Best   Parameters of the best excitation model
**  FLOAT  *Tv      Target vector
**  FLOAT  *ImpResp Impulse response of the combined filter
**  int    Np       Number of pulses (6 for even subframes, 5 for odd)
**  int    Olp      Closed-loop pitch lag of subframe 0 (for subframes 0 & 1)
**                  Closed-loop pitch lag of subframe 2 (for subframes 2 & 3)
**
** Outputs:
**
**  BESTDEF *Best
**
** Return value:    None
**
*/
void  Find_Best(BESTDEF *Best, FLOAT *Tv, FLOAT *ImpResp,int Np,int Olp)
{

    int     i,j,k,l;
    BESTDEF  Temp;

    int     MaxAmpId;
    FLOAT   MaxAmp;
    FLOAT   Acc0,Acc1,Acc2;

    FLOAT   Imr[SubFrLen];
    FLOAT   OccPos[SubFrLen];
    FLOAT   ImrCorr[SubFrLen];
    FLOAT   ErrBlk[SubFrLen];
    FLOAT   WrkBlk[SubFrLen];


    /* Update Impulse responce */

    if (Olp < (SubFrLen-2)) {
        Temp.UseTrn = 1;
        Gen_Trn(Imr, ImpResp, Olp);
    }
    else {
        Temp.UseTrn = 0;
        for (i = 0; i < SubFrLen; i++)
            Imr[i] = ImpResp[i];
    }

    /* Copy Imr */

    for (i=0; i < SubFrLen; i++)
        OccPos[i] = Imr[i];

    /* Compute Imr AutoCorr function */

    for (i=0;i<SubFrLen;i++)
        ImrCorr[i] = DotProd(&Imr[i],Imr,SubFrLen-i);

    /* Cross correlation with the signal */

    for (i=0;i<SubFrLen;i++)
        ErrBlk[i] = DotProd(&Tv[i],Imr,SubFrLen-i);

    /* Search for the best sequence */

    for (k=0; k < Sgrid; k++)
    {
        Temp.GridId = k;

        /*Find maximum amplitude */

        Acc1 = (FLOAT)0.0;
        for (i=k; i < SubFrLen; i +=Sgrid)
        {
            Acc0 = (FLOAT) fabs(ErrBlk[i]);
            if (Acc0 >= Acc1)
            {
                Acc1 = Acc0;
                Temp.Ploc[0] = i;
            }
        }

        /* Quantize the maximum amplitude */
        Acc2 = Acc1;
        Acc1 = (FLOAT)32767.0;
        MaxAmpId = (NumOfGainLev - MlqSteps);

        for (i=MaxAmpId; i >= MlqSteps; i--)
        {
            Acc0 = (FLOAT) fabs(FcbkGainTable[i]*ImrCorr[0] - Acc2);
            if (Acc0 < Acc1)
            {
                Acc1 = Acc0;
                MaxAmpId = i;
            }

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美成人vps| 色婷婷激情一区二区三区| 精品区一区二区| 蜜臀国产一区二区三区在线播放 | 在线播放91灌醉迷j高跟美女| 亚洲五月六月丁香激情| 欧美日韩三级视频| 男人的天堂亚洲一区| 精品国产乱码久久久久久夜甘婷婷| 精品一区二区成人精品| 欧美激情一区二区三区| 色综合久久综合网欧美综合网| 亚洲午夜久久久久久久久电影网| 欧美日本一区二区| 国产精品一品视频| 亚洲免费观看高清完整版在线观看熊 | 欧美一区二区三区在线| 国产久卡久卡久卡久卡视频精品| 国产精品麻豆欧美日韩ww| 欧美午夜寂寞影院| 久久99国产精品久久99果冻传媒| 国产欧美精品一区aⅴ影院| 日本韩国一区二区| 精品一二线国产| 一区二区国产视频| 精品国免费一区二区三区| 91伊人久久大香线蕉| 免费观看日韩av| 亚洲日本丝袜连裤袜办公室| 欧美白人最猛性xxxxx69交| 不卡一区二区三区四区| 亚洲高清中文字幕| 国产精品久久久久影视| 在线播放/欧美激情| av亚洲精华国产精华精华| 美女在线观看视频一区二区| 亚洲图片激情小说| 久久免费偷拍视频| 在线不卡一区二区| 91网址在线看| 国产精品88av| 免费在线观看精品| 亚洲香肠在线观看| 国产精品国产精品国产专区不蜜| 67194成人在线观看| 91亚洲午夜精品久久久久久| 国产一区二区三区黄视频 | 99久久婷婷国产精品综合| 国产福利精品一区| 夜夜爽夜夜爽精品视频| 99精品久久只有精品| 色综合视频一区二区三区高清| 91在线观看高清| 欧美在线综合视频| 欧美日韩成人一区二区| 欧美电影免费观看高清完整版在线观看| 日韩欧美电影一二三| 久久午夜色播影院免费高清| 国产日韩av一区| 亚洲人成网站在线| 日韩中文字幕91| 加勒比av一区二区| 不卡的看片网站| 欧美日韩成人综合| 久久先锋影音av鲁色资源网| 国产精品福利电影一区二区三区四区| 亚洲精品国产一区二区三区四区在线| 亚洲一区二区欧美激情| 另类小说综合欧美亚洲| 波波电影院一区二区三区| 在线视频一区二区免费| 日韩欧美国产精品一区| 亚洲欧美一区二区视频| 午夜精品免费在线| 久久99精品久久久| 91小视频免费看| 欧美一区二区三区思思人| 国产欧美日韩综合| 亚洲综合色丁香婷婷六月图片| 久久精品国产成人一区二区三区| 成人av电影免费在线播放| 欧美色综合天天久久综合精品| 欧美一区二区三区在线视频| 国产精品第四页| 午夜视频久久久久久| 成人免费视频网站在线观看| 欧美日韩精品一区二区三区 | 91网站在线观看视频| 日韩一区二区免费视频| 国产精品三级视频| 九色综合国产一区二区三区| 一本一道久久a久久精品 | 久久久久久久久久久99999| 亚洲精品国产高清久久伦理二区| 久草这里只有精品视频| 欧美曰成人黄网| 欧美国产精品一区二区| 日本不卡视频在线| 91国产丝袜在线播放| 欧美韩日一区二区三区| 麻豆成人免费电影| 欧美三级日韩三级| 亚洲免费观看高清完整版在线| 国内不卡的二区三区中文字幕 | 日韩亚洲欧美综合| 久久久一区二区| 午夜视频在线观看一区二区三区| 国产黄人亚洲片| 日韩一区二区免费在线观看| 一个色妞综合视频在线观看| 99久久精品一区二区| 久久精品免视看| 免费看欧美女人艹b| 欧美日韩一区二区在线观看| 一区免费观看视频| 成人黄色小视频在线观看| 欧美精品一区二区不卡| 日本午夜一区二区| 欧美日韩色一区| 亚洲国产婷婷综合在线精品| 91在线观看一区二区| 国产精品剧情在线亚洲| 国产大陆精品国产| 久久欧美一区二区| 狠狠狠色丁香婷婷综合久久五月| 7777精品伊人久久久大香线蕉完整版 | 欧美videofree性高清杂交| 亚洲国产综合91精品麻豆| 91在线看国产| 亚洲欧洲国产日本综合| 9i在线看片成人免费| 亚洲国产高清aⅴ视频| 国产不卡视频在线播放| 欧美激情综合五月色丁香 | 国产剧情av麻豆香蕉精品| 欧美精品一区二区三区蜜臀| 久久99精品久久久久| 久久综合色婷婷| 黄色精品一二区| 日韩女优制服丝袜电影| 久久精品久久精品| 精品国产乱码久久| 国产一区在线视频| 国产亚洲精品久| 懂色av一区二区在线播放| 欧美国产一区二区在线观看| 成人小视频在线| 亚洲色欲色欲www| 欧美亚洲一区三区| 亚洲成人第一页| 欧美一区二区三区成人| 久久99最新地址| 欧美经典一区二区三区| 波多野洁衣一区| 亚洲一区免费观看| 91精品国产综合久久久蜜臀图片 | 91精品办公室少妇高潮对白| 亚洲成人自拍一区| 欧美videofree性高清杂交| 国产精品一区二区在线看| 国产精品国产a| 欧美日韩国产系列| 国内精品写真在线观看| 中文字幕视频一区二区三区久| 欧美综合欧美视频| 九九国产精品视频| 国产精品久久久久一区 | 亚洲天堂成人在线观看| 欧美日韩在线综合| 激情都市一区二区| 亚洲女同ⅹxx女同tv| 欧美成人一区二区三区片免费 | 国产91在线观看| 亚洲一区视频在线| 精品国产第一区二区三区观看体验| 国产福利一区在线| 亚洲www啪成人一区二区麻豆| 精品久久久久久无| 在线亚洲一区二区| 久久精品国产网站| 亚洲色图视频网站| 日韩免费高清av| 99精品久久99久久久久| 美女精品一区二区| 一区二区三区日韩精品| 久久先锋影音av| 欧美日韩dvd在线观看| 国产91精品露脸国语对白| 天天综合网 天天综合色| 欧美国产欧美亚州国产日韩mv天天看完整| 欧美午夜精品一区| 国产高清不卡二三区| 天堂久久久久va久久久久| 亚洲国产高清在线观看视频| 欧美一级高清大全免费观看| 94色蜜桃网一区二区三区| 国内外精品视频| 日韩在线观看一区二区| 亚洲欧美怡红院| 欧美激情一区二区三区四区|