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