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  Pathname: .audio/gsm-amr/c/src/window_tab.c
31 
32 ------------------------------------------------------------------------------
33  REVISION HISTORY
34 
35  Description: Changed tables from static const to just const.
36 
37  Description: Added #ifdef __cplusplus and removed "extern" from table
38               definition.
39 
40  Description: Put "extern" back.
41 
42  Who:                       Date:
43  Description:
44 
45 ------------------------------------------------------------------------------
46  INPUT AND OUTPUT DEFINITIONS
47 
48  Inputs:
49     None
50 
51  Local Stores/Buffers/Pointers Needed:
52     None
53 
54  Global Stores/Buffers/Pointers Needed:
55     None
56 
57  Outputs:
58     None
59 
60  Pointers and Buffers Modified:
61     None
62 
63  Local Stores Modified:
64     None
65 
66  Global Stores Modified:
67     None
68 
69 ------------------------------------------------------------------------------
70  FUNCTION DESCRIPTION
71 
72       File             : window.tab
73       Purpose          : Hamming_cos window for LPC analysis.
74 
75 ------------------------------------------------------------------------------
76  REQUIREMENTS
77 
78  None
79 
80 ------------------------------------------------------------------------------
81  REFERENCES
82 
83  None
84 
85 ------------------------------------------------------------------------------
86  PSEUDO-CODE
87 
88 
89 ------------------------------------------------------------------------------
90  RESOURCES USED
91    When the code is written for a specific target processor the
92      the resources used should be documented below.
93 
94  STACK USAGE: [stack count for this module] + [variable to represent
95           stack usage for each subroutine called]
96 
97      where: [stack usage variable] = stack usage for [subroutine
98          name] (see [filename].ext)
99 
100  DATA MEMORY USED: x words
101 
102  PROGRAM MEMORY USED: x words
103 
104  CLOCK CYCLES: [cycle count equation for this module] + [variable
105            used to represent cycle count for each subroutine
106            called]
107 
108      where: [cycle count variable] = cycle count for [subroutine
109         name] (see [filename].ext)
110 
111 ------------------------------------------------------------------------------
112 */
113 
114 
115 /*----------------------------------------------------------------------------
116 ; INCLUDES
117 ----------------------------------------------------------------------------*/
118 #include    "typedef.h"
119 #include    "cnst.h"
120 #include    "window_tab.h"
121 
122 /*--------------------------------------------------------------------------*/
123 #ifdef __cplusplus
124 extern "C"
125 {
126 #endif
127 
128     /*----------------------------------------------------------------------------
129     ; MACROS
130     ; Define module specific macros here
131     ----------------------------------------------------------------------------*/
132 
133 
134     /*----------------------------------------------------------------------------
135     ; DEFINES
136     ; Include all pre-processor statements here. Include conditional
137     ; compile variables also.
138     ----------------------------------------------------------------------------*/
139 
140     /*----------------------------------------------------------------------------
141     ; LOCAL FUNCTION DEFINITIONS
142     ; Function Prototype declaration
143     ----------------------------------------------------------------------------*/
144 
145 
146     /*----------------------------------------------------------------------------
147     ; LOCAL STORE/BUFFER/POINTER DEFINITIONS
148     ; Variable declaration - defined here and used outside this module
149     ----------------------------------------------------------------------------*/
150     /*************************************************************************
151      *
152      * Hamming_cos windows for LPC analysis.
153      *
154      *************************************************************************/
155 
156     /* window for non-EFR modesm; uses 40 samples lookahead */
157 
158     const Word16 window_200_40[L_WINDOW] =
159     {
160         2621,  2623,  2629,  2638,  2651,  2668,  2689,  2713,  2741,  2772,
161         2808,  2847,  2890,  2936,  2986,  3040,  3097,  3158,  3223,  3291,
162         3363,  3438,  3517,  3599,  3685,  3774,  3867,  3963,  4063,  4166,
163         4272,  4382,  4495,  4611,  4731,  4853,  4979,  5108,  5240,  5376,
164         5514,  5655,  5800,  5947,  6097,  6250,  6406,  6565,  6726,  6890,
165         7057,  7227,  7399,  7573,  7750,  7930,  8112,  8296,  8483,  8672,
166         8863,  9057,  9252,  9450,  9650,  9852, 10055, 10261, 10468, 10677,
167         10888, 11101, 11315, 11531, 11748, 11967, 12187, 12409, 12632, 12856,
168         13082, 13308, 13536, 13764, 13994, 14225, 14456, 14688, 14921, 15155,
169         15389, 15624, 15859, 16095, 16331, 16568, 16805, 17042, 17279, 17516,
170         17754, 17991, 18228, 18465, 18702, 18939, 19175, 19411, 19647, 19882,
171         20117, 20350, 20584, 20816, 21048, 21279, 21509, 21738, 21967, 22194,
172         22420, 22644, 22868, 23090, 23311, 23531, 23749, 23965, 24181, 24394,
173         24606, 24816, 25024, 25231, 25435, 25638, 25839, 26037, 26234, 26428,
174         26621, 26811, 26999, 27184, 27368, 27548, 27727, 27903, 28076, 28247,
175         28415, 28581, 28743, 28903, 29061, 29215, 29367, 29515, 29661, 29804,
176         29944, 30081, 30214, 30345, 30472, 30597, 30718, 30836, 30950, 31062,
177         31170, 31274, 31376, 31474, 31568, 31659, 31747, 31831, 31911, 31988,
178         32062, 32132, 32198, 32261, 32320, 32376, 32428, 32476, 32521, 32561,
179         32599, 32632, 32662, 32688, 32711, 32729, 32744, 32755, 32763, 32767,
180         32767, 32741, 32665, 32537, 32359, 32129, 31850, 31521, 31143, 30716,
181         30242, 29720, 29151, 28538, 27879, 27177, 26433, 25647, 24821, 23957,
182         23055, 22117, 21145, 20139, 19102, 18036, 16941, 15820, 14674, 13505,
183         12315, 11106,  9879,  8637,  7381,  6114,  4838,  3554,  2264,   971
184     };
185 
186 
187     /* window for EFR, first two subframes, no lookahead */
188 
189     const Word16 window_160_80[L_WINDOW] =
190     {
191         2621, 2624, 2633, 2648, 2668, 2695, 2727, 2765, 2809, 2859,
192         2915, 2976, 3043, 3116, 3194, 3279, 3368, 3464, 3565, 3671,
193         3783, 3900, 4023, 4151, 4285, 4423, 4567, 4716, 4870, 5029,
194         5193, 5362, 5535, 5714, 5897, 6084, 6277, 6473, 6674, 6880,
195         7089, 7303, 7521, 7742, 7968, 8197, 8430, 8667, 8907, 9151,
196         9398, 9648, 9902, 10158, 10417, 10680, 10945, 11212, 11482, 11755,
197         12030, 12307, 12586, 12867, 13150, 13435, 13722, 14010, 14299, 14590,
198         14882, 15175, 15469, 15764, 16060, 16356, 16653, 16950, 17248, 17546,
199         17844, 18141, 18439, 18736, 19033, 19330, 19625, 19920, 20214, 20507,
200         20799, 21090, 21380, 21668, 21954, 22239, 22522, 22803, 23083, 23360,
201         23635, 23907, 24177, 24445, 24710, 24972, 25231, 25488, 25741, 25991,
202         26238, 26482, 26722, 26959, 27192, 27422, 27647, 27869, 28087, 28300,
203         28510, 28715, 28916, 29113, 29305, 29493, 29676, 29854, 30028, 30197,
204         30361, 30519, 30673, 30822, 30966, 31105, 31238, 31366, 31489, 31606,
205         31718, 31825, 31926, 32021, 32111, 32195, 32273, 32346, 32413, 32475,
206         32530, 32580, 32624, 32662, 32695, 32721, 32742, 32756, 32765, 32767,
207         32767, 32756, 32720, 32661, 32578, 32471, 32341, 32188, 32012, 31813,
208         31592, 31349, 31084, 30798, 30492, 30165, 29818, 29453, 29068, 28666,
209         28247, 27810, 27358, 26891, 26408, 25913, 25404, 24883, 24350, 23807,
210         23255, 22693, 22124, 21548, 20965, 20378, 19786, 19191, 18593, 17994,
211         17395, 16796, 16199, 15604, 15012, 14424, 13842, 13265, 12696, 12135,
212         11582, 11039, 10507, 9986, 9477, 8981, 8499, 8031, 7579, 7143,
213         6723, 6321, 5937, 5571, 5225, 4898, 4591, 4305, 4041, 3798,
214         3577, 3378, 3202, 3048, 2918, 2812, 2729, 2669, 2633, 2621
215     };
216 
217     /* window for EFR, last two subframes, no lookahead */
218 
219     const Word16 window_232_8[L_WINDOW] =
220     {
221         2621, 2623, 2627, 2634, 2644, 2656, 2671, 2689, 2710, 2734,
222         2760, 2789, 2821, 2855, 2893, 2933, 2975, 3021, 3069, 3120,
223         3173, 3229, 3288, 3350, 3414, 3481, 3550, 3622, 3697, 3774,
224         3853, 3936, 4021, 4108, 4198, 4290, 4385, 4482, 4582, 4684,
225         4788, 4895, 5004, 5116, 5230, 5346, 5464, 5585, 5708, 5833,
226         5960, 6090, 6221, 6355, 6491, 6629, 6769, 6910, 7054, 7200,
227         7348, 7498, 7649, 7803, 7958, 8115, 8274, 8434, 8597, 8761,
228         8926, 9093, 9262, 9432, 9604, 9778, 9952, 10129, 10306, 10485,
229         10665, 10847, 11030, 11214, 11399, 11586, 11773, 11962, 12152, 12342,
230         12534, 12727, 12920, 13115, 13310, 13506, 13703, 13901, 14099, 14298,
231         14497, 14698, 14898, 15100, 15301, 15504, 15706, 15909, 16112, 16316,
232         16520, 16724, 16928, 17132, 17337, 17541, 17746, 17950, 18155, 18359,
233         18564, 18768, 18972, 19175, 19379, 19582, 19785, 19987, 20189, 20390,
234         20591, 20792, 20992, 21191, 21390, 21588, 21785, 21981, 22177, 22372,
235         22566, 22759, 22951, 23143, 23333, 23522, 23710, 23897, 24083, 24268,
236         24451, 24633, 24814, 24994, 25172, 25349, 25525, 25699, 25871, 26042,
237         26212, 26380, 26546, 26711, 26874, 27035, 27195, 27353, 27509, 27664,
238         27816, 27967, 28115, 28262, 28407, 28550, 28691, 28830, 28967, 29102,
239         29234, 29365, 29493, 29619, 29743, 29865, 29985, 30102, 30217, 30330,
240         30440, 30548, 30654, 30757, 30858, 30956, 31052, 31146, 31237, 31326,
241         31412, 31495, 31576, 31655, 31730, 31804, 31874, 31942, 32008, 32071,
242         32131, 32188, 32243, 32295, 32345, 32392, 32436, 32477, 32516, 32552,
243         32585, 32615, 32643, 32668, 32690, 32709, 32726, 32740, 32751, 32759,
244         32765, 32767, 32767, 32097, 30112, 26895, 22576, 17333, 11380, 4962
245     };
246 
247     /*----------------------------------------------------------------------------
248     ; EXTERNAL FUNCTION REFERENCES
249     ; Declare functions defined elsewhere and referenced in this module
250     ----------------------------------------------------------------------------*/
251 
252 
253     /*----------------------------------------------------------------------------
254     ; EXTERNAL GLOBAL STORE/BUFFER/POINTER REFERENCES
255     ; Declare variables used in this module but defined elsewhere
256     ----------------------------------------------------------------------------*/
257 
258 
259     /*--------------------------------------------------------------------------*/
260 #ifdef __cplusplus
261 }
262 #endif
263 
264 /*----------------------------------------------------------------------------
265 ; FUNCTION CODE
266 ----------------------------------------------------------------------------*/
267 
268 /*----------------------------------------------------------------------------
269 ; Define all local variables
270 ----------------------------------------------------------------------------*/
271 
272 
273 /*----------------------------------------------------------------------------
274 ; Function body here
275 ----------------------------------------------------------------------------*/
276 
277 
278 /*----------------------------------------------------------------------------
279 ; Return nothing or data or data pointer
280 ----------------------------------------------------------------------------*/
281 
282