1 /* ------------------------------------------------------------------
2 * Copyright (C) 1998-2009 PacketVideo
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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
14 * See the License for the specific language governing permissions
15 * and limitations under the License.
16 * -------------------------------------------------------------------
18 /****************************************************************************************
19 Portions of this file are derived from the following 3GPP standard:
22 ANSI-C code for the Adaptive Multi-Rate (AMR) speech codec
23 Available from http://www.3gpp.org
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 ****************************************************************************************/
31 Filename: qua_gain_tbl.cpp
33 ------------------------------------------------------------------------------
36 ------------------------------------------------------------------------------
39 /*----------------------------------------------------------------------------
41 ----------------------------------------------------------------------------*/
42 #include "qua_gain_tbl.h"
45 /*--------------------------------------------------------------------------*/
51 /*----------------------------------------------------------------------------
53 ; [Define module specific macros here]
54 ----------------------------------------------------------------------------*/
56 /*----------------------------------------------------------------------------
58 ; [Include all pre-processor statements here. Include conditional
59 ; compile variables also.]
60 ----------------------------------------------------------------------------*/
62 /*----------------------------------------------------------------------------
63 ; LOCAL FUNCTION DEFINITIONS
64 ; [List function prototypes here]
65 ----------------------------------------------------------------------------*/
67 /*----------------------------------------------------------------------------
68 ; LOCAL VARIABLE DEFINITIONS
69 ; [Variable declaration - defined here and used outside this module]
70 ----------------------------------------------------------------------------*/
72 /* The tables contains the following data:
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))
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.
84 /* table used in 'high' rates: MR67 MR74 */
86 extern const Word16 table_gain_highrates[];
87 const Word16 table_gain_highrates[VQ_SIZE_HIGHRATES*4] =
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))
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,
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
229 /* table used in 'low' rates: MR475, MR515, MR59 */
231 extern const Word16 table_gain_lowrates[];
232 const Word16 table_gain_lowrates[VQ_SIZE_LOWRATES*4] =
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,
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,
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
301 /*--------------------------------------------------------------------------*/
307 ------------------------------------------------------------------------------
309 ------------------------------------------------------------------------------
310 INPUT AND OUTPUT DEFINITIONS
321 Global Variables Used:
324 Local Variables Needed:
327 ------------------------------------------------------------------------------
332 ------------------------------------------------------------------------------
337 ------------------------------------------------------------------------------
340 [1] qua_gain.tab, UMTS GSM AMR speech codec,
341 R99 - Version 3.2.0, March 2, 2001
343 ------------------------------------------------------------------------------
347 ------------------------------------------------------------------------------
349 [State any special notes, constraints or cautions for users of this function]
351 ------------------------------------------------------------------------------
354 /*----------------------------------------------------------------------------
356 ----------------------------------------------------------------------------*/