📄 ld8cp.h
字号:
/*
ITU-T G.729 Annex I - Reference C code for fixed point
implementation of G.729 Annex I
Version 1.1 of October 1999
*/
/*
File : ld8cp.h
*/
/* from ld8e. G.729 Annex E Version 1.2 Last modified: May 1998 */
/* from ld8kd.h G.729 Annex D Version 1.2 Last modified: May 1998 */
/* from ld8k.h G.729 Annex B Version 1.3 Last modified: August 1997 */
/*---------------------------------------------------------------------------*
* constants for bitstream packing *
*---------------------------------------------------------------------------*/
#define PRM_SIZE_E_fwd 18 /* Size of vector of analysis parameters. */
#define PRM_SIZE_E_bwd 16 /* Size of vector of analysis parameters. */
#define PRM_SIZE_E 18 /* Size of vector of analysis parameters. */
#define PRM_SIZE_D 10 /* Size of vector of analysis parameters. */
#define PRM_SIZE_SID 4 /* Size of vector of analysis parameters. */
#define SERIAL_SIZE_E (116+4) /* Bits/frame + bfi+ number of speech bits
+ bit for mode + protection */
#define RATE_6400 64 /* Low rate (6400 bit/s) */
#define RATE_8000 80 /* Full rate (8000 bit/s) */
#define RATE_11800 118 /* High rate (11800 bit/s) */
#define RATE_SID 15 /* SID */
#define RATE_0 0 /* 0 bit/s rate */
#define G729D 0 /* Low rate (6400 bit/s) */
#define G729 1 /* Full rate (8000 bit/s) */
#define G729E 2 /* High rate (11800 bit/s) */
/* backward LPC analysis parameters */
#define M_BWD 30 /* Order of Backward LP filter. */
#define M_BWDP1 (M_BWD+1) /* Order of Backward LP filter + 1 */
#define NRP 35
#define MEM_SYN_BWD M_BWD + NRP
#define N1 M_BWD + L_FRAME
#define L_ANA_BWD L_FRAME + MEM_SYN_BWD
#define L_ANA_BWD_M1 L_ANA_BWD - 1
#define W_FACT 10368
#define GAMMA_BWD 32113
/* short term pst parameters : */
#define GAMMA1_PST_E 22938 /* denominator weighting factor (Q15) */
#define GAMMA2_PST_E 21300 /* numerator weighting factor (Q15) */
#define LONG_H_ST_E 32 /* impulse response length */
#define GAMMA_HARM_E 8192
#define GAMMA_HARM 16384
/* ACELP codebooks parameters */
#define NB_TRACK 5
#define Q15_1_5 6554
/* 6.4K GAIN quantizer constants*/
#define NCODE1_B_6K 3 /* number of Codebook-bit */
#define NCODE2_B_6K 3 /* number of Codebook-bit */
#define NCODE1_6K (1<<NCODE1_B_6K) /* Codebook 1 size */
#define NCODE2_6K (1<<NCODE2_B_6K) /* Codebook 2 size */
#define NCAN1_6K 6 /* Pre-selecting order for #1 */
#define NCAN2_6K 6 /* Pre-selecting order for #2 */
#define INV_COEF_6K -28940 /* Q20 */
/*--------------------------------------------------------------------------*
* Main coder and decoder functions *
*--------------------------------------------------------------------------*/
void Init_Coder_ld8c(Word16 dtx_enable);
void Coder_ld8c(
Word16 ana[], /* (o) : analysis parameters */
Word16 frame, /* input : frame counter */
Word16 dtx_enable, /* input : DTX enable flag */
Word16 rate /* input : rate selector/frame =0 6.4kbps , =1 8kbps,= 2 11.8 kbps*/
);
void Init_Decod_ld8c(void);
void Decod_ld8c(
Word16 parm[], /* (i) : vector of synthesis parameters
parm[0] = bad frame indicator (bfi) */
Word16 voicing, /* (i) : voicing decision from previous frame */
Word16 synth[], /* (o) : synthesized speech */
Word16 A_t[], /* (o) : decoded LP filter for 2 subframes */
Word16 *T0_first, /* (o) : decoded pitch lag in first subframe */
Word16 *stationnary, /* output: stationnarity indicator */
Word16 *m_pst, /* output: LPC order */
Word16 *Vad
);
/*--------------------------------------------------------------------------*
* protypes of functions similar to G729 *
* differences : *
* list of arguments modified *
* local static variables and arrays are now passed as parameters *
* LPC order formerly constant is now passed as variable parameter *
* some temporary variables are now passed to the calling routine *
*--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------*
* LPC analysis and filtering *
*--------------------------------------------------------------------------*/
void Autocorrcp(
Word16 x[], /* (i) : input signal */
Word16 m, /* (i) : LPC order */
Word16 r_h[], /* (o) : autocorrelations (msb) */
Word16 r_l[], /* (o) : autocorrelations (lsb) */
Word16 *exp_R0
);
void Levinsoncp(
Word16 m, /* (i) : LPC order */
Word16 Rh[], /* (i) : Rh[m+1] autocorrelation coefficients (msb) */
Word16 Rl[], /* (i) : Rl[m+1] autocorrelation coefficients (lsb) */
Word16 A[], /* (o) Q12 : A[m] LPC coefficients (m = 10) */
Word16 rc[], /* (o) Q15 : rc[M] Reflection coefficients. */
Word16 old_A[], /* (i/o) Q12 : last stable filter LPC coefficients */
Word16 old_rc[], /* (i/o) Q15 : last stable filter Reflection coefficients. */
Word16 *Err
);
void Residue(
Word16 m, /* (i) : LPC order */
Word16 a[], /* (i) Q12 : prediction coefficients */
Word16 x[], /* (i) : speech (values x[-m..-1] are needed */
Word16 y[], /* (o) : residual signal */
Word16 lg /* (i) : size of filtering */
);
void Syn_filte(
Word16 m, /* (i) : LPC order */
Word16 a[], /* (i) Q12 : a[m+1] prediction coefficients (m=10) */
Word16 x[], /* (i) : input signal */
Word16 y[], /* (o) : output signal */
Word16 lg, /* (i) : size of filtering */
Word16 mem[], /* (i/o) : memory associated with this filtering. */
Word16 update /* (i) : 0=no update, 1=update of memory. */
);
/*--------------------------------------------------------------------------*
* LSP VQ functions. *
*--------------------------------------------------------------------------*/
void Qua_lspe(
Word16 lsp[], /* (i) Q15 : Unquantized LSP */
Word16 lsp_q[], /* (o) Q15 : Quantized LSP */
Word16 ana[], /* (o) : indexes */
Word16 freq_prev[MA_NP][M], /* (i) Q13 : previous LSP MA vector */
Word16 freq_cur[] /* (o) Q13 : current LSP MA vector */
);
void Lsp_encw_resete(
Word16 freq_prev[MA_NP][M] /* (i) Q13 : previous LSP MA vector */
);
void Lsp_qua_cse(
Word16 flsp_in[M], /* (i) Q13 : Original LSP parameters */
Word16 lspq_out[M], /* (o) Q13 : Quantized LSP parameters */
Word16 *code, /* (o) : codes of the selected LSP */
Word16 freq_prev[MA_NP][M], /* (i) Q13 : previous LSP MA vector */
Word16 freq_cur[] /* (o) Q13 : current LSP MA vector */
);
void Lsp_get_quante(
Word16 lspcb1[][M], /* (i) Q13 : first stage LSP codebook */
Word16 lspcb2[][M], /* (i) Q13 : Second stage LSP codebook */
Word16 code0, /* (i) : selected code of first stage */
Word16 code1, /* (i) : selected code of second stage */
Word16 code2, /* (i) : selected code of second stage */
Word16 fg[][M], /* (i) Q15 : MA prediction coef. */
Word16 freq_prev[][M], /* (i) Q13 : previous LSP vector */
Word16 lspq[], /* (o) Q13 : quantized LSP parameters */
Word16 fg_sum[], /* (i) Q15 : present MA prediction coef. */
Word16 freq_cur[] /* (i) Q15 : present MA prediction coef. */
);
void Relspwede(
Word16 lsp[], /* (i) Q13 : unquantized LSP parameters */
Word16 wegt[], /* (i) norm: weighting coefficients */
Word16 lspq[], /* (o) Q13 : quantized LSP parameters */
Word16 lspcb1[][M], /* (i) Q13 : first stage LSP codebook */
Word16 lspcb2[][M], /* (i) Q13 : Second stage LSP codebook */
Word16 fg[MODE][MA_NP][M], /* (i) Q15 : MA prediction coefficients */
Word16 freq_prev[MA_NP][M], /* (i) Q13 : previous LSP vector */
Word16 fg_sum[MODE][M], /* (i) Q15 : present MA prediction coef.*/
Word16 fg_sum_inv[MODE][M], /* (i) Q12 : inverse coef. */
Word16 code_ana[], /* (o) : codes of the selected LSP */
Word16 freq_cur[] /* (o) Q13 : current LSP MA vector */
);
void D_lspe(
Word16 prm[], /* (i) : indexes of the selected LSP */
Word16 lsp_q[], /* (o) Q15 : Quantized LSP parameters */
Word16 erase, /* (i) : frame erase information */
Word16 freq_prev[MA_NP][M], /* (i/o) Q13 : previous LSP MA vector */
Word16 prev_lsp[], /* (i/o) Q13 : previous LSP vector */
Word16 *prev_ma /* (i/o) previous MA prediction coef.*/
);
void Lsp_decw_resete(
Word16 freq_prev[MA_NP][M], /* (o) Q13 : previous LSP MA vector */
Word16 prev_lsp[], /* (o) Q13 : previous LSP vector */
Word16 *prev_ma /* previous MA prediction coef.*/
);
void Lsp_iqua_cse(
Word16 prm[], /* (i) : indexes of the selected LSP */
Word16 lsp_q[], /* (o) Q13 : Quantized LSP parameters */
Word16 erase, /* (i) : frame erase information */
Word16 freq_prev[MA_NP][M], /* (i/o) Q13 : previous LSP MA vector */
Word16 prev_lsp[], /* (i/o) Q13 : previous LSP vector */
Word16 *prev_ma /* (i/o) previous MA prediction coef.*/
);
/*--------------------------------------------------------------------------*
* Postfilter functions *
*--------------------------------------------------------------------------*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -