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