FFmpeg
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 /* Positive - increased freqeuency resolution (only possible on transients)
776  * Negative - increased time resolution */
777 const int8_t ff_celt_tf_select[4][2][2][2] = {
778  /* OFF ON Transient frame */
779  /* OFF ON OFF ON TF select flag */
780  /* OFF ON OFF ON OFF ON OFF ON TF change flag */
781  { { { 0, -1 }, { 0, -1 } }, { { 0, -1 }, { 0, -1 } } }, /* 120 */
782  { { { 0, -1 }, { 0, -2 } }, { { 1, 0 }, { 1, -1 } } }, /* 240 */
783  { { { 0, -2 }, { 0, -3 } }, { { 2, 0 }, { 1, -1 } } }, /* 480 */
784  { { { 0, -2 }, { 0, -3 } }, { { 3, 0 }, { 1, -1 } } } /* 960 */
785 };
786 
787 const float ff_celt_mean_energy[] = {
788  6.437500f, 6.250000f, 5.750000f, 5.312500f, 5.062500f,
789  4.812500f, 4.500000f, 4.375000f, 4.875000f, 4.687500f,
790  4.562500f, 4.437500f, 4.875000f, 4.625000f, 4.312500f,
791  4.500000f, 4.375000f, 4.625000f, 4.750000f, 4.437500f,
792  3.750000f, 3.750000f, 3.750000f, 3.750000f, 3.750000f
793 };
794 
795 const float ff_celt_alpha_coef[] = {
796  29440.0f/32768.0f, 26112.0f/32768.0f, 21248.0f/32768.0f, 16384.0f/32768.0f
797 };
798 
799 const float ff_celt_beta_coef[] = {
800  1.0f - (30147.0f/32768.0f), 1.0f - (22282.0f/32768.0f), 1.0f - (12124.0f/32768.0f), 1.0f - (6554.0f/32768.0f),
801 };
802 
804  {
805  { // 120-sample inter
806  72, 127, 65, 129, 66, 128, 65, 128, 64, 128, 62, 128, 64, 128,
807  64, 128, 92, 78, 92, 79, 92, 78, 90, 79, 116, 41, 115, 40,
808  114, 40, 132, 26, 132, 26, 145, 17, 161, 12, 176, 10, 177, 11
809  }, { // 120-sample intra
810  24, 179, 48, 138, 54, 135, 54, 132, 53, 134, 56, 133, 55, 132,
811  55, 132, 61, 114, 70, 96, 74, 88, 75, 88, 87, 74, 89, 66,
812  91, 67, 100, 59, 108, 50, 120, 40, 122, 37, 97, 43, 78, 50
813  }
814  }, {
815  { // 240-sample inter
816  83, 78, 84, 81, 88, 75, 86, 74, 87, 71, 90, 73, 93, 74,
817  93, 74, 109, 40, 114, 36, 117, 34, 117, 34, 143, 17, 145, 18,
818  146, 19, 162, 12, 165, 10, 178, 7, 189, 6, 190, 8, 177, 9
819  }, { // 240-sample intra
820  23, 178, 54, 115, 63, 102, 66, 98, 69, 99, 74, 89, 71, 91,
821  73, 91, 78, 89, 86, 80, 92, 66, 93, 64, 102, 59, 103, 60,
822  104, 60, 117, 52, 123, 44, 138, 35, 133, 31, 97, 38, 77, 45
823  }
824  }, {
825  { // 480-sample inter
826  61, 90, 93, 60, 105, 42, 107, 41, 110, 45, 116, 38, 113, 38,
827  112, 38, 124, 26, 132, 27, 136, 19, 140, 20, 155, 14, 159, 16,
828  158, 18, 170, 13, 177, 10, 187, 8, 192, 6, 175, 9, 159, 10
829  }, { // 480-sample intra
830  21, 178, 59, 110, 71, 86, 75, 85, 84, 83, 91, 66, 88, 73,
831  87, 72, 92, 75, 98, 72, 105, 58, 107, 54, 115, 52, 114, 55,
832  112, 56, 129, 51, 132, 40, 150, 33, 140, 29, 98, 35, 77, 42
833  }
834  }, {
835  { // 960-sample inter
836  42, 121, 96, 66, 108, 43, 111, 40, 117, 44, 123, 32, 120, 36,
837  119, 33, 127, 33, 134, 34, 139, 21, 147, 23, 152, 20, 158, 25,
838  154, 26, 166, 21, 173, 16, 184, 13, 184, 10, 150, 13, 139, 15
839  }, { // 960-sample intra
840  22, 178, 63, 114, 74, 82, 84, 83, 92, 82, 103, 62, 96, 72,
841  96, 67, 101, 73, 107, 72, 113, 55, 118, 52, 125, 52, 118, 52,
842  117, 55, 135, 49, 137, 39, 157, 32, 145, 29, 97, 33, 77, 40
843  }
844  }
845 };
846 
847 const uint8_t ff_celt_static_alloc[11][21] = { /* 1/32 bit/sample */
848  { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
849  { 90, 80, 75, 69, 63, 56, 49, 40, 34, 29, 20, 18, 10, 0, 0, 0, 0, 0, 0, 0, 0 },
850  { 110, 100, 90, 84, 78, 71, 65, 58, 51, 45, 39, 32, 26, 20, 12, 0, 0, 0, 0, 0, 0 },
851  { 118, 110, 103, 93, 86, 80, 75, 70, 65, 59, 53, 47, 40, 31, 23, 15, 4, 0, 0, 0, 0 },
852  { 126, 119, 112, 104, 95, 89, 83, 78, 72, 66, 60, 54, 47, 39, 32, 25, 17, 12, 1, 0, 0 },
853  { 134, 127, 120, 114, 103, 97, 91, 85, 78, 72, 66, 60, 54, 47, 41, 35, 29, 23, 16, 10, 1 },
854  { 144, 137, 130, 124, 113, 107, 101, 95, 88, 82, 76, 70, 64, 57, 51, 45, 39, 33, 26, 15, 1 },
855  { 152, 145, 138, 132, 123, 117, 111, 105, 98, 92, 86, 80, 74, 67, 61, 55, 49, 43, 36, 20, 1 },
856  { 162, 155, 148, 142, 133, 127, 121, 115, 108, 102, 96, 90, 84, 77, 71, 65, 59, 53, 46, 30, 1 },
857  { 172, 165, 158, 152, 143, 137, 131, 125, 118, 112, 106, 100, 94, 87, 81, 75, 69, 63, 56, 45, 20 },
858  { 200, 200, 200, 200, 200, 200, 200, 200, 198, 193, 188, 183, 178, 173, 168, 163, 158, 153, 148, 129, 104 }
859 };
860 
861 const uint8_t ff_celt_static_caps[4][2][21] = {
862  { // 120-sample
863  {224, 224, 224, 224, 224, 224, 224, 224, 160, 160,
864  160, 160, 185, 185, 185, 178, 178, 168, 134, 61, 37},
865  {224, 224, 224, 224, 224, 224, 224, 224, 240, 240,
866  240, 240, 207, 207, 207, 198, 198, 183, 144, 66, 40},
867  }, { // 240-sample
868  {160, 160, 160, 160, 160, 160, 160, 160, 185, 185,
869  185, 185, 193, 193, 193, 183, 183, 172, 138, 64, 38},
870  {240, 240, 240, 240, 240, 240, 240, 240, 207, 207,
871  207, 207, 204, 204, 204, 193, 193, 180, 143, 66, 40},
872  }, { // 480-sample
873  {185, 185, 185, 185, 185, 185, 185, 185, 193, 193,
874  193, 193, 193, 193, 193, 183, 183, 172, 138, 65, 39},
875  {207, 207, 207, 207, 207, 207, 207, 207, 204, 204,
876  204, 204, 201, 201, 201, 188, 188, 176, 141, 66, 40},
877  }, { // 960-sample
878  {193, 193, 193, 193, 193, 193, 193, 193, 193, 193,
879  193, 193, 194, 194, 194, 184, 184, 173, 139, 65, 39},
880  {204, 204, 204, 204, 204, 204, 204, 204, 201, 201,
881  201, 201, 198, 198, 198, 187, 187, 175, 140, 66, 40}
882  }
883 };
884 
886  40, 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, 7, 7, 7, 7,
888  7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 40, 15, 23, 28,
889  31, 34, 36, 38, 39, 41, 42, 43, 44, 45, 46, 47, 47, 49, 50,
890  51, 52, 53, 54, 55, 55, 57, 58, 59, 60, 61, 62, 63, 63, 65,
891  66, 67, 68, 69, 70, 71, 71, 40, 20, 33, 41, 48, 53, 57, 61,
892  64, 66, 69, 71, 73, 75, 76, 78, 80, 82, 85, 87, 89, 91, 92,
893  94, 96, 98, 101, 103, 105, 107, 108, 110, 112, 114, 117, 119, 121, 123,
894  124, 126, 128, 40, 23, 39, 51, 60, 67, 73, 79, 83, 87, 91, 94,
895  97, 100, 102, 105, 107, 111, 115, 118, 121, 124, 126, 129, 131, 135, 139,
896  142, 145, 148, 150, 153, 155, 159, 163, 166, 169, 172, 174, 177, 179, 35,
897  28, 49, 65, 78, 89, 99, 107, 114, 120, 126, 132, 136, 141, 145, 149,
898  153, 159, 165, 171, 176, 180, 185, 189, 192, 199, 205, 211, 216, 220, 225,
899  229, 232, 239, 245, 251, 21, 33, 58, 79, 97, 112, 125, 137, 148, 157,
900  166, 174, 182, 189, 195, 201, 207, 217, 227, 235, 243, 251, 17, 35, 63,
901  86, 106, 123, 139, 152, 165, 177, 187, 197, 206, 214, 222, 230, 237, 250,
902  25, 31, 55, 75, 91, 105, 117, 128, 138, 146, 154, 161, 168, 174, 180,
903  185, 190, 200, 208, 215, 222, 229, 235, 240, 245, 255, 16, 36, 65, 89,
904  110, 128, 144, 159, 173, 185, 196, 207, 217, 226, 234, 242, 250, 11, 41,
905  74, 103, 128, 151, 172, 191, 209, 225, 241, 255, 9, 43, 79, 110, 138,
906  163, 186, 207, 227, 246, 12, 39, 71, 99, 123, 144, 164, 182, 198, 214,
907  228, 241, 253, 9, 44, 81, 113, 142, 168, 192, 214, 235, 255, 7, 49,
908  90, 127, 160, 191, 220, 247, 6, 51, 95, 134, 170, 203, 234, 7, 47,
909  87, 123, 155, 184, 212, 237, 6, 52, 97, 137, 174, 208, 240, 5, 57,
910  106, 151, 192, 231, 5, 59, 111, 158, 202, 243, 5, 55, 103, 147, 187,
911  224, 5, 60, 113, 161, 206, 248, 4, 65, 122, 175, 224, 4, 67, 127,
912  182, 234
913 };
914 
915 const int16_t ff_celt_cache_index[105] = {
916  -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 41, 41, 41,
917  82, 82, 123, 164, 200, 222, 0, 0, 0, 0, 0, 0, 0, 0, 41,
918  41, 41, 41, 123, 123, 123, 164, 164, 240, 266, 283, 295, 41, 41, 41,
919  41, 41, 41, 41, 41, 123, 123, 123, 123, 240, 240, 240, 266, 266, 305,
920  318, 328, 336, 123, 123, 123, 123, 123, 123, 123, 123, 240, 240, 240, 240,
921  305, 305, 305, 318, 318, 343, 351, 358, 364, 240, 240, 240, 240, 240, 240,
922  240, 240, 305, 305, 305, 305, 343, 343, 343, 351, 351, 370, 376, 382, 387,
923 };
924 
926  0, 8, 13, 16, 19, 21, 23, 24, 26, 27, 28, 29, 30, 31, 32, 32, 33, 34, 34, 35, 36, 36, 37, 37
927 };
928 
930  0, 1, 1, 1, 2, 3, 3, 3, 2, 3, 3, 3, 2, 3, 3, 3
931 };
932 
934  0x00, 0x03, 0x0C, 0x0F, 0x30, 0x33, 0x3C, 0x3F,
935  0xC0, 0xC3, 0xCC, 0xCF, 0xF0, 0xF3, 0xFC, 0xFF
936 };
937 
939  1, 0,
940  3, 0, 2, 1,
941  7, 0, 4, 3, 6, 1, 5, 2,
942  15, 0, 8, 7, 12, 3, 11, 4, 14, 1, 9, 6, 13, 2, 10, 5,
943  0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
944 };
945 
946 const uint16_t ff_celt_qn_exp2[] = {
947  16384, 17866, 19483, 21247, 23170, 25267, 27554, 30048
948 };
949 
950 const uint32_t ff_celt_pvq_u[1272] = {
951  /* N = 0, K = 0...176 */
952  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,
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, 0, 0, 0, 0, 0,
958  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
959  /* N = 1, K = 1...176 */
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, 1, 1, 1, 1, 1, 1,
966  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
967  /* N = 2, K = 2...176 */
968  3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41,
969  43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79,
970  81, 83, 85, 87, 89, 91, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 113,
971  115, 117, 119, 121, 123, 125, 127, 129, 131, 133, 135, 137, 139, 141, 143,
972  145, 147, 149, 151, 153, 155, 157, 159, 161, 163, 165, 167, 169, 171, 173,
973  175, 177, 179, 181, 183, 185, 187, 189, 191, 193, 195, 197, 199, 201, 203,
974  205, 207, 209, 211, 213, 215, 217, 219, 221, 223, 225, 227, 229, 231, 233,
975  235, 237, 239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 259, 261, 263,
976  265, 267, 269, 271, 273, 275, 277, 279, 281, 283, 285, 287, 289, 291, 293,
977  295, 297, 299, 301, 303, 305, 307, 309, 311, 313, 315, 317, 319, 321, 323,
978  325, 327, 329, 331, 333, 335, 337, 339, 341, 343, 345, 347, 349, 351,
979  /* N = 3, K = 3...176 */
980  13, 25, 41, 61, 85, 113, 145, 181, 221, 265, 313, 365, 421, 481, 545, 613,
981  685, 761, 841, 925, 1013, 1105, 1201, 1301, 1405, 1513, 1625, 1741, 1861,
982  1985, 2113, 2245, 2381, 2521, 2665, 2813, 2965, 3121, 3281, 3445, 3613, 3785,
983  3961, 4141, 4325, 4513, 4705, 4901, 5101, 5305, 5513, 5725, 5941, 6161, 6385,
984  6613, 6845, 7081, 7321, 7565, 7813, 8065, 8321, 8581, 8845, 9113, 9385, 9661,
985  9941, 10225, 10513, 10805, 11101, 11401, 11705, 12013, 12325, 12641, 12961,
986  13285, 13613, 13945, 14281, 14621, 14965, 15313, 15665, 16021, 16381, 16745,
987  17113, 17485, 17861, 18241, 18625, 19013, 19405, 19801, 20201, 20605, 21013,
988  21425, 21841, 22261, 22685, 23113, 23545, 23981, 24421, 24865, 25313, 25765,
989  26221, 26681, 27145, 27613, 28085, 28561, 29041, 29525, 30013, 30505, 31001,
990  31501, 32005, 32513, 33025, 33541, 34061, 34585, 35113, 35645, 36181, 36721,
991  37265, 37813, 38365, 38921, 39481, 40045, 40613, 41185, 41761, 42341, 42925,
992  43513, 44105, 44701, 45301, 45905, 46513, 47125, 47741, 48361, 48985, 49613,
993  50245, 50881, 51521, 52165, 52813, 53465, 54121, 54781, 55445, 56113, 56785,
994  57461, 58141, 58825, 59513, 60205, 60901, 61601,
995  /* N = 4, K = 4...176 */
996  63, 129, 231, 377, 575, 833, 1159, 1561, 2047, 2625, 3303, 4089, 4991, 6017,
997  7175, 8473, 9919, 11521, 13287, 15225, 17343, 19649, 22151, 24857, 27775,
998  30913, 34279, 37881, 41727, 45825, 50183, 54809, 59711, 64897, 70375, 76153,
999  82239, 88641, 95367, 102425, 109823, 117569, 125671, 134137, 142975, 152193,
1000  161799, 171801, 182207, 193025, 204263, 215929, 228031, 240577, 253575,
1001  267033, 280959, 295361, 310247, 325625, 341503, 357889, 374791, 392217,
1002  410175, 428673, 447719, 467321, 487487, 508225, 529543, 551449, 573951,
1003  597057, 620775, 645113, 670079, 695681, 721927, 748825, 776383, 804609,
1004  833511, 863097, 893375, 924353, 956039, 988441, 1021567, 1055425, 1090023,
1005  1125369, 1161471, 1198337, 1235975, 1274393, 1313599, 1353601, 1394407,
1006  1436025, 1478463, 1521729, 1565831, 1610777, 1656575, 1703233, 1750759,
1007  1799161, 1848447, 1898625, 1949703, 2001689, 2054591, 2108417, 2163175,
1008  2218873, 2275519, 2333121, 2391687, 2451225, 2511743, 2573249, 2635751,
1009  2699257, 2763775, 2829313, 2895879, 2963481, 3032127, 3101825, 3172583,
1010  3244409, 3317311, 3391297, 3466375, 3542553, 3619839, 3698241, 3777767,
1011  3858425, 3940223, 4023169, 4107271, 4192537, 4278975, 4366593, 4455399,
1012  4545401, 4636607, 4729025, 4822663, 4917529, 5013631, 5110977, 5209575,
1013  5309433, 5410559, 5512961, 5616647, 5721625, 5827903, 5935489, 6044391,
1014  6154617, 6266175, 6379073, 6493319, 6608921, 6725887, 6844225, 6963943,
1015  7085049, 7207551,
1016  /* N = 5, K = 5...176 */
1017  321, 681, 1289, 2241, 3649, 5641, 8361, 11969, 16641, 22569, 29961, 39041,
1018  50049, 63241, 78889, 97281, 118721, 143529, 172041, 204609, 241601, 283401,
1019  330409, 383041, 441729, 506921, 579081, 658689, 746241, 842249, 947241,
1020  1061761, 1186369, 1321641, 1468169, 1626561, 1797441, 1981449, 2179241,
1021  2391489, 2618881, 2862121, 3121929, 3399041, 3694209, 4008201, 4341801,
1022  4695809, 5071041, 5468329, 5888521, 6332481, 6801089, 7295241, 7815849,
1023  8363841, 8940161, 9545769, 10181641, 10848769, 11548161, 12280841, 13047849,
1024  13850241, 14689089, 15565481, 16480521, 17435329, 18431041, 19468809,
1025  20549801, 21675201, 22846209, 24064041, 25329929, 26645121, 28010881,
1026  29428489, 30899241, 32424449, 34005441, 35643561, 37340169, 39096641,
1027  40914369, 42794761, 44739241, 46749249, 48826241, 50971689, 53187081,
1028  55473921, 57833729, 60268041, 62778409, 65366401, 68033601, 70781609,
1029  73612041, 76526529, 79526721, 82614281, 85790889, 89058241, 92418049,
1030  95872041, 99421961, 103069569, 106816641, 110664969, 114616361, 118672641,
1031  122835649, 127107241, 131489289, 135983681, 140592321, 145317129, 150160041,
1032  155123009, 160208001, 165417001, 170752009, 176215041, 181808129, 187533321,
1033  193392681, 199388289, 205522241, 211796649, 218213641, 224775361, 231483969,
1034  238341641, 245350569, 252512961, 259831041, 267307049, 274943241, 282741889,
1035  290705281, 298835721, 307135529, 315607041, 324252609, 333074601, 342075401,
1036  351257409, 360623041, 370174729, 379914921, 389846081, 399970689, 410291241,
1037  420810249, 431530241, 442453761, 453583369, 464921641, 476471169, 488234561,
1038  500214441, 512413449, 524834241, 537479489, 550351881, 563454121, 576788929,
1039  590359041, 604167209, 618216201, 632508801,
1040  /* N = 6, K = 6...96 (technically V(109,5) fits in 32 bits, but that can't be
1041  achieved by splitting an Opus band) */
1042  1683, 3653, 7183, 13073, 22363, 36365, 56695, 85305, 124515, 177045, 246047,
1043  335137, 448427, 590557, 766727, 982729, 1244979, 1560549, 1937199, 2383409,
1044  2908411, 3522221, 4235671, 5060441, 6009091, 7095093, 8332863, 9737793,
1045  11326283, 13115773, 15124775, 17372905, 19880915, 22670725, 25765455,
1046  29189457, 32968347, 37129037, 41699767, 46710137, 52191139, 58175189,
1047  64696159, 71789409, 79491819, 87841821, 96879431, 106646281, 117185651,
1048  128542501, 140763503, 153897073, 167993403, 183104493, 199284183, 216588185,
1049  235074115, 254801525, 275831935, 298228865, 322057867, 347386557, 374284647,
1050  402823977, 433078547, 465124549, 499040399, 534906769, 572806619, 612825229,
1051  655050231, 699571641, 746481891, 795875861, 847850911, 902506913, 959946283,
1052  1020274013, 1083597703, 1150027593, 1219676595, 1292660325, 1369097135,
1053  1449108145, 1532817275, 1620351277, 1711839767, 1807415257, 1907213187,
1054  2011371957, 2120032959,
1055  /* N = 7, K = 7...54 (technically V(60,6) fits in 32 bits, but that can't be
1056  achieved by splitting an Opus band) */
1057  8989, 19825, 40081, 75517, 134245, 227305, 369305, 579125, 880685, 1303777,
1058  1884961, 2668525, 3707509, 5064793, 6814249, 9041957, 11847485, 15345233,
1059  19665841, 24957661, 31388293, 39146185, 48442297, 59511829, 72616013,
1060  88043969, 106114625, 127178701, 151620757, 179861305, 212358985, 249612805,
1061  292164445, 340600625, 395555537, 457713341, 527810725, 606639529, 695049433,
1062  793950709, 904317037, 1027188385, 1163673953, 1314955181, 1482288821,
1063  1667010073, 1870535785, 2094367717,
1064  /* N = 8, K = 8...37 (technically V(40,7) fits in 32 bits, but that can't be
1065  achieved by splitting an Opus band) */
1066  48639, 108545, 224143, 433905, 795455, 1392065, 2340495, 3800305, 5984767,
1067  9173505, 13726991, 20103025, 28875327, 40754369, 56610575, 77500017,
1068  104692735, 139703809, 184327311, 240673265, 311207743, 398796225, 506750351,
1069  638878193, 799538175, 993696769, 1226990095, 1505789553, 1837271615,
1070  2229491905,
1071  /* N = 9, K = 9...28 (technically V(29,8) fits in 32 bits, but that can't be
1072  achieved by splitting an Opus band) */
1073  265729, 598417, 1256465, 2485825, 4673345, 8405905, 14546705, 24331777,
1074  39490049, 62390545, 96220561, 145198913, 214828609, 312193553, 446304145,
1075  628496897, 872893441, 1196924561, 1621925137, 2173806145,
1076  /* N = 10, K = 10...24 */
1077  1462563, 3317445, 7059735, 14218905, 27298155, 50250765, 89129247, 152951073,
1078  254831667, 413442773, 654862247, 1014889769, 1541911931, 2300409629,
1079  3375210671,
1080  /* N = 11, K = 11...19 (technically V(20,10) fits in 32 bits, but that can't be
1081  achieved by splitting an Opus band) */
1082  8097453, 18474633, 39753273, 81270333, 158819253, 298199265, 540279585,
1083  948062325, 1616336765,
1084  /* N = 12, K = 12...18 */
1085  45046719, 103274625, 224298231, 464387817, 921406335, 1759885185,
1086  3248227095,
1087  /* N = 13, K = 13...16 */
1088  251595969, 579168825, 1267854873, 2653649025,
1089  /* N = 14, K = 14 */
1090  1409933619
1091 };
1092 
1093 const float ff_celt_postfilter_taps[3][3] = {
1094  { 0.3066406250f, 0.2170410156f, 0.1296386719f },
1095  { 0.4638671875f, 0.2680664062f, 0.0 },
1096  { 0.7998046875f, 0.1000976562f, 0.0 }
1097 };
1098 
1099 DECLARE_ALIGNED(32, static const float, ff_celt_window_padded)[136] = {
1100  0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f,
1101  0.00000000f, 0.00000000f, 0.00000000f, 0.00000000f,
1102  6.7286966e-05f, 0.00060551348f, 0.0016815970f, 0.0032947962f, 0.0054439943f,
1103  0.0081276923f, 0.011344001f, 0.015090633f, 0.019364886f, 0.024163635f,
1104  0.029483315f, 0.035319905f, 0.041668911f, 0.048525347f, 0.055883718f,
1105  0.063737999f, 0.072081616f, 0.080907428f, 0.090207705f, 0.099974111f,
1106  0.11019769f, 0.12086883f, 0.13197729f, 0.14351214f, 0.15546177f,
1107  0.16781389f, 0.18055550f, 0.19367290f, 0.20715171f, 0.22097682f,
1108  0.23513243f, 0.24960208f, 0.26436860f, 0.27941419f, 0.29472040f,
1109  0.31026818f, 0.32603788f, 0.34200931f, 0.35816177f, 0.37447407f,
1110  0.39092462f, 0.40749142f, 0.42415215f, 0.44088423f, 0.45766484f,
1111  0.47447104f, 0.49127978f, 0.50806798f, 0.52481261f, 0.54149077f,
1112  0.55807973f, 0.57455701f, 0.59090049f, 0.60708841f, 0.62309951f,
1113  0.63891306f, 0.65450896f, 0.66986776f, 0.68497077f, 0.69980010f,
1114  0.71433873f, 0.72857055f, 0.74248043f, 0.75605424f, 0.76927895f,
1115  0.78214257f, 0.79463430f, 0.80674445f, 0.81846456f, 0.82978733f,
1116  0.84070669f, 0.85121779f, 0.86131698f, 0.87100183f, 0.88027111f,
1117  0.88912479f, 0.89756398f, 0.90559094f, 0.91320904f, 0.92042270f,
1118  0.92723738f, 0.93365955f, 0.93969656f, 0.94535671f, 0.95064907f,
1119  0.95558353f, 0.96017067f, 0.96442171f, 0.96834849f, 0.97196334f,
1120  0.97527906f, 0.97830883f, 0.98106616f, 0.98356480f, 0.98581869f,
1121  0.98784191f, 0.98964856f, 0.99125274f, 0.99266849f, 0.99390969f,
1122  0.99499004f, 0.99592297f, 0.99672162f, 0.99739874f, 0.99796667f,
1123  0.99843728f, 0.99882195f, 0.99913147f, 0.99937606f, 0.99956527f,
1124  0.99970802f, 0.99981248f, 0.99988613f, 0.99993565f, 0.99996697f,
1125  0.99998518f, 0.99999457f, 0.99999859f, 0.99999982f, 1.00000000f,
1126  1.00000000f, 1.00000000f, 1.00000000f, 1.00000000f, 1.00000000f,
1127  1.00000000f, 1.00000000f, 1.00000000f,
1128 };
1129 
1131 
1132 /* square of the window, used for the postfilter */
1133 const float ff_celt_window2[120] = {
1134  4.5275357e-09f, 3.66647e-07f, 2.82777e-06f, 1.08557e-05f, 2.96371e-05f, 6.60594e-05f,
1135  0.000128686f, 0.000227727f, 0.000374999f, 0.000583881f, 0.000869266f, 0.0012475f,
1136  0.0017363f, 0.00235471f, 0.00312299f, 0.00406253f, 0.00519576f, 0.00654601f,
1137  0.00813743f, 0.00999482f, 0.0121435f, 0.0146093f, 0.017418f, 0.0205957f, 0.0241684f,
1138  0.0281615f, 0.0326003f, 0.0375092f, 0.0429118f, 0.0488308f, 0.0552873f, 0.0623012f,
1139  0.0698908f, 0.0780723f, 0.0868601f, 0.0962664f, 0.106301f, 0.11697f, 0.12828f,
1140  0.140231f, 0.152822f, 0.166049f, 0.179905f, 0.194379f, 0.209457f, 0.225123f, 0.241356f,
1141  0.258133f, 0.275428f, 0.293212f, 0.311453f, 0.330116f, 0.349163f, 0.368556f, 0.388253f,
1142  0.40821f, 0.428382f, 0.448723f, 0.469185f, 0.48972f, 0.51028f, 0.530815f, 0.551277f,
1143  0.571618f, 0.59179f, 0.611747f, 0.631444f, 0.650837f, 0.669884f, 0.688547f, 0.706788f,
1144  0.724572f, 0.741867f, 0.758644f, 0.774877f, 0.790543f, 0.805621f, 0.820095f, 0.833951f,
1145  0.847178f, 0.859769f, 0.87172f, 0.88303f, 0.893699f, 0.903734f, 0.91314f, 0.921928f,
1146  0.930109f, 0.937699f, 0.944713f, 0.951169f, 0.957088f, 0.962491f, 0.9674f, 0.971838f,
1147  0.975832f, 0.979404f, 0.982582f, 0.985391f, 0.987857f, 0.990005f, 0.991863f, 0.993454f,
1148  0.994804f, 0.995937f, 0.996877f, 0.997645f, 0.998264f, 0.998753f, 0.999131f, 0.999416f,
1149  0.999625f, 0.999772f, 0.999871f, 0.999934f, 0.99997f, 0.999989f, 0.999997f, 0.99999964f, 1.0f,
1150 };
1151 
1152 const uint32_t * const ff_celt_pvq_u_row[15] = {
1153  ff_celt_pvq_u + 0, ff_celt_pvq_u + 176, ff_celt_pvq_u + 351,
1154  ff_celt_pvq_u + 525, ff_celt_pvq_u + 698, ff_celt_pvq_u + 870,
1155  ff_celt_pvq_u + 1041, ff_celt_pvq_u + 1131, ff_celt_pvq_u + 1178,
1156  ff_celt_pvq_u + 1207, ff_celt_pvq_u + 1226, ff_celt_pvq_u + 1240,
1157  ff_celt_pvq_u + 1248, ff_celt_pvq_u + 1254, ff_celt_pvq_u + 1257
1158 };
ff_celt_cache_bits
const uint8_t ff_celt_cache_bits[392]
Definition: opustab.c:885
ff_silk_model_ltp_filter1_sel
const uint16_t ff_silk_model_ltp_filter1_sel[]
Definition: opustab.c:141
ff_silk_model_mid_only
const uint16_t ff_silk_model_mid_only[]
Definition: opustab.c:38
ff_silk_model_exc_rate
const uint16_t ff_silk_model_exc_rate[2][10]
Definition: opustab.c:154
ff_celt_bit_deinterleave
const uint8_t ff_celt_bit_deinterleave[]
Definition: opustab.c:933
ff_celt_postfilter_taps
const float ff_celt_postfilter_taps[3][3]
Definition: opustab.c:1093
ff_silk_model_lsf_interpolation_offset
const uint16_t ff_silk_model_lsf_interpolation_offset[]
Definition: opustab.c:101
ff_celt_freq_bands
const uint8_t ff_celt_freq_bands[]
Definition: opustab.c:763
ff_silk_model_lsf_s2
const uint16_t ff_silk_model_lsf_s2[32][10]
Definition: opustab.c:77
ff_celt_qn_exp2
const uint16_t ff_celt_qn_exp2[]
Definition: opustab.c:946
ff_silk_model_pitch_contour_mbwb10ms
const uint16_t ff_silk_model_pitch_contour_mbwb10ms[]
Definition: opustab.c:125
ff_celt_window
const float * ff_celt_window
Definition: opustab.c:1130
ff_silk_lsf_ordering_nbmb
const uint8_t ff_silk_lsf_ordering_nbmb[]
Definition: opustab.c:549
ff_silk_pitch_max_lag
const uint16_t ff_silk_pitch_max_lag[]
Definition: opustab.c:597
ff_celt_model_tapset
const uint16_t ff_celt_model_tapset[]
Definition: opustab.c:753
ff_celt_log_freq_range
const uint8_t ff_celt_log_freq_range[]
Definition: opustab.c:771
ff_silk_model_frame_type_active
const uint16_t ff_silk_model_frame_type_active[]
Definition: opustab.c:42
ff_silk_pitch_offset_nb20ms
const int8_t ff_silk_pitch_offset_nb20ms[11][4]
Definition: opustab.c:605
ff_celt_hadamard_order
const uint8_t ff_celt_hadamard_order[]
Definition: opustab.c:938
ff_silk_model_gain_delta
const uint16_t ff_silk_model_gain_delta[]
Definition: opustab.c:52
ff_celt_pvq_u_row
const uint32_t *const ff_celt_pvq_u_row[15]
Definition: opustab.c:1152
ff_silk_model_lsf_s1
const uint16_t ff_silk_model_lsf_s1[2][2][33]
Definition: opustab.c:57
ff_celt_coarse_energy_dist
const uint8_t ff_celt_coarse_energy_dist[4][2][42]
Definition: opustab.c:803
ff_silk_shell_blocks
const uint8_t ff_silk_shell_blocks[3][2]
Definition: opustab.c:738
ff_silk_stereo_weights
const int16_t ff_silk_stereo_weights[]
Definition: opustab.c:316
ff_silk_model_ltp_scale_index
const uint16_t ff_silk_model_ltp_scale_index[]
Definition: opustab.c:150
ff_silk_lsf_codebook_wb
const uint8_t ff_silk_lsf_codebook_wb[32][16]
Definition: opustab.c:506
ff_celt_log2_frac
const uint8_t ff_celt_log2_frac[]
Definition: opustab.c:925
ff_silk_model_pitch_contour_nb10ms
const uint16_t ff_silk_model_pitch_contour_nb10ms[]
Definition: opustab.c:119
ff_silk_model_pulse_location
const uint16_t ff_silk_model_pulse_location[4][168]
Definition: opustab.c:184
ff_silk_pitch_offset_mbwb20ms
const int8_t ff_silk_pitch_offset_mbwb20ms[34][4]
Definition: opustab.c:634
ff_silk_model_excitation_lsb
const uint16_t ff_silk_model_excitation_lsb[]
Definition: opustab.c:256
ff_silk_lsf_s2_model_sel_wb
const uint8_t ff_silk_lsf_s2_model_sel_wb[32][16]
Definition: opustab.c:356
ff_celt_band_end
const uint8_t ff_celt_band_end[]
Definition: opustab.c:27
ff_silk_pitch_offset_mbwb10ms
const int8_t ff_silk_pitch_offset_mbwb10ms[12][2]
Definition: opustab.c:619
f
#define f(width, name)
Definition: cbs_vp9.c:255
ff_silk_lsf_s2_model_sel_nbmb
const uint8_t ff_silk_lsf_s2_model_sel_nbmb[32][10]
Definition: opustab.c:321
ff_celt_cache_index
const int16_t ff_celt_cache_index[105]
Definition: opustab.c:915
ff_silk_model_gain_lowbits
const uint16_t ff_silk_model_gain_lowbits[]
Definition: opustab.c:50
ff_celt_static_caps
const uint8_t ff_celt_static_caps[4][2][21]
Definition: opustab.c:861
ff_silk_model_stereo_s3
const uint16_t ff_silk_model_stereo_s3[]
Definition: opustab.c:36
ff_celt_model_spread
const uint16_t ff_celt_model_spread[]
Definition: opustab.c:755
ff_silk_quant_offset
const uint8_t ff_silk_quant_offset[2][2]
Definition: opustab.c:744
ff_silk_pitch_offset_nb10ms
const int8_t ff_silk_pitch_offset_nb10ms[3][2]
Definition: opustab.c:599
ff_silk_model_ltp_filter2_sel
const uint16_t ff_silk_model_ltp_filter2_sel[]
Definition: opustab.c:145
ff_silk_model_excitation_sign
const uint16_t ff_silk_model_excitation_sign[3][2][7][3]
Definition: opustab.c:258
ff_silk_lsf_min_spacing_nbmb
const uint16_t ff_silk_lsf_min_spacing_nbmb[]
Definition: opustab.c:541
ff_celt_freq_range
const uint8_t ff_celt_freq_range[]
Definition: opustab.c:767
ff_silk_pitch_min_lag
const uint16_t ff_silk_pitch_min_lag[]
Definition: opustab.c:595
ff_silk_lsf_codebook_nbmb
const uint8_t ff_silk_lsf_codebook_nbmb[32][10]
Definition: opustab.c:471
ff_silk_model_pitch_lowbits_nb
const uint16_t ff_silk_model_pitch_lowbits_nb[]
Definition: opustab.c:108
ff_silk_model_pitch_delta
const uint16_t ff_silk_model_pitch_delta[]
Definition: opustab.c:114
ff_silk_model_ltp_filter0_sel
const uint16_t ff_silk_model_ltp_filter0_sel[]
Definition: opustab.c:137
opustab.h
ff_silk_lsf_weight_sel_wb
const uint8_t ff_silk_lsf_weight_sel_wb[32][15]
Definition: opustab.c:436
ff_silk_model_pitch_contour_mbwb20ms
const uint16_t ff_silk_model_pitch_contour_mbwb20ms[]
Definition: opustab.c:129
ff_silk_lsf_ordering_wb
const uint8_t ff_silk_lsf_ordering_wb[]
Definition: opustab.c:553
ff_silk_lsf_pred_weights_wb
const uint8_t ff_silk_lsf_pred_weights_wb[2][15]
Definition: opustab.c:396
ff_celt_window2
const float ff_celt_window2[120]
Definition: opustab.c:1133
ff_silk_model_pitch_highbits
const uint16_t ff_silk_model_pitch_highbits[]
Definition: opustab.c:103
ff_celt_pvq_u
const uint32_t ff_celt_pvq_u[1272]
Definition: opustab.c:950
ff_silk_ltp_filter2_taps
const int8_t ff_silk_ltp_filter2_taps[32][5]
Definition: opustab.c:701
ff_celt_tf_select
const int8_t ff_celt_tf_select[4][2][2][2]
Definition: opustab.c:777
ff_celt_static_alloc
const uint8_t ff_celt_static_alloc[11][21]
Definition: opustab.c:847
ff_celt_beta_coef
const float ff_celt_beta_coef[]
Definition: opustab.c:799
ff_silk_cosine
const int16_t ff_silk_cosine[]
Definition: opustab.c:557
DECLARE_ALIGNED
#define DECLARE_ALIGNED(n, t, v)
Definition: mem.h:112
ff_silk_model_stereo_s1
const uint16_t ff_silk_model_stereo_s1[]
Definition: opustab.c:29
ff_silk_model_pitch_contour_nb20ms
const uint16_t ff_silk_model_pitch_contour_nb20ms[]
Definition: opustab.c:121
ff_silk_ltp_filter0_taps
const int8_t ff_silk_ltp_filter0_taps[8][5]
Definition: opustab.c:671
ff_celt_window_padded
static const float ff_celt_window_padded[136]
Definition: opustab.c:1099
ff_silk_stereo_interp_len
const int ff_silk_stereo_interp_len[3]
Definition: opustab.c:749
ff_silk_model_pulse_count
const uint16_t ff_silk_model_pulse_count[11][19]
Definition: opustab.c:159
uint8_t
uint8_t
Definition: audio_convert.c:194
ff_celt_model_alloc_trim
const uint16_t ff_celt_model_alloc_trim[]
Definition: opustab.c:757
ff_opus_default_coupled_streams
const uint8_t ff_opus_default_coupled_streams[]
Definition: opustab.c:25
ff_silk_model_pitch_lowbits_mb
const uint16_t ff_silk_model_pitch_lowbits_mb[]
Definition: opustab.c:110
ff_silk_lsf_weight_sel_nbmb
const uint8_t ff_silk_lsf_weight_sel_nbmb[32][9]
Definition: opustab.c:401
ff_celt_model_energy_small
const uint16_t ff_celt_model_energy_small[]
Definition: opustab.c:761
ff_silk_model_frame_type_inactive
const uint16_t ff_silk_model_frame_type_inactive[]
Definition: opustab.c:40
ff_silk_model_lsf_s2_ext
const uint16_t ff_silk_model_lsf_s2_ext[]
Definition: opustab.c:99
ff_silk_model_gain_highbits
const uint16_t ff_silk_model_gain_highbits[3][9]
Definition: opustab.c:44
ff_celt_alpha_coef
const float ff_celt_alpha_coef[]
Definition: opustab.c:795
ff_silk_lsf_min_spacing_wb
const uint16_t ff_silk_lsf_min_spacing_wb[]
Definition: opustab.c:545
ff_silk_pitch_scale
const uint16_t ff_silk_pitch_scale[]
Definition: opustab.c:593
ff_silk_ltp_scale_factor
const uint16_t ff_silk_ltp_scale_factor[]
Definition: opustab.c:736
ff_silk_ltp_filter1_taps
const int8_t ff_silk_ltp_filter1_taps[16][5]
Definition: opustab.c:682
ff_silk_lsf_pred_weights_nbmb
const uint8_t ff_silk_lsf_pred_weights_nbmb[2][9]
Definition: opustab.c:391
ff_silk_model_ltp_filter
const uint16_t ff_silk_model_ltp_filter[]
Definition: opustab.c:135
ff_celt_bit_interleave
const uint8_t ff_celt_bit_interleave[]
Definition: opustab.c:929
ff_silk_model_stereo_s2
const uint16_t ff_silk_model_stereo_s2[]
Definition: opustab.c:34
ff_celt_mean_energy
const float ff_celt_mean_energy[]
Definition: opustab.c:787
ff_silk_model_lcg_seed
const uint16_t ff_silk_model_lcg_seed[]
Definition: opustab.c:152
ff_silk_model_pitch_lowbits_wb
const uint16_t ff_silk_model_pitch_lowbits_wb[]
Definition: opustab.c:112