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/ph_disp.h
35 
36 
37      Date: 08/11/2000
38 
39 ------------------------------------------------------------------------------
40  REVISION HISTORY
41 
42  Description: Updated template. Updated function prototype declaration for
43               ph_disp(). Included extern declaration for ph_imp_low_MR795 and
44               ph_imp_mid_MR795
45 
46  Description:  Replaced "int" and/or "char" with OSCL defined types.
47 
48  Description: Moved _cplusplus #ifdef after Include section.
49 
50  Description:
51 
52 
53 ------------------------------------------------------------------------------
54  INCLUDE DESCRIPTION
55 
56  This file contains all the constant definitions and prototype definitions
57  needed by the Phase dispersion of excitation signal ph_disp() function.
58 
59 ------------------------------------------------------------------------------
60 */
61 
62 #ifndef PH_DISP_H
63 #define PH_DISP_H "$Id $"
64 
65 /*----------------------------------------------------------------------------
66 ; INCLUDES
67 ----------------------------------------------------------------------------*/
68 #include    "typedef.h"
69 #include    "mode.h"
70 
71 /*--------------------------------------------------------------------------*/
72 #ifdef __cplusplus
73 extern "C"
74 {
75 #endif
76 
77     /*----------------------------------------------------------------------------
78     ; MACROS
79     ; Define module specific macros here
80     ----------------------------------------------------------------------------*/
81 
82     /*----------------------------------------------------------------------------
83     ; DEFINES
84     ; Include all pre-processor statements here.
85     ----------------------------------------------------------------------------*/
86 #define PHDGAINMEMSIZE 5
87 #define PHDTHR1LTP     9830  /* 0.6 in Q14 */
88 #define PHDTHR2LTP     14746 /* 0.9 in Q14 */
89 #define ONFACTPLUS1    16384 /* 2.0 in Q13   */
90 #define ONLENGTH 2
91 
92     /*----------------------------------------------------------------------------
93     ; EXTERNAL VARIABLES REFERENCES
94     ; Declare variables used in this module but defined elsewhere
95     ----------------------------------------------------------------------------*/
96     extern Word16 ph_imp_low_MR795[];
97     extern Word16 ph_imp_mid_MR795[];
98     extern Word16 ph_imp_low[];
99     extern Word16 ph_imp_mid[];
100 
101     /*----------------------------------------------------------------------------
102     ; SIMPLE TYPEDEF'S
103     ----------------------------------------------------------------------------*/
104 
105     /*----------------------------------------------------------------------------
106     ; ENUMERATED TYPEDEF'S
107     ----------------------------------------------------------------------------*/
108 
109     /*----------------------------------------------------------------------------
110     ; STRUCTURES TYPEDEF'S
111     ----------------------------------------------------------------------------*/
112     typedef struct
113     {
114         Word16 gainMem[PHDGAINMEMSIZE];
115         Word16 prevState;
116         Word16 prevCbGain;
117         Word16 lockFull;
118         Word16 onset;
119     } ph_dispState;
120 
121     /*----------------------------------------------------------------------------
122     ; GLOBAL FUNCTION DEFINITIONS
123     ; Function Prototype declaration
124     ----------------------------------------------------------------------------*/
125 
126     /*----------------------------------------------------------------------------
127     ;
128     ;  Function:   ph_disp_reset
129     ;  Purpose:    Initializes state memory
130     ;
131     ----------------------------------------------------------------------------*/
132     Word16 ph_disp_reset(ph_dispState *state);
133 
134     /*----------------------------------------------------------------------------
135     ;
136     ;  Function:   ph_disp_exit
137     ;  Purpose:    The memory used for state memory is freed
138     ;
139     ----------------------------------------------------------------------------*/
140     void ph_disp_exit(ph_dispState **state);
141 
142     /*----------------------------------------------------------------------------
143     ;
144     ;  Function:   ph_disp_lock
145     ;  Purpose:    mark phase dispersion as locked in state struct
146     ;
147     ----------------------------------------------------------------------------*/
148     void ph_disp_lock(ph_dispState *state);
149 
150     /*----------------------------------------------------------------------------
151     ;
152     ;  Function:   ph_disp_release
153     ;  Purpose:    mark phase dispersion as unlocked in state struct
154     ;
155     ----------------------------------------------------------------------------*/
156 
157     void ph_disp_release(ph_dispState *state);
158 
159     /*----------------------------------------------------------------------------
160     ;
161     ;  Function:   ph_disp
162     ;  Purpose:    perform phase dispersion according to the specified codec
163     ;              mode and computes total excitation for synthesis part
164     ;              if decoder
165     ;
166     ----------------------------------------------------------------------------*/
167 
168     void ph_disp(
169         ph_dispState *state,    /* i/o     : State struct                       */
170         enum Mode mode,         /* i       : codec mode                         */
171         Word16 x[],             /* i/o Q0  : in:  LTP excitation signal         */
172         /*           out: total excitation signal       */
173         Word16 cbGain,          /* i   Q1  : Codebook gain                      */
174         Word16 ltpGain,         /* i   Q14 : LTP gain                           */
175         Word16 inno[],          /* i/o Q13 : Innovation vector (Q12 for 12.2)   */
176         Word16 pitch_fac,       /* i   Q14 : pitch factor used to scale the
177                                          LTP excitation (Q13 for 12.2)      */
178         Word16 tmp_shift,       /* i   Q0  : shift factor applied to sum of
179                                          scaled LTP ex & innov. before
180                                          rounding                           */
181         Flag   *pOverflow       /* i/o     : oveflow indicator                  */
182     );
183 
184     /*----------------------------------------------------------------------------
185     ; END
186     ----------------------------------------------------------------------------*/
187 #ifdef __cplusplus
188 }
189 #endif
190 
191 #endif /* _PH_DISP_H_ */
192 
193