]> git.sesse.net Git - ffmpeg/blob - libavcodec/opustab.c
ffmpeg, ffprobe: don't "merge" side data into packet data by default
[ffmpeg] / libavcodec / opustab.c
1 /*
2  * Copyright (c) 2012 Andrew D'Addesio
3  * Copyright (c) 2013-2014 Mozilla Corporation
4  * Copyright (c) 2016 Rostislav Pehlivanov <atomnuker@gmail.com>
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 #include "opustab.h"
24
25 const uint8_t ff_opus_default_coupled_streams[] = { 0, 1, 1, 2, 2, 2, 2, 3 };
26
27 const uint8_t ff_celt_band_end[] = { 13, 17, 17, 19, 21 };
28
29 const uint16_t ff_silk_model_stereo_s1[] = {
30     256,   7,   9,  10,  11,  12,  22,  46,  54,  55,  56,  59,  82, 174, 197, 200,
31     201, 202, 210, 234, 244, 245, 246, 247, 249, 256
32 };
33
34 const uint16_t ff_silk_model_stereo_s2[] = {256, 85, 171, 256};
35
36 const uint16_t ff_silk_model_stereo_s3[] = {256, 51, 102, 154, 205, 256};
37
38 const uint16_t ff_silk_model_mid_only[] = {256, 192, 256};
39
40 const uint16_t ff_silk_model_frame_type_inactive[] = {256, 26, 256};
41
42 const uint16_t ff_silk_model_frame_type_active[] = {256, 24, 98, 246, 256};
43
44 const uint16_t ff_silk_model_gain_highbits[3][9] = {
45     {256,  32, 144, 212, 241, 253, 254, 255, 256},
46     {256,   2,  19,  64, 124, 186, 233, 252, 256},
47     {256,   1,   4,  30, 101, 195, 245, 254, 256}
48 };
49
50 const uint16_t ff_silk_model_gain_lowbits[] = {256, 32, 64, 96, 128, 160, 192, 224, 256};
51
52 const uint16_t ff_silk_model_gain_delta[] = {
53     256,   6,  11,  22,  53, 185, 206, 214, 218, 221, 223, 225, 227, 228, 229, 230,
54     231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
55     247, 248, 249, 250, 251, 252, 253, 254, 255, 256
56 };
57 const uint16_t ff_silk_model_lsf_s1[2][2][33] = {
58     {
59         {    // NB or MB, unvoiced
60             256,  44,  78, 108, 127, 148, 160, 171, 174, 177, 179, 195, 197, 199, 200, 205,
61             207, 208, 211, 214, 215, 216, 218, 220, 222, 225, 226, 235, 244, 246, 253, 255, 256
62         }, { // NB or MB, voiced
63             256,   1,  11,  12,  20,  23,  31,  39,  53,  66,  80,  81,  95, 107, 120, 131,
64             142, 154, 165, 175, 185, 196, 204, 213, 221, 228, 236, 237, 238, 244, 245, 251, 256
65         }
66     }, {
67         {    // WB, unvoiced
68             256,  31,  52,  55,  72,  73,  81,  98, 102, 103, 121, 137, 141, 143, 146, 147,
69             157, 158, 161, 177, 188, 204, 206, 208, 211, 213, 224, 225, 229, 238, 246, 253, 256
70         }, { // WB, voiced
71             256,   1,   5,  21,  26,  44,  55,  60,  74,  89,  90,  93, 105, 118, 132, 146,
72             152, 166, 178, 180, 186, 187, 199, 211, 222, 232, 235, 245, 250, 251, 252, 253, 256
73         }
74     }
75 };
76
77 const uint16_t ff_silk_model_lsf_s2[32][10] = {
78     // NB, MB
79     { 256,   1,   2,   3,  18, 242, 253, 254, 255, 256 },
80     { 256,   1,   2,   4,  38, 221, 253, 254, 255, 256 },
81     { 256,   1,   2,   6,  48, 197, 252, 254, 255, 256 },
82     { 256,   1,   2,  10,  62, 185, 246, 254, 255, 256 },
83     { 256,   1,   4,  20,  73, 174, 248, 254, 255, 256 },
84     { 256,   1,   4,  21,  76, 166, 239, 254, 255, 256 },
85     { 256,   1,   8,  32,  85, 159, 226, 252, 255, 256 },
86     { 256,   1,   2,  20,  83, 161, 219, 249, 255, 256 },
87
88     // WB
89     { 256,   1,   2,   3,  12, 244, 253, 254, 255, 256 },
90     { 256,   1,   2,   4,  32, 218, 253, 254, 255, 256 },
91     { 256,   1,   2,   5,  47, 199, 252, 254, 255, 256 },
92     { 256,   1,   2,  12,  61, 187, 252, 254, 255, 256 },
93     { 256,   1,   5,  24,  72, 172, 249, 254, 255, 256 },
94     { 256,   1,   2,  16,  70, 170, 242, 254, 255, 256 },
95     { 256,   1,   2,  17,  78, 165, 226, 251, 255, 256 },
96     { 256,   1,   8,  29,  79, 156, 237, 254, 255, 256 }
97 };
98
99 const uint16_t ff_silk_model_lsf_s2_ext[] = { 256, 156, 216, 240, 249, 253, 255, 256 };
100
101 const uint16_t ff_silk_model_lsf_interpolation_offset[] = { 256, 13, 35, 64, 75, 256 };
102
103 const uint16_t ff_silk_model_pitch_highbits[] = {
104     256,   3,   6,  12,  23,  44,  74, 106, 125, 136, 146, 158, 171, 184, 196, 207,
105     216, 224, 231, 237, 241, 243, 245, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256
106 };
107
108 const uint16_t ff_silk_model_pitch_lowbits_nb[] = { 256, 64, 128, 192, 256 };
109
110 const uint16_t ff_silk_model_pitch_lowbits_mb[] = { 256, 43, 85, 128, 171, 213, 256 };
111
112 const uint16_t ff_silk_model_pitch_lowbits_wb[] = { 256, 32, 64, 96, 128, 160, 192, 224, 256 };
113
114 const uint16_t ff_silk_model_pitch_delta[] = {
115     256,  46,  48,  50,  53,  57,  63,  73,  88, 114, 152, 182, 204, 219, 229, 236,
116     242, 246, 250, 252, 254, 256
117 };
118
119 const uint16_t ff_silk_model_pitch_contour_nb10ms[] = { 256, 143, 193, 256 };
120
121 const uint16_t ff_silk_model_pitch_contour_nb20ms[] = {
122     256,  68,  80, 101, 118, 137, 159, 189, 213, 230, 246, 256
123 };
124
125 const uint16_t ff_silk_model_pitch_contour_mbwb10ms[] = {
126     256,  91, 137, 176, 195, 209, 221, 229, 236, 242, 247, 252, 256
127 };
128
129 const uint16_t ff_silk_model_pitch_contour_mbwb20ms[] = {
130     256,  33,  55,  73,  89, 104, 118, 132, 145, 158, 168, 177, 186, 194, 200, 206,
131     212, 217, 221, 225, 229, 232, 235, 238, 240, 242, 244, 246, 248, 250, 252, 253,
132     254, 255, 256
133 };
134
135 const uint16_t ff_silk_model_ltp_filter[] = { 256, 77, 157, 256 };
136
137 const uint16_t ff_silk_model_ltp_filter0_sel[] = {
138     256, 185, 200, 213, 226, 235, 244, 250, 256
139 };
140
141 const uint16_t ff_silk_model_ltp_filter1_sel[] = {
142     256,  57,  91, 112, 132, 147, 160, 172, 185, 195, 205, 214, 224, 233, 241, 248, 256
143 };
144
145 const uint16_t ff_silk_model_ltp_filter2_sel[] = {
146     256,  15,  31,  45,  57,  69,  81,  92, 103, 114, 124, 133, 142, 151, 160, 168,
147     176, 184, 192, 199, 206, 212, 218, 223, 227, 232, 236, 240, 244, 247, 251, 254, 256
148 };
149
150 const uint16_t ff_silk_model_ltp_scale_index[] = { 256, 128, 192, 256 };
151
152 const uint16_t ff_silk_model_lcg_seed[] = { 256, 64, 128, 192, 256 };
153
154 const uint16_t ff_silk_model_exc_rate[2][10] = {
155     { 256,  15,  66,  78, 124, 169, 182, 215, 242, 256 }, // unvoiced
156     { 256,  33,  63,  99, 116, 150, 199, 217, 238, 256 }  // voiced
157 };
158
159 const uint16_t ff_silk_model_pulse_count[11][19] = {
160     { 256, 131, 205, 230, 238, 241, 244, 245, 246,
161       247, 248, 249, 250, 251, 252, 253, 254, 255, 256 },
162     { 256,  58, 151, 211, 234, 241, 244, 245, 246,
163       247, 248, 249, 250, 251, 252, 253, 254, 255, 256 },
164     { 256,  43,  94, 140, 173, 197, 213, 224, 232,
165       238, 241, 244, 247, 249, 250, 251, 253, 254, 256 },
166     { 256,  17,  69, 140, 197, 228, 240, 245, 246,
167       247, 248, 249, 250, 251, 252, 253, 254, 255, 256 },
168     { 256,   6,  27,  68, 121, 170, 205, 226, 237,
169       243, 246, 248, 250, 251, 252, 253, 254, 255, 256 },
170     { 256,   7,  21,  43,  71, 100, 128, 153, 173,
171       190, 203, 214, 223, 230, 235, 239, 243, 246, 256 },
172     { 256,   2,   7,  21,  50,  92, 138, 179, 210,
173       229, 240, 246, 249, 251, 252, 253, 254, 255, 256 },
174     { 256,   1,   3,   7,  17,  36,  65, 100, 137,
175       171, 199, 219, 233, 241, 246, 250, 252, 254, 256 },
176     { 256,   1,   3,   5,  10,  19,  33,  53,  77,
177       104, 132, 158, 181, 201, 216, 227, 235, 241, 256 },
178     { 256,   1,   2,   3,   9,  36,  94, 150, 189,
179       214, 228, 238, 244, 247, 250, 252, 253, 254, 256 },
180     { 256,   2,   3,   9,  36,  94, 150, 189, 214,
181       228, 238, 244, 247, 250, 252, 253, 254, 256, 256 }
182 };
183
184 const uint16_t ff_silk_model_pulse_location[4][168] = {
185     {
186         256, 126, 256,
187         256, 56, 198, 256,
188         256, 25, 126, 230, 256,
189         256, 12, 72, 180, 244, 256,
190         256, 7, 42, 126, 213, 250, 256,
191         256, 4, 24, 83, 169, 232, 253, 256,
192         256, 3, 15, 53, 125, 200, 242, 254, 256,
193         256, 2, 10, 35, 89, 162, 221, 248, 255, 256,
194         256, 2, 7, 24, 63, 126, 191, 233, 251, 255, 256,
195         256, 1, 5, 17, 45, 94, 157, 211, 241, 252, 255, 256,
196         256, 1, 5, 13, 33, 70, 125, 182, 223, 245, 253, 255, 256,
197         256, 1, 4, 11, 26, 54, 98, 151, 199, 232, 248, 254, 255, 256,
198         256, 1, 3, 9, 21, 42, 77, 124, 172, 212, 237, 249, 254, 255, 256,
199         256, 1, 2, 6, 16, 33, 60, 97, 144, 187, 220, 241, 250, 254, 255, 256,
200         256, 1, 2, 3, 11, 25, 47, 80, 120, 163, 201, 229, 245, 253, 254, 255, 256,
201         256, 1, 2, 3, 4, 17, 35, 62, 98, 139, 180, 214, 238, 252, 253, 254, 255, 256
202     },{
203         256, 127, 256,
204         256, 53, 202, 256,
205         256, 22, 127, 233, 256,
206         256, 11, 72, 183, 246, 256,
207         256, 6, 41, 127, 215, 251, 256,
208         256, 4, 24, 83, 170, 232, 253, 256,
209         256, 3, 16, 56, 127, 200, 241, 254, 256,
210         256, 3, 12, 39, 92, 162, 218, 246, 255, 256,
211         256, 3, 11, 30, 67, 124, 185, 229, 249, 255, 256,
212         256, 3, 10, 25, 53, 97, 151, 200, 233, 250, 255, 256,
213         256, 1, 8, 21, 43, 77, 123, 171, 209, 237, 251, 255, 256,
214         256, 1, 2, 13, 35, 62, 97, 139, 186, 219, 244, 254, 255, 256,
215         256, 1, 2, 8, 22, 48, 85, 128, 171, 208, 234, 248, 254, 255, 256,
216         256, 1, 2, 6, 16, 36, 67, 107, 149, 189, 220, 240, 250, 254, 255, 256,
217         256, 1, 2, 5, 13, 29, 55, 90, 128, 166, 201, 227, 243, 251, 254, 255, 256,
218         256, 1, 2, 4, 10, 22, 43, 73, 109, 147, 183, 213, 234, 246, 252, 254, 255, 256
219     },{
220         256, 127, 256,
221         256, 49, 206, 256,
222         256, 20, 127, 236, 256,
223         256, 11, 71, 184, 246, 256,
224         256, 7, 43, 127, 214, 250, 256,
225         256, 6, 30, 87, 169, 229, 252, 256,
226         256, 5, 23, 62, 126, 194, 236, 252, 256,
227         256, 6, 20, 49, 96, 157, 209, 239, 253, 256,
228         256, 1, 16, 39, 74, 125, 175, 215, 245, 255, 256,
229         256, 1, 2, 23, 55, 97, 149, 195, 236, 254, 255, 256,
230         256, 1, 7, 23, 50, 86, 128, 170, 206, 233, 249, 255, 256,
231         256, 1, 6, 18, 39, 70, 108, 148, 186, 217, 238, 250, 255, 256,
232         256, 1, 4, 13, 30, 56, 90, 128, 166, 200, 226, 243, 252, 255, 256,
233         256, 1, 4, 11, 25, 47, 76, 110, 146, 180, 209, 231, 245, 252, 255, 256,
234         256, 1, 3, 8, 19, 37, 62, 93, 128, 163, 194, 219, 237, 248, 253, 255, 256,
235         256, 1, 2, 6, 15, 30, 51, 79, 111, 145, 177, 205, 226, 241, 250, 254, 255, 256
236     },{
237         256, 128, 256,
238         256, 42, 214, 256,
239         256, 21, 128, 235, 256,
240         256, 12, 72, 184, 245, 256,
241         256, 8, 42, 128, 214, 249, 256,
242         256, 8, 31, 86, 176, 231, 251, 256,
243         256, 5, 20, 58, 130, 202, 238, 253, 256,
244         256, 6, 18, 45, 97, 174, 221, 241, 251, 256,
245         256, 6, 25, 53, 88, 128, 168, 203, 231, 250, 256,
246         256, 4, 18, 40, 71, 108, 148, 185, 216, 238, 252, 256,
247         256, 3, 13, 31, 57, 90, 128, 166, 199, 225, 243, 253, 256,
248         256, 2, 10, 23, 44, 73, 109, 147, 183, 212, 233, 246, 254, 256,
249         256, 1, 6, 16, 33, 58, 90, 128, 166, 198, 223, 240, 250, 255, 256,
250         256, 1, 5, 12, 25, 46, 75, 110, 146, 181, 210, 231, 244, 251, 255, 256,
251         256, 1, 3, 8, 18, 35, 60, 92, 128, 164, 196, 221, 238, 248, 253, 255, 256,
252         256, 1, 3, 7, 14, 27, 48, 76, 110, 146, 180, 208, 229, 242, 249, 253, 255, 256
253     }
254 };
255
256 const uint16_t ff_silk_model_excitation_lsb[] = {256, 136, 256};
257
258 const uint16_t ff_silk_model_excitation_sign[3][2][7][3] = {
259     {    // Inactive
260         {    // Low offset
261             {256,   2, 256},
262             {256, 207, 256},
263             {256, 189, 256},
264             {256, 179, 256},
265             {256, 174, 256},
266             {256, 163, 256},
267             {256, 157, 256}
268         }, { // High offset
269             {256,  58, 256},
270             {256, 245, 256},
271             {256, 238, 256},
272             {256, 232, 256},
273             {256, 225, 256},
274             {256, 220, 256},
275             {256, 211, 256}
276         }
277     }, { // Unvoiced
278         {    // Low offset
279             {256,   1, 256},
280             {256, 210, 256},
281             {256, 190, 256},
282             {256, 178, 256},
283             {256, 169, 256},
284             {256, 162, 256},
285             {256, 152, 256}
286         }, { // High offset
287             {256,  48, 256},
288             {256, 242, 256},
289             {256, 235, 256},
290             {256, 224, 256},
291             {256, 214, 256},
292             {256, 205, 256},
293             {256, 190, 256}
294         }
295     }, { // Voiced
296         {    // Low offset
297             {256,   1, 256},
298             {256, 162, 256},
299             {256, 152, 256},
300             {256, 147, 256},
301             {256, 144, 256},
302             {256, 141, 256},
303             {256, 138, 256}
304         }, { // High offset
305             {256,   8, 256},
306             {256, 203, 256},
307             {256, 187, 256},
308             {256, 176, 256},
309             {256, 168, 256},
310             {256, 161, 256},
311             {256, 154, 256}
312         }
313     }
314 };
315
316 const int16_t ff_silk_stereo_weights[] = {
317     -13732, -10050,  -8266,  -7526,  -6500,  -5000,  -2950,   -820,
318        820,   2950,   5000,   6500,   7526,   8266,  10050,  13732
319 };
320
321 const uint8_t ff_silk_lsf_s2_model_sel_nbmb[32][10] = {
322     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
323     { 1, 3, 1, 2, 2, 1, 2, 1, 1, 1 },
324     { 2, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
325     { 1, 2, 2, 2, 2, 1, 2, 1, 1, 1 },
326     { 2, 3, 3, 3, 3, 2, 2, 2, 2, 2 },
327     { 0, 5, 3, 3, 2, 2, 2, 2, 1, 1 },
328     { 0, 2, 2, 2, 2, 2, 2, 2, 2, 1 },
329     { 2, 3, 6, 4, 4, 4, 5, 4, 5, 5 },
330     { 2, 4, 5, 5, 4, 5, 4, 6, 4, 4 },
331     { 2, 4, 4, 7, 4, 5, 4, 5, 5, 4 },
332     { 4, 3, 3, 3, 2, 3, 2, 2, 2, 2 },
333     { 1, 5, 5, 6, 4, 5, 4, 5, 5, 5 },
334     { 2, 7, 4, 6, 5, 5, 5, 5, 5, 5 },
335     { 2, 7, 5, 5, 5, 5, 5, 6, 5, 4 },
336     { 3, 3, 5, 4, 4, 5, 4, 5, 4, 4 },
337     { 2, 3, 3, 5, 5, 4, 4, 4, 4, 4 },
338     { 2, 4, 4, 6, 4, 5, 4, 5, 5, 5 },
339     { 2, 5, 4, 6, 5, 5, 5, 4, 5, 4 },
340     { 2, 7, 4, 5, 4, 5, 4, 5, 5, 5 },
341     { 2, 5, 4, 6, 7, 6, 5, 6, 5, 4 },
342     { 3, 6, 7, 4, 6, 5, 5, 6, 4, 5 },
343     { 2, 7, 6, 4, 4, 4, 5, 4, 5, 5 },
344     { 4, 5, 5, 4, 6, 6, 5, 6, 5, 4 },
345     { 2, 5, 5, 6, 5, 6, 4, 6, 4, 4 },
346     { 4, 5, 5, 5, 3, 7, 4, 5, 5, 4 },
347     { 2, 3, 4, 5, 5, 6, 4, 5, 5, 4 },
348     { 2, 3, 2, 3, 3, 4, 2, 3, 3, 3 },
349     { 1, 1, 2, 2, 2, 2, 2, 3, 2, 2 },
350     { 4, 5, 5, 6, 6, 6, 5, 6, 4, 5 },
351     { 3, 5, 5, 4, 4, 4, 4, 3, 3, 2 },
352     { 2, 5, 3, 7, 5, 5, 4, 4, 5, 4 },
353     { 4, 4, 5, 4, 5, 6, 5, 6, 5, 4 }
354 };
355
356 const uint8_t ff_silk_lsf_s2_model_sel_wb[32][16] = {
357     {  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8 },
358     { 10, 11, 11, 11, 11, 11, 10, 10, 10, 10, 10,  9,  9,  9,  8, 11 },
359     { 10, 13, 13, 11, 15, 12, 12, 13, 10, 13, 12, 13, 13, 12, 11, 11 },
360     {  8, 10,  9, 10, 10,  9,  9,  9,  9,  9,  8,  8,  8,  8,  8,  9 },
361     {  8, 14, 13, 12, 14, 12, 15, 13, 12, 12, 12, 13, 13, 12, 12, 11 },
362     {  8, 11, 13, 13, 12, 11, 11, 13, 11, 11, 11, 11, 11, 11, 10, 12 },
363     {  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8 },
364     {  8, 10, 14, 11, 15, 10, 13, 11, 12, 13, 13, 12, 11, 11, 10, 11 },
365     {  8, 14, 10, 14, 14, 12, 13, 12, 14, 13, 12, 12, 13, 11, 11, 11 },
366     { 10,  9,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8 },
367     {  8,  9,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  9 },
368     { 10, 10, 11, 12, 13, 11, 11, 11, 11, 11, 11, 11, 10, 10,  9, 11 },
369     { 10, 10, 11, 11, 12, 11, 11, 11, 11, 11, 11, 11, 11, 10,  9, 11 },
370     { 11, 12, 12, 12, 14, 12, 12, 13, 11, 13, 12, 12, 13, 12, 11, 12 },
371     {  8, 14, 12, 13, 12, 15, 13, 10, 14, 13, 15, 12, 12, 11, 13, 11 },
372     {  8,  9,  8,  9,  9,  9,  9,  9,  9,  9,  8,  8,  8,  8,  9,  8 },
373     {  9, 14, 13, 15, 13, 12, 13, 11, 12, 13, 12, 12, 12, 11, 11, 12 },
374     {  9, 11, 11, 12, 12, 11, 11, 13, 10, 11, 11, 13, 13, 13, 11, 12 },
375     { 10, 11, 11, 10, 10, 10, 11, 10,  9, 10,  9, 10,  9,  9,  9, 12 },
376     {  8, 10, 11, 13, 11, 11, 10, 10, 10,  9,  9,  8,  8,  8,  8,  8 },
377     { 11, 12, 11, 13, 11, 11, 10, 10,  9,  9,  9,  9,  9, 10, 10, 12 },
378     { 10, 14, 11, 15, 15, 12, 13, 12, 13, 11, 13, 11, 11, 10, 11, 11 },
379     { 10, 11, 13, 14, 14, 11, 13, 11, 12, 12, 11, 11, 11, 11, 10, 12 },
380     {  9, 11, 11, 12, 12, 12, 12, 11, 13, 13, 13, 11,  9,  9,  9,  9 },
381     { 10, 13, 11, 14, 14, 12, 15, 12, 12, 13, 11, 12, 12, 11, 11, 11 },
382     {  8, 14,  9,  9,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8 },
383     {  8, 14, 14, 11, 13, 10, 13, 13, 11, 12, 12, 15, 15, 12, 12, 12 },
384     { 11, 11, 15, 11, 13, 12, 11, 11, 11, 10, 10, 11, 11, 11, 10, 11 },
385     {  8,  8,  9,  8,  8,  8, 10,  9, 10,  9,  9, 10, 10, 10,  9,  9 },
386     {  8, 11, 10, 13, 11, 11, 10, 11, 10,  9,  8,  8,  9,  8,  8,  9 },
387     { 11, 13, 13, 12, 15, 13, 11, 11, 10, 11, 10, 10,  9,  8,  9,  8 },
388     { 10, 11, 13, 11, 12, 11, 11, 11, 10,  9, 10, 14, 12,  8,  8,  8 }
389 };
390
391 const uint8_t ff_silk_lsf_pred_weights_nbmb[2][9] = {
392     {179, 138, 140, 148, 151, 149, 153, 151, 163},
393     {116,  67,  82,  59,  92,  72, 100,  89,  92}
394 };
395
396 const uint8_t ff_silk_lsf_pred_weights_wb[2][15] = {
397     {175, 148, 160, 176, 178, 173, 174, 164, 177, 174, 196, 182, 198, 192, 182},
398     { 68,  62,  66,  60,  72, 117,  85,  90, 118, 136, 151, 142, 160, 142, 155}
399 };
400
401 const uint8_t ff_silk_lsf_weight_sel_nbmb[32][9] = {
402     { 0, 1, 0, 0, 0, 0, 0, 0, 0 },
403     { 1, 0, 0, 0, 0, 0, 0, 0, 0 },
404     { 0, 0, 0, 0, 0, 0, 0, 0, 0 },
405     { 1, 1, 1, 0, 0, 0, 0, 1, 0 },
406     { 0, 1, 0, 0, 0, 0, 0, 0, 0 },
407     { 0, 1, 0, 0, 0, 0, 0, 0, 0 },
408     { 1, 0, 1, 1, 0, 0, 0, 1, 0 },
409     { 0, 1, 1, 0, 0, 1, 1, 0, 0 },
410     { 0, 0, 1, 1, 0, 1, 0, 1, 1 },
411     { 0, 0, 1, 1, 0, 0, 1, 1, 1 },
412     { 0, 0, 0, 0, 0, 0, 0, 0, 0 },
413     { 0, 1, 0, 1, 1, 1, 1, 1, 0 },
414     { 0, 1, 0, 1, 1, 1, 1, 1, 0 },
415     { 0, 1, 1, 1, 1, 1, 1, 1, 0 },
416     { 1, 0, 1, 1, 0, 1, 1, 1, 1 },
417     { 0, 1, 1, 1, 1, 1, 0, 1, 0 },
418     { 0, 0, 1, 1, 0, 1, 0, 1, 0 },
419     { 0, 0, 1, 1, 1, 0, 1, 1, 1 },
420     { 0, 1, 1, 0, 0, 1, 1, 1, 0 },
421     { 0, 0, 0, 1, 1, 1, 0, 1, 0 },
422     { 0, 1, 1, 0, 0, 1, 0, 1, 0 },
423     { 0, 1, 1, 0, 0, 0, 1, 1, 0 },
424     { 0, 0, 0, 0, 0, 1, 1, 1, 1 },
425     { 0, 0, 1, 1, 0, 0, 0, 1, 1 },
426     { 0, 0, 0, 1, 0, 1, 1, 1, 1 },
427     { 0, 1, 1, 1, 1, 1, 1, 1, 0 },
428     { 0, 0, 0, 0, 0, 0, 0, 0, 0 },
429     { 0, 0, 0, 0, 0, 0, 0, 0, 0 },
430     { 0, 0, 1, 0, 1, 1, 0, 1, 0 },
431     { 1, 0, 0, 1, 0, 0, 0, 0, 0 },
432     { 0, 0, 0, 1, 1, 0, 1, 0, 1 },
433     { 1, 0, 1, 1, 0, 1, 1, 1, 1 }
434 };
435
436 const uint8_t ff_silk_lsf_weight_sel_wb[32][15] = {
437     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
438     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
439     { 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 0, 0 },
440     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 },
441     { 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0 },
442     { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
443     { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0 },
444     { 0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1 },
445     { 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1 },
446     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
447     { 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
448     { 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0 },
449     { 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0 },
450     { 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 0, 0 },
451     { 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1 },
452     { 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0 },
453     { 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 0 },
454     { 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0 },
455     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
456     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 },
457     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
458     { 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 1, 0 },
459     { 0, 0, 1, 1, 1, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0 },
460     { 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0 },
461     { 0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1 },
462     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
463     { 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1 },
464     { 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1 },
465     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
466     { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
467     { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 },
468     { 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0 }
469 };
470
471 const uint8_t ff_silk_lsf_codebook_nbmb[32][10] = {
472     { 12,  35,  60,  83, 108, 132, 157, 180, 206, 228 },
473     { 15,  32,  55,  77, 101, 125, 151, 175, 201, 225 },
474     { 19,  42,  66,  89, 114, 137, 162, 184, 209, 230 },
475     { 12,  25,  50,  72,  97, 120, 147, 172, 200, 223 },
476     { 26,  44,  69,  90, 114, 135, 159, 180, 205, 225 },
477     { 13,  22,  53,  80, 106, 130, 156, 180, 205, 228 },
478     { 15,  25,  44,  64,  90, 115, 142, 168, 196, 222 },
479     { 19,  24,  62,  82, 100, 120, 145, 168, 190, 214 },
480     { 22,  31,  50,  79, 103, 120, 151, 170, 203, 227 },
481     { 21,  29,  45,  65, 106, 124, 150, 171, 196, 224 },
482     { 30,  49,  75,  97, 121, 142, 165, 186, 209, 229 },
483     { 19,  25,  52,  70,  93, 116, 143, 166, 192, 219 },
484     { 26,  34,  62,  75,  97, 118, 145, 167, 194, 217 },
485     { 25,  33,  56,  70,  91, 113, 143, 165, 196, 223 },
486     { 21,  34,  51,  72,  97, 117, 145, 171, 196, 222 },
487     { 20,  29,  50,  67,  90, 117, 144, 168, 197, 221 },
488     { 22,  31,  48,  66,  95, 117, 146, 168, 196, 222 },
489     { 24,  33,  51,  77, 116, 134, 158, 180, 200, 224 },
490     { 21,  28,  70,  87, 106, 124, 149, 170, 194, 217 },
491     { 26,  33,  53,  64,  83, 117, 152, 173, 204, 225 },
492     { 27,  34,  65,  95, 108, 129, 155, 174, 210, 225 },
493     { 20,  26,  72,  99, 113, 131, 154, 176, 200, 219 },
494     { 34,  43,  61,  78,  93, 114, 155, 177, 205, 229 },
495     { 23,  29,  54,  97, 124, 138, 163, 179, 209, 229 },
496     { 30,  38,  56,  89, 118, 129, 158, 178, 200, 231 },
497     { 21,  29,  49,  63,  85, 111, 142, 163, 193, 222 },
498     { 27,  48,  77, 103, 133, 158, 179, 196, 215, 232 },
499     { 29,  47,  74,  99, 124, 151, 176, 198, 220, 237 },
500     { 33,  42,  61,  76,  93, 121, 155, 174, 207, 225 },
501     { 29,  53,  87, 112, 136, 154, 170, 188, 208, 227 },
502     { 24,  30,  52,  84, 131, 150, 166, 186, 203, 229 },
503     { 37,  48,  64,  84, 104, 118, 156, 177, 201, 230 }
504 };
505
506 const uint8_t ff_silk_lsf_codebook_wb[32][16] = {
507     {  7,  23,  38,  54,  69,  85, 100, 116, 131, 147, 162, 178, 193, 208, 223, 239 },
508     { 13,  25,  41,  55,  69,  83,  98, 112, 127, 142, 157, 171, 187, 203, 220, 236 },
509     { 15,  21,  34,  51,  61,  78,  92, 106, 126, 136, 152, 167, 185, 205, 225, 240 },
510     { 10,  21,  36,  50,  63,  79,  95, 110, 126, 141, 157, 173, 189, 205, 221, 237 },
511     { 17,  20,  37,  51,  59,  78,  89, 107, 123, 134, 150, 164, 184, 205, 224, 240 },
512     { 10,  15,  32,  51,  67,  81,  96, 112, 129, 142, 158, 173, 189, 204, 220, 236 },
513     {  8,  21,  37,  51,  65,  79,  98, 113, 126, 138, 155, 168, 179, 192, 209, 218 },
514     { 12,  15,  34,  55,  63,  78,  87, 108, 118, 131, 148, 167, 185, 203, 219, 236 },
515     { 16,  19,  32,  36,  56,  79,  91, 108, 118, 136, 154, 171, 186, 204, 220, 237 },
516     { 11,  28,  43,  58,  74,  89, 105, 120, 135, 150, 165, 180, 196, 211, 226, 241 },
517     {  6,  16,  33,  46,  60,  75,  92, 107, 123, 137, 156, 169, 185, 199, 214, 225 },
518     { 11,  19,  30,  44,  57,  74,  89, 105, 121, 135, 152, 169, 186, 202, 218, 234 },
519     { 12,  19,  29,  46,  57,  71,  88, 100, 120, 132, 148, 165, 182, 199, 216, 233 },
520     { 17,  23,  35,  46,  56,  77,  92, 106, 123, 134, 152, 167, 185, 204, 222, 237 },
521     { 14,  17,  45,  53,  63,  75,  89, 107, 115, 132, 151, 171, 188, 206, 221, 240 },
522     {  9,  16,  29,  40,  56,  71,  88, 103, 119, 137, 154, 171, 189, 205, 222, 237 },
523     { 16,  19,  36,  48,  57,  76,  87, 105, 118, 132, 150, 167, 185, 202, 218, 236 },
524     { 12,  17,  29,  54,  71,  81,  94, 104, 126, 136, 149, 164, 182, 201, 221, 237 },
525     { 15,  28,  47,  62,  79,  97, 115, 129, 142, 155, 168, 180, 194, 208, 223, 238 },
526     {  8,  14,  30,  45,  62,  78,  94, 111, 127, 143, 159, 175, 192, 207, 223, 239 },
527     { 17,  30,  49,  62,  79,  92, 107, 119, 132, 145, 160, 174, 190, 204, 220, 235 },
528     { 14,  19,  36,  45,  61,  76,  91, 108, 121, 138, 154, 172, 189, 205, 222, 238 },
529     { 12,  18,  31,  45,  60,  76,  91, 107, 123, 138, 154, 171, 187, 204, 221, 236 },
530     { 13,  17,  31,  43,  53,  70,  83, 103, 114, 131, 149, 167, 185, 203, 220, 237 },
531     { 17,  22,  35,  42,  58,  78,  93, 110, 125, 139, 155, 170, 188, 206, 224, 240 },
532     {  8,  15,  34,  50,  67,  83,  99, 115, 131, 146, 162, 178, 193, 209, 224, 239 },
533     { 13,  16,  41,  66,  73,  86,  95, 111, 128, 137, 150, 163, 183, 206, 225, 241 },
534     { 17,  25,  37,  52,  63,  75,  92, 102, 119, 132, 144, 160, 175, 191, 212, 231 },
535     { 19,  31,  49,  65,  83, 100, 117, 133, 147, 161, 174, 187, 200, 213, 227, 242 },
536     { 18,  31,  52,  68,  88, 103, 117, 126, 138, 149, 163, 177, 192, 207, 223, 239 },
537     { 16,  29,  47,  61,  76,  90, 106, 119, 133, 147, 161, 176, 193, 209, 224, 240 },
538     { 15,  21,  35,  50,  61,  73,  86,  97, 110, 119, 129, 141, 175, 198, 218, 237 }
539 };
540
541 const uint16_t ff_silk_lsf_min_spacing_nbmb[] = {
542     250, 3, 6, 3, 3, 3, 4, 3, 3, 3, 461
543 };
544
545 const uint16_t ff_silk_lsf_min_spacing_wb[] = {
546     100, 3, 40, 3, 3, 3, 5, 14, 14, 10, 11, 3, 8, 9, 7, 3, 347
547 };
548
549 const uint8_t ff_silk_lsf_ordering_nbmb[] = {
550     0, 9, 6, 3, 4, 5, 8, 1, 2, 7
551 };
552
553 const uint8_t ff_silk_lsf_ordering_wb[] = {
554     0, 15, 8, 7, 4, 11, 12, 3, 2, 13, 10, 5, 6, 9, 14, 1
555 };
556
557 const int16_t ff_silk_cosine[] = { /* (0.12) */
558      4096,  4095,  4091,  4085,
559      4076,  4065,  4052,  4036,
560      4017,  3997,  3973,  3948,
561      3920,  3889,  3857,  3822,
562      3784,  3745,  3703,  3659,
563      3613,  3564,  3513,  3461,
564      3406,  3349,  3290,  3229,
565      3166,  3102,  3035,  2967,
566      2896,  2824,  2751,  2676,
567      2599,  2520,  2440,  2359,
568      2276,  2191,  2106,  2019,
569      1931,  1842,  1751,  1660,
570      1568,  1474,  1380,  1285,
571      1189,  1093,   995,   897,
572       799,   700,   601,   501,
573       401,   301,   201,   101,
574         0,  -101,  -201,  -301,
575      -401,  -501,  -601,  -700,
576      -799,  -897,  -995, -1093,
577     -1189, -1285, -1380, -1474,
578     -1568, -1660, -1751, -1842,
579     -1931, -2019, -2106, -2191,
580     -2276, -2359, -2440, -2520,
581     -2599, -2676, -2751, -2824,
582     -2896, -2967, -3035, -3102,
583     -3166, -3229, -3290, -3349,
584     -3406, -3461, -3513, -3564,
585     -3613, -3659, -3703, -3745,
586     -3784, -3822, -3857, -3889,
587     -3920, -3948, -3973, -3997,
588     -4017, -4036, -4052, -4065,
589     -4076, -4085, -4091, -4095,
590     -4096
591 };
592
593 const uint16_t ff_silk_pitch_scale[]   = {  4,   6,   8};
594
595 const uint16_t ff_silk_pitch_min_lag[] = { 16,  24,  32};
596
597 const uint16_t ff_silk_pitch_max_lag[] = {144, 216, 288};
598
599 const int8_t ff_silk_pitch_offset_nb10ms[3][2] = {
600     { 0,  0},
601     { 1,  0},
602     { 0,  1}
603 };
604
605 const int8_t ff_silk_pitch_offset_nb20ms[11][4] = {
606     { 0,  0,  0,  0},
607     { 2,  1,  0, -1},
608     {-1,  0,  1,  2},
609     {-1,  0,  0,  1},
610     {-1,  0,  0,  0},
611     { 0,  0,  0,  1},
612     { 0,  0,  1,  1},
613     { 1,  1,  0,  0},
614     { 1,  0,  0,  0},
615     { 0,  0,  0, -1},
616     { 1,  0,  0, -1}
617 };
618
619 const int8_t ff_silk_pitch_offset_mbwb10ms[12][2] = {
620     { 0,  0},
621     { 0,  1},
622     { 1,  0},
623     {-1,  1},
624     { 1, -1},
625     {-1,  2},
626     { 2, -1},
627     {-2,  2},
628     { 2, -2},
629     {-2,  3},
630     { 3, -2},
631     {-3,  3}
632 };
633
634 const int8_t ff_silk_pitch_offset_mbwb20ms[34][4] = {
635     { 0,  0,  0,  0},
636     { 0,  0,  1,  1},
637     { 1,  1,  0,  0},
638     {-1,  0,  0,  0},
639     { 0,  0,  0,  1},
640     { 1,  0,  0,  0},
641     {-1,  0,  0,  1},
642     { 0,  0,  0, -1},
643     {-1,  0,  1,  2},
644     { 1,  0,  0, -1},
645     {-2, -1,  1,  2},
646     { 2,  1,  0, -1},
647     {-2,  0,  0,  2},
648     {-2,  0,  1,  3},
649     { 2,  1, -1, -2},
650     {-3, -1,  1,  3},
651     { 2,  0,  0, -2},
652     { 3,  1,  0, -2},
653     {-3, -1,  2,  4},
654     {-4, -1,  1,  4},
655     { 3,  1, -1, -3},
656     {-4, -1,  2,  5},
657     { 4,  2, -1, -3},
658     { 4,  1, -1, -4},
659     {-5, -1,  2,  6},
660     { 5,  2, -1, -4},
661     {-6, -2,  2,  6},
662     {-5, -2,  2,  5},
663     { 6,  2, -1, -5},
664     {-7, -2,  3,  8},
665     { 6,  2, -2, -6},
666     { 5,  2, -2, -5},
667     { 8,  3, -2, -7},
668     {-9, -3,  3,  9}
669 };
670
671 const int8_t ff_silk_ltp_filter0_taps[8][5] = {
672     {  4,   6,  24,   7,   5},
673     {  0,   0,   2,   0,   0},
674     { 12,  28,  41,  13,  -4},
675     { -9,  15,  42,  25,  14},
676     {  1,  -2,  62,  41,  -9},
677     {-10,  37,  65,  -4,   3},
678     { -6,   4,  66,   7,  -8},
679     { 16,  14,  38,  -3,  33}
680 };
681
682 const int8_t ff_silk_ltp_filter1_taps[16][5] = {
683     { 13,  22,  39,  23,  12},
684     { -1,  36,  64,  27,  -6},
685     { -7,  10,  55,  43,  17},
686     {  1,   1,   8,   1,   1},
687     {  6, -11,  74,  53,  -9},
688     {-12,  55,  76, -12,   8},
689     { -3,   3,  93,  27,  -4},
690     { 26,  39,  59,   3,  -8},
691     {  2,   0,  77,  11,   9},
692     { -8,  22,  44,  -6,   7},
693     { 40,   9,  26,   3,   9},
694     { -7,  20, 101,  -7,   4},
695     {  3,  -8,  42,  26,   0},
696     {-15,  33,  68,   2,  23},
697     { -2,  55,  46,  -2,  15},
698     {  3,  -1,  21,  16,  41}
699 };
700
701 const int8_t ff_silk_ltp_filter2_taps[32][5] = {
702     { -6,  27,  61,  39,   5},
703     {-11,  42,  88,   4,   1},
704     { -2,  60,  65,   6,  -4},
705     { -1,  -5,  73,  56,   1},
706     { -9,  19,  94,  29,  -9},
707     {  0,  12,  99,   6,   4},
708     {  8, -19, 102,  46, -13},
709     {  3,   2,  13,   3,   2},
710     {  9, -21,  84,  72, -18},
711     {-11,  46, 104, -22,   8},
712     { 18,  38,  48,  23,   0},
713     {-16,  70,  83, -21,  11},
714     {  5, -11, 117,  22,  -8},
715     { -6,  23, 117, -12,   3},
716     {  3,  -8,  95,  28,   4},
717     {-10,  15,  77,  60, -15},
718     { -1,   4, 124,   2,  -4},
719     {  3,  38,  84,  24, -25},
720     {  2,  13,  42,  13,  31},
721     { 21,  -4,  56,  46,  -1},
722     { -1,  35,  79, -13,  19},
723     { -7,  65,  88,  -9, -14},
724     { 20,   4,  81,  49, -29},
725     { 20,   0,  75,   3, -17},
726     {  5,  -9,  44,  92,  -8},
727     {  1,  -3,  22,  69,  31},
728     { -6,  95,  41, -12,   5},
729     { 39,  67,  16,  -4,   1},
730     {  0,  -6, 120,  55, -36},
731     {-13,  44, 122,   4, -24},
732     { 81,   5,  11,   3,   7},
733     {  2,   0,   9,  10,  88}
734 };
735
736 const uint16_t ff_silk_ltp_scale_factor[] = {15565, 12288, 8192};
737
738 const uint8_t ff_silk_shell_blocks[3][2] = {
739     { 5, 10}, // NB
740     { 8, 15}, // MB
741     {10, 20}  // WB
742 };
743
744 const uint8_t ff_silk_quant_offset[2][2] = { /* (0.23) */
745     {25, 60}, // Inactive or Unvoiced
746     { 8, 25}  // Voiced
747 };
748
749 const int ff_silk_stereo_interp_len[3] = {
750     64, 96, 128
751 };
752
753 const uint16_t ff_celt_model_tapset[] = { 4, 2, 3, 4 };
754
755 const uint16_t ff_celt_model_spread[] = { 32, 7, 9, 30, 32 };
756
757 const uint16_t ff_celt_model_alloc_trim[] = {
758     128,   2,   4,   9,  19,  41,  87, 109, 119, 124, 126, 128
759 };
760
761 const uint16_t ff_celt_model_energy_small[] = { 4, 2, 3, 4 };
762
763 const uint8_t ff_celt_freq_bands[] = { /* in steps of 200Hz */
764     0,  1,  2,  3,  4,  5,  6,  7,  8, 10, 12, 14, 16, 20, 24, 28, 34, 40, 48, 60, 78, 100
765 };
766
767 const uint8_t ff_celt_freq_range[] = {
768     1,  1,  1,  1,  1,  1,  1,  1,  2,  2,  2,  2,  4,  4,  4,  6,  6,  8, 12, 18, 22
769 };
770
771 const uint8_t ff_celt_log_freq_range[] = {
772     0,  0,  0,  0,  0,  0,  0,  0,  8,  8,  8,  8, 16, 16, 16, 21, 21, 24, 29, 34, 36
773 };
774
775 const int8_t ff_celt_tf_select[4][2][2][2] = {
776     { { { 0, -1 }, { 0, -1 } }, { { 0, -1 }, { 0, -1 } } },
777     { { { 0, -1 }, { 0, -2 } }, { { 1,  0 }, { 1, -1 } } },
778     { { { 0, -2 }, { 0, -3 } }, { { 2,  0 }, { 1, -1 } } },
779     { { { 0, -2 }, { 0, -3 } }, { { 3,  0 }, { 1, -1 } } }
780 };
781
782 const float ff_celt_mean_energy[] = {
783     6.437500f, 6.250000f, 5.750000f, 5.312500f, 5.062500f,
784     4.812500f, 4.500000f, 4.375000f, 4.875000f, 4.687500f,
785     4.562500f, 4.437500f, 4.875000f, 4.625000f, 4.312500f,
786     4.500000f, 4.375000f, 4.625000f, 4.750000f, 4.437500f,
787     3.750000f, 3.750000f, 3.750000f, 3.750000f, 3.750000f
788 };
789
790 const float ff_celt_alpha_coef[] = {
791     29440.0f/32768.0f,    26112.0f/32768.0f,    21248.0f/32768.0f,    16384.0f/32768.0f
792 };
793
794 const float ff_celt_beta_coef[] = { /* TODO: precompute 1 minus this if the code ends up neater */
795     30147.0f/32768.0f,    22282.0f/32768.0f,    12124.0f/32768.0f,     6554.0f/32768.0f
796 };
797
798 const uint8_t ff_celt_coarse_energy_dist[4][2][42] = {
799     {
800         {       // 120-sample inter
801              72, 127,  65, 129,  66, 128,  65, 128,  64, 128,  62, 128,  64, 128,
802              64, 128,  92,  78,  92,  79,  92,  78,  90,  79, 116,  41, 115,  40,
803             114,  40, 132,  26, 132,  26, 145,  17, 161,  12, 176,  10, 177,  11
804         }, {    // 120-sample intra
805              24, 179,  48, 138,  54, 135,  54, 132,  53, 134,  56, 133,  55, 132,
806              55, 132,  61, 114,  70,  96,  74,  88,  75,  88,  87,  74,  89,  66,
807              91,  67, 100,  59, 108,  50, 120,  40, 122,  37,  97,  43,  78,  50
808         }
809     }, {
810         {       // 240-sample inter
811              83,  78,  84,  81,  88,  75,  86,  74,  87,  71,  90,  73,  93,  74,
812              93,  74, 109,  40, 114,  36, 117,  34, 117,  34, 143,  17, 145,  18,
813             146,  19, 162,  12, 165,  10, 178,   7, 189,   6, 190,   8, 177,   9
814         }, {    // 240-sample intra
815              23, 178,  54, 115,  63, 102,  66,  98,  69,  99,  74,  89,  71,  91,
816              73,  91,  78,  89,  86,  80,  92,  66,  93,  64, 102,  59, 103,  60,
817             104,  60, 117,  52, 123,  44, 138,  35, 133,  31,  97,  38,  77,  45
818         }
819     }, {
820         {       // 480-sample inter
821              61,  90,  93,  60, 105,  42, 107,  41, 110,  45, 116,  38, 113,  38,
822             112,  38, 124,  26, 132,  27, 136,  19, 140,  20, 155,  14, 159,  16,
823             158,  18, 170,  13, 177,  10, 187,   8, 192,   6, 175,   9, 159,  10
824         }, {    // 480-sample intra
825              21, 178,  59, 110,  71,  86,  75,  85,  84,  83,  91,  66,  88,  73,
826              87,  72,  92,  75,  98,  72, 105,  58, 107,  54, 115,  52, 114,  55,
827             112,  56, 129,  51, 132,  40, 150,  33, 140,  29,  98,  35,  77,  42
828         }
829     }, {
830         {       // 960-sample inter
831              42, 121,  96,  66, 108,  43, 111,  40, 117,  44, 123,  32, 120,  36,
832             119,  33, 127,  33, 134,  34, 139,  21, 147,  23, 152,  20, 158,  25,
833             154,  26, 166,  21, 173,  16, 184,  13, 184,  10, 150,  13, 139,  15
834         }, {    // 960-sample intra
835              22, 178,  63, 114,  74,  82,  84,  83,  92,  82, 103,  62,  96,  72,
836              96,  67, 101,  73, 107,  72, 113,  55, 118,  52, 125,  52, 118,  52,
837             117,  55, 135,  49, 137,  39, 157,  32, 145,  29,  97,  33,  77,  40
838         }
839     }
840 };
841
842 const uint8_t ff_celt_static_alloc[11][21] = {  /* 1/32 bit/sample */
843     {   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0 },
844     {  90,  80,  75,  69,  63,  56,  49,  40,  34,  29,  20,  18,  10,   0,   0,   0,   0,   0,   0,   0,   0 },
845     { 110, 100,  90,  84,  78,  71,  65,  58,  51,  45,  39,  32,  26,  20,  12,   0,   0,   0,   0,   0,   0 },
846     { 118, 110, 103,  93,  86,  80,  75,  70,  65,  59,  53,  47,  40,  31,  23,  15,   4,   0,   0,   0,   0 },
847     { 126, 119, 112, 104,  95,  89,  83,  78,  72,  66,  60,  54,  47,  39,  32,  25,  17,  12,   1,   0,   0 },
848     { 134, 127, 120, 114, 103,  97,  91,  85,  78,  72,  66,  60,  54,  47,  41,  35,  29,  23,  16,  10,   1 },
849     { 144, 137, 130, 124, 113, 107, 101,  95,  88,  82,  76,  70,  64,  57,  51,  45,  39,  33,  26,  15,   1 },
850     { 152, 145, 138, 132, 123, 117, 111, 105,  98,  92,  86,  80,  74,  67,  61,  55,  49,  43,  36,  20,   1 },
851     { 162, 155, 148, 142, 133, 127, 121, 115, 108, 102,  96,  90,  84,  77,  71,  65,  59,  53,  46,  30,   1 },
852     { 172, 165, 158, 152, 143, 137, 131, 125, 118, 112, 106, 100,  94,  87,  81,  75,  69,  63,  56,  45,  20 },
853     { 200, 200, 200, 200, 200, 200, 200, 200, 198, 193, 188, 183, 178, 173, 168, 163, 158, 153, 148, 129, 104 }
854 };
855
856 const uint8_t ff_celt_static_caps[4][2][21] = {
857     {       // 120-sample
858         {224, 224, 224, 224, 224, 224, 224, 224, 160, 160,
859          160, 160, 185, 185, 185, 178, 178, 168, 134,  61,  37},
860         {224, 224, 224, 224, 224, 224, 224, 224, 240, 240,
861          240, 240, 207, 207, 207, 198, 198, 183, 144,  66,  40},
862     }, {    // 240-sample
863         {160, 160, 160, 160, 160, 160, 160, 160, 185, 185,
864          185, 185, 193, 193, 193, 183, 183, 172, 138,  64,  38},
865         {240, 240, 240, 240, 240, 240, 240, 240, 207, 207,
866          207, 207, 204, 204, 204, 193, 193, 180, 143,  66,  40},
867     }, {    // 480-sample
868         {185, 185, 185, 185, 185, 185, 185, 185, 193, 193,
869          193, 193, 193, 193, 193, 183, 183, 172, 138,  65,  39},
870         {207, 207, 207, 207, 207, 207, 207, 207, 204, 204,
871          204, 204, 201, 201, 201, 188, 188, 176, 141,  66,  40},
872     }, {    // 960-sample
873         {193, 193, 193, 193, 193, 193, 193, 193, 193, 193,
874          193, 193, 194, 194, 194, 184, 184, 173, 139,  65,  39},
875         {204, 204, 204, 204, 204, 204, 204, 204, 201, 201,
876          201, 201, 198, 198, 198, 187, 187, 175, 140,  66,  40}
877     }
878 };
879
880 const uint8_t ff_celt_cache_bits[392] = {
881     40, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
882     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
883     7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 40, 15, 23, 28,
884     31, 34, 36, 38, 39, 41, 42, 43, 44, 45, 46, 47, 47, 49, 50,
885     51, 52, 53, 54, 55, 55, 57, 58, 59, 60, 61, 62, 63, 63, 65,
886     66, 67, 68, 69, 70, 71, 71, 40, 20, 33, 41, 48, 53, 57, 61,
887     64, 66, 69, 71, 73, 75, 76, 78, 80, 82, 85, 87, 89, 91, 92,
888     94, 96, 98, 101, 103, 105, 107, 108, 110, 112, 114, 117, 119, 121, 123,
889     124, 126, 128, 40, 23, 39, 51, 60, 67, 73, 79, 83, 87, 91, 94,
890     97, 100, 102, 105, 107, 111, 115, 118, 121, 124, 126, 129, 131, 135, 139,
891     142, 145, 148, 150, 153, 155, 159, 163, 166, 169, 172, 174, 177, 179, 35,
892     28, 49, 65, 78, 89, 99, 107, 114, 120, 126, 132, 136, 141, 145, 149,
893     153, 159, 165, 171, 176, 180, 185, 189, 192, 199, 205, 211, 216, 220, 225,
894     229, 232, 239, 245, 251, 21, 33, 58, 79, 97, 112, 125, 137, 148, 157,
895     166, 174, 182, 189, 195, 201, 207, 217, 227, 235, 243, 251, 17, 35, 63,
896     86, 106, 123, 139, 152, 165, 177, 187, 197, 206, 214, 222, 230, 237, 250,
897     25, 31, 55, 75, 91, 105, 117, 128, 138, 146, 154, 161, 168, 174, 180,
898     185, 190, 200, 208, 215, 222, 229, 235, 240, 245, 255, 16, 36, 65, 89,
899     110, 128, 144, 159, 173, 185, 196, 207, 217, 226, 234, 242, 250, 11, 41,
900     74, 103, 128, 151, 172, 191, 209, 225, 241, 255, 9, 43, 79, 110, 138,
901     163, 186, 207, 227, 246, 12, 39, 71, 99, 123, 144, 164, 182, 198, 214,
902     228, 241, 253, 9, 44, 81, 113, 142, 168, 192, 214, 235, 255, 7, 49,
903     90, 127, 160, 191, 220, 247, 6, 51, 95, 134, 170, 203, 234, 7, 47,
904     87, 123, 155, 184, 212, 237, 6, 52, 97, 137, 174, 208, 240, 5, 57,
905     106, 151, 192, 231, 5, 59, 111, 158, 202, 243, 5, 55, 103, 147, 187,
906     224, 5, 60, 113, 161, 206, 248, 4, 65, 122, 175, 224, 4, 67, 127,
907     182, 234
908 };
909
910 const int16_t ff_celt_cache_index[105] = {
911     -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 41, 41, 41,
912     82, 82, 123, 164, 200, 222, 0, 0, 0, 0, 0, 0, 0, 0, 41,
913     41, 41, 41, 123, 123, 123, 164, 164, 240, 266, 283, 295, 41, 41, 41,
914     41, 41, 41, 41, 41, 123, 123, 123, 123, 240, 240, 240, 266, 266, 305,
915     318, 328, 336, 123, 123, 123, 123, 123, 123, 123, 123, 240, 240, 240, 240,
916     305, 305, 305, 318, 318, 343, 351, 358, 364, 240, 240, 240, 240, 240, 240,
917     240, 240, 305, 305, 305, 305, 343, 343, 343, 351, 351, 370, 376, 382, 387,
918 };
919
920 const uint8_t ff_celt_log2_frac[] = {
921     0, 8, 13, 16, 19, 21, 23, 24, 26, 27, 28, 29, 30, 31, 32, 32, 33, 34, 34, 35, 36, 36, 37, 37
922 };
923
924 const uint8_t ff_celt_bit_interleave[] = {
925     0, 1, 1, 1, 2, 3, 3, 3, 2, 3, 3, 3, 2, 3, 3, 3
926 };
927
928 const uint8_t ff_celt_bit_deinterleave[] = {
929     0x00, 0x03, 0x0C, 0x0F, 0x30, 0x33, 0x3C, 0x3F,
930     0xC0, 0xC3, 0xCC, 0xCF, 0xF0, 0xF3, 0xFC, 0xFF
931 };
932
933 const uint8_t ff_celt_hadamard_ordery[] = {
934     1,   0,
935     3,   0,  2,  1,
936     7,   0,  4,  3,  6,  1,  5,  2,
937     15,  0,  8,  7, 12,  3, 11,  4, 14,  1,  9,  6, 13,  2, 10,  5
938 };
939
940 const uint16_t ff_celt_qn_exp2[] = {
941     16384, 17866, 19483, 21247, 23170, 25267, 27554, 30048
942 };
943
944 const uint32_t ff_celt_pvq_u[1272] = {
945     /* N = 0, K = 0...176 */
946     1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
947     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
948     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
949     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
950     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
951     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
952     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
953     /* N = 1, K = 1...176 */
954     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
955     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
956     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
957     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
958     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
959     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
960     1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
961     /* N = 2, K = 2...176 */
962     3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41,
963     43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79,
964     81, 83, 85, 87, 89, 91, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 113,
965     115, 117, 119, 121, 123, 125, 127, 129, 131, 133, 135, 137, 139, 141, 143,
966     145, 147, 149, 151, 153, 155, 157, 159, 161, 163, 165, 167, 169, 171, 173,
967     175, 177, 179, 181, 183, 185, 187, 189, 191, 193, 195, 197, 199, 201, 203,
968     205, 207, 209, 211, 213, 215, 217, 219, 221, 223, 225, 227, 229, 231, 233,
969     235, 237, 239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 259, 261, 263,
970     265, 267, 269, 271, 273, 275, 277, 279, 281, 283, 285, 287, 289, 291, 293,
971     295, 297, 299, 301, 303, 305, 307, 309, 311, 313, 315, 317, 319, 321, 323,
972     325, 327, 329, 331, 333, 335, 337, 339, 341, 343, 345, 347, 349, 351,
973     /* N = 3, K = 3...176 */
974     13, 25, 41, 61, 85, 113, 145, 181, 221, 265, 313, 365, 421, 481, 545, 613,
975     685, 761, 841, 925, 1013, 1105, 1201, 1301, 1405, 1513, 1625, 1741, 1861,
976     1985, 2113, 2245, 2381, 2521, 2665, 2813, 2965, 3121, 3281, 3445, 3613, 3785,
977     3961, 4141, 4325, 4513, 4705, 4901, 5101, 5305, 5513, 5725, 5941, 6161, 6385,
978     6613, 6845, 7081, 7321, 7565, 7813, 8065, 8321, 8581, 8845, 9113, 9385, 9661,
979     9941, 10225, 10513, 10805, 11101, 11401, 11705, 12013, 12325, 12641, 12961,
980     13285, 13613, 13945, 14281, 14621, 14965, 15313, 15665, 16021, 16381, 16745,
981     17113, 17485, 17861, 18241, 18625, 19013, 19405, 19801, 20201, 20605, 21013,
982     21425, 21841, 22261, 22685, 23113, 23545, 23981, 24421, 24865, 25313, 25765,
983     26221, 26681, 27145, 27613, 28085, 28561, 29041, 29525, 30013, 30505, 31001,
984     31501, 32005, 32513, 33025, 33541, 34061, 34585, 35113, 35645, 36181, 36721,
985     37265, 37813, 38365, 38921, 39481, 40045, 40613, 41185, 41761, 42341, 42925,
986     43513, 44105, 44701, 45301, 45905, 46513, 47125, 47741, 48361, 48985, 49613,
987     50245, 50881, 51521, 52165, 52813, 53465, 54121, 54781, 55445, 56113, 56785,
988     57461, 58141, 58825, 59513, 60205, 60901, 61601,
989     /* N = 4, K = 4...176 */
990     63, 129, 231, 377, 575, 833, 1159, 1561, 2047, 2625, 3303, 4089, 4991, 6017,
991     7175, 8473, 9919, 11521, 13287, 15225, 17343, 19649, 22151, 24857, 27775,
992     30913, 34279, 37881, 41727, 45825, 50183, 54809, 59711, 64897, 70375, 76153,
993     82239, 88641, 95367, 102425, 109823, 117569, 125671, 134137, 142975, 152193,
994     161799, 171801, 182207, 193025, 204263, 215929, 228031, 240577, 253575,
995     267033, 280959, 295361, 310247, 325625, 341503, 357889, 374791, 392217,
996     410175, 428673, 447719, 467321, 487487, 508225, 529543, 551449, 573951,
997     597057, 620775, 645113, 670079, 695681, 721927, 748825, 776383, 804609,
998     833511, 863097, 893375, 924353, 956039, 988441, 1021567, 1055425, 1090023,
999     1125369, 1161471, 1198337, 1235975, 1274393, 1313599, 1353601, 1394407,
1000     1436025, 1478463, 1521729, 1565831, 1610777, 1656575, 1703233, 1750759,
1001     1799161, 1848447, 1898625, 1949703, 2001689, 2054591, 2108417, 2163175,
1002     2218873, 2275519, 2333121, 2391687, 2451225, 2511743, 2573249, 2635751,
1003     2699257, 2763775, 2829313, 2895879, 2963481, 3032127, 3101825, 3172583,
1004     3244409, 3317311, 3391297, 3466375, 3542553, 3619839, 3698241, 3777767,
1005     3858425, 3940223, 4023169, 4107271, 4192537, 4278975, 4366593, 4455399,
1006     4545401, 4636607, 4729025, 4822663, 4917529, 5013631, 5110977, 5209575,
1007     5309433, 5410559, 5512961, 5616647, 5721625, 5827903, 5935489, 6044391,
1008     6154617, 6266175, 6379073, 6493319, 6608921, 6725887, 6844225, 6963943,
1009     7085049, 7207551,
1010     /* N = 5, K = 5...176 */
1011     321, 681, 1289, 2241, 3649, 5641, 8361, 11969, 16641, 22569, 29961, 39041,
1012     50049, 63241, 78889, 97281, 118721, 143529, 172041, 204609, 241601, 283401,
1013     330409, 383041, 441729, 506921, 579081, 658689, 746241, 842249, 947241,
1014     1061761, 1186369, 1321641, 1468169, 1626561, 1797441, 1981449, 2179241,
1015     2391489, 2618881, 2862121, 3121929, 3399041, 3694209, 4008201, 4341801,
1016     4695809, 5071041, 5468329, 5888521, 6332481, 6801089, 7295241, 7815849,
1017     8363841, 8940161, 9545769, 10181641, 10848769, 11548161, 12280841, 13047849,
1018     13850241, 14689089, 15565481, 16480521, 17435329, 18431041, 19468809,
1019     20549801, 21675201, 22846209, 24064041, 25329929, 26645121, 28010881,
1020     29428489, 30899241, 32424449, 34005441, 35643561, 37340169, 39096641,
1021     40914369, 42794761, 44739241, 46749249, 48826241, 50971689, 53187081,
1022     55473921, 57833729, 60268041, 62778409, 65366401, 68033601, 70781609,
1023     73612041, 76526529, 79526721, 82614281, 85790889, 89058241, 92418049,
1024     95872041, 99421961, 103069569, 106816641, 110664969, 114616361, 118672641,
1025     122835649, 127107241, 131489289, 135983681, 140592321, 145317129, 150160041,
1026     155123009, 160208001, 165417001, 170752009, 176215041, 181808129, 187533321,
1027     193392681, 199388289, 205522241, 211796649, 218213641, 224775361, 231483969,
1028     238341641, 245350569, 252512961, 259831041, 267307049, 274943241, 282741889,
1029     290705281, 298835721, 307135529, 315607041, 324252609, 333074601, 342075401,
1030     351257409, 360623041, 370174729, 379914921, 389846081, 399970689, 410291241,
1031     420810249, 431530241, 442453761, 453583369, 464921641, 476471169, 488234561,
1032     500214441, 512413449, 524834241, 537479489, 550351881, 563454121, 576788929,
1033     590359041, 604167209, 618216201, 632508801,
1034     /* N = 6, K = 6...96 (technically V(109,5) fits in 32 bits, but that can't be
1035      achieved by splitting an Opus band) */
1036     1683, 3653, 7183, 13073, 22363, 36365, 56695, 85305, 124515, 177045, 246047,
1037     335137, 448427, 590557, 766727, 982729, 1244979, 1560549, 1937199, 2383409,
1038     2908411, 3522221, 4235671, 5060441, 6009091, 7095093, 8332863, 9737793,
1039     11326283, 13115773, 15124775, 17372905, 19880915, 22670725, 25765455,
1040     29189457, 32968347, 37129037, 41699767, 46710137, 52191139, 58175189,
1041     64696159, 71789409, 79491819, 87841821, 96879431, 106646281, 117185651,
1042     128542501, 140763503, 153897073, 167993403, 183104493, 199284183, 216588185,
1043     235074115, 254801525, 275831935, 298228865, 322057867, 347386557, 374284647,
1044     402823977, 433078547, 465124549, 499040399, 534906769, 572806619, 612825229,
1045     655050231, 699571641, 746481891, 795875861, 847850911, 902506913, 959946283,
1046     1020274013, 1083597703, 1150027593, 1219676595, 1292660325, 1369097135,
1047     1449108145, 1532817275, 1620351277, 1711839767, 1807415257, 1907213187,
1048     2011371957, 2120032959,
1049     /* N = 7, K = 7...54 (technically V(60,6) fits in 32 bits, but that can't be
1050      achieved by splitting an Opus band) */
1051     8989, 19825, 40081, 75517, 134245, 227305, 369305, 579125, 880685, 1303777,
1052     1884961, 2668525, 3707509, 5064793, 6814249, 9041957, 11847485, 15345233,
1053     19665841, 24957661, 31388293, 39146185, 48442297, 59511829, 72616013,
1054     88043969, 106114625, 127178701, 151620757, 179861305, 212358985, 249612805,
1055     292164445, 340600625, 395555537, 457713341, 527810725, 606639529, 695049433,
1056     793950709, 904317037, 1027188385, 1163673953, 1314955181, 1482288821,
1057     1667010073, 1870535785, 2094367717,
1058     /* N = 8, K = 8...37 (technically V(40,7) fits in 32 bits, but that can't be
1059      achieved by splitting an Opus band) */
1060     48639, 108545, 224143, 433905, 795455, 1392065, 2340495, 3800305, 5984767,
1061     9173505, 13726991, 20103025, 28875327, 40754369, 56610575, 77500017,
1062     104692735, 139703809, 184327311, 240673265, 311207743, 398796225, 506750351,
1063     638878193, 799538175, 993696769, 1226990095, 1505789553, 1837271615,
1064     2229491905,
1065     /* N = 9, K = 9...28 (technically V(29,8) fits in 32 bits, but that can't be
1066      achieved by splitting an Opus band) */
1067     265729, 598417, 1256465, 2485825, 4673345, 8405905, 14546705, 24331777,
1068     39490049, 62390545, 96220561, 145198913, 214828609, 312193553, 446304145,
1069     628496897, 872893441, 1196924561, 1621925137, 2173806145,
1070     /* N = 10, K = 10...24 */
1071     1462563, 3317445, 7059735, 14218905, 27298155, 50250765, 89129247, 152951073,
1072     254831667, 413442773, 654862247, 1014889769, 1541911931, 2300409629,
1073     3375210671,
1074     /* N = 11, K = 11...19 (technically V(20,10) fits in 32 bits, but that can't be
1075      achieved by splitting an Opus band) */
1076     8097453, 18474633, 39753273, 81270333, 158819253, 298199265, 540279585,
1077     948062325, 1616336765,
1078     /* N = 12, K = 12...18 */
1079     45046719, 103274625, 224298231, 464387817, 921406335, 1759885185,
1080     3248227095,
1081     /* N = 13, K = 13...16 */
1082     251595969, 579168825, 1267854873, 2653649025,
1083     /* N = 14, K = 14 */
1084     1409933619
1085 };
1086
1087 DECLARE_ALIGNED(32, const float, ff_celt_window)[120] = {
1088     6.7286966e-05f, 0.00060551348f, 0.0016815970f, 0.0032947962f, 0.0054439943f,
1089     0.0081276923f, 0.011344001f, 0.015090633f, 0.019364886f, 0.024163635f,
1090     0.029483315f, 0.035319905f, 0.041668911f, 0.048525347f, 0.055883718f,
1091     0.063737999f, 0.072081616f, 0.080907428f, 0.090207705f, 0.099974111f,
1092     0.11019769f, 0.12086883f, 0.13197729f, 0.14351214f, 0.15546177f,
1093     0.16781389f, 0.18055550f, 0.19367290f, 0.20715171f, 0.22097682f,
1094     0.23513243f, 0.24960208f, 0.26436860f, 0.27941419f, 0.29472040f,
1095     0.31026818f, 0.32603788f, 0.34200931f, 0.35816177f, 0.37447407f,
1096     0.39092462f, 0.40749142f, 0.42415215f, 0.44088423f, 0.45766484f,
1097     0.47447104f, 0.49127978f, 0.50806798f, 0.52481261f, 0.54149077f,
1098     0.55807973f, 0.57455701f, 0.59090049f, 0.60708841f, 0.62309951f,
1099     0.63891306f, 0.65450896f, 0.66986776f, 0.68497077f, 0.69980010f,
1100     0.71433873f, 0.72857055f, 0.74248043f, 0.75605424f, 0.76927895f,
1101     0.78214257f, 0.79463430f, 0.80674445f, 0.81846456f, 0.82978733f,
1102     0.84070669f, 0.85121779f, 0.86131698f, 0.87100183f, 0.88027111f,
1103     0.88912479f, 0.89756398f, 0.90559094f, 0.91320904f, 0.92042270f,
1104     0.92723738f, 0.93365955f, 0.93969656f, 0.94535671f, 0.95064907f,
1105     0.95558353f, 0.96017067f, 0.96442171f, 0.96834849f, 0.97196334f,
1106     0.97527906f, 0.97830883f, 0.98106616f, 0.98356480f, 0.98581869f,
1107     0.98784191f, 0.98964856f, 0.99125274f, 0.99266849f, 0.99390969f,
1108     0.99499004f, 0.99592297f, 0.99672162f, 0.99739874f, 0.99796667f,
1109     0.99843728f, 0.99882195f, 0.99913147f, 0.99937606f, 0.99956527f,
1110     0.99970802f, 0.99981248f, 0.99988613f, 0.99993565f, 0.99996697f,
1111     0.99998518f, 0.99999457f, 0.99999859f, 0.99999982f, 1.0000000f,
1112 };
1113
1114 /* square of the window, used for the postfilter */
1115 const float ff_celt_window2[120] = {
1116     4.5275357e-09f, 3.66647e-07f, 2.82777e-06f, 1.08557e-05f, 2.96371e-05f, 6.60594e-05f,
1117     0.000128686f, 0.000227727f, 0.000374999f, 0.000583881f, 0.000869266f, 0.0012475f,
1118     0.0017363f, 0.00235471f, 0.00312299f, 0.00406253f, 0.00519576f, 0.00654601f,
1119     0.00813743f, 0.00999482f, 0.0121435f, 0.0146093f, 0.017418f, 0.0205957f, 0.0241684f,
1120     0.0281615f, 0.0326003f, 0.0375092f, 0.0429118f, 0.0488308f, 0.0552873f, 0.0623012f,
1121     0.0698908f, 0.0780723f, 0.0868601f, 0.0962664f, 0.106301f, 0.11697f, 0.12828f,
1122     0.140231f, 0.152822f, 0.166049f, 0.179905f, 0.194379f, 0.209457f, 0.225123f, 0.241356f,
1123     0.258133f, 0.275428f, 0.293212f, 0.311453f, 0.330116f, 0.349163f, 0.368556f, 0.388253f,
1124     0.40821f, 0.428382f, 0.448723f, 0.469185f, 0.48972f, 0.51028f, 0.530815f, 0.551277f,
1125     0.571618f, 0.59179f, 0.611747f, 0.631444f, 0.650837f, 0.669884f, 0.688547f, 0.706788f,
1126     0.724572f, 0.741867f, 0.758644f, 0.774877f, 0.790543f, 0.805621f, 0.820095f, 0.833951f,
1127     0.847178f, 0.859769f, 0.87172f, 0.88303f, 0.893699f, 0.903734f, 0.91314f, 0.921928f,
1128     0.930109f, 0.937699f, 0.944713f, 0.951169f, 0.957088f, 0.962491f, 0.9674f, 0.971838f,
1129     0.975832f, 0.979404f, 0.982582f, 0.985391f, 0.987857f, 0.990005f, 0.991863f, 0.993454f,
1130     0.994804f, 0.995937f, 0.996877f, 0.997645f, 0.998264f, 0.998753f, 0.999131f, 0.999416f,
1131     0.999625f, 0.999772f, 0.999871f, 0.999934f, 0.99997f, 0.999989f, 0.999997f, 0.99999964f, 1.0f,
1132 };
1133
1134 const uint32_t * const ff_celt_pvq_u_row[15] = {
1135     ff_celt_pvq_u +    0, ff_celt_pvq_u +  176, ff_celt_pvq_u +  351,
1136     ff_celt_pvq_u +  525, ff_celt_pvq_u +  698, ff_celt_pvq_u +  870,
1137     ff_celt_pvq_u + 1041, ff_celt_pvq_u + 1131, ff_celt_pvq_u + 1178,
1138     ff_celt_pvq_u + 1207, ff_celt_pvq_u + 1226, ff_celt_pvq_u + 1240,
1139     ff_celt_pvq_u + 1248, ff_celt_pvq_u + 1254, ff_celt_pvq_u + 1257
1140 };