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