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