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