]> git.sesse.net Git - ffmpeg/blob - libavcodec/g723_1_data.h
Merge remote-tracking branch 'qatar/master'
[ffmpeg] / libavcodec / g723_1_data.h
1 /*
2  * G723.1 compatible decoder data tables.
3  * Copyright (c) 2006 Benjamin Larsson
4  * Copyright (c) 2010 Mohamed Naufal Basheer
5  *
6  * This file is part of FFmpeg.
7  *
8  * FFmpeg is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public
10  * License as published by the Free Software Foundation; either
11  * version 2.1 of the License, or (at your option) any later version.
12  *
13  * FFmpeg is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16  * Lesser General Public License for more details.
17  *
18  * You should have received a copy of the GNU Lesser General Public
19  * License along with FFmpeg; if not, write to the Free Software
20  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21  */
22
23 /**
24  * @file
25  * G723.1 compatible decoder data tables
26  */
27
28 #define SUBFRAMES       4
29 #define SUBFRAME_LEN    60
30 #define FRAME_LEN       (SUBFRAME_LEN << 2)
31 #define HALF_FRAME_LEN  (FRAME_LEN / 2)
32 #define LPC_FRAME       (HALF_FRAME_LEN + SUBFRAME_LEN)
33 #define LPC_ORDER       10
34 #define LSP_BANDS       3
35 #define LSP_CB_SIZE     256
36 #define PITCH_MIN       18
37 #define PITCH_MAX       (PITCH_MIN + 127)
38 #define PITCH_ORDER     5
39 #define GRID_SIZE       2
40 #define PULSE_MAX       6
41 #define GAIN_LEVELS     24
42 #define COS_TBL_SIZE    512
43
44 /**
45  * G723.1 frame types
46  */
47 typedef enum {
48     ActiveFrame,        ///< Active speech
49     SIDFrame,           ///< Silence Insertion Descriptor frame
50     UntransmittedFrame
51 } FrameType;
52
53 static const uint8_t frame_size[4] = {24, 20, 4, 1};
54
55 typedef enum {
56     Rate6k3,
57     Rate5k3
58 } Rate;
59
60 /**
61  * G723.1 unpacked data subframe
62  */
63 typedef struct {
64     int ad_cb_lag;     ///< adaptive codebook lag
65     int ad_cb_gain;
66     int dirac_train;
67     int pulse_sign;
68     int grid_index;
69     int amp_index;
70     int pulse_pos;
71 } G723_1_Subframe;
72
73 /**
74  * Pitch postfilter parameters
75  */
76 typedef struct {
77     int     index;    ///< postfilter backward/forward lag
78     int16_t opt_gain; ///< optimal gain
79     int16_t sc_gain;  ///< scaling gain
80 } PPFParam;
81
82 /**
83  * Harmonic filter parameters
84  */
85 typedef struct {
86     int index;
87     int gain;
88 } HFParam;
89
90 /**
91  * Optimized fixed codebook excitation parameters
92  */
93 typedef struct {
94     int min_err;
95     int amp_index;
96     int grid_index;
97     int dirac_train;
98     int pulse_pos[PULSE_MAX];
99     int pulse_sign[PULSE_MAX];
100 } FCBParam;
101
102 /**
103  * Postfilter gain weighting factors scaled by 2^15
104  */
105 static const int16_t ppf_gain_weight[2] = {0x1800, 0x2000};
106
107 /**
108  * LSP DC component
109  */
110 static const int16_t dc_lsp[LPC_ORDER] = {
111     0x0c3b,
112     0x1271,
113     0x1e0a,
114     0x2a36,
115     0x3630,
116     0x406f,
117     0x4d28,
118     0x56f4,
119     0x638c,
120     0x6c46
121 };
122
123 /**
124  * Cosine table scaled by 2^14
125  */
126 static const int16_t cos_tab[COS_TBL_SIZE] = {
127     16384,  16383,  16379,  16373,  16364,  16353,  16340,  16324,
128     16305,  16284,  16261,  16235,  16207,  16176,  16143,  16107,
129     16069,  16029,  15986,  15941,  15893,  15843,  15791,  15736,
130     15679,  15619,  15557,  15493,  15426,  15357,  15286,  15213,
131     15137,  15059,  14978,  14896,  14811,  14724,  14635,  14543,
132     14449,  14354,  14256,  14155,  14053,  13949,  13842,  13733,
133     13623,  13510,  13395,  13279,  13160,  13039,  12916,  12792,
134     12665,  12537,  12406,  12274,  12140,  12004,  11866,  11727,
135     11585,  11442,  11297,  11151,  11003,  10853,  10702,  10549,
136     10394,  10238,  10080,   9921,   9760,   9598,   9434,   9269,
137      9102,   8935,   8765,   8595,   8423,   8250,   8076,   7900,
138      7723,   7545,   7366,   7186,   7005,   6823,   6639,   6455,
139      6270,   6084,   5897,   5708,   5520,   5330,   5139,   4948,
140      4756,   4563,   4370,   4176,   3981,   3786,   3590,   3393,
141      3196,   2999,   2801,   2603,   2404,   2205,   2006,   1806,
142      1606,   1406,   1205,   1005,    804,    603,    402,    201,
143         0,   -201,   -402,   -603,   -804,  -1005,  -1205,  -1406,
144     -1606,  -1806,  -2006,  -2205,  -2404,  -2603,  -2801,  -2999,
145     -3196,  -3393,  -3590,  -3786,  -3981,  -4176,  -4370,  -4563,
146     -4756,  -4948,  -5139,  -5330,  -5520,  -5708,  -5897,  -6084,
147     -6270,  -6455,  -6639,  -6823,  -7005,  -7186,  -7366,  -7545,
148     -7723,  -7900,  -8076,  -8250,  -8423,  -8595,  -8765,  -8935,
149     -9102,  -9269,  -9434,  -9598,  -9760,  -9921, -10080, -10238,
150    -10394, -10549, -10702, -10853, -11003, -11151, -11297, -11442,
151    -11585, -11727, -11866, -12004, -12140, -12274, -12406, -12537,
152    -12665, -12792, -12916, -13039, -13160, -13279, -13395, -13510,
153    -13623, -13733, -13842, -13949, -14053, -14155, -14256, -14354,
154    -14449, -14543, -14635, -14724, -14811, -14896, -14978, -15059,
155    -15137, -15213, -15286, -15357, -15426, -15493, -15557, -15619,
156    -15679, -15736, -15791, -15843, -15893, -15941, -15986, -16029,
157    -16069, -16107, -16143, -16176, -16207, -16235, -16261, -16284,
158    -16305, -16324, -16340, -16353, -16364, -16373, -16379, -16383,
159    -16384, -16383, -16379, -16373, -16364, -16353, -16340, -16324,
160    -16305, -16284, -16261, -16235, -16207, -16176, -16143, -16107,
161    -16069, -16029, -15986, -15941, -15893, -15843, -15791, -15736,
162    -15679, -15619, -15557, -15493, -15426, -15357, -15286, -15213,
163    -15137, -15059, -14978, -14896, -14811, -14724, -14635, -14543,
164    -14449, -14354, -14256, -14155, -14053, -13949, -13842, -13733,
165    -13623, -13510, -13395, -13279, -13160, -13039, -12916, -12792,
166    -12665, -12537, -12406, -12274, -12140, -12004, -11866, -11727,
167    -11585, -11442, -11297, -11151, -11003, -10853, -10702, -10549,
168    -10394, -10238, -10080,  -9921,  -9760,  -9598,  -9434,  -9269,
169     -9102,  -8935,  -8765,  -8595,  -8423,  -8250,  -8076,  -7900,
170     -7723,  -7545,  -7366,  -7186,  -7005,  -6823,  -6639,  -6455,
171     -6270,  -6084,  -5897,  -5708,  -5520,  -5330,  -5139,  -4948,
172     -4756,  -4563,  -4370,  -4176,  -3981,  -3786,  -3590,  -3393,
173     -3196,  -2999,  -2801,  -2603,  -2404,  -2205,  -2006,  -1806,
174     -1606,  -1406,  -1205,  -1005,   -804,   -603,   -402,   -201,
175         0,    201,    402,    603,    804,   1005,   1205,   1406,
176      1606,   1806,   2006,   2205,   2404,   2603,   2801,   2999,
177      3196,   3393,   3590,   3786,   3981,   4176,   4370,   4563,
178      4756,   4948,   5139,   5330,   5520,   5708,   5897,   6084,
179      6270,   6455,   6639,   6823,   7005,   7186,   7366,   7545,
180      7723,   7900,   8076,   8250,   8423,   8595,   8765,   8935,
181      9102,   9269,   9434,   9598,   9760,   9921,  10080,  10238,
182     10394,  10549,  10702,  10853,  11003,  11151,  11297,  11442,
183     11585,  11727,  11866,  12004,  12140,  12274,  12406,  12537,
184     12665,  12792,  12916,  13039,  13160,  13279,  13395,  13510,
185     13623,  13733,  13842,  13949,  14053,  14155,  14256,  14354,
186     14449,  14543,  14635,  14724,  14811,  14896,  14978,  15059,
187     15137,  15213,  15286,  15357,  15426,  15493,  15557,  15619,
188     15679,  15736,  15791,  15843,  15893,  15941,  15986,  16029,
189     16069,  16107,  16143,  16176,  16207,  16235,  16261,  16284,
190     16305,  16324,  16340,  16353,  16364,  16373,  16379,  16383,
191 };
192
193 /**
194  *  LSP VQ tables
195  */
196 static const int16_t lsp_band0[LSP_CB_SIZE][3] = {
197     {    0,      0,      0}, { -270,  -1372,  -1032}, { -541,  -1650,  -1382},
198     { -723,  -2011,  -2213}, { -941,  -1122,  -1942}, { -780,  -1145,  -2454},
199     { -884,  -1309,  -1373}, {-1051,  -1523,  -1766}, {-1083,  -1622,  -2300},
200     { -777,  -1377,  -2147}, { -935,  -1467,  -2763}, { -802,  -1327,  -3471},
201     { -935,  -1959,  -3999}, { -240,    -89,    222}, { -661,   -257,   -160},
202     { -994,   -466,   -419}, { -188,   -164,   -278}, { -342,   -512,   -415},
203     { -607,   -511,   -797}, {   16,     19,   -716}, {  374,    425,   -972},
204     { -346,    245,   -282}, { -265,    506,   -754}, { -620,   -147,   1955},
205     { -742,   -860,   2597}, { -150,   -352,   2704}, {  305,    880,   1954},
206     {  123,    731,   2766}, { -348,    765,   3327}, {  618,    221,   3258},
207     { -178,    -47,   4219}, {  393,   1304,   3842}, {  698,   1702,   4801},
208     {   63,   -584,   1229}, { -215,   -732,   1704}, {  172,   -335,   1909},
209     {   -2,    216,   1797}, {  353,    127,   2205}, {-1208,    188,     11},
210     { -513,    -75,   -683}, { -973,    222,   -646}, { -616,   -843,   -388},
211     { -950,  -1113,   -359}, {-1431,   -623,   -705}, {-1398,  -1063,   -178},
212     {  -45,   -461,     35}, {   -9,   -657,   -216}, {  127,  -1078,     95},
213     { -950,  -1156,    584}, {-1480,  -1494,    449}, { -120,   -705,    516},
214     { -368,   -961,    727}, { -378,   -526,    973}, { -793,   -614,    676},
215     { -801,   -755,   1287}, {-1476,   -340,   1636}, { -505,  -1254,   1543},
216     {-1243,  -1622,   1532}, { -776,  -1477,   -655}, {-1151,  -1296,   -823},
217     {-1153,  -1672,  -1124}, {-1291,  -2003,  -1702}, { -622,  -1283,     57},
218     { -471,  -1611,    509}, {-1060,  -1570,   -139}, { -873,  -2156,   -536},
219     {-1716,  -2021,   -364}, {-2150,  -3218,  -1291}, {-1248,  -1945,  -2904},
220     {-1215,  -2633,  -2855}, {  167,   -244,     84}, {  349,   -412,   -217},
221     {  -40,   -352,    632}, {  227,   -529,    405}, {   68,   -383,   -443},
222     {  167,   -558,   -706}, { -275,   -854,    -14}, { -351,  -1089,   -449},
223     {  341,    -72,   -289}, {  603,   -106,   -474}, {  322,   -219,   -649},
224     {  179,   -317,   -998}, {  450,   -291,   -996}, {  555,    195,   -525},
225     {  784,    272,   -831}, { -148,   -384,   -849}, {   82,   -536,  -1357},
226     {  238,   -172,  -1354}, {  422,   -268,  -1841}, {  297,   -737,  -2079},
227     { -111,   -801,   -598}, {    1,   -668,   -984}, { -131,   -818,  -1299},
228     { -329,   -521,  -1310}, { -151,   -778,  -1834}, {  -93,   -352,  -1746},
229     { -568,   -640,  -1821}, { -509,   -941,  -2183}, {  464,   -815,  -1250},
230     {   79,  -1133,  -1597}, { -184,  -1353,  -2123}, { -196,   -410,  -2427},
231     { -192,   -833,  -2810}, { -259,  -1382,  -3045}, { -217,      4,  -1166},
232     { -800,   -325,  -1219}, { -363,   -830,   -898}, { -661,  -1134,   -960},
233     { -386,   -980,  -1501}, { -627,  -1159,  -1722}, { -903,   -829,   -855},
234     { -685,   -829,  -1313}, {-1065,   -959,  -1405}, {  441,     25,   -847},
235     {  655,    -27,  -1181}, { 1159,   -110,   -705}, {  856,    253,  -1671},
236     {  415,    404,     -1}, {  322,    903,   -398}, {  670,    499,   -292},
237     {  803,    591,   -610}, { 1144,    591,   -814}, {  717,    183,    393},
238     {  857,    381,    106}, {  609,     62,    -27}, {  792,    198,   -325},
239     {  735,    805,     88}, { 1142,    812,     78}, { 1028,    366,   -292},
240     { 1309,    743,   -237}, { 1615,    589,    -79}, { 1010,    639,   -243},
241     {  999,    964,   -311}, { 1500,   1137,   -615}, {  988,    357,    646},
242     { 1227,    667,    683}, { 1164,   1565,    894}, { 1392,   2015,    477},
243     { 1138,    533,    250}, { 1437,    896,    391}, { 1765,   1118,     99},
244     { 1112,   1090,    802}, { 1596,    846,   1134}, {  937,   1161,    279},
245     { 1719,   1254,    683}, { 1338,   1086,     35}, { 1419,   1324,    428},
246     { 1428,   1524,     40}, { 2108,   1594,     89}, { 1015,    544,   1222},
247     { 1121,    925,   1263}, { 1030,   1318,   1485}, { 1295,    789,   1817},
248     { 1323,   1272,   1909}, { 1724,   1237,   1803}, { 1797,   1689,    858},
249     { 2149,   1367,   1301}, { 2302,   1867,    761}, { 2863,   2351,   1053},
250     {   52,    163,    -76}, {  230,    309,   -492}, {  -71,    619,     39},
251     { -218,    856,    499}, { -654,    736,   -207}, { -535,   1259,    155},
252     { -480,   1476,    643}, {  262,   1081,    102}, {  309,   1592,   -182},
253     {  627,   1629,    534}, {  337,    643,    456}, {  758,    670,    713},
254     {  202,   1126,    658}, {  612,   1131,    666}, {  686,   1223,   1136},
255     { -131,    377,    525}, {   42,    708,    907}, {   87,   1488,   1035},
256     {  432,   2117,    904}, {  137,    981,   1332}, { -447,   1014,   1136},
257     { -839,   1793,   1246}, { -559,    297,    198}, { -850,    685,    446},
258     {-1273,    632,    826}, { -401,   -544,    173}, { -753,   -793,    144},
259     { -436,     -9,    772}, { -115,   -243,   1310}, { -670,   -269,    374},
260     {-1027,    -13,    639}, { -887,    -81,   1137}, {-1277,   -455,    158},
261     {-1411,   -720,    736}, {  172,     88,    403}, {  386,    255,    756},
262     { -500,    522,    910}, { -958,    659,   1388}, { -395,    301,   1344},
263     { -356,    768,   1813}, { -613,    841,   2419}, {  445,   -122,    252},
264     {  629,    -87,    723}, {  283,   -253,    870}, {  456,   -116,   1381},
265     {  757,    180,   1059}, {  532,    408,   1509}, {  947,    288,   1806},
266     { 1325,    994,   2524}, {  892,   1219,   3023}, { 1397,   1596,   3406},
267     { 1143,   1552,   2546}, { 1850,   1433,   2710}, {  -10,    134,   1002},
268     {  154,    499,   1323}, {  508,    792,   1117}, {  509,   1340,   1616},
269     {  762,    862,   1608}, {  787,    740,   2320}, {  794,   1727,   1283},
270     {  465,   2108,   1660}, { -120,   1451,   1613}, { -386,   2016,   2169},
271     {  891,   1225,   2050}, {  456,   1480,   2185}, { 1493,   1283,   1209},
272     { 1397,   1636,   1518}, { 1776,   1738,   1552}, { 1572,   1698,   2141},
273     { 1389,   2126,   1271}, { 1959,   2413,   1119}, { 1365,   2892,   1505},
274     { 2206,   1971,   1623}, { 2076,   1950,   2280}, { 1717,   2291,   1867},
275     { 2366,   2515,   1953}, { 2865,   2838,   2522}, { 2535,   3465,   2011},
276     { 3381,   4127,   2638}, {  836,   2667,   2289}, { 1761,   2773,   2337},
277     { 1415,   3325,   2911}, { 2354,   3138,   3126}, { 2659,   4192,   4010},
278     { 1048,   1786,   1818}, { 1242,   2111,   2240}, { 1512,   2079,   2780},
279     { 1573,   2491,   3138}, { 2230,   2377,   2782}, {  416,   1773,   2704},
280     {  725,   2336,   3297}, { 1252,   2373,   3978}, { 2094,   2268,   3568},
281     { 2011,   2712,   4528}, { 1341,   3507,   3876}, { 1216,   3919,   4922},
282     { 1693,   4793,   6012}
283 };
284
285 static const int16_t lsp_band1[LSP_CB_SIZE][3] = {
286     {    0,      0,      0}, {-2114,  -1302,     76}, {-2652,  -1278,  -1368},
287     {-2847,   -828,   -349}, {-3812,  -2190,   -349}, {-3946,   -364,   -449},
288     {-2725,  -4492,  -3607}, {-3495,  -4764,  -1744}, {  -51,   -756,     84},
289     { -153,  -1191,    504}, {  108,  -1418,   1167}, { -835,   -896,    390},
290     { -569,  -1702,     87}, {-1151,  -1818,    933}, {-1826,  -2547,    411},
291     {-1842,  -1818,   1451}, {-2438,  -1611,    781}, {-2747,  -2477,   1311},
292     { -940,   1252,    477}, {-1629,   1688,    602}, {-1202,    617,    280},
293     {-1737,    393,    580}, {-1528,   1077,   1199}, {-2165,   -161,   1408},
294     {-2504,  -1087,   2371}, {-3458,   -175,   1395}, {-1397,    -98,   -843},
295     {-2252,   -177,  -1149}, {-1489,   -726,  -1283}, {-1558,   -265,  -1744},
296     {-1867,   -821,  -1897}, {-2062,  -1516,  -2340}, {-2595,  -1142,  -2861},
297     {  170,     46,   -819}, { -193,   -204,  -1151}, {  326,   -196,  -1532},
298     {  780,    329,   -816}, {  201,    369,  -1243}, {  650,   -209,  -1060},
299     { 1144,    -15,  -1216}, { 1203,   -259,  -1867}, { -890,   -564,  -1430},
300     { -638,   -852,  -1921}, {  177,   -739,  -1358}, { -261,   -526,  -1666},
301     {  206,   -407,  -2255}, {  338,   -526,   -822}, {  421,  -1095,  -1009},
302     {  765,   -607,  -1408}, {  825,  -1295,  -2004}, {  357,   -905,  -1815},
303     {  -58,  -1248,  -1588}, { -596,  -1436,  -2046}, {  -73,  -1159,  -2116},
304     { -115,  -1382,  -2581}, { -160,  -1723,  -1952}, {   -6,  -2196,  -2954},
305     { -649,  -1705,  -2603}, { -617,  -1453,  -3282}, { -949,  -2019,  -3102},
306     { -812,   1544,   1937}, {-1854,    574,   2000}, {-1463,   1140,   2649},
307     {-2683,   1748,   1452}, {-2486,   2241,   2523}, {  783,   1910,   1435},
308     {  581,   2682,   1376}, {  236,   2197,   1885}, { -453,   2943,   2057},
309     { -682,   2178,   2565}, {-1342,   3201,   3328}, { -288,   -184,    262},
310     {  121,   -149,   -183}, {  758,   -412,    206}, { 1038,   -204,    853},
311     { 1577,   -457,    700}, {  937,   -640,   -567}, { 1508,   -528,  -1024},
312     { -225,   -527,   -427}, { -564,  -1095,   -332}, { -742,   -353,   -186},
313     {-1288,   -459,     84}, {-1853,   -484,   -274}, {-1554,   -731,    825},
314     {-2425,   -234,    382}, {-1722,    293,   -271}, {-2515,    425,   -564},
315     {-2599,    818,    464}, { -358,    118,   -375}, { -613,    198,   -874},
316     { -690,    683,   -324}, {-1352,   1155,   -168}, {-1093,    129,   -324},
317     {-1184,    611,   -858}, {  433,    386,   -372}, { -120,    486,   -634},
318     {  234,    851,   -631}, {  602,    128,     46}, { 1099,    410,    159},
319     {  715,   -145,   -424}, { 1198,    -85,   -593}, { 1390,    367,   -358},
320     { 1683,    362,   -964}, { 1711,    622,     45}, { 2033,    833,   -383},
321     { 2890,    549,   -506}, {    7,    401,     52}, {   72,    811,    415},
322     {  566,    668,     41}, {  467,   1218,    130}, {   68,    957,   -187},
323     {  -25,   1649,   -103}, { -661,    260,    214}, { -925,    -94,    612},
324     { -321,   -422,    965}, { -788,   -672,   1783}, {  400,   -673,    779},
325     {  741,   -595,   1635}, { -161,    307,    657}, { -382,    836,    871},
326     { -814,    400,   1223}, {  364,    606,   1247}, {   57,     75,   1571},
327     {  151,    471,   2287}, {  -81,   1021,   1502}, {  227,   1470,   1097},
328     {  658,   1275,   1653}, {  664,   1478,   2377}, {  263,   -127,    444},
329     {  264,     89,    969}, {  794,    171,    576}, {  821,    186,   1226},
330     {  404,    462,    517}, {  339,    918,    794}, { 1280,   1423,    196},
331     { 1453,   2019,    365}, { 1615,   1481,    672}, { 2394,   1708,    508},
332     {  806,   1238,    573}, {  713,   1158,   1078}, { 1285,   1436,   1232},
333     { 1790,   1188,   1141}, {  765,    643,    864}, { 1032,    797,   1279},
334     {  900,    563,   1827}, { 1514,    673,   2312}, { 1544,   1129,   3240},
335     { 1469,   1050,   1594}, { 1945,   1318,   1988}, { 2397,   2026,   2060},
336     { 3538,   2057,   2620}, { 1249,   -118,     74}, { 1727,    194,    421},
337     { 2078,    -50,   -463}, {  970,    688,   -432}, { 1149,    952,   -110},
338     { 1254,   1275,   -651}, { 1386,    929,    401}, { 1960,   1167,    232},
339     {  407,   -752,   -243}, {  859,  -1118,    172}, { -227,   -860,   -992},
340     { -796,  -1175,  -1380}, {    8,  -1282,   -388}, {  353,  -1781,  -1037},
341     { -732,   -397,   -807}, { -853,    -28,  -1342}, {-1229,  -1207,  -1959},
342     {-1015,  -1125,  -2543}, {-1452,  -1791,  -2725}, {-1891,  -2416,  -3269},
343     { -918,  -1629,   -783}, { -580,  -2155,   -698}, {-1097,  -2364,    -96},
344     {-1387,  -1513,      7}, {-1588,  -2076,   -664}, {-1473,  -2740,   -784},
345     {-2378,  -3149,    -56}, {-2856,  -2092,   -169}, {-3391,  -3708,    316},
346     {-1176,   -890,   -614}, {-1944,  -1061,   -800}, { -299,  -1517,  -1000},
347     { -640,  -1850,  -1526}, {-1454,  -1536,  -1233}, {-1890,  -1955,  -1756},
348     {-1086,  -1921,  -2122}, { -750,  -2325,  -2260}, {-1325,  -2413,  -2673},
349     {-1114,  -2542,  -3459}, {-1341,  -2901,  -3963}, {-1160,  -2226,  -1393},
350     {-1001,  -2772,  -1573}, {-1594,  -2641,  -1978}, {-1534,  -3046,  -2624},
351     {-2224,  -2196,   -675}, {-2807,  -3054,  -1102}, {-2008,  -2840,  -1186},
352     {-1980,  -3332,  -1695}, {-1715,  -3562,   -505}, {-2527,  -4000,  -1887},
353     {-2333,  -2734,  -2296}, {-3440,  -2401,  -3211}, {-2008,  -3528,  -3337},
354     {-2247,  -3291,  -4510}, { -475,    949,    155}, { -149,   1365,    545},
355     { -757,   1644,   1083}, { -217,   2053,   1353}, {-1433,   2301,   1462},
356     {  495,   1661,    529}, {   10,   2037,    740}, { 2082,   1898,    978},
357     { 2831,   2294,    911}, {  842,    793,    420}, { 1223,   1023,    863},
358     { 1237,    451,    780}, { 1744,    708,    822}, { 1533,    284,   1384},
359     { 2135,    609,   1538}, { 2305,    626,    540}, { 2368,   1187,    955},
360     { 2586,   1255,     -7}, { 3116,   1131,    726}, { 3431,   1730,    428},
361     { 2734,   1648,   1307}, { 2988,   1231,   2010}, { 3523,   2024,   1488},
362     { 1034,   1657,    871}, { 1206,   2163,   1036}, { 1807,   2372,   1233},
363     { 1808,   1769,   1493}, { 1573,   2332,   1779}, { 1216,   1609,   1866},
364     { 1480,   1898,   2513}, {  465,   2708,   2776}, {  771,   3638,   3338},
365     { 1869,   2599,   2623}, { 2825,   2745,   2468}, { 2638,   2439,   1585},
366     { 2094,   2970,   1308}, { 2022,   3057,   1999}, { 3428,   2912,   1816},
367     { 4536,   2974,   2129}, { 1046,   2563,   2086}, { 1363,   3562,   2318},
368     { 2511,   1891,   2984}, { 1866,   2306,   3986}, { 3272,   2924,   3682},
369     { 3146,   3564,   2272}, { 3592,   3968,   2822}, { 2431,   3369,   3069},
370     { 1931,   4709,   3090}, { 2629,   4220,   3986}, { 4639,   4056,   3664},
371     { 4035,   5334,   4912}
372 };
373
374 static const int16_t lsp_band2[LSP_CB_SIZE][4] = {
375     {    0,      0,      0,      0}, {  601,    512,   -542,    334},
376     {  428,   1087,   -484,   -132}, {  652,    622,   -391,   -572},
377     {  378,    799,    141,   -860}, { 1040,    409,    112,   -554},
378     { 1123,    670,    -75,   -847}, { 1421,    494,   -315,  -1095},
379     {  787,   1001,    114,   -460}, {  988,   1672,    216,   -681},
380     { 1007,   1241,   -132,  -1247}, { 1073,    399,    186,     -5},
381     { 1262,    193,   -694,   -129}, {  325,    196,     51,   -641},
382     {  861,    -59,    350,   -458}, { 1261,    567,    586,   -346},
383     { 1532,    885,    210,   -517}, { 2027,    937,    113,   -792},
384     { 1383,   1064,    334,     38}, { 1964,   1468,    459,    133},
385     { 2062,   1186,    -98,   -121}, { 2577,   1445,    506,   -373},
386     { 2310,   1682,     -2,   -960}, { 2876,   1939,    765,    138},
387     { 3581,   2360,    649,   -414}, {  219,    176,   -398,   -309},
388     {  434,    -78,   -435,   -880}, { -344,    301,    265,   -552},
389     { -915,    470,    657,   -380}, {  419,   -432,   -163,   -453},
390     {  351,   -953,      8,   -562}, {  789,    -43,     20,   -958},
391     {  302,   -594,   -352,  -1159}, { 1040,    108,   -668,   -924},
392     { 1333,    210,  -1217,  -1663}, {  483,    589,   -350,  -1140},
393     { 1003,    824,   -802,  -1184}, {  745,     58,   -589,  -1443},
394     {  346,    247,   -915,  -1683}, {  270,    796,   -720,  -2043},
395     { 1208,    722,   -222,   -193}, { 1486,   1180,   -412,   -672},
396     { 1722,    179,    -69,   -521}, { 2047,    860,   -666,  -1410},
397     { -146,    222,   -281,   -805}, { -189,     90,   -114,  -1307},
398     { -152,   1086,   -241,   -764}, { -439,    733,   -601,  -1302},
399     { -833,   -167,   -351,   -601}, { -856,   -422,   -411,  -1059},
400     { -747,   -355,   -582,  -1644}, { -837,    210,   -916,  -1144},
401     {-1800,     32,   -878,  -1687}, {  -48,    -23,  -1146,     52},
402     { -350,   -409,  -1656,   -364}, {  265,   -728,   -858,   -577},
403     {  458,   -247,  -1141,   -997}, {  691,   -407,  -1988,  -1161},
404     {  -66,   -104,   -705,  -1249}, { -431,    -93,  -1191,  -1844},
405     {  203,   -732,  -1000,  -1693}, {   10,   -832,  -1846,  -1819},
406     {  493,   -128,  -1436,  -1768}, {  488,   -311,  -1730,  -2540},
407     { -653,   -532,  -1150,  -1172}, {-1086,   -289,  -1706,  -1533},
408     { -699,  -1205,  -1216,  -1766}, {-1032,  -1481,  -2074,  -1523},
409     { -721,  -1220,  -2277,  -2600}, {   12,   -539,  -1484,  -1131},
410     {  -40,   -911,  -2106,   -441}, { -471,   -484,  -2267,  -1549},
411     { -141,   -988,  -3006,  -1721}, {-1545,  -2102,   -583,    342},
412     {-1383,  -2772,   -386,    -13}, {-2118,  -2589,  -1205,     72},
413     {-2147,  -3231,   -965,    390}, {-2949,  -3300,   -621,    637},
414     {-3907,  -4138,   -865,    803}, {-1287,   -845,   -375,   -548},
415     {-1416,  -1169,   -487,  -1277}, {-1400,  -1690,  -1027,   -418},
416     {-2018,  -1909,  -1188,  -1260}, {-1418,  -2222,  -2029,   -128},
417     {-2067,  -2998,  -2693,   -310}, { -950,  -1028,  -1538,    185},
418     {-1616,   -915,  -2205,   -549}, {   19,   -821,  -1145,    352},
419     {  184,  -1175,  -1356,   -627}, { -547,  -1088,  -1661,   -911},
420     { -216,  -1502,  -2197,   -948}, { -795,  -1306,  -2374,   -451},
421     { -924,  -1889,  -2796,   -680}, { -600,  -1614,  -3609,   -885},
422     {-2392,  -2528,    319,    303}, {-2908,  -2095,   -310,    573},
423     {-3460,  -2141,     49,   -113}, {-2231,   -448,    675,   -146},
424     {-2805,   -532,   1231,    479}, {-2684,   -486,   -200,    611},
425     {-3525,   -971,   -198,    704}, {-3707,    173,    349,    254},
426     {-4734,  -1447,    -34,    880}, {  777,   -512,    114,    -10},
427     { 1250,    -66,    442,     -5}, {  604,    613,    452,   -352},
428     { 1224,    777,    675,  -1014}, {-1372,    -79,  -1208,   -238},
429     {-2389,    -17,  -1157,   -818}, {-1504,   -673,  -1133,  -1060},
430     {-1984,   -799,  -2005,  -1973}, {-2037,   -798,  -1068,   -105},
431     {-3190,   -899,  -1817,   -194}, { -156,   -886,    394,   -318},
432     { -258,  -1283,    551,    202}, { -536,  -1729,    910,    331},
433     { -847,  -1109,    795,   -163}, {-1171,  -1128,    715,    519},
434     {-1080,  -1319,   1685,    668}, {-1000,  -1921,     96,    211},
435     {-1487,  -2148,    831,    174}, {-1139,   -374,    414,     -4},
436     {-1517,  -1383,    396,   -352}, {-1012,    439,    -59,   -967},
437     {-1812,    706,   -440,  -1030}, {-1971,   -329,    -34,   -827},
438     {-2472,  -1588,   -151,   -606}, {-2161,    374,   -281,     76},
439     {-3012,    231,    -15,   -690}, { 1104,    566,    721,    209},
440     { 1685,    564,    383,     98}, { 1898,    750,    792,    -97},
441     {  556,    -64,    561,    -93}, {  876,    162,    913,    -22},
442     {  961,    675,   1296,    140}, {  756,   -396,    851,    544},
443     {  360,   -303,   1341,    396}, {  878,    -22,   1464,    863},
444     { -309,   -273,    642,   -129}, { -686,    -82,    842,    454},
445     {   -5,    -47,   1069,    998}, {  -94,    967,   1277,    298},
446     { -489,    385,   1473,    746}, { -369,   -717,   1333,    242},
447     {  281,   -993,   1726,    924}, {  464,    601,   1575,   1376},
448     { -250,    206,   2339,   1175}, { -438,    377,   -597,   -285},
449     {-1020,    787,   -790,   -287}, { -458,   -410,    215,    295},
450     { -589,   -860,   -121,    797}, {-1175,    122,   -437,    466},
451     {-1480,   -121,    367,    924}, {  234,    323,    770,   -555},
452     {  145,     30,    996,     26}, {   66,    849,     93,   -145},
453     { -117,   1261,    474,   -399}, {-1495,   1051,    218,   -506},
454     {-1390,    694,    994,     88}, {  616,      7,     78,    304},
455     { 1060,     52,    -62,    835}, {  833,    454,    649,   1359},
456     { -770,    464,     47,     93}, { -574,   1199,    -39,    379},
457     {  114,    -98,    488,    485}, {  727,    244,    606,    696},
458     {  -76,    455,    671,    546}, { -565,    -13,    145,    819},
459     { -376,    569,    448,   1128}, {  218,    122,    265,   1167},
460     {  230,    738,    932,   1003}, {  138,    477,     36,    450},
461     {  404,    787,    -73,   1000}, {  497,   1259,    387,   1231},
462     {   17,    207,    195,    -79}, {  562,    358,     53,   -158},
463     {  493,    387,    478,    189}, {  678,    831,    640,    558},
464     { -197,    523,    613,     57}, {  429,    894,    769,    111},
465     {   67,   1174,    568,    511}, { 1242,    824,    251,    840},
466     { 1419,   1074,    864,    481}, {  924,   1474,    669,    724},
467     { 1539,   1879,    654,   1590}, {  445,    337,   1111,    541},
468     {  472,   1421,   1264,   1094}, {  794,    735,   1103,    668},
469     { 1055,    863,   1192,   1020}, {  778,   1105,    806,   1798},
470     { 1052,   1527,   1587,   2151}, {  881,   1552,   1265,    391},
471     {  726,    872,   1812,    601}, { 1469,    280,   1008,    616},
472     { 1403,    577,   1803,   1244}, { 1650,   1314,   1148,   1072},
473     { 1297,   1669,   1911,   1026}, { 2093,   1044,   2115,   1189},
474     { 1644,   1961,   2587,   1512}, {   25,   -315,     -9,   -106},
475     {  290,   -339,    428,   -444}, {  -68,   -783,    735,    772},
476     {  245,   -555,    468,     47}, {  334,   -895,    814,    146},
477     {  235,    368,   -964,   -959}, { -203,    315,  -1566,  -1217},
478     {  801,     17,   -276,   -354}, {  894,   -495,   -789,   -635},
479     {  716,    291,  -1189,   -357}, {  560,   -260,   -733,     -2},
480     {  679,   -508,  -1429,    211}, {  -51,    -62,   -428,    557},
481     {  322,   -638,   -211,    614}, { -878,  -1057,    -84,    -71},
482     { -388,  -1415,   -167,   -318}, { -754,  -1574,    214,   -539},
483     {-1419,  -2004,    -92,   -787}, {  -47,   -856,   -347,   -255},
484     {   23,  -1211,   -173,    320}, { -658,   -487,   -893,    353},
485     { -783,  -1587,   -584,    507}, {-1420,   -859,   -378,    441},
486     {-2095,  -1491,   -137,    439}, { -321,  -1450,  -1288,    -12},
487     { -359,  -2113,   -553,     -8}, { -831,  -1918,  -1561,     32},
488     {-1014,  -2487,  -1359,   -939}, { -475,   -311,   -169,   -236},
489     { -907,   -426,    276,   -611}, {  -96,   -400,     50,   -710},
490     { -426,  -1022,    -10,   -985}, { -197,   -258,   -744,   -575},
491     { -611,   -930,   -771,   -394}, { -267,   -776,   -612,   -939},
492     { -256,  -1346,   -802,  -1122}, { -796,  -1570,   -825,   -754},
493     {  712,    876,    141,    227}, {  981,   1509,     85,    124},
494     { 1462,   1228,    979,    -39}, { 1734,    999,   1481,    440},
495     { 2293,   1116,    769,    440}, { 2504,   1480,   1241,    356},
496     { 2474,   1909,   1558,    810}, {  917,   1134,    607,   -134},
497     {  509,   1809,    781,   -123}, { 1712,   1506,    559,   -423},
498     { 2037,   2317,    726,   -155}, { 3031,   2676,   1203,    331},
499     { 3664,   3274,   1768,    531}, { 1610,   1839,    867,    183},
500     { 1774,   1972,   1538,     97}, { 1822,   2158,   1282,    659},
501     { 2222,   2758,   1818,    900}, { 3251,   2124,   1723,    996},
502     { 3633,   2336,   2408,   1453}, { 2923,   3517,   2567,   1318},
503 };
504
505 /**
506  * Used for the coding/decoding of the pulses positions
507  * for the MP-MLQ codebook
508  */
509 static const int32_t combinatorial_table[PULSE_MAX][SUBFRAME_LEN/GRID_SIZE] = {
510     {118755, 98280, 80730,  65780, 53130,
511       42504, 33649, 26334,  20349, 15504,
512       11628,  8568,  6188,   4368,  3003,
513        2002,  1287,   792,    462,   252,
514         126,    56,    21,      6,     1,
515           0,     0,     0,      0,     0},
516
517     { 23751, 20475, 17550,  14950, 12650,
518       10626,  8855,  7315,   5985,  4845,
519        3876,  3060,  2380,   1820,  1365,
520        1001,   715,   495,    330,   210,
521         126,    70,    35,     15,     5,
522           1,     0,     0,      0,     0},
523
524     {  3654,  3276,  2925,   2600,  2300,
525        2024,  1771,  1540,   1330,  1140,
526         969,   816,   680,    560,   455,
527         364,   286,   220,    165,   120,
528          84,    56,    35,     20,    10,
529           4,     1,     0,      0,     0},
530
531     {   406,   378,   351,    325,   300,
532         276,   253,   231,    210,   190,
533         171,   153,   136,    120,   105,
534          91,    78,    66,     55,    45,
535          36,    28,    21,     15,    10,
536           6,     3,     1,      0,     0},
537
538     {    29,    28,    27,     26,    25,
539          24,    23,    22,     21,    20,
540          19,    18,    17,     16,    15,
541          14,    13,    12,     11,    10,
542           9,     8,     7,      6,     5,
543           4,     3,     2,      1,     0},
544
545     {     1,     1,     1,      1,     1,
546           1,     1,     1,      1,     1,
547           1,     1,     1,      1,     1,
548           1,     1,     1,      1,     1,
549           1,     1,     1,      1,     1,
550           1,     1,     1,      1,     1},
551 };
552
553 static const int16_t pitch_contrib[340] = {
554     60,     0,  0,  2489, 60,     0,  0,  5217,
555      1,  6171,  0,  3953,  0, 10364,  1,  9357,
556     -1,  8843,  1,  9396,  0,  5794, -1, 10816,
557      2, 11606, -2, 12072,  0,  8616,  1, 12170,
558      0, 14440,  0,  7787, -1, 13721,  0, 18205,
559      0, 14471,  0, 15807,  1, 15275,  0, 13480,
560     -1, 18375, -1,     0,  1, 11194, -1, 13010,
561      1, 18836, -2, 20354,  1, 16233, -1,     0,
562     60,     0,  0, 12130,  0, 13385,  1, 17834,
563      1, 20875,  0, 21996,  1,     0,  1, 18277,
564     -1, 21321,  1, 13738, -1, 19094, -1, 20387,
565     -1,     0,  0, 21008, 60,     0, -2, 22807,
566      0, 15900,  1,     0,  0, 17989, -1, 22259,
567      1, 24395,  1, 23138,  0, 23948,  1, 22997,
568      2, 22604, -1, 25942,  0, 26246,  1, 25321,
569      0, 26423,  0, 24061,  0, 27247, 60,     0,
570     -1, 25572,  1, 23918,  1, 25930,  2, 26408,
571     -1, 19049,  1, 27357, -1, 24538, 60,     0,
572     -1, 25093,  0, 28549,  1,     0,  0, 22793,
573     -1, 25659,  0, 29377,  0, 30276,  0, 26198,
574      1, 22521, -1, 28919,  0, 27384,  1, 30162,
575     -1,     0,  0, 24237, -1, 30062,  0, 21763,
576      1, 30917, 60,     0,  0, 31284,  0, 29433,
577      1, 26821,  1, 28655,  0, 31327,  2, 30799,
578      1, 31389,  0, 32322,  1, 31760, -2, 31830,
579      0, 26936, -1, 31180,  1, 30875,  0, 27873,
580     -1, 30429,  1, 31050,  0,     0,  0, 31912,
581      1, 31611,  0, 31565,  0, 25557,  0, 31357,
582     60,     0,  1, 29536,  1, 28985, -1, 26984,
583     -1, 31587,  2, 30836, -2, 31133,  0, 30243,
584     -1, 30742, -1, 32090, 60,     0,  2, 30902,
585     60,     0,  0, 30027,  0, 29042, 60,     0,
586      0, 31756,  0, 24553,  0, 25636, -2, 30501,
587     60,     0, -1, 29617,  0, 30649, 60,     0,
588      0, 29274,  2, 30415,  0, 27480,  0, 31213,
589     -1, 28147,  0, 30600,  1, 31652,  2, 29068,
590     60,     0,  1, 28571,  1, 28730,  1, 31422,
591      0, 28257,  0, 24797, 60,     0,  0,     0,
592     60,     0,  0, 22105,  0, 27852, 60,     0,
593     60,     0, -1, 24214,  0, 24642,  0, 23305,
594     60,     0, 60,     0,  1, 22883,  0, 21601,
595     60,     0,  2, 25650, 60,     0, -2, 31253,
596     -2, 25144,  0, 17998
597 };
598
599 /**
600  * Number of non-zero pulses in the MP-MLQ excitation
601  */
602 static const int8_t pulses[4] = {6, 5, 6, 5};
603
604 /**
605  * Size of the MP-MLQ fixed excitation codebooks
606  */
607 static const int32_t max_pos[4] = {593775, 142506, 593775, 142506};
608
609 static const int16_t fixed_cb_gain[GAIN_LEVELS] = {
610       1,    2,    3,    4,    6,    9,   13,   18,
611      26,   38,   55,   80,  115,  166,  240,  348,
612     502,  726, 1050, 1517, 2193, 3170, 4582, 6623,
613 };
614
615 static const int16_t adaptive_cb_gain85[85 * 20] = {
616         0,      0,      0,      0,      0,      0,      0,      0,
617         0,      0,      0,      0,      0,      0,      0,      0,
618         0,      0,      0,      0,    800,   1496,    167,   -256,
619      -338,    -39,   -136,     -1,     -4,     -6,    -73,     -8,
620       -15,     12,     23,      2,     16,     30,      3,     -5,
621      -462,   -686,    493,   2575,    311,    -13,    -28,    -14,
622      -404,     -5,    -19,     13,     20,     72,    107,    -77,
623         8,     13,     -9,    -48,   1483,    144,    784,    928,
624      1243,   -134,     -1,    -37,    -52,    -94,    -13,    -71,
625        -6,    -84,     -8,    -44,   -112,    -10,    -59,    -70,
626       -77,    275,   3522,   1056,  -1254,      0,     -4,   -757,
627       -68,    -95,      1,     16,    -59,      4,    -17,   -227,
628        -5,     21,    269,     80,   -125,    -40,   -264,    381,
629      5027,      0,      0,     -4,     -8,  -1542,      0,     -2,
630         0,      2,      0,      6,     38,     12,     81,   -117,
631       138,    332,   2215,   2574,   1339,     -1,     -6,   -299,
632      -404,   -109,     -2,    -18,    -44,    -21,    -52,   -348,
633       -11,    -27,   -181,   -210,   3685,   2883,   -887,    866,
634     -1639,   -828,   -507,    -48,    -45,   -164,   -648,    199,
635       156,   -194,   -152,     46,    368,    288,    -88,     86,
636      1396,   2146,   2235,    345,    942,   -118,   -281,   -305,
637        -7,    -54,   -182,   -190,   -292,    -29,    -45,    -47,
638       -80,   -123,   -128,    -19,     13,   4475,   3549,   -804,
639      -655,      0,  -1222,   -768,    -39,    -26,     -3,     -2,
640      -969,      0,    219,    174,      0,    179,    141,    -32,
641      -724,    254,    242,   6049,   2462,    -32,     -3,     -3,
642     -2233,   -370,     11,     10,     -3,    267,    -94,    -89,
643       108,    -38,    -36,   -909,    626,  -1713,   6121,   4561,
644     -1061,    -23,   -179,  -2287,  -1270,    -68,     65,   -233,
645       640,   -174,    477,  -1704,     40,   -111,    396,    295,
646      -350,   1391,   7985,    511,   -405,     -7,   -118,  -3892,
647       -15,    -10,     29,    170,   -678,     10,    -43,   -249,
648        -8,     34,    197,     12,   3144,   -529,    608,   2530,
649      3878,   -603,    -17,    -22,   -390,   -918,    101,   -116,
650        19,   -485,     81,    -93,   -744,    125,   -144,   -599,
651      2589,   -689,   3045,   5603,   -404,   -409,    -29,   -566,
652     -1916,    -10,    108,   -481,    128,   -885,    235,  -1041,
653        63,    -17,     75,    138,   3107,    513,   1374,  -3594,
654     -4922,   -589,    -16,   -115,   -788,  -1478,    -97,   -260,
655       -43,    681,    112,    301,    933,    154,    413,  -1079,
656      2468,   6010,   1107,   -390,   1961,   -372,  -2204,    -74,
657        -9,   -234,   -905,   -166,   -406,     58,    143,     26,
658      -295,   -719,   -132,     46,   4773,   2766,   2368,   4862,
659     -4044,  -1390,   -467,   -342,  -1443,   -998,   -806,   -690,
660      -399,  -1416,   -821,   -702,   1178,    682,    584,   1200,
661      1665,  -1879,   1443,   1701,   8562,   -169,   -215,   -127,
662      -176,  -4475,    190,   -146,    165,   -172,    195,   -149,
663      -870,    982,   -754,   -889,   2716,   9011,  -1007,    755,
664     -1785,   -450,  -4956,    -61,    -34,   -194,  -1493,    167,
665       554,   -125,   -415,     46,    296,    982,   -109,     82,
666     -2727,   7548,   1285,    938,   3420,   -453,  -3478,   -100,
667       -53,   -714,   1256,    213,   -592,    156,   -432,    -73,
668       569,  -1576,   -268,   -196,   3677,    882,   4050,   1202,
669      2323,   -825,    -47,  -1001,    -88,   -329,   -198,   -909,
670      -218,   -269,    -64,   -297,   -521,   -125,   -574,   -170,
671      2046,   -753,    122,  10102,    603,   -255,    -34,      0,
672     -6229,    -22,     94,    -15,      5,  -1261,    464,    -75,
673       -75,     27,     -4,   -372,    449,  -1815,  10690,   3870,
674      -527,    -12,   -201,  -6976,   -914,    -16,     49,   -293,
675      1184,   -106,    428,  -2525,     14,    -58,    344,    124,
676      -941,   2352,   5049,   3650,   2637,    -54,   -337,  -1556,
677      -813,   -424,    135,    290,   -725,    209,   -524,  -1125,
678       151,   -378,   -812,   -587,  -1879,    796,   3117,   9569,
679      -404,   -215,    -38,   -593,  -5589,     -9,     91,    357,
680      -151,   1097,   -464,  -1821,    -46,     19,     76,    236,
681     -1715,   2043,  -2096,   9946,   4001,   -179,   -254,   -268,
682     -6038,   -977,    213,   -219,    261,   1041,  -1240,   1272,
683       418,   -498,    511,  -2429,  -5772,   -618,  -3921,    284,
684     -3155,  -2033,    -23,   -938,     -4,   -607,   -218,  -1381,
685      -148,    100,     10,     68,  -1111,   -119,   -755,     54,
686       382,   4748,   8003,  -2064,   2198,     -8,  -1376,  -3909,
687      -260,   -294,   -110,   -186,  -2319,     48,    598,   1008,
688       -51,   -637,  -1073,    277,   -867,   3015,  11926,  -1675,
689       947,    -45,   -555,  -8681,   -171,    -54,    159,    631,
690     -2195,    -88,    308,   1219,     50,   -174,   -690,     96,
691     -4933,   -432,   6757,   3771,   1352,  -1485,    -11,  -2786,
692      -867,   -111,   -130,   2034,    178,   1135,     99,  -1555,
693       407,     35,   -557,   -311,    152,   9726,   4231,  -1928,
694      1490,     -1,  -5774,  -1092,   -226,   -135,    -90,    -39,
695     -2511,     17,   1144,    498,    -13,   -884,   -384,    175,
696      2512,    193,   9033,   5361,  -3148,   -385,     -2,  -4980,
697     -1754,   -605,    -29,  -1385,   -106,   -822,    -63,  -2956,
698       482,     37,   1735,   1030,   8464,   2844,     12,    549,
699      2132,  -4373,   -493,      0,    -18,   -277,  -1469,     -6,
700        -2,   -284,    -95,      0,  -1101,   -370,     -1,    -71,
701      2141,  -2602,   7166,   9046,  -1350,   -279,   -413,  -3134,
702     -4994,   -111,    340,   -936,   1138,  -1182,   1436,  -3957,
703       176,   -214,    590,    745,   -244,    278,  13307,   1227,
704      -161,     -3,     -4, -10808,    -91,     -1,      4,    198,
705      -226,     18,    -20,   -997,     -2,      2,    131,     12,
706     -1947,   8217,   6269,    917,  -2559,   -231,  -4121,  -2399,
707       -51,   -399,    976,    745,  -3144,    108,   -460,   -350,
708      -304,   1283,    979,    143,  -1810,   2061,  -2781,   6056,
709     10058,   -200,   -259,   -472,  -2238,  -6174,    227,   -307,
710       349,    669,   -761,   1028,   1111,  -1265,   1707,  -3717,
711      7827,   9161,  -3409,   2473,  -1510,  -3739,  -5122,   -709,
712      -373,   -139,  -4376,   1628,   1906,  -1181,  -1382,    514,
713       721,    844,   -314,    228,  -1430,   8313,   9541,  -2955,
714      1626,   -124,  -4218,  -5556,   -533,   -161,    725,    832,
715     -4841,   -257,   1499,   1721,    142,   -825,   -947,    293,
716      2819,  -4247,   5391,   8673,   2756,   -485,  -1101,  -1774,
717     -4591,   -463,    730,   -927,   1397,  -1492,   2248,  -2854,
718      -474,    714,   -907,  -1459,    141,  14552,    690,    257,
719      -112,     -1, -12926,    -29,     -4,      0,   -125,     -5,
720      -613,     -2,   -228,    -10,      0,     99,      4,      1,
721     11938,  -1859,   1806,   -962,   -884,  -8699,   -211,   -199,
722       -56,    -47,   1355,  -1316,    205,    701,   -109,    106,
723       644,   -100,     97,    -51,   3728,   1982,   2264,   4584,
724      3131,   -848,   -239,   -312,  -1282,   -598,   -451,   -515,
725      -273,  -1043,   -554,   -633,   -712,   -378,   -432,   -876,
726     -1181,    766,    720,  14303,   -216,    -85,    -35,    -31,
727    -12486,     -2,     55,     51,    -33,   1031,   -668,   -628,
728       -15,     10,      9,    189,  -4385,   4826,  10112,   1569,
729      3388,  -1173,  -1421,  -6242,   -150,   -700,   1291,   2706,
730     -2979,    420,   -462,   -969,    906,   -998,  -2091,   -324,
731      -448,   1932,  15591,  -1842,    657,    -12,   -227, -14837,
732      -207,    -26,     52,    427,  -1838,    -50,    217,   1753,
733        18,    -77,   -626,     74,  -4141,   1844,   3962,   5517,
734      6220,  -1046,   -207,   -958,  -1858,  -2361,    466,   1001,
735      -446,   1394,   -621,  -1334,   1572,   -700,  -1504,  -2094,
736       729,  -2299,  14755,   3657,   -952,    -32,   -322, -13288,
737      -816,    -55,    102,   -656,   2071,   -162,    513,  -3294,
738        42,   -133,    857,    212,  -1385,   5801,  13339,  -3137,
739      1344,   -117,  -2054, -10861,   -600,   -110,    490,   1127,
740     -4723,   -265,   1111,   2554,    113,   -476,  -1094,    257,
741      4710,   9661,   1073,  -2467,   3274,  -1354,  -5697,    -70,
742      -371,   -654,  -2777,   -308,   -633,    709,   1455,    161,
743      -941,  -1930,   -214,    493,   1843,  -3624,  12422,   6898,
744     -1559,   -207,   -802,  -9419,  -2904,   -148,    407,  -1397,
745      2748,   -775,   1526,  -5230,    175,   -344,   1182,    656,
746      1433,   2394,   2507,   1380,   8780,   -125,   -349,   -383,
747      -116,  -4705,   -209,   -219,   -366,   -120,   -201,   -211,
748      -768,  -1283,  -1343,   -740,  -1712,  12915,   5883,  -2197,
749       991,   -179, -10181,  -2112,   -294,    -60,   1350,    615,
750     -4638,   -229,   1732,    789,    103,   -781,   -356,    133,
751     15072,   2158,  -1245,    910,   -496, -13865,   -284,    -94,
752       -50,    -15,  -1986,   1145,    164,   -837,   -119,     69,
753       456,     65,    -37,     27,   4655,   7319,   4916,    586,
754     -3381,  -1322,  -3270,  -1475,    -20,   -697,  -2079,  -1396,
755     -2196,   -166,   -261,   -175,    960,   1510,   1014,    120,
756      1191,  -2140,   5120,  13498,  -1418,    -86,   -279,  -1600,
757    -11121,   -122,    155,   -372,    669,   -981,   1763,  -4218,
758       103,   -185,    443,   1168,  -1530,   -817,   8191,   9632,
759     -1452,   -143,    -40,  -4095,  -5663,   -128,    -76,    765,
760       408,    900,    480,  -4815,   -135,    -72,    726,    854,
761     -3236,    607,   1696,  -2106,  11485,   -639,    -22,   -175,
762      -270,  -8051,    119,    335,    -62,   -416,     78,    218,
763      2268,   -425,  -1189,   1476,   3203,  -1903,   -837,   9679,
764      7057,   -626,   -221,    -42,  -5718,  -3039,    372,    163,
765       -97,  -1892,   1124,    494,  -1380,    819,    360,  -4169,
766       213,   -655,  17015,    620,   -384,     -2,    -26, -17671,
767       -23,     -9,      8,   -221,    681,     -8,     24,   -644,
768         5,    -15,    399,     14,   5088,     35,  -3339,   3726,
769      8488,  -1580,      0,   -680,   -847,  -4397,    -10,   1037,
770         7,  -1157,     -8,    759,  -2636,    -18,   1730,  -1930,
771      -988,   1454,  -2688,  15039,   2682,    -59,   -129,   -441,
772    -13805,   -439,     87,   -162,    238,    907,  -1335,   2467,
773       161,   -238,    440,  -2462,  -4865,  -2842,    -53,   5495,
774      6523,  -1445,   -493,      0,  -1843,  -2597,   -844,    -16,
775        -9,   1632,    953,     18,   1937,   1131,     21,  -2188,
776      3076,  15069,  -2914,   1810,   -971,   -577, -13860,   -518,
777      -200,    -57,  -2829,    547,   2680,   -339,  -1665,    322,
778       182,    893,   -172,    107,   1311,   5355,  11054,   2299,
779     -3654,   -105,  -1750,  -7458,   -322,   -814,   -428,   -885,
780     -3613,   -184,   -751,  -1551,    292,   1194,   2465,    512,
781      4035,   5619,   4618,   1815,   1912,   -994,  -1927,  -1301,
782      -201,   -223,  -1384,  -1137,  -1583,   -447,   -622,   -511,
783      -471,   -656,   -539,   -211,  -2131,   2754,  -4501,  12879,
784      7432,   -277,   -463,  -1236, -10124,  -3371,    358,   -585,
785       756,   1675,  -2165,   3538,    967,  -1249,   2042,  -5842,
786      5618,   -515,   3219,  -4149,   4857,  -1926,    -16,   -632,
787     -1050,  -1440,    176,  -1104,    101,   1422,   -130,    815,
788     -1666,    152,   -954,   1230,   1838,  -1709,   1139,  16867,
789       716,   -206,   -178,    -79, -17366,    -31,    191,   -127,
790       118,  -1892,   1759,  -1173,    -80,     74,    -49,   -737,
791      1978,  -3845,  10050,  11854,  -2492,   -238,   -902,  -6164,
792     -8576,   -379,    464,  -1213,   2358,  -1431,   2782,  -7271,
793       301,   -585,   1529,   1803,  -2600,  11246,  11289,  -3647,
794      1463,   -412,  -7720,  -7778,   -812,   -130,   1784,   1791,
795     -7749,   -578,   2504,   2513,    232,  -1004,  -1008,    325,
796      3442,    907,   2725,   8970,   3638,   -723,    -50,   -453,
797     -4911,   -808,   -190,   -572,   -150,  -1884,   -496,  -1492,
798      -764,   -201,   -605,  -1992,   -126,  17498,   3481,  -2003,
799      1090,      0, -18689,   -739,   -244,    -72,    135,     26,
800     -3717,    -15,   2139,    425,      8,  -1165,   -231,    133,
801     -1814,   1048,  -2164,   4070,  16272,   -200,    -67,   -285,
802     -1011, -16160,    116,   -239,    138,    450,   -260,    537,
803      1801,  -1041,   2149,  -4042,   9354,  12580,  -1883,    962,
804      -617,  -5341,  -9660,   -216,    -56,    -23,  -7183,   1075,
805      1446,   -549,   -738,    110,    352,    474,    -71,     36,
806      1708,   4199,   7387,   6335,   1003,   -178,  -1076,  -3330,
807     -2449,    -61,   -437,   -770,  -1893,   -660,  -1623,  -2856,
808      -104,   -257,   -452,   -388,  -2624,   5623,  17310,  -2353,
809       592,   -420,  -1930, -18288,   -338,    -21,    900,   2772,
810     -5941,   -376,    807,   2486,     94,   -203,   -625,     85,
811      1211,   -850,   1193,  -1926,  15992,    -89,    -44,    -86,
812      -226, -15609,     62,    -88,     61,    142,   -100,    140,
813     -1182,    830,  -1165,   1880,   3983,  -2054,  11506,    -19,
814      3622,   -968,   -257,  -8080,      0,   -801,    499,  -2797,
815      1442,      4,     -2,     13,   -880,    454,  -2544,      4,
816      -786,  -1354,  16092,   7246,  -1665,    -37,   -111, -15805,
817     -3205,   -169,    -65,    772,   1330,    348,    599,  -7117,
818       -80,   -137,   1636,    736,  -4316,   -511,   6674,  11665,
819      4633,  -1137,    -15,  -2719,  -8305,  -1310,   -134,   1758,
820       208,   3073,    364,  -4752,   1220,    144,  -1887,  -3299,
821      7912,   4557,   1937,   1885,   7037,  -3821,  -1267,   -229,
822      -216,  -3022,  -2200,   -935,   -538,   -910,   -524,   -222,
823     -3398,  -1957,   -832,   -809,   3434,   2967,   5867,   8196,
824      8766,   -720,   -537,  -2101,  -4100,  -4690,   -622,  -1230,
825     -1062,  -1718,  -1484,  -2935,  -1837,  -1588,  -3139,  -4385,
826      5881,   9176,   8119,   3934,   3355,  -2111,  -5139,  -4023,
827      -944,   -687,  -3294,  -2914,  -4547,  -1412,  -2203,  -1949,
828     -1204,  -1879,  -1662,   -805
829 };
830
831 static const int16_t adaptive_cb_gain170[170 * 20] = {
832         0,      0,      0,      0,      0,      0,      0,      0,
833         0,      0,      0,      0,      0,      0,      0,      0,
834         0,      0,      0,      0,    776,    212,    715,    670,
835       809,    -36,     -2,    -31,    -27,    -39,    -10,    -33,
836        -9,    -31,     -8,    -29,    -38,    -10,    -35,    -33,
837      1296,   1316,   -168,   -320,   -815,   -102,   -105,     -1,
838        -6,    -40,   -104,     13,     13,     25,     25,     -3,
839        64,     65,     -8,    -15,   -589,    680,   2478,    308,
840      -596,    -21,    -28,   -375,     -5,    -21,     24,     89,
841      -102,     11,    -12,    -46,    -21,     24,     90,     11,
842      -735,   -487,     -5,   2948,    468,    -33,    -14,      0,
843      -530,    -13,    -21,      0,      0,    132,     87,      0,
844        21,     13,      0,    -84,   1042,   1730,   1068,    333,
845       626,    -66,   -182,    -69,     -6,    -23,   -110,    -67,
846      -112,    -21,    -35,    -21,    -39,    -66,    -40,    -12,
847       486,   -769,   4074,   2825,  -1107,    -14,    -36,  -1013,
848      -487,    -74,     22,   -120,    191,    -83,    132,   -702,
849        32,    -52,    275,    191,   1521,   -767,   -124,   4320,
850      1026,   -141,    -35,      0,  -1139,    -64,     71,     11,
851        -5,   -401,    202,     32,    -95,     48,      7,   -270,
852      2425,   1267,   3439,    -91,  -1166,   -359,    -98,   -722,
853         0,    -83,   -187,   -509,   -266,     13,      7,     19,
854       172,     90,    244,     -6,  -1251,    975,    173,   4039,
855      2005,    -95,    -58,     -1,   -996,   -245,     74,     13,
856       -10,    308,   -240,    -42,    153,   -119,    -21,   -494,
857      1820,    632,   1322,   2062,   1031,   -202,    -24,   -106,
858      -259,    -64,    -70,   -146,    -51,   -229,    -79,   -166,
859      -114,    -39,    -83,   -129,   -447,   4904,    244,   -315,
860     -2038,    -12,  -1467,     -3,     -6,   -253,    134,      6,
861       -73,     -8,     94,      4,    -55,    610,     30,    -39,
862      -208,  -1102,    463,   -448,   5653,     -2,    -74,    -13,
863       -12,  -1950,    -14,      5,     31,     -5,    -30,     12,
864        71,    380,   -159,    154,   4739,   2600,  -1864,    856,
865     -1554,  -1371,   -412,   -212,    -44,   -147,   -752,    539,
866       295,   -247,   -135,     97,    449,    246,   -176,     81,
867      1894,   3533,     35,    -26,   2145,   -219,   -762,      0,
868         0,   -280,   -408,     -4,     -7,      3,      5,      0,
869      -248,   -462,     -4,      3,  -2699,   1841,   4072,   2443,
870      1582,   -444,   -207,  -1012,   -364,   -152,    303,    670,
871      -457,    402,   -274,   -607,    260,   -177,   -393,   -236,
872      -844,   3358,   6106,  -1059,   -537,    -43,   -688,  -2275,
873       -68,    -17,    173,    314,  -1251,    -54,    217,    395,
874       -27,    110,    200,    -34,   1251,   1016,   3020,   2210,
875      1445,    -95,    -63,   -556,   -298,   -127,    -77,   -230,
876      -187,   -168,   -137,   -407,   -110,    -89,   -266,   -194,
877      2099,   2277,   4038,   3533,  -2870,   -269,   -316,   -995,
878      -762,   -503,   -291,   -517,   -561,   -452,   -491,   -871,
879       367,    399,    707,    619,    400,  -1114,   8516,   2422,
880     -1117,     -9,    -75,  -4426,   -358,    -76,     27,   -208,
881       579,    -59,    164,  -1259,     27,    -75,    580,    165,
882     -4398,  -2011,   3912,  -2407,   2258,  -1180,   -247,   -934,
883      -353,   -311,   -540,   1050,    480,   -646,   -295,    575,
884       606,    277,   -539,    331,   1767,  -1447,   4240,   6160,
885      -757,   -190,   -127,  -1097,  -2316,    -35,    156,   -457,
886       374,   -664,    544,  -1594,     81,    -66,    195,    284,
887      1594,  -1463,   1035,   6938,   1920,   -155,   -130,    -65,
888     -2938,   -225,    142,   -100,     92,   -675,    619,   -438,
889      -186,    171,   -121,   -813,   -562,   4716,   4085,   -591,
890      2421,    -19,  -1357,  -1018,    -21,   -357,    162,    140,
891     -1175,    -20,    170,    147,     83,   -696,   -603,     87,
892      1552,   8778,   -935,    354,  -1424,   -147,  -4703,    -53,
893        -7,   -123,   -831,     88,    501,    -33,   -189,     20,
894       134,    763,    -81,     30,   4831,  -4431,     41,  -1479,
895     -2976,  -1424,  -1198,      0,   -133,   -540,   1306,    -12,
896        11,    436,   -400,      3,    877,   -804,      7,   -268,
897      2090,   1192,   1006,   1645,   4853,   -266,    -86,    -61,
898      -165,  -1437,   -152,   -128,    -73,   -210,   -119,   -101,
899      -619,   -353,   -298,   -487,   2386,   5712,   1426,    -94,
900      1350,   -347,  -1991,   -124,      0,   -111,   -832,   -207,
901      -497,     13,     32,      8,   -196,   -470,   -117,      7,
902     -1349,   1091,   1659,   8891,    313,   -111,    -72,   -168,
903     -4825,     -5,     89,    136,   -110,    732,   -592,   -900,
904        25,    -20,    -31,   -170,   9980,    916,   -381,   -808,
905        88,  -6080,    -51,     -8,    -39,      0,   -558,    232,
906        21,    492,     45,    -18,    -53,     -4,      2,      4,
907      2338,  -1031,   -248,   3928,   6484,   -333,    -64,     -3,
908      -942,  -2566,    147,     35,    -15,   -560,    247,     59,
909      -925,    408,     98,  -1555,   6166,  -1240,   -337,   3672,
910     -1277,  -2320,    -93,     -6,   -823,    -99,    466,    126,
911       -25,  -1382,    278,     75,    480,    -96,    -26,    286,
912      4377,   -132,  -2588,   1701,   4865,  -1169,     -1,   -409,
913      -176,  -1444,     35,    691,    -20,   -454,     13,    268,
914     -1299,     39,    768,   -505,   2594,   3295,   3944,   1481,
915       682,   -410,   -662,   -949,   -133,    -28,   -521,   -624,
916      -793,   -234,   -297,   -356,   -108,   -137,   -164,    -61,
917      4151,    624,    815,   4485,   2229,  -1052,    -23,    -40,
918     -1228,   -303,   -158,   -206,    -31,  -1136,   -170,   -223,
919      -565,    -84,   -111,   -610,  -3575,   -361,   4924,   2791,
920      4698,   -780,     -7,  -1480,   -475,  -1347,    -78,   1074,
921       108,    609,     61,   -839,   1025,    103,  -1412,   -800,
922     -2518,   3791,   8623,    315,   2465,   -387,   -877,  -4538,
923        -6,   -370,    582,   1325,  -1995,     48,    -73,   -166,
924       378,   -570,  -1297,    -47,   -691,   2989,   9957,   -421,
925     -1142,    -29,   -545,  -6051,    -10,    -79,    126,    420,
926     -1817,    -17,     76,    256,    -48,    208,    694,    -29,
927     -1918,    104,  -3190,  -3410,  -4440,   -224,      0,   -621,
928      -709,  -1203,     12,   -373,     20,   -399,     21,   -664,
929      -519,     28,   -864,   -924,  -3359,  -1668,   1854,   6939,
930      1430,   -688,   -169,   -209,  -2939,   -124,   -341,    380,
931       188,   1422,    706,   -785,    293,    145,   -161,   -606,
932        42,   9706,   3164,   -952,    907,      0,  -5750,   -611,
933       -55,    -50,    -25,     -8,  -1874,      2,    564,    183,
934        -2,   -537,   -175,     52,   1607,    785,   2862,   4327,
935      3307,   -157,    -37,   -500,  -1143,   -667,    -77,   -280,
936      -137,   -424,   -207,   -756,   -324,   -158,   -577,   -873,
937      6801,   3416,   2227,   1682,  -3217,  -2823,   -712,   -302,
938      -172,   -631,  -1418,   -924,   -464,   -698,   -350,   -228,
939      1335,    670,    437,    330,   3459,   3898,    364,   7841,
940     -2640,   -730,   -927,     -8,  -3753,   -425,   -823,    -76,
941       -86,  -1655,  -1865,   -174,    557,    628,     58,   1263,
942     -5902,  -3458,  -2465,  -1886,   4334,  -2126,   -730,   -371,
943      -217,  -1146,  -1245,   -888,   -520,   -679,   -398,   -283,
944      1561,    915,    652,    499,  -3710,   1133,   7849,   3443,
945      -215,   -840,    -78,  -3760,   -723,     -2,    256,   1777,
946      -543,    779,   -238,  -1649,    -48,     14,    103,     45,
947      4132,   2828,      2,  -4212,  -4116,  -1042,   -488,      0,
948     -1083,  -1034,   -713,      0,      0,   1062,    727,      0,
949      1038,    710,      0,  -1058,   5875,   8496,  -1796,   1376,
950     -1786,  -2107,  -4406,   -197,   -115,   -194,  -3047,    644,
951       931,   -493,   -713,    150,    640,    926,   -195,    150,
952      3143,   3483,   3546,   -793,   4489,   -603,   -740,   -767,
953       -38,  -1230,   -668,   -680,   -754,    152,    168,    171,
954      -861,   -954,   -971,    217,   2845,   7965,   3695,  -5432,
955      3978,   -494,  -3873,   -833,  -1801,   -966,  -1383,   -641,
956     -1796,    943,   2641,   1225,   -691,  -1934,   -897,   1319,
957      1538,    150,   7139,   2049,   3097,   -144,     -1,  -3110,
958      -256,   -585,    -14,   -670,    -65,   -192,    -18,   -892,
959      -290,    -28,  -1349,   -387,    618,   7520,   4729,   -238,
960     -3373,    -23,  -3452,  -1365,     -3,   -694,   -283,   -178,
961     -2170,      8,    109,     68,    127,   1548,    973,    -49,
962      2965,  -3013,   7912,   7076,  -1997,   -536,   -554,  -3821,
963     -3056,   -243,    545,  -1431,   1455,  -1280,   1301,  -3417,
964       361,   -367,    964,    862,   2443,   -929,  -1113,   9677,
965      4138,   -364,    -52,    -75,  -5716,  -1045,    138,    166,
966       -63,  -1443,    549,    657,   -617,    234,    281,  -2444,
967      1966,   3309,  10085,  -3399,   2105,   -236,   -668,  -6207,
968      -705,   -270,   -397,  -1210,  -2037,    408,    686,   2092,
969      -252,   -425,  -1295,    436,   -112,  -1368,   8868,   4822,
970      2048,      0,   -114,  -4800,  -1419,   -256,     -9,     61,
971       740,     33,    402,  -2610,     14,    171,  -1108,   -602,
972     -2597,    438,  -1839,   6229,   7266,   -411,    -11,   -206,
973     -2368,  -3223,     69,   -291,     49,    987,   -166,    699,
974      1152,   -194,    816,  -2763,   3454,    553,   9127,   4946,
975     -5596,   -728,    -18,  -5084,  -1493,  -1911,   -116,  -1924,
976      -308,  -1042,   -166,  -2755,   1179,    188,   3117,   1689,
977      -532,   -663,  12262,   2495,  -1004,    -17,    -26,  -9177,
978      -380,    -61,    -21,    398,    496,     81,    101,  -1867,
979       -32,    -40,    751,    152,  -2100,   1317,  -1509,  11425,
980      2997,   -269,   -105,   -139,  -7967,   -548,    168,   -193,
981       121,   1464,   -918,   1052,    384,   -240,    276,  -2090,
982      1193,  -2697,  11259,   5373,   -763,    -86,   -444,  -7737,
983     -1762,    -35,    196,   -819,   1853,   -391,    884,  -3692,
984        55,   -125,    525,    250,   2405,   -471,  11079,    203,
985       782,   -353,    -13,  -7491,     -2,    -37,     69,  -1626,
986       318,    -29,      5,   -137,   -114,     22,   -529,     -9,
987     -1871,   5685,  11290,  -2662,   1353,   -213,  -1972,  -7780,
988      -432,   -111,    649,   1289,  -3917,   -304,    923,   1834,
989       154,   -469,   -932,    220,  -3768,   5927,  -3093,   5041,
990      5212,   -866,  -2144,   -584,  -1551,  -1658,   1363,   -711,
991      1119,   1159,  -1824,    951,   1198,  -1885,    984,  -1603,
992     -2546,   9502,   5969,  -2440,   1928,   -395,  -5511,  -2175,
993      -363,   -226,   1477,    927,  -3462,   -379,   1415,    889,
994       299,  -1118,   -702,    287,  -4963,   3568,   4592,   5508,
995      3451,  -1503,   -777,  -1287,  -1851,   -727,   1080,   1391,
996     -1000,   1668,  -1199,  -1543,   1045,   -751,   -967,  -1160,
997      1745,  -2586,   3983,  10899,  -1551,   -186,   -408,   -968,
998     -7250,   -146,    275,   -424,    628,  -1161,   1720,  -2649,
999       165,   -244,    377,   1032,    867,   -456,   -727,   3369,
1000     11822,    -45,    -12,    -32,   -692,  -8531,     24,     38,
1001       -20,   -178,     93,    149,   -625,    329,    525,  -2431,
1002      7535,   2422,   1926,   1405,   1599,  -3466,   -358,   -226,
1003      -120,   -156,  -1114,   -886,   -284,   -646,   -207,   -165,
1004      -735,   -236,   -188,   -137,   1041,   -735,   -142,  13209,
1005      1515,    -66,    -33,     -1, -10649,   -140,     46,      9,
1006        -6,   -839,    593,    114,    -96,     68,     13,  -1222,
1007      7950,   6745,  -1444,  -1008,   2721,  -3857,  -2777,   -127,
1008       -62,   -452,  -3273,    700,    594,    489,    415,    -88,
1009     -1320,  -1120,    239,    167,  -4754,  -1379,   4522,   -578,
1010     -5733,  -1379,   -116,  -1248,    -20,  -2006,   -400,   1312,
1011       380,   -167,    -48,    159,  -1663,   -482,   1582,   -202,
1012      3220,   5978,   5923,   2430,  -2689,   -633,  -2181,  -2141,
1013      -360,   -441,  -1175,  -1164,  -2161,   -477,   -886,   -878,
1014       528,    981,    972,    398,    377,   1312,  13978,  -1470,
1015       677,     -8,   -105, -11925,   -132,    -28,    -30,   -321,
1016     -1119,     33,    117,   1254,    -15,    -54,   -577,     60,
1017     -3435,   6770,    314,   -885,   5686,   -720,  -2797,     -6,
1018       -47,  -1973,   1419,     65,   -129,   -185,    366,     16,
1019      1192,  -2349,   -109,    307,   3171,   8774,  -2260,   2679,
1020      3069,   -613,  -4699,   -312,   -438,   -575,  -1698,    437,
1021      1210,   -518,  -1435,    369,   -594,  -1643,    423,   -501,
1022      5557,   1509,   5407,   -125,  -7386,  -1884,   -139,  -1784,
1023         0,  -3330,   -511,  -1834,   -498,     42,     11,     41,
1024      2505,    680,   2438,    -56,  -2838,   2595,  13228,    271,
1025      1793,   -491,   -411, -10680,     -4,   -196,    449,   2291,
1026     -2095,     47,    -42,   -219,    310,   -284,  -1447,    -29,
1027       664,   -278,  14966,    951,   -711,    -26,     -4, -13672,
1028       -55,    -30,     11,   -606,    253,    -38,     16,   -869,
1029        28,    -12,    650,     41,    808,   1770,   8658,   5863,
1030     -1486,    -39,   -191,  -4576,  -2098,   -134,    -87,   -427,
1031      -935,   -289,   -633,  -3098,     73,    160,    785,    531,
1032      3063,   1539,   2000,   -542,   9576,   -572,   -144,   -244,
1033       -17,  -5597,   -287,   -374,   -188,    101,     51,     66,
1034     -1790,   -900,  -1169,    317,    514,  14083,   -323,    896,
1035      -891,    -16, -12106,     -6,    -49,    -48,   -442,     10,
1036       277,    -28,   -770,     17,     27,    766,    -17,     48,
1037       892,    158,   5237,  11057,  -1603,    -48,     -1,  -1674,
1038     -7462,   -156,     -8,   -285,    -50,   -602,   -106,  -3534,
1039        87,     15,    512,   1082,  -1612,   2564,  -4296,  12526,
1040      5710,   -158,   -401,  -1126,  -9576,  -1990,    252,   -422,
1041       672,   1232,  -1960,   3284,    561,   -893,   1497,  -4365,
1042      4889,  -6878,    612,   6109,   4753,  -1459,  -2887,    -22,
1043     -2277,  -1379,   2052,   -182,    257,  -1823,   2564,   -228,
1044     -1418,   1995,   -177,  -1772,   3053,   -506,   2403,   9625,
1045      1322,   -569,    -15,   -352,  -5655,   -106,     94,   -448,
1046        74,  -1794,    297,  -1412,   -246,     40,   -194,   -777,
1047      -754,  12904,   4480,  -2113,   1471,    -34, -10163,  -1225,
1048      -272,   -132,    594,    206,  -3529,    -97,   1664,    577,
1049        67,  -1159,   -402,    189,   4255,   1476,   5055,   2393,
1050      2912,  -1105,   -132,  -1559,   -349,   -517,   -383,  -1313,
1051      -455,   -621,   -215,   -738,   -756,   -262,   -898,   -425,
1052     -1371,    535,   1417,  14604,   -997,   -114,    -17,   -122,
1053    -13017,    -60,     44,    118,    -46,   1222,   -477,  -1263,
1054       -83,     32,     86,    888,   5368,  -1744,   4083,  -1236,
1055      3753,  -1758,   -185,  -1017,    -93,   -860,    571,  -1338,
1056       434,    405,   -131,    308,  -1229,    399,   -935,    283,
1057      1588,  -3097,  14415,   3699,  -1171,   -154,   -585, -12683,
1058      -835,    -83,    300,  -1397,   2725,   -358,    699,  -3255,
1059       113,   -221,   1030,    264,    212,   7989,   9471,  -3344,
1060      2009,     -2,  -3895,  -5475,   -682,   -246,   -103,   -123,
1061     -4618,     43,   1630,   1933,    -26,   -979,  -1161,    410,
1062       856,   2294,   -627,   6930,   6929,    -44,   -321,    -24,
1063     -2931,  -2930,   -119,     32,     87,   -362,   -970,    265,
1064      -362,   -970,    265,  -2931,   2357,  -4187,   7162,   7683,
1065      3371,   -339,  -1070,  -3131,  -3603,   -693,    602,  -1030,
1066      1830,  -1105,   1963,  -3359,   -485,    861,  -1474,  -1581,
1067       350,   4585,  14053,  -3819,   1218,     -7,  -1283, -12054,
1068      -890,    -90,    -97,   -300,  -3933,     81,   1068,   3275,
1069       -26,   -341,  -1045,    284,  -3248,   3531,    475,   2137,
1070     11711,   -644,   -761,    -13,   -278,  -8372,    700,     94,
1071      -102,    423,   -460,    -62,   2322,  -2524,   -340,  -1528,
1072     -3017,   3852,   1725,   8440,   5257,   -555,   -905,   -181,
1073     -4348,  -1686,    709,    317,   -405,   1554,  -1984,   -889,
1074       968,  -1236,   -553,  -2708,   -909,   3196,  15512,  -2528,
1075      1066,    -50,   -623, -14686,   -390,    -69,    177,    861,
1076     -3026,   -140,    493,   2393,     59,   -208,  -1009,    164,
1077       959,  -3370,   9617,   9545,  -1761,    -56,   -693,  -5645,
1078     -5561,   -189,    197,   -563,   1978,   -558,   1963,  -5603,
1079       103,   -362,   1034,   1026,   7575,  11796,  -4845,   3252,
1080     -1703,  -3502,  -8493,  -1433,   -645,   -177,  -5454,   2240,
1081      3488,  -1503,  -2341,    961,    787,   1226,   -503,    338,
1082      6409,   1722,   1764,  -4191,   6015,  -2507,   -181,   -189,
1083     -1072,  -2208,   -673,   -690,   -185,   1639,    440,    451,
1084     -2353,   -632,   -647,   1538,  -2420,  12161,   5038,   1286,
1085     -2098,   -357,  -9027,  -1549,   -100,   -268,   1796,    744,
1086     -3740,    190,   -954,   -395,   -310,   1557,    645,    164,
1087     -2232,  -1341,   7246,   9470,  -1977,   -304,   -109,  -3204,
1088     -5474,   -238,   -182,    987,    593,   1290,    775,  -4188,
1089      -269,   -161,    874,   1143,   1030,   7034,   4231,   1551,
1090      3077,    -64,  -3019,  -1093,   -146,   -577,   -442,   -266,
1091     -1816,    -97,   -666,   -400,   -193,  -1321,   -794,   -291,
1092      5121,  11835,   -477,  -1749,   2298,  -1601,  -8549,    -13,
1093      -186,   -322,  -3699,    149,    344,    546,   1264,    -50,
1094      -718,  -1660,     66,    245,  -3328,   3827,   5921,   9976,
1095     -1045,   -676,   -894,  -2140,  -6075,    -66,    777,   1203,
1096     -1383,   2027,  -2330,  -3605,   -212,    244,    377,    636,
1097      3813,   5718,  -4666,  -3412,   5674,   -887,  -1995,  -1329,
1098      -710,  -1965,  -1331,   1086,   1628,    794,   1191,   -972,
1099     -1320,  -1980,   1616,   1181,   1348,  -3672,  13154,   6938,
1100     -1690,   -110,   -823, -10561,  -2938,   -174,    302,  -1082,
1101      2948,   -570,   1555,  -5570,    139,   -379,   1357,    716,
1102      2151,  -3586,   6949,  12131,  -1224,   -282,   -785,  -2947,
1103     -8982,    -91,    470,   -912,   1521,  -1592,   2655,  -5145,
1104       160,   -268,    519,    906,  -2889,   9647,  10276,  -2728,
1105       995,   -509,  -5680,  -6445,   -454,    -60,   1701,   1812,
1106     -6051,   -481,   1606,   1711,    175,   -586,   -624,    165,
1107      6177,   2184,    555,   1985,   6589,  -2329,   -291,    -18,
1108      -240,  -2650,   -823,   -209,    -74,   -748,   -264,    -67,
1109     -2484,   -878,   -223,   -798,   -492,    391,  17166,   -681,
1110       240,    -14,     -9, -17987,    -28,     -3,     11,    515,
1111      -410,    -20,     16,    713,      7,     -5,   -252,     10,
1112     12628,   5448,  -2630,   3011,  -2695,  -9733,  -1811,   -422,
1113      -553,   -443,  -4199,   2027,    874,  -2321,  -1001,    483,
1114      2077,    896,   -432,    495,  -3628,   -534,   3447,   7002,
1115      6751,   -803,    -17,   -725,  -2992,  -2782,   -118,    763,
1116       112,   1550,    228,  -1473,   1495,    220,  -1420,  -2885,
1117     -5239,   5901,   8107,   3650,   4846,  -1675,  -2125,  -4012,
1118      -813,  -1433,   1887,   2592,  -2920,   1167,  -1315,  -1806,
1119      1550,  -1745,  -2398,  -1080,   6157,   6678,   4099,  -1074,
1120      2348,  -2314,  -2722,  -1025,    -70,   -336,  -2509,  -1540,
1121     -1670,    403,    437,    268,   -882,   -957,   -587,    153,
1122      1079,  16099,    242,   -881,   1690,    -71, -15820,     -3,
1123       -47,   -174,  -1060,    -16,   -238,     58,    865,     13,
1124      -111,  -1661,    -25,     90,   -278,    227,  -1039,   1636,
1125     16945,     -4,     -3,    -65,   -163, -17526,      3,    -17,
1126        14,     27,    -22,    103,    287,   -234,   1074,  -1693,
1127     15778,  -1454,    574,   -603,   -107, -15195,   -129,    -20,
1128       -22,      0,   1400,   -553,     51,    581,    -53,     21,
1129       103,     -9,      3,     -3,   2406,   -836,  13224,   7993,
1130     -4266,   -353,    -42, -10673,  -3899,  -1111,    122,  -1942,
1131       674,  -1174,    407,  -6451,    626,   -217,   3443,   2081,
1132      3184,  14368,  -3336,   2255,  -1801,   -619, -12600,   -679,
1133      -310,   -198,  -2793,    648,   2926,   -438,  -1977,    459,
1134       350,   1580,   -366,    247,  -1698,  17076,   2504,   -539,
1135      -646,   -176, -17798,   -382,    -17,    -25,   1770,    259,
1136     -2610,    -55,    561,     82,    -67,    673,     98,    -21,
1137      2375,   -797,  -2696,  14483,   5383,   -344,    -38,   -443,
1138    -12803,  -1769,    115,    391,   -131,  -2100,    705,   2384,
1139      -780,    262,    886,  -4759,  -2691,   2554,  -4520,   9573,
1140     10655,   -442,   -398,  -1247,  -5594,  -6930,    419,   -742,
1141       704,   1572,  -1492,   2641,   1750,  -1661,   2939,  -6226,
1142     -4332,  -4399,  -1657,   4880,   7375,  -1145,  -1181,   -167,
1143     -1453,  -3319,  -1163,   -438,   -444,   1290,   1310,    493,
1144      1950,   1980,    745,  -2196,  -3498,   7405,   9955,   2693,
1145     -2971,   -746,  -3347,  -6049,   -442,   -538,   1581,   2125,
1146     -4499,    575,  -1217,  -1636,   -634,   1342,   1805,    488,
1147      6717,  -3792,   7739,   2798,   3489,  -2754,   -877,  -3655,
1148      -477,   -743,   1554,  -3173,   1791,  -1147,    647,  -1321,
1149     -1430,    807,  -1648,   -595,   5263,   9770,   3463,   1069,
1150     -3971,  -1690,  -5826,   -732,    -69,   -962,  -3138,  -1112,
1151     -2065,   -343,   -637,   -226,   1275,   2368,    839,    259,
1152      1243,  -2634,  16772,   1871,    332,    -94,   -423, -17169,
1153      -213,     -6,    199,  -1273,   2696,   -142,    300,  -1915,
1154       -25,     53,   -339,    -37,   2691,   2836,   3105,   5711,
1155      4817,   -442,   -491,   -588,  -1991,  -1416,   -465,   -510,
1156      -537,   -938,   -988,  -1082,   -791,   -834,   -913,  -1679,
1157      4366,   2944,   7210,   3627,   1161,  -1163,   -529,  -3172,
1158      -803,    -82,   -784,  -1921,  -1295,   -966,   -651,  -1596,
1159      -309,   -208,   -511,   -257,  13888,   3951,   -671,  -2305,
1160      3354, -11773,   -953,    -27,   -324,   -686,  -3349,    569,
1161       161,   1954,    556,    -94,  -2843,   -809,    137,    472,
1162      7053,   5847,   2929,   8378,  -4794,  -3036,  -2086,   -523,
1163     -4284,  -1403,  -2517,  -1261,  -1045,  -3607,  -2990,  -1498,
1164      2064,   1711,    857,   2451,  -2191,  12838,   9182,  -3915,
1165      1617,   -293, -10059,  -5146,   -935,   -159,   1717,   1228,
1166     -7195,   -523,   3068,   2194,    216,  -1267,   -906,    386,
1167     -4881,  13114,   5767,   -435,   4155,  -1454, -10498,  -2030,
1168       -11,  -1054,   3907,   1718,  -4616,   -129,    348,    153,
1169      1238,  -3326,  -1462,    110,   7843,  -1250,    210,   7106,
1170     -5203,  -3754,    -95,     -2,  -3082,  -1652,    598,   -100,
1171        16,  -3402,    542,    -91,   2491,   -397,     66,   2257,
1172     -2463,   8168,  14551,  -3908,   1828,   -370,  -4072, -12923,
1173      -932,   -204,   1228,   2188,  -7254,   -587,   1948,   3471,
1174       274,   -911,  -1623,    436,  -1579,    347,   -272,  -2735,
1175     16031,   -152,     -7,     -4,   -456, -15686,     33,    -26,
1176         5,   -263,     58,    -45,   1545,   -340,    266,   2676,
1177     -6327,   1328,   5093,  -5079,   7617,  -2443,   -107,  -1583,
1178     -1574,  -3541,    513,   1967,   -413,  -1961,    411,   1578,
1179      2941,   -617,  -2367,   2361,   3286,  -4509,  11306,  11025,
1180     -2623,   -659,  -1241,  -7802,  -7419,   -420,    904,  -2267,
1181      3112,  -2211,   3034,  -7608,    526,   -722,   1810,   1765,
1182      5567,  17853,  -3754,   1166,   -519,  -1892, -19455,   -860,
1183       -83,    -16,  -6067,   1275,   4090,   -396,  -1271,    267,
1184       176,    566,   -119,     37,  -2136,   -424,  15292,   5108,
1185     -1648,   -278,    -10, -14273,  -1593,   -165,    -55,   1993,
1186       396,    666,    132,  -4768,   -214,    -42,   1538,    514,
1187      2267,  -3297,   2549,  16563,   -791,   -313,   -663,   -396,
1188    -16745,    -38,    456,   -352,    513,  -2291,   3333,  -2576,
1189       109,   -159,    123,    799,   3655,   1899,  -3364,   6279,
1190     12510,   -815,   -220,   -690,  -2406,  -9552,   -423,    750,
1191       390,  -1400,   -728,   1289,  -2791,  -1450,   2568,  -4794,
1192      8052,   2285,  -6193,   5138,   6003,  -3957,   -318,  -2341,
1193     -1611,  -2199,  -1123,   3044,    864,  -2525,   -716,   1942,
1194     -2950,   -837,   2269,  -1882,   -386,  -2291,   7679,  15387,
1195     -2723,     -9,   -320,  -3599, -14452,   -452,    -54,    181,
1196      1074,    362,   2152,  -7212,    -64,   -380,   1276,   2557,
1197      2777,  -1173,   3984,  13079,   2508,   -470,    -84,   -969,
1198    -10440,   -384,    198,   -675,    285,  -2217,    936,  -3180,
1199      -425,    179,   -610,  -2002,  -1879,   1771,  -2684,  16705,
1200      1833,   -215,   -191,   -439, -17032,   -205,    203,   -308,
1201       290,   1916,  -1805,   2736,    210,   -198,    300,  -1869,
1202      1052,   4495,  15519,   1467,  -4032,    -67,  -1233, -14700,
1203      -131,   -992,   -288,   -997,  -4257,    -94,   -402,  -1389,
1204       259,   1106,   3819,    361,   3010,   2544,   6969,   7559,
1205      1996,   -553,   -395,  -2964,  -3487,   -243,   -467,  -1280,
1206     -1082,  -1388,  -1174,  -3215,   -366,   -310,   -849,   -921,
1207     -5209,  -1867,   8713,  10351,   1549,  -1656,   -212,  -4634,
1208     -6540,   -146,   -593,   2770,    993,   3291,   1180,  -5505,
1209       492,    176,   -824,   -979,  -4314,   8513,    913,   7547,
1210     -2723,  -1135,  -4423,    -50,  -3476,   -452,   2241,    240,
1211      -474,   1987,  -3921,   -420,   -717,   1415,    151,   1254,
1212     12929,  -1219,   2448,   1757,   6303, -10204,    -90,   -365,
1213      -188,  -2425,    962,  -1932,    182,  -1386,    130,   -262,
1214     -4974,    469,   -941,   -676,   6465,   4132,   3167,   3160,
1215      5697,  -2551,  -1042,   -612,   -609,  -1981,  -1630,  -1249,
1216      -798,  -1247,   -797,   -611,  -2248,  -1437,  -1101,  -1099,
1217     -3636,   4859,  18914,  -1335,    810,   -807,  -1441, -21836,
1218      -108,    -40,   1078,   4198,  -5609,   -296,    396,   1541,
1219       179,   -240,   -936,     66,   8844,   7864,    654,  -4063,
1220     -5680,  -4774,  -3774,    -26,  -1007,  -1969,  -4245,   -353,
1221      -314,   2193,   1950,    162,   3066,   2726,    226,  -1408,
1222      1859,   2634,   9228,    996,   9464,   -211,   -423,  -5197,
1223       -60,  -5467,   -299,  -1047,  -1483,   -113,   -160,   -561,
1224     -1074,  -1521,  -5330,   -575,   2949,  12260,  10290,   -497,
1225     -3943,   -530,  -9174,  -6463,    -15,   -949,  -2206,  -1852,
1226     -7700,     89,    372,    312,    709,   2950,   2476,   -119,
1227     -2903,   1552,  14867,   9970,   -496,   -514,   -147, -13491,
1228     -6068,    -15,    275,   2634,  -1408,   1766,   -944,  -9047,
1229       -87,     47,    450,    302,   3243,   8234,   7586,   3373,
1230      2151,   -642,  -4138,  -3512,   -694,   -282,  -1630,  -1501,
1231     -3812,   -667,  -1695,  -1561,   -425,  -1081,   -996,   -442,
1232     -9631,     60,   3501,   5359,  10150,  -5662,      0,   -748,
1233     -1752,  -6288,     35,   2058,    -12,   3150,    -19,  -1145,
1234      5967,    -37,  -2169,  -3320,  -6874,  -2553,  -5446,  -2195,
1235     -7841,  -2884,   -397,  -1810,   -294,  -3753,  -1071,  -2285,
1236      -848,   -921,   -342,   -729,  -3290,  -1221,  -2606,  -1050,
1237     -3413,  -1141,   4630,  13612,   7897,   -711,    -79,  -1308,
1238    -11310,  -3806,   -237,    964,    322,   2836,    948,  -3847,
1239      1645,    550,  -2231,  -6561,   4410,  -5678,   8006,  -3992,
1240      3811,  -1187,  -1968,  -3912,   -973,   -886,   1528,  -2155,
1241      2775,   1074,  -1383,   1951,  -1025,   1321,  -1862,    928,
1242      5659,  11535,   2203,   -452,   7169,  -1954,  -8121,   -296,
1243       -12,  -3137,  -3984,   -761,  -1551,    156,    318,     60,
1244     -2476,  -5048,   -964,    197,   2914,  -2914,   3485,  -3965,
1245     13675,   -518,   -518,   -741,   -959, -11414,    518,   -620,
1246       620,    705,   -705,    843,  -2433,   2432,  -2909,   3310,
1247      7843,   1907,   1022,   8882,   7972,  -3755,   -222,    -63,
1248     -4815,  -3879,   -913,   -489,   -119,  -4252,  -1034,   -554,
1249     -3816,   -928,   -497,  -4322,  13807,   9531,   1436,   1612,
1250      1779, -11636,  -5544,   -125,   -158,   -193,  -8032,  -1210,
1251      -835,  -1358,   -938,   -141,  -1499,  -1035,   -156,   -175,
1252     13620,  -5337,   5450,  -2263,   1723, -11322,  -1738,  -1813,
1253      -312,   -181,   4436,  -4531,   1775,   1881,   -737,    752,
1254     -1432,    561,   -573,    238,   5297,   8374,   8872,   7694,
1255      6538,  -1712,  -4280,  -4804,  -3613,  -2609,  -2707,  -2868,
1256     -4534,  -2487,  -3932,  -4166,  -2113,  -3341,  -3540,  -3070
1257 };
1258
1259 /**
1260  * 0.65^i (Zero part) and 0.75^i (Pole part) scaled by 2^15
1261  */
1262 static const int16_t postfilter_tbl[2][LPC_ORDER] = {
1263     /* Zero */
1264     {21299, 13844,  8999,  5849, 3802, 2471, 1606, 1044,  679,  441},
1265     /* Pole */
1266     {24576, 18432, 13824, 10368, 7776, 5832, 4374, 3281, 2460, 1845}
1267 };
1268
1269 /**
1270  * Hamming window coefficients scaled by 2^15
1271  */
1272 static const int16_t hamming_window[LPC_FRAME] = {
1273      2621,  2631,  2659,  2705,  2770,  2853,  2955,  3074,  3212,  3367,
1274      3541,  3731,  3939,  4164,  4405,  4663,  4937,  5226,  5531,  5851,
1275      6186,  6534,  6897,  7273,  7661,  8062,  8475,  8899,  9334,  9780,
1276     10235, 10699, 11172, 11653, 12141, 12636, 13138, 13645, 14157, 14673,
1277     15193, 15716, 16242, 16769, 17298, 17827, 18356, 18884, 19411, 19935,
1278     20457, 20975, 21489, 21999, 22503, 23002, 23494, 23978, 24455, 24924,
1279     25384, 25834, 26274, 26704, 27122, 27529, 27924, 28306, 28675, 29031,
1280     29373, 29700, 30012, 30310, 30592, 30857, 31107, 31340, 31557, 31756,
1281     31938, 32102, 32249, 32377, 32488, 32580, 32654, 32710, 32747, 32766,
1282     32766, 32747, 32710, 32654, 32580, 32488, 32377, 32249, 32102, 31938,
1283     31756, 31557, 31340, 31107, 30857, 30592, 30310, 30012, 29700, 29373,
1284     29031, 28675, 28306, 27924, 27529, 27122, 26704, 26274, 25834, 25384,
1285     24924, 24455, 23978, 23494, 23002, 22503, 21999, 21489, 20975, 20457,
1286     19935, 19411, 18884, 18356, 17827, 17298, 16769, 16242, 15716, 15193,
1287     14673, 14157, 13645, 13138, 12636, 12141, 11653, 11172, 10699, 10235,
1288      9780, 9334,   8899,  8475,  8062,  7661,  7273,  6897,  6534,  6186,
1289      5851, 5531,   5226,  4937,  4663,  4405,  4164,  3939,  3731,  3541,
1290      3367, 3212,   3074,  2955,  2853,  2770,  2705,  2659,  2631,  2621
1291 };
1292
1293 /**
1294  * Binomial window coefficients scaled by 2^15
1295  */
1296 static const int16_t binomial_window[LPC_ORDER] = {
1297     32749, 32695, 32604, 32477, 32315, 32118, 31887, 31622, 31324, 30995
1298 };
1299
1300 /**
1301  * 0.994^i scaled by 2^15
1302  */
1303 static const int16_t bandwidth_expand[LPC_ORDER] = {
1304     32571, 32376, 32182, 31989, 31797, 31606, 31416, 31228, 31040, 30854
1305 };
1306
1307 /**
1308  * 0.5^i scaled by 2^15
1309  */
1310 static const int16_t percept_flt_tbl[2][LPC_ORDER] = {
1311     /* Zero part */
1312     {29491, 26542, 23888, 21499, 19349, 17414, 15673, 14106, 12695, 11425},
1313     /* Pole part */
1314     {16384,  8192,  4096,  2048,  1024,   512,   256,   128,    64,    32}
1315 };