123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- /*
- ITU-T G.729A Annex B ANSI-C Source Code
- Version 1.3 Last modified: August 1997
- Copyright (c) 1996, France Telecom, Rockwell International,
- Universite de Sherbrooke.
- All rights reserved.
- */
- /*--------------------------------------------------------------------------*
- * Prototypes for DTX/CNG *
- *--------------------------------------------------------------------------*/
- /* Encoder DTX/CNG functions */
- void Init_Cod_cng(void);
- void Cod_cng(
- Word16 *exc, /* (i/o) : excitation array */
- Word16 pastVad, /* (i) : previous VAD decision */
- Word16 *lsp_old_q, /* (i/o) : previous quantized lsp */
- Word16 *Aq, /* (o) : set of interpolated LPC coefficients */
- Word16 *ana, /* (o) : coded SID parameters */
- Word16 freq_prev[MA_NP][M],
- /* (i/o) : previous LPS for quantization */
- Word16 *seed /* (i/o) : random generator seed */
- );
- void Update_cng(
- Word16 *r_h, /* (i) : MSB of frame autocorrelation */
- Word16 exp_r, /* (i) : scaling factor associated */
- Word16 Vad /* (i) : current Vad decision */
- );
- /* SID gain Quantization */
- void Qua_Sidgain(
- Word16 *ener, /* (i) array of energies */
- Word16 *sh_ener, /* (i) corresponding scaling factors */
- Word16 nb_ener, /* (i) number of energies or */
- Word16 *enerq, /* (o) decoded energies in dB */
- Word16 *idx /* (o) SID gain quantization index */
- );
- /* CNG excitation generation */
- void Calc_exc_rand(
- Word16 cur_gain, /* (i) : target sample gain */
- Word16 *exc, /* (i/o) : excitation array */
- Word16 *seed, /* (i) : current Vad decision */
- Flag flag_cod /* (i) : encoder/decoder flag */
- );
- /* SID LSP Quantization */
- void Get_freq_prev(Word16 x[MA_NP][M]);
- void Update_freq_prev(Word16 x[MA_NP][M]);
- void Get_decfreq_prev(Word16 x[MA_NP][M]);
- void Update_decfreq_prev(Word16 x[MA_NP][M]);
- /* Decoder CNG generation */
- void Init_Dec_cng(void);
- void Dec_cng(
- Word16 past_ftyp, /* (i) : past frame type */
- Word16 sid_sav, /* (i) : energy to recover SID gain */
- Word16 sh_sid_sav, /* (i) : corresponding scaling factor */
- Word16 *parm, /* (i) : coded SID parameters */
- Word16 *exc, /* (i/o) : excitation array */
- Word16 *lsp_old, /* (i/o) : previous lsp */
- Word16 *A_t, /* (o) : set of interpolated LPC coefficients */
- Word16 *seed, /* (i/o) : random generator seed */
- Word16 freq_prev[MA_NP][M]
- /* (i/o) : previous LPS for quantization */
- );
- Word16 read_frame(FILE *f_serial, Word16 *parm);
- /*--------------------------------------------------------------------------*
- * Constants for DTX/CNG *
- *--------------------------------------------------------------------------*/
- /* DTX constants */
- #define FLAG_COD (Flag)1
- #define FLAG_DEC (Flag)0
- #define INIT_SEED 11111
- #define FR_SID_MIN 3
- #define NB_SUMACF 3
- #define NB_CURACF 2
- #define NB_GAIN 2
- #define FRAC_THRESH1 4855
- #define FRAC_THRESH2 3161
- #define A_GAIN0 28672
- #define SIZ_SUMACF (NB_SUMACF * MP1)
- #define SIZ_ACF (NB_CURACF * MP1)
- #define A_GAIN1 4096 /* 32768L - A_GAIN0 */
- #define RATE_8000 80 /* Full rate (8000 bit/s) */
- #define RATE_SID 15 /* SID */
- #define RATE_0 0 /* 0 bit/s rate */
- /* CNG excitation generation constant */
- /* alpha = 0.5 */
- #define FRAC1 19043 /* (sqrt(40)xalpha/2 - 1) * 32768 */
- #define K0 24576 /* (1 - alpha ** 2) in Q15 */
- #define G_MAX 5000
|