📄 ld8a.h
字号:
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 + -