1 /* ------------------------------------------------------------------
2  * Copyright (C) 1998-2009 PacketVideo
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
13  * express or implied.
14  * See the License for the specific language governing permissions
15  * and limitations under the License.
16  * -------------------------------------------------------------------
17  */
18 /****************************************************************************************
19 Portions of this file are derived from the following 3GPP standard:
20 
21     3GPP TS 26.073
22     ANSI-C code for the Adaptive Multi-Rate (AMR) speech codec
23     Available from http://www.3gpp.org
24 
25 (C) 2004, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TTA, TTC)
26 Permission to distribute, modify and use this file under the standard license
27 terms listed above has been obtained from the copyright holder.
28 ****************************************************************************************/
29 /*
30 ------------------------------------------------------------------------------
31 
32 
33 
34  Filename: /audio/gsm_amr/c/include/dec_amr.h
35 
36      Date: 02/06/2002
37 
38 ------------------------------------------------------------------------------
39  REVISION HISTORY
40 
41  Description: Update function prototype for Decoder_amr(). Include overflow
42               flag in Decode_amrState structure
43 
44  Description:  Replaced "int" and/or "char" with OSCL defined types.
45 
46  Description: Moved _cplusplus #ifdef after Include section.
47 
48  Description:
49 
50 ------------------------------------------------------------------------------
51  INCLUDE DESCRIPTION
52 
53      File             : dec_amr.h
54      Purpose          : Speech decoder routine.
55 
56 ------------------------------------------------------------------------------
57 */
58 
59 /*----------------------------------------------------------------------------
60 ; CONTINUE ONLY IF NOT ALREADY DEFINED
61 ----------------------------------------------------------------------------*/
62 #ifndef DEC_AMR_H
63 #define DEC_AMR_H "$Id $"
64 
65 /*----------------------------------------------------------------------------
66 ; INCLUDES
67 ----------------------------------------------------------------------------*/
68 #include "typedef.h"
69 #include "cnst.h"
70 #include "mode.h"
71 #include "dtx_dec.h"
72 #include "d_plsf.h"
73 #include "gc_pred.h"
74 #include "ec_gains.h"
75 #include "ph_disp.h"
76 #include "c_g_aver.h"
77 #include "bgnscd.h"
78 #include "lsp_avg.h"
79 #include "frame.h"
80 
81 /*--------------------------------------------------------------------------*/
82 #ifdef __cplusplus
83 extern "C"
84 {
85 #endif
86 
87     /*----------------------------------------------------------------------------
88     ; MACROS
89     ; Define module specific macros here
90     ----------------------------------------------------------------------------*/
91 
92     /*----------------------------------------------------------------------------
93     ; DEFINES
94     ; Include all pre-processor statements here.
95     ----------------------------------------------------------------------------*/
96 #define EXC_ENERGY_HIST_LEN  9
97 #define LTP_GAIN_HISTORY_LEN 9
98     /*----------------------------------------------------------------------------
99     ; EXTERNAL VARIABLES REFERENCES
100     ; Declare variables used in this module but defined elsewhere
101     ----------------------------------------------------------------------------*/
102 
103     /*----------------------------------------------------------------------------
104     ; SIMPLE TYPEDEF'S
105     ----------------------------------------------------------------------------*/
106 
107     /*----------------------------------------------------------------------------
108     ; ENUMERATED TYPEDEF'S
109     ----------------------------------------------------------------------------*/
110 
111     /*----------------------------------------------------------------------------
112     ; STRUCTURES TYPEDEF'S
113     ----------------------------------------------------------------------------*/
114     typedef struct Decoder_amrState
115     {
116         /* Excitation vector */
117         Word16 old_exc[L_SUBFR + PIT_MAX + L_INTERPOL];
118         Word16 *exc;
119 
120         /* Lsp (Line spectral pairs) */
121         /* Word16 lsp[M]; */      /* Used by CN codec */
122         Word16 lsp_old[M];
123 
124         /* Filter's memory */
125         Word16 mem_syn[M];
126 
127         /* pitch sharpening */
128         Word16 sharp;
129         Word16 old_T0;
130 
131         /* Memories for bad frame handling */
132         Word16 prev_bf;
133         Word16 prev_pdf;
134         Word16 state;
135         Word16 excEnergyHist[EXC_ENERGY_HIST_LEN];
136 
137         /* Variable holding received ltpLag, used in background noise and BFI */
138         Word16 T0_lagBuff;
139 
140         /* Variables for the source characteristic detector (SCD) */
141         Word16 inBackgroundNoise;
142         Word16 voicedHangover;
143         Word16 ltpGainHistory[LTP_GAIN_HISTORY_LEN];
144 
145         Bgn_scdState background_state;
146         Word16 nodataSeed;
147 
148         Cb_gain_averageState Cb_gain_averState;
149         lsp_avgState lsp_avg_st;
150 
151         D_plsfState lsfState;
152         ec_gain_pitchState ec_gain_p_st;
153         ec_gain_codeState ec_gain_c_st;
154         gc_predState pred_state;
155         ph_dispState ph_disp_st;
156         dtx_decState dtxDecoderState;
157         Flag overflow;
158     } Decoder_amrState;
159 
160     /*----------------------------------------------------------------------------
161     ; GLOBAL FUNCTION DEFINITIONS
162     ; Function Prototype declaration
163     ----------------------------------------------------------------------------*/
164     /*
165      *  Function    : Decoder_amr_init
166      *  Purpose     : Allocates initializes state memory
167      *  Description : Stores pointer to filter status struct in *st. This
168      *                pointer has to be passed to Decoder_amr in each call.
169      *  Returns     : 0 on success
170      */
171     Word16 Decoder_amr_init(Decoder_amrState *st);
172 
173     /*
174      *  Function    : Decoder_amr_reset
175      *  Purpose     : Resets state memory
176      *  Returns     : 0 on success
177      */
178     Word16 Decoder_amr_reset(Decoder_amrState *st, enum Mode mode);
179 
180     /*
181      *  Function    : Decoder_amr
182      *  Purpose     : Speech decoder routine.
183      *  Returns     : 0
184      */
185     void Decoder_amr(
186         Decoder_amrState *st,  /* i/o : State variables                       */
187         enum Mode mode,        /* i   : AMR mode                              */
188         Word16 parm[],         /* i   : vector of synthesis parameters
189                                     (PRM_SIZE)                            */
190         enum RXFrameType frame_type, /* i   : received frame type               */
191         Word16 synth[],        /* o   : synthesis speech (L_FRAME)            */
192         Word16 A_t[]           /* o   : decoded LP filter in 4 subframes
193                                     (AZ_SIZE)                             */
194     );
195 
196     /*----------------------------------------------------------------------------
197     ; END
198     ----------------------------------------------------------------------------*/
199 #ifdef __cplusplus
200 }
201 #endif
202 
203 #endif /* DEC_AMR_H_ */
204 
205 
206 
207