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/****************************************************************************************
19Portions 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)
26Permission to distribute, modify and use this file under the standard license
27terms 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
124extern "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