xref: /aosp_15_r20/external/webrtc/modules/audio_coding/codecs/ilbc/constants.c (revision d9f758449e529ab9291ac668be2861e7a55c2422)
1 /*
2  *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
3  *
4  *  Use of this source code is governed by a BSD-style license
5  *  that can be found in the LICENSE file in the root of the source
6  *  tree. An additional intellectual property rights grant can be found
7  *  in the file PATENTS.  All contributing project authors may
8  *  be found in the AUTHORS file in the root of the source tree.
9  */
10 
11 /******************************************************************
12 
13  iLBC Speech Coder ANSI-C Source Code
14 
15  constants.c
16 
17 ******************************************************************/
18 
19 #include "modules/audio_coding/codecs/ilbc/constants.h"
20 
21 #include "modules/audio_coding/codecs/ilbc/defines.h"
22 
23 /* HP Filters {b[0] b[1] b[2] -a[1] -a[2]} */
24 
25 const int16_t WebRtcIlbcfix_kHpInCoefs[5] = {3798, -7596, 3798, 7807, -3733};
26 const int16_t WebRtcIlbcfix_kHpOutCoefs[5] = {3849, -7699, 3849, 7918, -3833};
27 
28 /* Window in Q11 to window the energies of the 5 choises (3 for 20ms) in the choise for
29    the 80 sample start state
30 */
31 const int16_t WebRtcIlbcfix_kStartSequenceEnrgWin[NSUB_MAX-1]= {
32   1638, 1843, 2048, 1843, 1638
33 };
34 
35 /* LP Filter coeffs used for downsampling */
36 const int16_t WebRtcIlbcfix_kLpFiltCoefs[FILTERORDER_DS_PLUS1]= {
37   -273, 512, 1297, 1696, 1297, 512, -273
38 };
39 
40 /* Constants used in the LPC calculations */
41 
42 /* Hanning LPC window (in Q15) */
43 const int16_t WebRtcIlbcfix_kLpcWin[BLOCKL_MAX] = {
44   6, 22, 50, 89, 139, 200, 272, 355, 449, 554, 669, 795,
45   932, 1079, 1237, 1405, 1583, 1771, 1969, 2177, 2395, 2622, 2858, 3104,
46   3359, 3622, 3894, 4175, 4464, 4761, 5066, 5379, 5699, 6026, 6361, 6702,
47   7050, 7404, 7764, 8130, 8502, 8879, 9262, 9649, 10040, 10436, 10836, 11240,
48   11647, 12058, 12471, 12887, 13306, 13726, 14148, 14572, 14997, 15423, 15850, 16277,
49   16704, 17131, 17558, 17983, 18408, 18831, 19252, 19672, 20089, 20504, 20916, 21325,
50   21730, 22132, 22530, 22924, 23314, 23698, 24078, 24452, 24821, 25185, 25542, 25893,
51   26238, 26575, 26906, 27230, 27547, 27855, 28156, 28450, 28734, 29011, 29279, 29538,
52   29788, 30029, 30261, 30483, 30696, 30899, 31092, 31275, 31448, 31611, 31764, 31906,
53   32037, 32158, 32268, 32367, 32456, 32533, 32600, 32655, 32700, 32733, 32755, 32767,
54   32767, 32755, 32733, 32700, 32655, 32600, 32533, 32456, 32367, 32268, 32158, 32037,
55   31906, 31764, 31611, 31448, 31275, 31092, 30899, 30696, 30483, 30261, 30029, 29788,
56   29538, 29279, 29011, 28734, 28450, 28156, 27855, 27547, 27230, 26906, 26575, 26238,
57   25893, 25542, 25185, 24821, 24452, 24078, 23698, 23314, 22924, 22530, 22132, 21730,
58   21325, 20916, 20504, 20089, 19672, 19252, 18831, 18408, 17983, 17558, 17131, 16704,
59   16277, 15850, 15423, 14997, 14572, 14148, 13726, 13306, 12887, 12471, 12058, 11647,
60   11240, 10836, 10436, 10040, 9649, 9262, 8879, 8502, 8130, 7764, 7404, 7050,
61   6702, 6361, 6026, 5699, 5379, 5066, 4761, 4464, 4175, 3894, 3622, 3359,
62   3104, 2858, 2622, 2395, 2177, 1969, 1771, 1583, 1405, 1237, 1079, 932,
63   795, 669, 554, 449, 355, 272, 200, 139, 89, 50, 22, 6
64 };
65 
66 /* Asymmetric LPC window (in Q15)*/
67 const int16_t WebRtcIlbcfix_kLpcAsymWin[BLOCKL_MAX] = {
68   2, 7, 15, 27, 42, 60, 81, 106, 135, 166, 201, 239,
69   280, 325, 373, 424, 478, 536, 597, 661, 728, 798, 872, 949,
70   1028, 1111, 1197, 1287, 1379, 1474, 1572, 1674, 1778, 1885, 1995, 2108,
71   2224, 2343, 2465, 2589, 2717, 2847, 2980, 3115, 3254, 3395, 3538, 3684,
72   3833, 3984, 4138, 4295, 4453, 4615, 4778, 4944, 5112, 5283, 5456, 5631,
73   5808, 5987, 6169, 6352, 6538, 6725, 6915, 7106, 7300, 7495, 7692, 7891,
74   8091, 8293, 8497, 8702, 8909, 9118, 9328, 9539, 9752, 9966, 10182, 10398,
75   10616, 10835, 11055, 11277, 11499, 11722, 11947, 12172, 12398, 12625, 12852, 13080,
76   13309, 13539, 13769, 14000, 14231, 14463, 14695, 14927, 15160, 15393, 15626, 15859,
77   16092, 16326, 16559, 16792, 17026, 17259, 17492, 17725, 17957, 18189, 18421, 18653,
78   18884, 19114, 19344, 19573, 19802, 20030, 20257, 20483, 20709, 20934, 21157, 21380,
79   21602, 21823, 22042, 22261, 22478, 22694, 22909, 23123, 23335, 23545, 23755, 23962,
80   24168, 24373, 24576, 24777, 24977, 25175, 25371, 25565, 25758, 25948, 26137, 26323,
81   26508, 26690, 26871, 27049, 27225, 27399, 27571, 27740, 27907, 28072, 28234, 28394,
82   28552, 28707, 28860, 29010, 29157, 29302, 29444, 29584, 29721, 29855, 29987, 30115,
83   30241, 30364, 30485, 30602, 30717, 30828, 30937, 31043, 31145, 31245, 31342, 31436,
84   31526, 31614, 31699, 31780, 31858, 31933, 32005, 32074, 32140, 32202, 32261, 32317,
85   32370, 32420, 32466, 32509, 32549, 32585, 32618, 32648, 32675, 32698, 32718, 32734,
86   32748, 32758, 32764, 32767, 32767, 32667, 32365, 31863, 31164, 30274, 29197, 27939,
87   26510, 24917, 23170, 21281, 19261, 17121, 14876, 12540, 10126, 7650, 5126, 2571
88 };
89 
90 /* Lag window for LPC (Q31) */
91 const int32_t WebRtcIlbcfix_kLpcLagWin[LPC_FILTERORDER + 1]={
92   2147483647,   2144885453,   2137754373,   2125918626,   2109459810,
93   2088483140,   2063130336,   2033564590,   1999977009,   1962580174,
94   1921610283};
95 
96 /* WebRtcIlbcfix_kLpcChirpSyntDenum vector in Q15 corresponding
97  * floating point vector {1 0.9025 0.9025^2 0.9025^3 ...}
98  */
99 const int16_t WebRtcIlbcfix_kLpcChirpSyntDenum[LPC_FILTERORDER + 1] = {
100   32767, 29573, 26690, 24087,
101   21739, 19619, 17707, 15980,
102   14422, 13016, 11747};
103 
104 /* WebRtcIlbcfix_kLpcChirpWeightDenum in Q15 corresponding to
105  * floating point vector {1 0.4222 0.4222^2... }
106  */
107 const int16_t WebRtcIlbcfix_kLpcChirpWeightDenum[LPC_FILTERORDER + 1] = {
108   32767, 13835, 5841, 2466, 1041, 440,
109   186, 78,  33,  14,  6};
110 
111 /* LSF quantization Q13 domain */
112 const int16_t WebRtcIlbcfix_kLsfCb[64 * 3 + 128 * 3 + 128 * 4] = {
113   1273,       2238,       3696,
114   3199,       5309,       8209,
115   3606,       5671,       7829,
116   2815,       5262,       8778,
117   2608,       4027,       5493,
118   1582,       3076,       5945,
119   2983,       4181,       5396,
120   2437,       4322,       6902,
121   1861,       2998,       4613,
122   2007,       3250,       5214,
123   1388,       2459,       4262,
124   2563,       3805,       5269,
125   2036,       3522,       5129,
126   1935,       4025,       6694,
127   2744,       5121,       7338,
128   2810,       4248,       5723,
129   3054,       5405,       7745,
130   1449,       2593,       4763,
131   3411,       5128,       6596,
132   2484,       4659,       7496,
133   1668,       2879,       4818,
134   1812,       3072,       5036,
135   1638,       2649,       3900,
136   2464,       3550,       4644,
137   1853,       2900,       4158,
138   2458,       4163,       5830,
139   2556,       4036,       6254,
140   2703,       4432,       6519,
141   3062,       4953,       7609,
142   1725,       3703,       6187,
143   2221,       3877,       5427,
144   2339,       3579,       5197,
145   2021,       4633,       7037,
146   2216,       3328,       4535,
147   2961,       4739,       6667,
148   2807,       3955,       5099,
149   2788,       4501,       6088,
150   1642,       2755,       4431,
151   3341,       5282,       7333,
152   2414,       3726,       5727,
153   1582,       2822,       5269,
154   2259,       3447,       4905,
155   3117,       4986,       7054,
156   1825,       3491,       5542,
157   3338,       5736,       8627,
158   1789,       3090,       5488,
159   2566,       3720,       4923,
160   2846,       4682,       7161,
161   1950,       3321,       5976,
162   1834,       3383,       6734,
163   3238,       4769,       6094,
164   2031,       3978,       5903,
165   1877,       4068,       7436,
166   2131,       4644,       8296,
167   2764,       5010,       8013,
168   2194,       3667,       6302,
169   2053,       3127,       4342,
170   3523,       6595,      10010,
171   3134,       4457,       5748,
172   3142,       5819,       9414,
173   2223,       4334,       6353,
174   2022,       3224,       4822,
175   2186,       3458,       5544,
176   2552,       4757,       6870,
177   10905,      12917,      14578,
178   9503,      11485,      14485,
179   9518,      12494,      14052,
180   6222,       7487,       9174,
181   7759,       9186,      10506,
182   8315,      12755,      14786,
183   9609,      11486,      13866,
184   8909,      12077,      13643,
185   7369,       9054,      11520,
186   9408,      12163,      14715,
187   6436,       9911,      12843,
188   7109,       9556,      11884,
189   7557,      10075,      11640,
190   6482,       9202,      11547,
191   6463,       7914,      10980,
192   8611,      10427,      12752,
193   7101,       9676,      12606,
194   7428,      11252,      13172,
195   10197,      12955,      15842,
196   7487,      10955,      12613,
197   5575,       7858,      13621,
198   7268,      11719,      14752,
199   7476,      11744,      13795,
200   7049,       8686,      11922,
201   8234,      11314,      13983,
202   6560,      11173,      14984,
203   6405,       9211,      12337,
204   8222,      12054,      13801,
205   8039,      10728,      13255,
206   10066,      12733,      14389,
207   6016,       7338,      10040,
208   6896,       8648,      10234,
209   7538,       9170,      12175,
210   7327,      12608,      14983,
211   10516,      12643,      15223,
212   5538,       7644,      12213,
213   6728,      12221,      14253,
214   7563,       9377,      12948,
215   8661,      11023,      13401,
216   7280,       8806,      11085,
217   7723,       9793,      12333,
218   12225,      14648,      16709,
219   8768,      13389,      15245,
220   10267,      12197,      13812,
221   5301,       7078,      11484,
222   7100,      10280,      11906,
223   8716,      12555,      14183,
224   9567,      12464,      15434,
225   7832,      12305,      14300,
226   7608,      10556,      12121,
227   8913,      11311,      12868,
228   7414,       9722,      11239,
229   8666,      11641,      13250,
230   9079,      10752,      12300,
231   8024,      11608,      13306,
232   10453,      13607,      16449,
233   8135,       9573,      10909,
234   6375,       7741,      10125,
235   10025,      12217,      14874,
236   6985,      11063,      14109,
237   9296,      13051,      14642,
238   8613,      10975,      12542,
239   6583,      10414,      13534,
240   6191,       9368,      13430,
241   5742,       6859,       9260,
242   7723,       9813,      13679,
243   8137,      11291,      12833,
244   6562,       8973,      10641,
245   6062,       8462,      11335,
246   6928,       8784,      12647,
247   7501,       8784,      10031,
248   8372,      10045,      12135,
249   8191,       9864,      12746,
250   5917,       7487,      10979,
251   5516,       6848,      10318,
252   6819,       9899,      11421,
253   7882,      12912,      15670,
254   9558,      11230,      12753,
255   7752,       9327,      11472,
256   8479,       9980,      11358,
257   11418,      14072,      16386,
258   7968,      10330,      14423,
259   8423,      10555,      12162,
260   6337,      10306,      14391,
261   8850,      10879,      14276,
262   6750,      11885,      15710,
263   7037,       8328,       9764,
264   6914,       9266,      13476,
265   9746,      13949,      15519,
266   11032,      14444,      16925,
267   8032,      10271,      11810,
268   10962,      13451,      15833,
269   10021,      11667,      13324,
270   6273,       8226,      12936,
271   8543,      10397,      13496,
272   7936,      10302,      12745,
273   6769,       8138,      10446,
274   6081,       7786,      11719,
275   8637,      11795,      14975,
276   8790,      10336,      11812,
277   7040,       8490,      10771,
278   7338,      10381,      13153,
279   6598,       7888,       9358,
280   6518,       8237,      12030,
281   9055,      10763,      12983,
282   6490,      10009,      12007,
283   9589,      12023,      13632,
284   6867,       9447,      10995,
285   7930,       9816,      11397,
286   10241,      13300,      14939,
287   5830,       8670,      12387,
288   9870,      11915,      14247,
289   9318,      11647,      13272,
290   6721,      10836,      12929,
291   6543,       8233,       9944,
292   8034,      10854,      12394,
293   9112,      11787,      14218,
294   9302,      11114,      13400,
295   9022,      11366,      13816,
296   6962,      10461,      12480,
297   11288,      13333,      15222,
298   7249,       8974,      10547,
299   10566,      12336,      14390,
300   6697,      11339,      13521,
301   11851,      13944,      15826,
302   6847,       8381,      11349,
303   7509,       9331,      10939,
304   8029,       9618,      11909,
305   13973,      17644,      19647,      22474,
306   14722,      16522,      20035,      22134,
307   16305,      18179,      21106,      23048,
308   15150,      17948,      21394,      23225,
309   13582,      15191,      17687,      22333,
310   11778,      15546,      18458,      21753,
311   16619,      18410,      20827,      23559,
312   14229,      15746,      17907,      22474,
313   12465,      15327,      20700,      22831,
314   15085,      16799,      20182,      23410,
315   13026,      16935,      19890,      22892,
316   14310,      16854,      19007,      22944,
317   14210,      15897,      18891,      23154,
318   14633,      18059,      20132,      22899,
319   15246,      17781,      19780,      22640,
320   16396,      18904,      20912,      23035,
321   14618,      17401,      19510,      21672,
322   15473,      17497,      19813,      23439,
323   18851,      20736,      22323,      23864,
324   15055,      16804,      18530,      20916,
325   16490,      18196,      19990,      21939,
326   11711,      15223,      21154,      23312,
327   13294,      15546,      19393,      21472,
328   12956,      16060,      20610,      22417,
329   11628,      15843,      19617,      22501,
330   14106,      16872,      19839,      22689,
331   15655,      18192,      20161,      22452,
332   12953,      15244,      20619,      23549,
333   15322,      17193,      19926,      21762,
334   16873,      18676,      20444,      22359,
335   14874,      17871,      20083,      21959,
336   11534,      14486,      19194,      21857,
337   17766,      19617,      21338,      23178,
338   13404,      15284,      19080,      23136,
339   15392,      17527,      19470,      21953,
340   14462,      16153,      17985,      21192,
341   17734,      19750,      21903,      23783,
342   16973,      19096,      21675,      23815,
343   16597,      18936,      21257,      23461,
344   15966,      17865,      20602,      22920,
345   15416,      17456,      20301,      22972,
346   18335,      20093,      21732,      23497,
347   15548,      17217,      20679,      23594,
348   15208,      16995,      20816,      22870,
349   13890,      18015,      20531,      22468,
350   13211,      15377,      19951,      22388,
351   12852,      14635,      17978,      22680,
352   16002,      17732,      20373,      23544,
353   11373,      14134,      19534,      22707,
354   17329,      19151,      21241,      23462,
355   15612,      17296,      19362,      22850,
356   15422,      19104,      21285,      23164,
357   13792,      17111,      19349,      21370,
358   15352,      17876,      20776,      22667,
359   15253,      16961,      18921,      22123,
360   14108,      17264,      20294,      23246,
361   15785,      17897,      20010,      21822,
362   17399,      19147,      20915,      22753,
363   13010,      15659,      18127,      20840,
364   16826,      19422,      22218,      24084,
365   18108,      20641,      22695,      24237,
366   18018,      20273,      22268,      23920,
367   16057,      17821,      21365,      23665,
368   16005,      17901,      19892,      23016,
369   13232,      16683,      21107,      23221,
370   13280,      16615,      19915,      21829,
371   14950,      18575,      20599,      22511,
372   16337,      18261,      20277,      23216,
373   14306,      16477,      21203,      23158,
374   12803,      17498,      20248,      22014,
375   14327,      17068,      20160,      22006,
376   14402,      17461,      21599,      23688,
377   16968,      18834,      20896,      23055,
378   15070,      17157,      20451,      22315,
379   15419,      17107,      21601,      23946,
380   16039,      17639,      19533,      21424,
381   16326,      19261,      21745,      23673,
382   16489,      18534,      21658,      23782,
383   16594,      18471,      20549,      22807,
384   18973,      21212,      22890,      24278,
385   14264,      18674,      21123,      23071,
386   15117,      16841,      19239,      23118,
387   13762,      15782,      20478,      23230,
388   14111,      15949,      20058,      22354,
389   14990,      16738,      21139,      23492,
390   13735,      16971,      19026,      22158,
391   14676,      17314,      20232,      22807,
392   16196,      18146,      20459,      22339,
393   14747,      17258,      19315,      22437,
394   14973,      17778,      20692,      23367,
395   15715,      17472,      20385,      22349,
396   15702,      18228,      20829,      23410,
397   14428,      16188,      20541,      23630,
398   16824,      19394,      21365,      23246,
399   13069,      16392,      18900,      21121,
400   12047,      16640,      19463,      21689,
401   14757,      17433,      19659,      23125,
402   15185,      16930,      19900,      22540,
403   16026,      17725,      19618,      22399,
404   16086,      18643,      21179,      23472,
405   15462,      17248,      19102,      21196,
406   17368,      20016,      22396,      24096,
407   12340,      14475,      19665,      23362,
408   13636,      16229,      19462,      22728,
409   14096,      16211,      19591,      21635,
410   12152,      14867,      19943,      22301,
411   14492,      17503,      21002,      22728,
412   14834,      16788,      19447,      21411,
413   14650,      16433,      19326,      22308,
414   14624,      16328,      19659,      23204,
415   13888,      16572,      20665,      22488,
416   12977,      16102,      18841,      22246,
417   15523,      18431,      21757,      23738,
418   14095,      16349,      18837,      20947,
419   13266,      17809,      21088,      22839,
420   15427,      18190,      20270,      23143,
421   11859,      16753,      20935,      22486,
422   12310,      17667,      21736,      23319,
423   14021,      15926,      18702,      22002,
424   12286,      15299,      19178,      21126,
425   15703,      17491,      21039,      23151,
426   12272,      14018,      18213,      22570,
427   14817,      16364,      18485,      22598,
428   17109,      19683,      21851,      23677,
429   12657,      14903,      19039,      22061,
430   14713,      16487,      20527,      22814,
431   14635,      16726,      18763,      21715,
432   15878,      18550,      20718,      22906
433 };
434 
435 const int16_t WebRtcIlbcfix_kLsfDimCb[LSF_NSPLIT] = {3, 3, 4};
436 const int16_t WebRtcIlbcfix_kLsfSizeCb[LSF_NSPLIT] = {64,128,128};
437 
438 const int16_t WebRtcIlbcfix_kLsfMean[LPC_FILTERORDER] = {
439   2308,       3652,       5434,       7885,
440   10255,      12559,      15160,      17513,
441   20328,      22752};
442 
443 const int16_t WebRtcIlbcfix_kLspMean[LPC_FILTERORDER] = {
444   31476, 29565, 25819, 18725, 10276,
445   1236, -9049, -17600, -25884, -30618
446 };
447 
448 /* Q14 */
449 const int16_t WebRtcIlbcfix_kLsfWeight20ms[4] = {12288, 8192, 4096, 0};
450 const int16_t WebRtcIlbcfix_kLsfWeight30ms[6] = {8192, 16384, 10923, 5461, 0, 0};
451 
452 /*
453    cos(x) in Q15
454    WebRtcIlbcfix_kCos[i] = cos(pi*i/64.0)
455    used in WebRtcIlbcfix_Lsp2Lsf()
456 */
457 
458 const int16_t WebRtcIlbcfix_kCos[64] = {
459   32767,  32729,  32610,  32413,  32138,  31786,  31357,  30853,
460   30274,  29622,  28899,  28106,  27246,  26320,  25330,  24279,
461   23170,  22006,  20788,  19520,  18205,  16846,  15447,  14010,
462   12540,  11039,   9512,   7962,   6393,   4808,   3212,   1608,
463   0,  -1608,  -3212,  -4808,  -6393,  -7962,  -9512, -11039,
464   -12540, -14010, -15447, -16846, -18205, -19520, -20788, -22006,
465   -23170, -24279, -25330, -26320, -27246, -28106, -28899, -29622,
466   -30274, -30853, -31357, -31786, -32138, -32413, -32610, -32729
467 };
468 
469 /*
470    Derivative in Q19, used to interpolate between the
471    WebRtcIlbcfix_kCos[] values to get a more exact y = cos(x)
472 */
473 const int16_t WebRtcIlbcfix_kCosDerivative[64] = {
474   -632,  -1893,  -3150,  -4399,  -5638,  -6863,  -8072,  -9261,
475   -10428, -11570, -12684, -13767, -14817, -15832, -16808, -17744,
476   -18637, -19486, -20287, -21039, -21741, -22390, -22986, -23526,
477   -24009, -24435, -24801, -25108, -25354, -25540, -25664, -25726,
478   -25726, -25664, -25540, -25354, -25108, -24801, -24435, -24009,
479   -23526, -22986, -22390, -21741, -21039, -20287, -19486, -18637,
480   -17744, -16808, -15832, -14817, -13767, -12684, -11570, -10428,
481   -9261,  -8072,  -6863,  -5638,  -4399,  -3150,  -1893,   -632};
482 
483 /*
484   Table in Q15, used for a2lsf conversion
485   WebRtcIlbcfix_kCosGrid[i] = cos((2*pi*i)/(float)(2*COS_GRID_POINTS));
486 */
487 
488 const int16_t WebRtcIlbcfix_kCosGrid[COS_GRID_POINTS + 1] = {
489   32760, 32723, 32588, 32364, 32051, 31651, 31164, 30591,
490   29935, 29196, 28377, 27481, 26509, 25465, 24351, 23170,
491   21926, 20621, 19260, 17846, 16384, 14876, 13327, 11743,
492   10125, 8480, 6812, 5126, 3425, 1714, 0, -1714, -3425,
493   -5126, -6812, -8480, -10125, -11743, -13327, -14876,
494   -16384, -17846, -19260, -20621, -21926, -23170, -24351,
495   -25465, -26509, -27481, -28377, -29196, -29935, -30591,
496   -31164, -31651, -32051, -32364, -32588, -32723, -32760
497 };
498 
499 /*
500    Derivative of y = acos(x) in Q12
501    used in WebRtcIlbcfix_Lsp2Lsf()
502 */
503 
504 const int16_t WebRtcIlbcfix_kAcosDerivative[64] = {
505   -26887, -8812, -5323, -3813, -2979, -2444, -2081, -1811,
506   -1608, -1450, -1322, -1219, -1132, -1059, -998, -946,
507   -901, -861, -827, -797, -772, -750, -730, -713,
508   -699, -687, -677, -668, -662, -657, -654, -652,
509   -652, -654, -657, -662, -668, -677, -687, -699,
510   -713, -730, -750, -772, -797, -827, -861, -901,
511   -946, -998, -1059, -1132, -1219, -1322, -1450, -1608,
512   -1811, -2081, -2444, -2979, -3813, -5323, -8812, -26887
513 };
514 
515 
516 /* Tables for quantization of start state */
517 
518 /* State quantization tables */
519 const int16_t WebRtcIlbcfix_kStateSq3[8] = { /* Values in Q13 */
520   -30473, -17838, -9257, -2537,
521   3639, 10893, 19958, 32636
522 };
523 
524 /* This table defines the limits for the selection of the freqg
525    less or equal than value 0 => index = 0
526    less or equal than value k => index = k
527 */
528 const int32_t WebRtcIlbcfix_kChooseFrgQuant[64] = {
529   118, 163, 222, 305, 425, 604,
530   851, 1174, 1617, 2222, 3080, 4191,
531   5525, 7215, 9193, 11540, 14397, 17604,
532   21204, 25209, 29863, 35720, 42531, 50375,
533   59162, 68845, 80108, 93754, 110326, 129488,
534   150654, 174328, 201962, 233195, 267843, 308239,
535   354503, 405988, 464251, 531550, 608652, 697516,
536   802526, 928793, 1080145, 1258120, 1481106, 1760881,
537   2111111, 2546619, 3078825, 3748642, 4563142, 5573115,
538   6887601, 8582108, 10797296, 14014513, 18625760, 25529599,
539   37302935, 58819185, 109782723, WEBRTC_SPL_WORD32_MAX
540 };
541 
542 const int16_t WebRtcIlbcfix_kScale[64] = {
543   /* Values in Q16 */
544   29485, 25003, 21345, 18316, 15578, 13128, 10973, 9310, 7955,
545   6762, 5789, 4877, 4255, 3699, 3258, 2904, 2595, 2328,
546   2123, 1932, 1785, 1631, 1493, 1370, 1260, 1167, 1083,
547   /* Values in Q21 */
548   32081, 29611, 27262, 25229, 23432, 21803, 20226, 18883, 17609,
549   16408, 15311, 14327, 13390, 12513, 11693, 10919, 10163, 9435,
550   8739, 8100, 7424, 6813, 6192, 5648, 5122, 4639, 4207, 3798,
551   3404, 3048, 2706, 2348, 2036, 1713, 1393, 1087, 747
552 };
553 
554 /*frgq in fixpoint, but already computed like this:
555   for(i=0; i<64; i++){
556   a = (pow(10,frgq[i])/4.5);
557   WebRtcIlbcfix_kFrgQuantMod[i] = round(a);
558   }
559 
560   Value 0 :36 in Q8
561   37:58 in Q5
562   59:63 in Q3
563 */
564 const int16_t WebRtcIlbcfix_kFrgQuantMod[64] = {
565   /* First 37 values in Q8 */
566   569, 671, 786, 916, 1077, 1278,
567   1529, 1802, 2109, 2481, 2898, 3440,
568   3943, 4535, 5149, 5778, 6464, 7208,
569   7904, 8682, 9397, 10285, 11240, 12246,
570   13313, 14382, 15492, 16735, 18131, 19693,
571   21280, 22912, 24624, 26544, 28432, 30488,
572   32720,
573   /* 22 values in Q5 */
574   4383, 4684, 5012, 5363, 5739, 6146,
575   6603, 7113, 7679, 8285, 9040, 9850,
576   10838, 11882, 13103, 14467, 15950, 17669,
577   19712, 22016, 24800, 28576,
578   /* 5 values in Q3 */
579   8240, 9792, 12040, 15440, 22472
580 };
581 
582 /* Constants for codebook search and creation */
583 
584 /* Expansion filter to get additional cb section.
585  * Q12 and reversed compared to flp
586  */
587 const int16_t WebRtcIlbcfix_kCbFiltersRev[CB_FILTERLEN]={
588   -140, 446, -755, 3302, 2922, -590, 343, -138};
589 
590 /* Weighting coefficients for short lags.
591  * [0.2 0.4 0.6 0.8] in Q15 */
592 const int16_t WebRtcIlbcfix_kAlpha[4]={
593   6554, 13107, 19661, 26214};
594 
595 /* Ranges for search and filters at different subframes */
596 
597 const size_t WebRtcIlbcfix_kSearchRange[5][CB_NSTAGES]={
598   {58,58,58}, {108,44,44}, {108,108,108}, {108,108,108}, {108,108,108}};
599 
600 const size_t WebRtcIlbcfix_kFilterRange[5]={63, 85, 125, 147, 147};
601 
602 /* Gain Quantization for the codebook gains of the 3 stages */
603 
604 /* Q14 (one extra value (max int16_t) to simplify for the search) */
605 const int16_t WebRtcIlbcfix_kGainSq3[9]={
606   -16384, -10813, -5407, 0, 4096, 8192,
607   12288, 16384, 32767};
608 
609 /* Q14 (one extra value (max int16_t) to simplify for the search) */
610 const int16_t WebRtcIlbcfix_kGainSq4[17]={
611   -17203, -14746, -12288, -9830, -7373, -4915,
612   -2458, 0, 2458, 4915, 7373, 9830,
613   12288, 14746, 17203, 19661, 32767};
614 
615 /* Q14 (one extra value (max int16_t) to simplify for the search) */
616 const int16_t WebRtcIlbcfix_kGainSq5[33]={
617   614,        1229,        1843,        2458,        3072,       3686,
618   4301,        4915,        5530,        6144,        6758,        7373,
619   7987,        8602,        9216,        9830,       10445,       11059,
620   11674,       12288,       12902,       13517,       14131,       14746,
621   15360,       15974,       16589,       17203,       17818,       18432,
622   19046,       19661,    32767};
623 
624 /* Q14 gain_sq5Tbl squared in Q14 */
625 const int16_t WebRtcIlbcfix_kGainSq5Sq[32] = {
626   23,   92,    207,  368,  576,  829,
627   1129,  1474,   1866,  2304,  2787,  3317,
628   3893,  4516,   5184,  5897,  6658,  7464,
629   8318,  9216,   10160,  11151,  12187,  13271,
630   14400,  15574,   16796,  18062,  19377,  20736,
631   22140,  23593
632 };
633 
634 const int16_t* const WebRtcIlbcfix_kGain[3] =
635 {WebRtcIlbcfix_kGainSq5, WebRtcIlbcfix_kGainSq4, WebRtcIlbcfix_kGainSq3};
636 
637 
638 /* Tables for the Enhancer, using upsamling factor 4 (ENH_UPS0 = 4) */
639 
640 const int16_t WebRtcIlbcfix_kEnhPolyPhaser[ENH_UPS0][ENH_FLO_MULT2_PLUS1]={
641   {0,    0,    0, 4096,    0,  0,   0},
642   {64, -315, 1181, 3531, -436, 77, -64},
643   {97, -509, 2464, 2464, -509, 97, -97},
644   {77, -436, 3531, 1181, -315, 64, -77}
645 };
646 
647 const int16_t WebRtcIlbcfix_kEnhWt[3] = {
648   4800, 16384, 27968 /* Q16 */
649 };
650 
651 const size_t WebRtcIlbcfix_kEnhPlocs[ENH_NBLOCKS_TOT] = {
652   160, 480, 800, 1120, 1440, 1760, 2080, 2400  /* Q(-2) */
653 };
654 
655 /* PLC table */
656 
657 const int16_t WebRtcIlbcfix_kPlcPerSqr[6] = { /* Grid points for square of periodiciy in Q15 */
658   839, 1343, 2048, 2998, 4247, 5849
659 };
660 
661 const int16_t WebRtcIlbcfix_kPlcPitchFact[6] = { /* Value of y=(x^4-0.4)/(0.7-0.4) in grid points in Q15 */
662   0, 5462, 10922, 16384, 21846, 27306
663 };
664 
665 const int16_t WebRtcIlbcfix_kPlcPfSlope[6] = { /* Slope of y=(x^4-0.4)/(0.7-0.4) in Q11 */
666   26667, 18729, 13653, 10258, 7901, 6214
667 };
668