123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191 |
- /*
- *****************************************************************************
- *
- * GSM AMR-NB speech codec R98 Version 7.6.0 December 12, 2001
- * R99 Version 3.3.0
- * REL-4 Version 4.1.0
- *
- *****************************************************************************
- *
- * File : cod_amr.h
- * Purpose : Main encoder routine operating on a frame basis.
- *
- *****************************************************************************
- */
- #ifndef cod_amr_h
- #define cod_amr_h "$Id $"
- /*
- *****************************************************************************
- * INCLUDE FILES
- *****************************************************************************
- */
- #include "typedef.h"
- #include "cnst.h"
- #include "mode.h"
- #include "lpc.h"
- #include "lsp.h"
- #include "cl_ltp.h"
- #include "gain_q.h"
- #include "p_ol_wgh.h"
- #include "ton_stab.h"
- #include "vad.h"
- #include "dtx_enc.h"
-
- /*
- *****************************************************************************
- * DEFINITION OF DATA TYPES
- *****************************************************************************
- */
- /*-----------------------------------------------------------*
- * Coder constant parameters (defined in "cnst.h") *
- *-----------------------------------------------------------*
- * L_WINDOW : LPC analysis window size. *
- * L_NEXT : Samples of next frame needed for autocor. *
- * L_FRAME : Frame size. *
- * L_FRAME_BY2 : Half the frame size. *
- * L_SUBFR : Sub-frame size. *
- * M : LPC order. *
- * MP1 : LPC order+1 *
- * L_TOTAL7k4 : Total size of speech buffer. *
- * PIT_MIN7k4 : Minimum pitch lag. *
- * PIT_MAX : Maximum pitch lag. *
- * L_INTERPOL : Length of filter for interpolation *
- *-----------------------------------------------------------*/
- typedef struct {
- /* Speech vector */
- Word16 old_speech[L_TOTAL];
- Word16 *speech, *p_window, *p_window_12k2;
- Word16 *new_speech; /* Global variable */
-
- /* Weight speech vector */
- Word16 old_wsp[L_FRAME + PIT_MAX];
- Word16 *wsp;
- /* OL LTP states */
- Word16 old_lags[5];
- Word16 ol_gain_flg[2];
- /* Excitation vector */
- Word16 old_exc[L_FRAME + PIT_MAX + L_INTERPOL];
- Word16 *exc;
- /* Zero vector */
- Word16 ai_zero[L_SUBFR + MP1];
- Word16 *zero;
- /* Impulse response vector */
- Word16 *h1;
- Word16 hvec[L_SUBFR * 2];
- /* Substates */
- lpcState *lpcSt;
- lspState *lspSt;
- clLtpState *clLtpSt;
- gainQuantState *gainQuantSt;
- pitchOLWghtState *pitchOLWghtSt;
- tonStabState *tonStabSt;
- vadState *vadSt;
- Flag dtx;
- dtx_encState *dtx_encSt;
- /* Filter's memory */
- Word16 mem_syn[M], mem_w0[M], mem_w[M];
- Word16 mem_err[M + L_SUBFR], *error;
- Word16 sharp;
- } cod_amrState;
- /*
- ********************************************************************************
- * DECLARATION OF PROTOTYPES
- ********************************************************************************
- */
- /*
- **************************************************************************
- *
- * Function : cod_amr_init
- * Purpose : Allocates memory and initializes state variables
- * Description : Stores pointer to filter status struct in *st. This
- * pointer has to be passed to cod_amr in each call.
- * - initilize pointers to speech buffer
- * - initialize static pointers
- * - set static vectors to zero
- * Returns : 0 on success
- *
- **************************************************************************
- */
- int cod_amr_init (cod_amrState **st, Flag dtx);
-
- /*
- **************************************************************************
- *
- * Function : cod_amr_reset
- * Purpose : Resets state memory
- * Returns : 0 on success
- *
- **************************************************************************
- */
- int cod_amr_reset (cod_amrState *st);
- /*
- **************************************************************************
- *
- * Function : cod_amr_exit
- * Purpose : The memory used for state memory is freed
- * Description : Stores NULL in *st
- *
- **************************************************************************
- */
- void cod_amr_exit (cod_amrState **st);
-
- /***************************************************************************
- * FUNCTION: cod_amr_first
- *
- * PURPOSE: Copes with look-ahead.
- *
- * INPUTS:
- * No input argument are passed to this function. However, before
- * calling this function, 40 new speech data should be copied to the
- * vector new_speech[]. This is a global pointer which is declared in
- * this file (it points to the end of speech buffer minus 200).
- *
- ***************************************************************************/
-
- int cod_amr_first(cod_amrState *st, /* i/o : State struct */
- Word16 new_speech[] /* i : speech input (L_FRAME) */
- );
- /***************************************************************************
- * FUNCTION: cod_amr
- *
- * PURPOSE: Main encoder routine.
- *
- * DESCRIPTION: This function is called every 20 ms speech frame,
- * operating on the newly read 160 speech samples. It performs the
- * principle encoding functions to produce the set of encoded parameters
- * which include the LSP, adaptive codebook, and fixed codebook
- * quantization indices (addresses and gains).
- *
- * INPUTS:
- * No input argument are passed to this function. However, before
- * calling this function, 160 new speech data should be copied to the
- * vector new_speech[]. This is a global pointer which is declared in
- * this file (it points to the end of speech buffer minus 160).
- *
- * OUTPUTS:
- *
- * ana[]: vector of analysis parameters.
- * synth[]: Local synthesis speech (for debugging purposes)
- *
- ***************************************************************************/
- int cod_amr(cod_amrState *st, /* i/o : State struct */
- enum Mode mode, /* i : AMR mode */
- Word16 new_speech[], /* i : speech input (L_FRAME) */
- Word16 ana[], /* o : Analysis parameters */
- enum Mode *usedMode, /* o : used mode */
- Word16 synth[] /* o : Local synthesis */
- );
- #endif
|