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