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