📄 ld8a.h
字号:
#define GRID_POINTS 50
#define PI04 ((Word16)1029) /* Q13 pi*0.04 */
#define PI92 ((Word16)23677) /* Q13 pi*0.92 */
#define CONST10 ((Word16)10*(1<<11)) /* Q11 10.0 */
#define CONST12 ((Word16)19661) /* Q14 1.2 */
/*-------------------------------*
* LSP VQ functions. *
*-------------------------------*/
void Lsf_lsp2(
Word16 lsf[], /* (i) Q13 : lsf[m] (range: 0.0<=val<PI) */
Word16 lsp[], /* (o) Q15 : lsp[m] (range: -1<=val<1) */
Word16 m /* (i) : LPC order */
);
void Lsp_lsf2(
Word16 lsp[], /* (i) Q15 : lsp[m] (range: -1<=val<1) */
Word16 lsf[], /* (o) Q13 : lsf[m] (range: 0.0<=val<PI) */
Word16 m /* (i) : LPC order */
);
void Qua_lsp(
Word16 lsp[], /* (i) Q15 : Unquantized LSP */
Word16 lsp_q[], /* (o) Q15 : Quantized LSP */
Word16 ana[] /* (o) : indexes */
);
void Get_wegt(
Word16 flsp[], /* Q13 */
Word16 wegt[] /* Q11 -> normalized */
);
void Lsp_encw_reset(
void
);
void Lsp_qua_cs(
Word16 flsp_in[M], /* Q13 */
Word16 lspq_out[M], /* Q13 */
Word16 *code
);
void Lsp_expand_1(
Word16 buf[], /* Q13 */
Word16 gap /* Q13 */
);
void Lsp_expand_2(
Word16 buf[], /* Q13 */
Word16 gap /* Q13 */
);
void Lsp_expand_1_2(
Word16 buf[], /* Q13 */
Word16 gap /* Q13 */
);
void Lsp_get_quant(
Word16 lspcb1[][M], /* Q13 */
Word16 lspcb2[][M], /* Q13 */
Word16 code0,
Word16 code1,
Word16 code2,
Word16 fg[][M], /* Q15 */
Word16 freq_prev[][M], /* Q13 */
Word16 lspq[], /* Q13 */
Word16 fg_sum[] /* Q15 */
);
void Lsp_get_tdist(
Word16 wegt[], /* normalized */
Word16 buf[], /* Q13 */
Word32 *L_tdist, /* Q27 */
Word16 rbuf[], /* Q13 */
Word16 fg_sum[] /* Q15 */
);
void Lsp_last_select(
Word32 L_tdist[], /* Q27 */
Word16 *mode_index
);
void Lsp_pre_select(
Word16 rbuf[], /* Q13 */
Word16 lspcb1[][M], /* Q13 */
Word16 *cand
);
void Lsp_select_1(
Word16 rbuf[], /* Q13 */
Word16 lspcb1[], /* Q13 */
Word16 wegt[], /* normalized */
Word16 lspcb2[][M], /* Q13 */
Word16 *index
);
void Lsp_select_2(
Word16 rbuf[], /* Q13 */
Word16 lspcb1[], /* Q13 */
Word16 wegt[], /* normalized */
Word16 lspcb2[][M], /* Q13 */
Word16 *index
);
void Lsp_stability(
Word16 buf[] /* Q13 */
);
void Relspwed(
Word16 lsp[], /* Q13 */
Word16 wegt[], /* normalized */
Word16 lspq[], /* Q13 */
Word16 lspcb1[][M], /* Q13 */
Word16 lspcb2[][M], /* Q13 */
Word16 fg[MODE][MA_NP][M], /* Q15 */
Word16 freq_prev[MA_NP][M], /* Q13 */
Word16 fg_sum[MODE][M], /* Q15 */
Word16 fg_sum_inv[MODE][M], /* Q12 */
Word16 code_ana[]
);
void D_lsp(
Word16 prm[], /* (i) : indexes of the selected LSP */
Word16 lsp_q[], /* (o) Q15 : Quantized LSP parameters */
Word16 erase /* (i) : frame erase information */
);
void Lsp_decw_reset(
void
);
void Lsp_iqua_cs(
Word16 prm[], /* input : codes of the selected LSP*/
Word16 lsp_q[], /* output: Quantized LSP parameters*/
Word16 erase /* input : frame erase information */
);
void Lsp_prev_compose(
Word16 lsp_ele[], /* Q13 */
Word16 lsp[], /* Q13 */
Word16 fg[][M], /* Q15 */
Word16 freq_prev[][M], /* Q13 */
Word16 fg_sum[] /* Q15 */
);
void Lsp_prev_extract(
Word16 lsp[M], /* Q13 */
Word16 lsp_ele[M], /* Q13 */
Word16 fg[MA_NP][M], /* Q15 */
Word16 freq_prev[MA_NP][M], /* Q13 */
Word16 fg_sum_inv[M] /* Q12 */
);
void Lsp_prev_update(
Word16 lsp_ele[M], /* Q13 */
Word16 freq_prev[MA_NP][M] /* Q13 */
);
/*-------------------------------*
* gain VQ constants. *
*-------------------------------*/
#define NCODE1_B 3 /* number of Codebook-bit */
#define NCODE2_B 4 /* number of Codebook-bit */
#define NCODE1 (1<<NCODE1_B) /* Codebook 1 size */
#define NCODE2 (1<<NCODE2_B) /* Codebook 2 size */
#define NCAN1 4 /* Pre-selecting order for #1 */
#define NCAN2 8 /* Pre-selecting order for #2 */
#define INV_COEF -17103 /* Q19 */
/*--------------------------------------------------------------------------*
* gain VQ functions. *
*--------------------------------------------------------------------------*/
Word16 Qua_gain(
Word16 code[], /* (i) Q13 : Innovative vector. */
Word16 g_coeff[], /* (i) : Correlations <xn y1> -2<y1 y1> */
/* <y2,y2>, -2<xn,y2>, 2<y1,y2> */
Word16 exp_coeff[],/* (i) : Q-Format g_coeff[] */
Word16 L_subfr, /* (i) : Subframe length. */
Word16 *gain_pit, /* (o) Q14 : Pitch gain. */
Word16 *gain_cod, /* (o) Q1 : Code gain. */
Word16 tameflag /* (i) : flag set to 1 if taming is needed */
);
void Dec_gain(
Word16 index, /* (i) : Index of quantization. */
Word16 code[], /* (i) Q13 : Innovative vector. */
Word16 L_subfr, /* (i) : Subframe length. */
Word16 bfi, /* (i) : Bad frame indicator */
Word16 *gain_pit, /* (o) Q14 : Pitch gain. */
Word16 *gain_cod /* (o) Q1 : Code gain. */
);
void Gain_predict(
Word16 past_qua_en[],/* (i) Q10 :Past quantized energies */
Word16 code[], /* (i) Q13 : Innovative vector. */
Word16 L_subfr, /* (i) : Subframe length. */
Word16 *gcode0, /* (o) Qxx : Predicted codebook gain */
Word16 *exp_gcode0 /* (o) : Q-Format(gcode0) */
);
void Gain_update(
Word16 past_qua_en[],/* (i) Q10 :Past quantized energies */
Word32 L_gbk12 /* (i) Q13 : gbk1[indice1][1]+gbk2[indice2][1] */
);
void Gain_update_erasure(
Word16 past_qua_en[]/* (i) Q10 :Past quantized energies */
);
void Corr_xy2(
Word16 xn[], /* (i) Q0 :Target vector. */
Word16 y1[], /* (i) Q0 :Adaptive codebook. */
Word16 y2[], /* (i) Q12 :Filtered innovative vector. */
Word16 g_coeff[], /* (o) Q[exp]:Correlations between xn,y1,y2 */
Word16 exp_g_coeff[] /* (o) :Q-format of g_coeff[] */
);
/*-----------------------*
* Bitstream function *
*-----------------------*/
void prm2bits_ld8k(Word16 prm[], Word16 bits[]);
void bits2prm_ld8k(Word16 bits[], Word16 prm[]);
#define BIT_0 (short)0x007f /* definition of zero-bit in bit-stream */
#define BIT_1 (short)0x0081 /* definition of one-bit in bit-stream */
#define SYNC_WORD (short)0x6b21 /* definition of frame erasure flag */
#define SIZE_WORD (short)80 /* number of speech bits */
/*-----------------------------------*
* Post-filter functions. *
*-----------------------------------*/
#define L_H 22 /* size of truncated impulse response of A(z/g1)/A(z/g2) */
#define GAMMAP 16384 /* 0.5 (Q15) */
#define INV_GAMMAP 21845 /* 1/(1+GAMMAP) (Q15) */
#define GAMMAP_2 10923 /* GAMMAP/(1+GAMMAP) (Q15) */
#define GAMMA2_PST 18022 /* Formant postfilt factor (numerator) 0.55 Q15 */
#define GAMMA1_PST 22938 /* Formant postfilt factor (denominator) 0.70 Q15 */
#define MU 26214 /* Factor for tilt compensation filter 0.8 Q15 */
#define AGC_FAC 29491 /* Factor for automatic gain control 0.9 Q15 */
#define AGC_FAC1 (Word16)(32767 - AGC_FAC) /* 1-AGC_FAC in Q15 */
void Init_Post_Filter(void);
void Post_Filter(
Word16 *syn, /* in/out: synthesis speech (postfiltered is output) */
Word16 *Az_4, /* input : interpolated LPC parameters in all subframes */
Word16 *T /* input : decoded pitch lags in all subframes */
);
void pit_pst_filt(
Word16 *signal, /* (i) : input signal */
Word16 *scal_sig, /* (i) : input signal (scaled, divided by 4) */
Word16 t0_min, /* (i) : minimum value in the searched range */
Word16 t0_max, /* (i) : maximum value in the searched range */
Word16 L_subfr, /* (i) : size of filtering */
Word16 *signal_pst /* (o) : harmonically postfiltered signal */
);
void preemphasis(
Word16 *signal, /* (i/o) : input signal overwritten by the output */
Word16 g, /* (i) Q15 : preemphasis coefficient */
Word16 L /* (i) : size of filtering */
);
void agc(
Word16 *sig_in, /* (i) : postfilter input signal */
Word16 *sig_out, /* (i/o) : postfilter output signal */
Word16 l_trm /* (i) : subframe size */
);
/*--------------------------------------------------------------------------*
* Constants and prototypes for taming procedure. *
*--------------------------------------------------------------------------*/
#define GPCLIP 15564 /* Maximum pitch gain if taming is needed Q14*/
#define GPCLIP2 481 /* Maximum pitch gain if taming is needed Q9 */
#define GP0999 16383 /* Maximum pitch gain if taming is needed */
#define L_THRESH_ERR 983040000L /* Error threshold taming 16384. * 60000. */
void Init_exc_err(void);
void update_exc_err(Word16 gain_pit, Word16 t0);
Word16 test_err(Word16 t0, Word16 t0_frac);
/*--------------------------------------------------------------------------*
* Prototypes for auxiliary functions. *
*--------------------------------------------------------------------------*/
void Copy(
Word16 x[], /* (i) : input vector */
Word16 y[], /* (o) : output vector */
Word16 L /* (i) : vector length */
);
void Set_zero(
Word16 x[], /* (o) : vector to clear */
Word16 L /* (i) : length of vector */
);
Word16 Random(void);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -