📄 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 + -