⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ld8a.h

📁 关于对传统的只能传递文本信息的G。729的改进
💻 H
📖 第 1 页 / 共 2 页
字号:
 FLOAT mem[],   /* in/out: filter memory                    */

 int update_m   /* input : 0 = no memory update, 1 = update */

);



void convolve(

 FLOAT x[],             /* input : input vector x[0:l]                     */

 FLOAT h[],             /* input : impulse response or second input h[0:l] */

 FLOAT y[],             /* output: x convolved with h , y[0:l]             */

 int l                  /* input : dimension of all vectors                */

);



/*-------------------------------------------------------------*

 * Prototypes of pitch functions                               *

 *-------------------------------------------------------------*/



int pitch_ol_fast(  /* output: open loop pitch lag                        */

   FLOAT signal[],  /* input : signal used to compute the open loop pitch */

                    /*     signal[-pit_max] to signal[-1] should be known */

   int L_frame      /* input : length of frame to compute pitch           */

);



int pitch_fr3_fast(     /* output: integer part of pitch period */

 FLOAT exc[],           /* input : excitation buffer            */

 FLOAT xn[],            /* input : target vector                */

 FLOAT h[],             /* input : impulse response.            */

 int L_subfr,           /* input : Length of subframe           */

 int t0_min,            /* input : minimum value in the searched range */

 int t0_max,            /* input : maximum value in the searched range */

 int i_subfr,           /* input : indicator for first subframe        */

 int *pit_frac          /* output: chosen fraction                     */

);



FLOAT g_pitch(FLOAT xn[], FLOAT y1[], FLOAT g_coeff[], int l);



int enc_lag3(     /* output: Return index of encoding */

  int T0,         /* input : Pitch delay              */

  int T0_frac,    /* input : Fractional pitch delay   */

  int *T0_min,    /* in/out: Minimum search delay     */

  int *T0_max,    /* in/out: Maximum search delay     */

  int pit_min,    /* input : Minimum pitch delay      */

  int pit_max,    /* input : Maximum pitch delay      */

  int pit_flag    /* input : Flag for 1st subframe    */

);



void dec_lag3(     /* Decode the pitch lag                   */

  int index,       /* input : received pitch index           */

  int pit_min,     /* input : minimum pitch lag              */

  int pit_max,     /* input : maximum pitch lag              */

  int i_subfr,     /* input : subframe flag                  */

  int *T0,         /* output: integer part of pitch lag      */

  int *T0_frac     /* output: fractional part of pitch lag   */

);



void pred_lt_3(       /* Compute adaptive codebook                       */

 FLOAT exc[],         /* in/out: excitation vector, exc[0:l_sub-1] = out */

 int t0,              /* input : pitch lag                               */

 int frac,            /* input : Fraction of pitch lag (-1, 0, 1)  / 3   */

 int l_sub            /* input : length of subframe.                     */

);



int parity_pitch(int pitch_i);



int check_parity_pitch(int pitch_i, int parity);



void cor_h_x(

     FLOAT h[],         /* (i) :Impulse response of filters      */

     FLOAT X[],         /* (i) :Target vector                    */

     FLOAT D[]          /* (o) :Correlations between h[] and D[] */

);



/*-----------------------*

 * Innovative codebook.  *

 *-----------------------*/



int ACELP_code_A(       /* (o) :index of pulses positions    */

  FLOAT x[],            /* (i) :Target vector                */

  FLOAT h[],            /* (i) :Inpulse response of filters  */

  int T0,               /* (i) :Pitch lag                    */

  FLOAT pitch_sharp,    /* (i) :Last quantized pitch gain    */

  FLOAT code[],         /* (o) :Innovative codebook          */

  FLOAT y[],            /* (o) :Filtered innovative codebook */

  int *sign             /* (o) :Signs of 4 pulses            */

);



void  decod_ACELP(int signs, int positions, FLOAT cod[]);



/*-----------------------------------------------------------*

 * Prototypes of LSP VQ functions                            *

 *-----------------------------------------------------------*/

void qua_lsp(

  FLOAT lsp[],       /* (i) : Unquantized LSP            */

  FLOAT lsp_q[],     /* (o) : Quantized LSP              */

  int ana[]          /* (o) : indexes                    */

);



void lsp_encw_reset(void);



void lsp_expand_1( FLOAT buf[], FLOAT c);



void lsp_expand_2( FLOAT buf[], FLOAT c);



void lsp_expand_1_2( FLOAT buf[], FLOAT c);



void lsp_get_quant(

  FLOAT lspcb1[][M],

  FLOAT lspcb2[][M],

  int code0,

  int code1,

  int code2,

  FLOAT fg[][M],

  FLOAT freq_prev[][M],

  FLOAT lspq[],

  FLOAT fg_sum[]

);



void d_lsp(

int index[],           /* input : indexes                 */

FLOAT lsp_new[],       /* output: decoded lsp             */

int bfi                /* input : frame erase information */

);



void lsp_decw_reset(void);



void lsp_prev_extract(

  FLOAT lsp[M],

  FLOAT lsp_ele[M],

  FLOAT fg[MA_NP][M],

  FLOAT freq_prev[MA_NP][M],

  FLOAT fg_sum_inv[M]

);



void lsp_prev_update(

  FLOAT lsp_ele[M],

  FLOAT freq_prev[MA_NP][M]

);



/*--------------------------------------------------------------------------*

 * gain VQ functions.                                                       *

 *--------------------------------------------------------------------------*/

int qua_gain(FLOAT code[], FLOAT *coeff, int lcode, FLOAT *gain_pit,

        FLOAT *gain_code, int tameflag   );



void  dec_gain(int indice, FLOAT code[], int lcode, int bfi, FLOAT *gain_pit,

               FLOAT *gain_code);



void gain_predict(

  FLOAT past_qua_en[],  /* input :Past quantized energies       */

  FLOAT code[],         /* input: Innovative vector.            */

  int l_subfr,          /* input : Subframe length.             */

  FLOAT *gcode0         /* output : Predicted codebook gain     */

);



void gain_update(

  FLOAT past_qua_en[], /* input/output :Past quantized energies  */

  FLOAT g_code         /* input        : quantized gain          */

);



void gain_update_erasure(FLOAT *past_qua_en);



void  corr_xy2(FLOAT xn[], FLOAT y1[], FLOAT y2[], FLOAT g_coeff[]);



/*-----------------------*

 * Bitstream function    *

 *-----------------------*/

void  prm2bits_ld8k(int prm[], unsigned char * bits);



void  bits2prm_ld8k(unsigned char * bits, int prm[]);



/*-----------------------------------------------------------*

 * Prototypes for the post filtering                         *

 *-----------------------------------------------------------*/



void init_post_filter(void);



void post_filter(

  FLOAT *syn,     /* in/out: synthesis speech (postfiltered is output)    */

  FLOAT *a_t,     /* input : interpolated LPC parameters in all subframes */

  int *T          /* input : decoded pitch lags in all subframes          */

);



/*------------------------------------------------------------*

 * prototypes for taming procedure.                           *

 *------------------------------------------------------------*/



void   init_exc_err(void);



void   update_exc_err(FLOAT gain_pit, int t0);



int test_err(int t0, int t0_frac);



/*-----------------------------------------------------------*

 * Prototypes for auxiliary functions                        *

 *-----------------------------------------------------------*/



void set_zero(

  FLOAT  x[],           /* (o)  : vector to clear  */

  int L                 /* (i)  : length of vector */

);



void copy(

  FLOAT  x[],           /* (i)  : input vector   */

  FLOAT  y[],           /* (o)  : output vector  */

  int L                 /* (i)  : vector length  */

);

short random_g729(void);



void fwrite16(

 FLOAT *data,           /* input: inputdata            */

 int length,            /* input: length of data array */

 FILE *fp               /* input: file pointer         */

);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -