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