FFmpeg
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
opustab.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 "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 
122  256, 68, 80, 101, 118, 137, 159, 189, 213, 230, 246, 256
123 };
124 
126  256, 91, 137, 176, 195, 209, 221, 229, 236, 242, 247, 252, 256
127 };
128 
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 
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 
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 
392  {179, 138, 140, 148, 151, 149, 153, 151, 163},
393  {116, 67, 82, 59, 92, 72, 100, 89, 92}
394 };
395 
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 
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 
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 
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 
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 
550  0, 9, 6, 3, 4, 5, 8, 1, 2, 7
551 };
552 
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 
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 
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 
768  1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 4, 4, 4, 6, 6, 8, 12, 18, 22
769 };
770 
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 
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 
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 
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 
925  0, 1, 1, 1, 2, 3, 3, 3, 2, 3, 3, 3, 2, 3, 3, 3
926 };
927 
929  0x00, 0x03, 0x0C, 0x0F, 0x30, 0x33, 0x3C, 0x3F,
930  0xC0, 0xC3, 0xCC, 0xCF, 0xF0, 0xF3, 0xFC, 0xFF
931 };
932 
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 };
const uint8_t ff_celt_cache_bits[392]
Definition: opustab.c:880
const uint32_t *const ff_celt_pvq_u_row[15]
Definition: opustab.c:1134
const uint8_t ff_celt_hadamard_ordery[]
Definition: opustab.c:933
const int8_t ff_silk_ltp_filter1_taps[16][5]
Definition: opustab.c:682
const uint8_t ff_silk_shell_blocks[3][2]
Definition: opustab.c:738
const uint16_t ff_silk_model_ltp_scale_index[]
Definition: opustab.c:150
const uint8_t ff_celt_coarse_energy_dist[4][2][42]
Definition: opustab.c:798
const uint8_t ff_silk_lsf_codebook_wb[32][16]
Definition: opustab.c:506
const uint8_t ff_celt_log_freq_range[]
Definition: opustab.c:771
const uint16_t ff_silk_pitch_max_lag[]
Definition: opustab.c:597
const uint16_t ff_silk_model_exc_rate[2][10]
Definition: opustab.c:154
const uint8_t ff_silk_lsf_pred_weights_nbmb[2][9]
Definition: opustab.c:391
const uint16_t ff_silk_model_pitch_contour_mbwb10ms[]
Definition: opustab.c:125
const uint16_t ff_silk_model_frame_type_active[]
Definition: opustab.c:42
const uint8_t ff_celt_freq_bands[]
Definition: opustab.c:763
const uint16_t ff_silk_model_mid_only[]
Definition: opustab.c:38
const uint16_t ff_silk_model_pitch_lowbits_wb[]
Definition: opustab.c:112
const uint16_t ff_silk_model_ltp_filter1_sel[]
Definition: opustab.c:141
const int16_t ff_silk_stereo_weights[]
Definition: opustab.c:316
const uint8_t ff_celt_bit_deinterleave[]
Definition: opustab.c:928
const uint16_t ff_celt_qn_exp2[]
Definition: opustab.c:940
const uint16_t ff_silk_model_lsf_interpolation_offset[]
Definition: opustab.c:101
const uint8_t ff_celt_band_end[]
Definition: opustab.c:27
const uint16_t ff_silk_model_lsf_s2[32][10]
Definition: opustab.c:77
const uint16_t ff_silk_model_pulse_location[4][168]
Definition: opustab.c:184
const int8_t ff_silk_pitch_offset_mbwb20ms[34][4]
Definition: opustab.c:634
const uint16_t ff_silk_model_gain_delta[]
Definition: opustab.c:52
uint8_t
const uint8_t ff_silk_lsf_ordering_nbmb[]
Definition: opustab.c:549
const int8_t ff_silk_pitch_offset_nb20ms[11][4]
Definition: opustab.c:605
#define DECLARE_ALIGNED(n, t, v)
Declare a variable that is aligned in memory.
Definition: mem.h:104
const uint16_t ff_silk_model_excitation_lsb[]
Definition: opustab.c:256
const uint16_t ff_silk_model_lsf_s1[2][2][33]
Definition: opustab.c:57
const uint8_t ff_celt_log2_frac[]
Definition: opustab.c:920
const int16_t ff_celt_cache_index[105]
Definition: opustab.c:910
const uint8_t ff_silk_lsf_s2_model_sel_nbmb[32][10]
Definition: opustab.c:321
const uint16_t ff_silk_model_pitch_contour_nb10ms[]
Definition: opustab.c:119
const uint16_t ff_silk_model_pitch_delta[]
Definition: opustab.c:114
const uint8_t ff_silk_lsf_codebook_nbmb[32][10]
Definition: opustab.c:471
const uint16_t ff_silk_model_gain_lowbits[]
Definition: opustab.c:50
const uint8_t ff_silk_lsf_pred_weights_wb[2][15]
Definition: opustab.c:396
const uint8_t ff_silk_lsf_weight_sel_wb[32][15]
Definition: opustab.c:436
const int8_t ff_silk_pitch_offset_mbwb10ms[12][2]
Definition: opustab.c:619
const uint16_t ff_silk_model_ltp_filter2_sel[]
Definition: opustab.c:145
const uint8_t ff_silk_lsf_s2_model_sel_wb[32][16]
Definition: opustab.c:356
const int8_t ff_silk_pitch_offset_nb10ms[3][2]
Definition: opustab.c:599
const uint16_t ff_silk_model_excitation_sign[3][2][7][3]
Definition: opustab.c:258
const uint8_t ff_silk_quant_offset[2][2]
Definition: opustab.c:744
const uint16_t ff_silk_lsf_min_spacing_nbmb[]
Definition: opustab.c:541
const uint16_t ff_silk_model_pitch_contour_mbwb20ms[]
Definition: opustab.c:129
const int8_t ff_celt_tf_select[4][2][2][2]
Definition: opustab.c:775
const uint16_t ff_silk_model_stereo_s3[]
Definition: opustab.c:36
const uint16_t ff_silk_model_ltp_filter0_sel[]
Definition: opustab.c:137
const uint16_t ff_silk_model_stereo_s1[]
Definition: opustab.c:29
const uint16_t ff_silk_model_pitch_highbits[]
Definition: opustab.c:103
const int8_t ff_silk_ltp_filter0_taps[8][5]
Definition: opustab.c:671
const uint16_t ff_silk_model_pulse_count[11][19]
Definition: opustab.c:159
const uint16_t ff_silk_pitch_min_lag[]
Definition: opustab.c:595
const uint8_t ff_celt_freq_range[]
Definition: opustab.c:767
const uint16_t ff_silk_model_pitch_lowbits_nb[]
Definition: opustab.c:108
const uint8_t ff_opus_default_coupled_streams[]
Definition: opustab.c:25
const float ff_celt_window[120]
Definition: opustab.c:1087
const uint8_t ff_silk_lsf_weight_sel_nbmb[32][9]
Definition: opustab.c:401
const uint8_t ff_celt_static_caps[4][2][21]
Definition: opustab.c:856
const uint16_t ff_silk_model_frame_type_inactive[]
Definition: opustab.c:40
const uint16_t ff_celt_model_spread[]
Definition: opustab.c:755
const float ff_celt_window2[120]
Definition: opustab.c:1115
const int8_t ff_silk_ltp_filter2_taps[32][5]
Definition: opustab.c:701
const uint16_t ff_silk_lsf_min_spacing_wb[]
Definition: opustab.c:545
const uint8_t ff_celt_static_alloc[11][21]
Definition: opustab.c:842
const int ff_silk_stereo_interp_len[3]
Definition: opustab.c:749
const uint8_t ff_silk_lsf_ordering_wb[]
Definition: opustab.c:553
const uint16_t ff_silk_model_pitch_contour_nb20ms[]
Definition: opustab.c:121
const uint16_t ff_celt_model_energy_small[]
Definition: opustab.c:761
const uint16_t ff_silk_model_ltp_filter[]
Definition: opustab.c:135
const uint16_t ff_celt_model_alloc_trim[]
Definition: opustab.c:757
const uint32_t ff_celt_pvq_u[1272]
Definition: opustab.c:944
const float ff_celt_beta_coef[]
Definition: opustab.c:794
const int16_t ff_silk_cosine[]
Definition: opustab.c:557
const uint16_t ff_silk_pitch_scale[]
Definition: opustab.c:593
const uint16_t ff_silk_model_gain_highbits[3][9]
Definition: opustab.c:44
const uint8_t ff_celt_bit_interleave[]
Definition: opustab.c:924
const float ff_celt_alpha_coef[]
Definition: opustab.c:790
const uint16_t ff_silk_model_pitch_lowbits_mb[]
Definition: opustab.c:110
const float ff_celt_mean_energy[]
Definition: opustab.c:782
const uint16_t ff_silk_ltp_scale_factor[]
Definition: opustab.c:736
const uint16_t ff_celt_model_tapset[]
Definition: opustab.c:753
const uint16_t ff_silk_model_stereo_s2[]
Definition: opustab.c:34
const uint16_t ff_silk_model_lsf_s2_ext[]
Definition: opustab.c:99
const uint16_t ff_silk_model_lcg_seed[]
Definition: opustab.c:152