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 Filename: /audio/gsm_amr/c/src/qua_gain_tbl.c 32 33 ------------------------------------------------------------------------------ 34 REVISION HISTORY 35 36 Description: Created this file from the reference, qua_gain.tab 37 38 Description: Added #ifdef __cplusplus and removed "extern" from table 39 definition. 40 41 Description: Put "extern" back. 42 43 Who: Date: 44 Description: 45 46 ------------------------------------------------------------------------------ 47 MODULE DESCRIPTION 48 49 ------------------------------------------------------------------------------ 50 */ 51 52 /*---------------------------------------------------------------------------- 53 ; INCLUDES 54 ----------------------------------------------------------------------------*/ 55 #include "typedef.h" 56 #include "qua_gain.h" 57 58 /*--------------------------------------------------------------------------*/ 59 #ifdef __cplusplus 60 extern "C" 61 { 62 #endif 63 64 /*---------------------------------------------------------------------------- 65 ; MACROS 66 ; [Define module specific macros here] 67 ----------------------------------------------------------------------------*/ 68 69 /*---------------------------------------------------------------------------- 70 ; DEFINES 71 ; [Include all pre-processor statements here. Include conditional 72 ; compile variables also.] 73 ----------------------------------------------------------------------------*/ 74 75 /*---------------------------------------------------------------------------- 76 ; LOCAL FUNCTION DEFINITIONS 77 ; [List function prototypes here] 78 ----------------------------------------------------------------------------*/ 79 80 /*---------------------------------------------------------------------------- 81 ; LOCAL VARIABLE DEFINITIONS 82 ; [Variable declaration - defined here and used outside this module] 83 ----------------------------------------------------------------------------*/ 84 85 /* The tables contains the following data: 86 * 87 * g_pitch (Q14), 88 * g_fac (Q12), (g_code = g_code0*g_fac), 89 * qua_ener_MR122 (Q10), (log2(g_fac)) 90 * qua_ener (Q10) (20*log10(g_fac)) 91 * 92 * The log2() and log10() values are calculated on the fixed point value 93 * (g_fac Q12) and not on the original floating point value of g_fac 94 * to make the quantizer/MA predictdor use corresponding values. 95 */ 96 97 /* table used in 'high' rates: MR67 MR74 */ 98 99 extern const Word16 table_gain_highrates[VQ_SIZE_HIGHRATES*4] = 100 { 101 102 /* 103 * Note: column 4 (qua_ener) contains the original values from IS641 104 * to ensure bit-exactness; however, they are not exactly the 105 * rounded value of (20*log10(g_fac)) 106 * 107 */ 108 109 /*g_pit, g_fac, qua_ener_MR122, qua_ener */ 110 577, 662, -2692, -16214, 111 806, 1836, -1185, -7135, 112 3109, 1052, -2008, -12086, 113 4181, 1387, -1600, -9629, 114 2373, 1425, -1560, -9394, 115 3248, 1985, -1070, -6442, 116 1827, 2320, -840, -5056, 117 941, 3314, -313, -1885, 118 2351, 2977, -471, -2838, 119 3616, 2420, -777, -4681, 120 3451, 3096, -414, -2490, 121 2955, 4301, 72, 434, 122 1848, 4500, 139, 836, 123 3884, 5416, 413, 2484, 124 1187, 7210, 835, 5030, 125 3083, 9000, 1163, 7002, 126 7384, 883, -2267, -13647, 127 5962, 1506, -1478, -8900, 128 5155, 2134, -963, -5800, 129 7944, 2009, -1052, -6335, 130 6507, 2250, -885, -5327, 131 7670, 2752, -588, -3537, 132 5952, 3016, -452, -2724, 133 4898, 3764, -125, -751, 134 6989, 3588, -196, -1177, 135 8174, 3978, -43, -260, 136 6064, 4404, 107, 645, 137 7709, 5087, 320, 1928, 138 5523, 6021, 569, 3426, 139 7769, 7126, 818, 4926, 140 6060, 7938, 977, 5885, 141 5594, 11487, 1523, 9172, 142 10581, 1356, -1633, -9831, 143 9049, 1597, -1391, -8380, 144 9794, 2035, -1033, -6220, 145 8946, 2415, -780, -4700, 146 10296, 2584, -681, -4099, 147 9407, 2734, -597, -3595, 148 8700, 3218, -356, -2144, 149 9757, 3395, -277, -1669, 150 10177, 3892, -75, -454, 151 9170, 4528, 148, 891, 152 10152, 5004, 296, 1781, 153 9114, 5735, 497, 2993, 154 10500, 6266, 628, 3782, 155 10110, 7631, 919, 5534, 156 8844, 8727, 1117, 6728, 157 8956, 12496, 1648, 9921, 158 12924, 976, -2119, -12753, 159 11435, 1755, -1252, -7539, 160 12138, 2328, -835, -5024, 161 11388, 2368, -810, -4872, 162 10700, 3064, -429, -2580, 163 12332, 2861, -530, -3192, 164 11722, 3327, -307, -1848, 165 11270, 3700, -150, -904, 166 10861, 4413, 110, 663, 167 12082, 4533, 150, 902, 168 11283, 5205, 354, 2132, 169 11960, 6305, 637, 3837, 170 11167, 7534, 900, 5420, 171 12128, 8329, 1049, 6312, 172 10969, 10777, 1429, 8604, 173 10300, 17376, 2135, 12853, 174 13899, 1681, -1316, -7921, 175 12580, 2045, -1026, -6179, 176 13265, 2439, -766, -4610, 177 14033, 2989, -465, -2802, 178 13452, 3098, -413, -2482, 179 12396, 3658, -167, -1006, 180 13510, 3780, -119, -713, 181 12880, 4272, 62, 374, 182 13533, 4861, 253, 1523, 183 12667, 5457, 424, 2552, 184 13854, 6106, 590, 3551, 185 13031, 6483, 678, 4084, 186 13557, 7721, 937, 5639, 187 12957, 9311, 1213, 7304, 188 13714, 11551, 1532, 9221, 189 12591, 15206, 1938, 11667, 190 15113, 1540, -1445, -8700, 191 15072, 2333, -832, -5007, 192 14527, 2511, -723, -4352, 193 14692, 3199, -365, -2197, 194 15382, 3560, -207, -1247, 195 14133, 3960, -50, -300, 196 15102, 4236, 50, 298, 197 14332, 4824, 242, 1454, 198 14846, 5451, 422, 2542, 199 15306, 6083, 584, 3518, 200 14329, 6888, 768, 4623, 201 15060, 7689, 930, 5602, 202 14406, 9426, 1231, 7413, 203 15387, 9741, 1280, 7706, 204 14824, 14271, 1844, 11102, 205 13600, 24939, 2669, 16067, 206 16396, 1969, -1082, -6517, 207 16817, 2832, -545, -3283, 208 15713, 2843, -539, -3248, 209 16104, 3336, -303, -1825, 210 16384, 3963, -49, -294, 211 16940, 4579, 165, 992, 212 15711, 4599, 171, 1030, 213 16222, 5448, 421, 2537, 214 16832, 6382, 655, 3945, 215 15745, 7141, 821, 4944, 216 16326, 7469, 888, 5343, 217 16611, 8624, 1100, 6622, 218 17028, 10418, 1379, 8303, 219 15905, 11817, 1565, 9423, 220 16878, 14690, 1887, 11360, 221 16515, 20870, 2406, 14483, 222 18142, 2083, -999, -6013, 223 19401, 3178, -375, -2257, 224 17508, 3426, -264, -1589, 225 20054, 4027, -25, -151, 226 18069, 4249, 54, 326, 227 18952, 5066, 314, 1890, 228 17711, 5402, 409, 2461, 229 19835, 6192, 610, 3676, 230 17950, 7014, 795, 4784, 231 21318, 7877, 966, 5816, 232 17910, 9289, 1210, 7283, 233 19144, 9290, 1210, 7284, 234 20517, 11381, 1510, 9089, 235 18075, 14485, 1866, 11234, 236 19999, 17882, 2177, 13108, 237 18842, 32764, 3072, 18494 238 }; 239 240 241 /* table used in 'low' rates: MR475, MR515, MR59 */ 242 243 extern const Word16 table_gain_lowrates[VQ_SIZE_LOWRATES*4] = 244 { 245 /*g_pit, g_fac, qua_ener_MR122, qua_ener */ 246 10813, 28753, 2879, 17333, 247 20480, 2785, -570, -3431, 248 18841, 6594, 703, 4235, 249 6225, 7413, 876, 5276, 250 17203, 10444, 1383, 8325, 251 21626, 1269, -1731, -10422, 252 21135, 4423, 113, 683, 253 11304, 1556, -1430, -8609, 254 19005, 12820, 1686, 10148, 255 17367, 2498, -731, -4398, 256 17858, 4833, 244, 1472, 257 9994, 2498, -731, -4398, 258 17530, 7864, 964, 5802, 259 14254, 1884, -1147, -6907, 260 15892, 3153, -387, -2327, 261 6717, 1802, -1213, -7303, 262 18186, 20193, 2357, 14189, 263 18022, 3031, -445, -2678, 264 16711, 5857, 528, 3181, 265 8847, 4014, -30, -180, 266 15892, 8970, 1158, 6972, 267 18022, 1392, -1594, -9599, 268 16711, 4096, 0, 0, 269 8192, 655, -2708, -16305, 270 15237, 13926, 1808, 10884, 271 14254, 3112, -406, -2444, 272 14090, 4669, 193, 1165, 273 5406, 2703, -614, -3697, 274 13434, 6553, 694, 4180, 275 12451, 901, -2237, -13468, 276 12451, 2662, -637, -3833, 277 3768, 655, -2708, -16305, 278 14745, 23511, 2582, 15543, 279 19169, 2457, -755, -4546, 280 20152, 5079, 318, 1913, 281 6881, 4096, 0, 0, 282 20480, 8560, 1089, 6556, 283 19660, 737, -2534, -15255, 284 19005, 4259, 58, 347, 285 7864, 2088, -995, -5993, 286 11468, 12288, 1623, 9771, 287 15892, 1474, -1510, -9090, 288 15728, 4628, 180, 1086, 289 9175, 1433, -1552, -9341, 290 16056, 7004, 793, 4772, 291 14827, 737, -2534, -15255, 292 15073, 2252, -884, -5321, 293 5079, 1228, -1780, -10714, 294 13271, 17326, 2131, 12827, 295 16547, 2334, -831, -5002, 296 15073, 5816, 518, 3118, 297 3932, 3686, -156, -938, 298 14254, 8601, 1096, 6598, 299 16875, 778, -2454, -14774, 300 15073, 3809, -107, -646, 301 6062, 614, -2804, -16879, 302 9338, 9256, 1204, 7251, 303 13271, 1761, -1247, -7508, 304 13271, 3522, -223, -1343, 305 2457, 1966, -1084, -6529, 306 11468, 5529, 443, 2668, 307 10485, 737, -2534, -15255, 308 11632, 3194, -367, -2212, 309 1474, 778, -2454, -14774 310 }; 311 312 /*--------------------------------------------------------------------------*/ 313 #ifdef __cplusplus 314 } 315 #endif 316 317 /* 318 ------------------------------------------------------------------------------ 319 FUNCTION NAME: 320 ------------------------------------------------------------------------------ 321 INPUT AND OUTPUT DEFINITIONS 322 323 Inputs: 324 None 325 326 Outputs: 327 None 328 329 Returns: 330 None 331 332 Global Variables Used: 333 None 334 335 Local Variables Needed: 336 None 337 338 ------------------------------------------------------------------------------ 339 FUNCTION DESCRIPTION 340 341 None 342 343 ------------------------------------------------------------------------------ 344 REQUIREMENTS 345 346 None 347 348 ------------------------------------------------------------------------------ 349 REFERENCES 350 351 [1] qua_gain.tab, UMTS GSM AMR speech codec, 352 R99 - Version 3.2.0, March 2, 2001 353 354 ------------------------------------------------------------------------------ 355 PSEUDO-CODE 356 357 358 ------------------------------------------------------------------------------ 359 RESOURCES USED [optional] 360 361 When the code is written for a specific target processor the 362 the resources used should be documented below. 363 364 HEAP MEMORY USED: x bytes 365 366 STACK MEMORY USED: x bytes 367 368 CLOCK CYCLES: (cycle count equation for this function) + (variable 369 used to represent cycle count for each subroutine 370 called) 371 where: (cycle count variable) = cycle count for [subroutine 372 name] 373 374 ------------------------------------------------------------------------------ 375 CAUTION [optional] 376 [State any special notes, constraints or cautions for users of this function] 377 378 ------------------------------------------------------------------------------ 379 */ 380 381 /*---------------------------------------------------------------------------- 382 ; FUNCTION CODE 383 ----------------------------------------------------------------------------*/ 384 385 386 387 388 389 390 391