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