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