1 /*
2  *===================================================================
3  *  3GPP AMR Wideband Floating-point Speech Codec
4  *===================================================================
5  */
6 #ifndef ENC_MAIN_H
7 #define ENC_MAIN_H
8 
9 #include "typedef.h"
10 #include "enc_dtx.h"
11 
12 #define L_FRAME      256     /* Frame size                                 */
13 #define L_TOTAL      384     /* Total size of speech buffer.               */
14 #define L_FILT16k    15      /* Delay of down-sampling filter              */
15 #define PIT_MAX      231     /* Maximum pitch lag                          */
16 #define OPL_DECIM    2       /* Decimation in open-loop pitch analysis     */
17 #define L_INTERPOL   (16+1)  /* Length of filter for interpolation         */
18 
19 typedef struct
20 {
21    /* Float32 */
22    Float32 mem_speech[L_TOTAL];        /* old speech vector at 12.8kHz       */
23    Float32 mem_wsp[L_FRAME + PIT_MAX / OPL_DECIM]; /* old decimated weighted */
24                                                    /* speech vector          */
25    Float32 mem_hp_wsp[L_FRAME / OPL_DECIM + (PIT_MAX / OPL_DECIM)];
26    Float32 mem_decim[2 * L_FILT16k];   /* speech decimated filter memory     */
27    Float32 mem_hf[2 * L_FILT16k];      /* HF band-pass filter memory         */
28    Float32 mem_hf2[2 * L_FILT16k];     /* HF band-pass filter memory         */
29    Float32 mem_hf3[2 * L_FILT16k];     /* HF band-pass filter memory         */
30    Float32 mem_isp[M];                 /* old isp (immittance spectral pairs)*/
31    Float32 mem_syn[M];                 /* synthesis memory                   */
32    Float32 mem_syn2[M];                /* modified synthesis memory          */
33    Float32 mem_syn_hf[M];              /* HF synthesis memory                */
34    Float32 mem_isf[M];                 /* old isf (frequency domain)         */
35    Float32 mem_hf_wsp[9];              /* Open-loop lag gain filter memory   */
36    Float32 mem_sig_in[4];              /* hp50 filter memory                 */
37    Float32 mem_sig_out[4];             /* hp50 filter memory for synthesis   */
38    Float32 mem_hp400[4];               /* hp400 filter memory for synthesis  */
39    Float32 mem_decim2[3];              /* wsp decimation filter memory       */
40    Float32 mem_gp_clip[2];             /* gain of pitch clipping memory      */
41    Float32 mem_preemph;                /* speech preemph filter memory       */
42    Float32 mem_deemph;                 /* speech deemph filter memory        */
43    Float32 mem_wsp_df;                 /* Open-loop LTP deemph filter memory */
44    Float32 mem_w0;                     /* target vector memory               */
45    Float32 mem_ol_gain;                /* Open-loop gain                     */
46    Float32 mem_ada_w;                  /* weighting level                    */
47    Float32 mem_gc_threshold;           /* threshold for noise enhancer       */
48    Float32 mem_gain_alpha;             /* Higher band gain weighting factor  */
49 
50    /* Word32 */
51    Word32 mem_ol_lag[5];               /* Open loop lag history              */
52    Word32 mem_T0_med;                  /* weighted open loop pitch lag       */
53 
54    /* Word16 */
55    Word16 mem_exc[(L_FRAME + 1) + PIT_MAX + L_INTERPOL];
56                                        /* old excitation vector              */
57    Word16 mem_isp_q[M];                /* quantized old isp                  */
58    Word16 mem_isf_q[M];                /* past isf quantizer                 */
59    Word16 mem_gain_q[4];               /* gain quantizer memory              */
60    Word16 mem_subfr_q[4];              /* old maximum scaling factor         */
61    Word16 mem_tilt_code;               /* tilt of code                       */
62    Word16 mem_q;                       /* old scaling factor                 */
63    Word16 mem_seed;                    /* random memory for HF generation    */
64 
65    /* other */
66    E_DTX_Vad_State *vadSt;
67    E_DTX_State *dtx_encSt;
68    UWord8 mem_first_frame;             /* First frame indicator              */
69    UWord8 mem_ol_wght_flg;             /* switches lag weighting on and off  */
70    UWord8 mem_vad_hist;                /* VAD history                        */
71 
72 } Coder_State;
73 
74 #endif
75 
76