FreeCalypso > hg > gsm-codec-lib
diff libgsmefr/codec.h @ 39:36e1363ad885
libgsmefr: initial import of ETSI header files
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Thu, 24 Nov 2022 07:38:23 +0000 |
parents | |
children | 988fd7ff514f |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libgsmefr/codec.h Thu Nov 24 07:38:23 2022 +0000 @@ -0,0 +1,162 @@ +void Init_Coder_12k2 (void); + +void Coder_12k2 ( + Word16 ana[], /* output : Analysis parameters */ + Word16 synth[] /* output : Local synthesis */ +); + +void Init_Decoder_12k2 (void); + +void Decoder_12k2 ( + Word16 parm[], /* input : vector of synthesis parameters + parm[0] = bad frame indicator (bfi) */ + Word16 synth[], /* output: synthesis speech */ + Word16 A_t[], /* output: decoded LP filter in 4 subframes */ + Word16 TAF, + Word16 SID_flag +); + +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 subfr. */ +); + +void code_10i40_35bits ( + Word16 x[], /* (i) : target vector */ + Word16 cn[], /* (i) : residual after long term prediction */ + Word16 h[], /* (i) : impulse response of weighted synthesis + filter */ + Word16 cod[], /* (o) : algebraic (fixed) codebook excitation */ + Word16 y[], /* (o) : filtered fixed codebook excitation */ + Word16 indx[] /* (o) : index of 10 pulses (sign + position) */ +); +void dec_10i40_35bits ( + Word16 index[], /* (i) : index of 10 pulses (sign+position) */ + Word16 cod[] /* (o) : algebraic (fixed) codebook excitation */ +); +Word16 Dec_lag6 ( /* output: return integer pitch lag */ + Word16 index, /* input : received pitch index */ + Word16 pit_min, /* input : minimum pitch lag */ + Word16 pit_max, /* input : maximum pitch lag */ + Word16 i_subfr, /* input : subframe flag */ + Word16 L_frame_by2,/* input : speech frame size divided by 2 */ + Word16 *T0_frac, /* output: fractional part of pitch lag */ + Word16 bfi /* input : bad frame indicator */ +); +Word16 d_gain_pitch ( /* out : quantized pitch gain */ + Word16 index, /* in : index of quantization */ + Word16 bfi, /* in : bad frame indicator (good = 0) */ + Word16 state, /* in : state of the state machine */ + Word16 prev_bf, /* Previous bf */ + Word16 rxdtx_ctrl + +); +void d_gain_code ( + Word16 index, /* input : received quantization index */ + Word16 code[], /* input : innovation codevector */ + Word16 lcode, /* input : codevector length */ + Word16 *gain_code, /* output: decoded innovation gain */ + Word16 bfi, /* input : bad frame indicator */ + Word16 state, /* in : state of the state machine */ + Word16 prev_bf, /* Previous bf */ + Word16 rxdtx_ctrl, + Word16 i_subfr, + Word16 rx_dtx_state + +); +void D_plsf_5 ( + Word16 *indice, /* input : quantization indices of 5 submatrices */ + Word16 *lsp1_q, /* output: quantized 1st LSP vector */ + Word16 *lsp2_q, /* output: quantized 2nd LSP vector */ + Word16 bfi, /* input : bad frame indicator (set to 1 if a bad + frame is received) */ + Word16 rxdtx_ctrl, + Word16 rx_dtx_state +); +Word16 Enc_lag6 ( /* output: Return index of encoding */ + Word16 T0, /* input : Pitch delay */ + Word16 *T0_frac, /* in/out: Fractional pitch delay */ + Word16 *T0_min, /* in/out: Minimum search delay */ + Word16 *T0_max, /* in/out: Maximum search delay */ + Word16 pit_min, /* input : Minimum pitch delay */ + Word16 pit_max, /* input : Maximum pitch delay */ + Word16 pit_flag /* input : Flag for 1st or 3rd subframe */ +); + +Word16 q_gain_pitch ( /* Return index of quantization */ + Word16 *gain /* (i) : Pitch gain to quantize */ +); + +Word16 q_gain_code ( /* Return quantization index */ + Word16 code[], /* (i) : fixed codebook excitation */ + Word16 lcode, /* (i) : codevector size */ + Word16 *gain, /* (i/o) : quantized fixed codebook gain */ + Word16 txdtx_ctrl, + Word16 i_subfr +); + +Word16 G_pitch ( /* (o) : Gain of pitch lag saturated to 1.2 */ + Word16 xn[], /* (i) : Pitch target. */ + Word16 y1[], /* (i) : Filtered adaptive codebook. */ + Word16 L_subfr /* : Length of subframe. */ +); +Word16 G_code ( /* out : Gain of innovation code. */ + Word16 xn[], /* in : target vector */ + Word16 y2[] /* in : filtered inovation vector */ +); + +Word16 Interpol_6 ( /* (o) : interpolated value */ + Word16 *x, /* (i) : input vector */ + Word16 frac /* (i) : fraction */ +); +void Int_lpc ( + Word16 lsp_old[], /* input: LSP vector at the 4th subfr. of past frame */ + Word16 lsp_mid[], /* input: LSP vector at the 2nd subfr. of + present frame */ + Word16 lsp_new[], /* input: LSP vector at the 4th subfr. of + present frame */ + Word16 Az[] /* output: interpolated LP parameters in all subfr. */ +); +void Int_lpc2 ( + Word16 lsp_old[], /* input: LSP vector at the 4th subfr. of past frame */ + Word16 lsp_mid[], /* input: LSP vector at the 2nd subframe of + present frame */ + Word16 lsp_new[], /* input: LSP vector at the 4th subframe of + present frame */ + Word16 Az[] /* output:interpolated LP parameters + in subframes 1 and 3 */ +); +Word16 Pitch_fr6 ( /* (o) : pitch period. */ + Word16 exc[], /* (i) : excitation buffer */ + Word16 xn[], /* (i) : target vector */ + Word16 h[], /* (i) : impulse response of synthesis and + weighting filters */ + Word16 L_subfr, /* (i) : Length of subframe */ + Word16 t0_min, /* (i) : minimum value in the searched range. */ + Word16 t0_max, /* (i) : maximum value in the searched range. */ + Word16 i_subfr, /* (i) : indicator for first subframe. */ + Word16 *pit_frac /* (o) : chosen fraction. */ +); +Word16 Pitch_ol ( /* output: open loop pitch lag */ + Word16 signal[], /* input: signal used to compute the open loop pitch */ + /* signal[-pit_max] to signal[-1] should be known */ + Word16 pit_min, /* input : minimum pitch lag */ + Word16 pit_max, /* input : maximum pitch lag */ + Word16 L_frame /* input : length of frame to compute pitch */ +); +void Pred_lt_6 ( + Word16 exc[], /* in/out: excitation buffer */ + Word16 T0, /* input : integer pitch lag */ + Word16 frac, /* input : fraction of lag */ + Word16 L_subfr /* input : subframe size */ +); +void Q_plsf_5 ( + Word16 *lsp1, /* input : 1st LSP vector */ + Word16 *lsp2, /* input : 2nd LSP vector */ + Word16 *lsp1_q, /* output: quantized 1st LSP vector */ + Word16 *lsp2_q, /* output: quantized 2nd LSP vector */ + Word16 *indice, /* output: quantization indices of 5 matrices */ + Word16 txdtx_ctrl /* input : tx dtx control word */ +);