109 128, 2, 4, 9, 19, 41, 87, 109, 119, 124, 126, 128
115 0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24, 28, 34, 40, 48, 60, 78, 100
119 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 4, 4, 4, 6, 6, 8, 12, 18, 22
123 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 8, 16, 16, 16, 21, 21, 24, 29, 34, 36
127 { { { 0, -1 }, { 0, -1 } }, { { 0, -1 }, { 0, -1 } } },
128 { { { 0, -1 }, { 0, -2 } }, { { 1, 0 }, { 1, -1 } } },
129 { { { 0, -2 }, { 0, -3 } }, { { 2, 0 }, { 1, -1 } } },
130 { { { 0, -2 }, { 0, -3 } }, { { 3, 0 }, { 1, -1 } } }
134 6.437500f, 6.250000f, 5.750000f, 5.312500f, 5.062500f,
135 4.812500f, 4.500000f, 4.375000f, 4.875000f, 4.687500f,
136 4.562500f, 4.437500f, 4.875000f, 4.625000f, 4.312500f,
137 4.500000f, 4.375000f, 4.625000f, 4.750000f, 4.437500f,
138 3.750000f, 3.750000f, 3.750000f, 3.750000f, 3.750000f
142 29440.0f/32768.0f, 26112.0f/32768.0f, 21248.0f/32768.0f, 16384.0f/32768.0f
146 30147.0f/32768.0f, 22282.0f/32768.0f, 12124.0f/32768.0f, 6554.0f/32768.0f
152 72, 127, 65, 129, 66, 128, 65, 128, 64, 128, 62, 128, 64, 128,
153 64, 128, 92, 78, 92, 79, 92, 78, 90, 79, 116, 41, 115, 40,
154 114, 40, 132, 26, 132, 26, 145, 17, 161, 12, 176, 10, 177, 11
156 24, 179, 48, 138, 54, 135, 54, 132, 53, 134, 56, 133, 55, 132,
157 55, 132, 61, 114, 70, 96, 74, 88, 75, 88, 87, 74, 89, 66,
158 91, 67, 100, 59, 108, 50, 120, 40, 122, 37, 97, 43, 78, 50
162 83, 78, 84, 81, 88, 75, 86, 74, 87, 71, 90, 73, 93, 74,
163 93, 74, 109, 40, 114, 36, 117, 34, 117, 34, 143, 17, 145, 18,
164 146, 19, 162, 12, 165, 10, 178, 7, 189, 6, 190, 8, 177, 9
166 23, 178, 54, 115, 63, 102, 66, 98, 69, 99, 74, 89, 71, 91,
167 73, 91, 78, 89, 86, 80, 92, 66, 93, 64, 102, 59, 103, 60,
168 104, 60, 117, 52, 123, 44, 138, 35, 133, 31, 97, 38, 77, 45
172 61, 90, 93, 60, 105, 42, 107, 41, 110, 45, 116, 38, 113, 38,
173 112, 38, 124, 26, 132, 27, 136, 19, 140, 20, 155, 14, 159, 16,
174 158, 18, 170, 13, 177, 10, 187, 8, 192, 6, 175, 9, 159, 10
176 21, 178, 59, 110, 71, 86, 75, 85, 84, 83, 91, 66, 88, 73,
177 87, 72, 92, 75, 98, 72, 105, 58, 107, 54, 115, 52, 114, 55,
178 112, 56, 129, 51, 132, 40, 150, 33, 140, 29, 98, 35, 77, 42
182 42, 121, 96, 66, 108, 43, 111, 40, 117, 44, 123, 32, 120, 36,
183 119, 33, 127, 33, 134, 34, 139, 21, 147, 23, 152, 20, 158, 25,
184 154, 26, 166, 21, 173, 16, 184, 13, 184, 10, 150, 13, 139, 15
186 22, 178, 63, 114, 74, 82, 84, 83, 92, 82, 103, 62, 96, 72,
187 96, 67, 101, 73, 107, 72, 113, 55, 118, 52, 125, 52, 118, 52,
188 117, 55, 135, 49, 137, 39, 157, 32, 145, 29, 97, 33, 77, 40
194 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
195 { 90, 80, 75, 69, 63, 56, 49, 40, 34, 29, 20, 18, 10, 0, 0, 0, 0, 0, 0, 0, 0 },
196 { 110, 100, 90, 84, 78, 71, 65, 58, 51, 45, 39, 32, 26, 20, 12, 0, 0, 0, 0, 0, 0 },
197 { 118, 110, 103, 93, 86, 80, 75, 70, 65, 59, 53, 47, 40, 31, 23, 15, 4, 0, 0, 0, 0 },
198 { 126, 119, 112, 104, 95, 89, 83, 78, 72, 66, 60, 54, 47, 39, 32, 25, 17, 12, 1, 0, 0 },
199 { 134, 127, 120, 114, 103, 97, 91, 85, 78, 72, 66, 60, 54, 47, 41, 35, 29, 23, 16, 10, 1 },
200 { 144, 137, 130, 124, 113, 107, 101, 95, 88, 82, 76, 70, 64, 57, 51, 45, 39, 33, 26, 15, 1 },
201 { 152, 145, 138, 132, 123, 117, 111, 105, 98, 92, 86, 80, 74, 67, 61, 55, 49, 43, 36, 20, 1 },
202 { 162, 155, 148, 142, 133, 127, 121, 115, 108, 102, 96, 90, 84, 77, 71, 65, 59, 53, 46, 30, 1 },
203 { 172, 165, 158, 152, 143, 137, 131, 125, 118, 112, 106, 100, 94, 87, 81, 75, 69, 63, 56, 45, 20 },
204 { 200, 200, 200, 200, 200, 200, 200, 200, 198, 193, 188, 183, 178, 173, 168, 163, 158, 153, 148, 129, 104 }
209 {224, 224, 224, 224, 224, 224, 224, 224, 160, 160,
210 160, 160, 185, 185, 185, 178, 178, 168, 134, 61, 37},
211 {224, 224, 224, 224, 224, 224, 224, 224, 240, 240,
212 240, 240, 207, 207, 207, 198, 198, 183, 144, 66, 40},
214 {160, 160, 160, 160, 160, 160, 160, 160, 185, 185,
215 185, 185, 193, 193, 193, 183, 183, 172, 138, 64, 38},
216 {240, 240, 240, 240, 240, 240, 240, 240, 207, 207,
217 207, 207, 204, 204, 204, 193, 193, 180, 143, 66, 40},
219 {185, 185, 185, 185, 185, 185, 185, 185, 193, 193,
220 193, 193, 193, 193, 193, 183, 183, 172, 138, 65, 39},
221 {207, 207, 207, 207, 207, 207, 207, 207, 204, 204,
222 204, 204, 201, 201, 201, 188, 188, 176, 141, 66, 40},
224 {193, 193, 193, 193, 193, 193, 193, 193, 193, 193,
225 193, 193, 194, 194, 194, 184, 184, 173, 139, 65, 39},
226 {204, 204, 204, 204, 204, 204, 204, 204, 201, 201,
227 201, 201, 198, 198, 198, 187, 187, 175, 140, 66, 40}
232 40, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
233 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
234 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 40, 15, 23, 28,
235 31, 34, 36, 38, 39, 41, 42, 43, 44, 45, 46, 47, 47, 49, 50,
236 51, 52, 53, 54, 55, 55, 57, 58, 59, 60, 61, 62, 63, 63, 65,
237 66, 67, 68, 69, 70, 71, 71, 40, 20, 33, 41, 48, 53, 57, 61,
238 64, 66, 69, 71, 73, 75, 76, 78, 80, 82, 85, 87, 89, 91, 92,
239 94, 96, 98, 101, 103, 105, 107, 108, 110, 112, 114, 117, 119, 121, 123,
240 124, 126, 128, 40, 23, 39, 51, 60, 67, 73, 79, 83, 87, 91, 94,
241 97, 100, 102, 105, 107, 111, 115, 118, 121, 124, 126, 129, 131, 135, 139,
242 142, 145, 148, 150, 153, 155, 159, 163, 166, 169, 172, 174, 177, 179, 35,
243 28, 49, 65, 78, 89, 99, 107, 114, 120, 126, 132, 136, 141, 145, 149,
244 153, 159, 165, 171, 176, 180, 185, 189, 192, 199, 205, 211, 216, 220, 225,
245 229, 232, 239, 245, 251, 21, 33, 58, 79, 97, 112, 125, 137, 148, 157,
246 166, 174, 182, 189, 195, 201, 207, 217, 227, 235, 243, 251, 17, 35, 63,
247 86, 106, 123, 139, 152, 165, 177, 187, 197, 206, 214, 222, 230, 237, 250,
248 25, 31, 55, 75, 91, 105, 117, 128, 138, 146, 154, 161, 168, 174, 180,
249 185, 190, 200, 208, 215, 222, 229, 235, 240, 245, 255, 16, 36, 65, 89,
250 110, 128, 144, 159, 173, 185, 196, 207, 217, 226, 234, 242, 250, 11, 41,
251 74, 103, 128, 151, 172, 191, 209, 225, 241, 255, 9, 43, 79, 110, 138,
252 163, 186, 207, 227, 246, 12, 39, 71, 99, 123, 144, 164, 182, 198, 214,
253 228, 241, 253, 9, 44, 81, 113, 142, 168, 192, 214, 235, 255, 7, 49,
254 90, 127, 160, 191, 220, 247, 6, 51, 95, 134, 170, 203, 234, 7, 47,
255 87, 123, 155, 184, 212, 237, 6, 52, 97, 137, 174, 208, 240, 5, 57,
256 106, 151, 192, 231, 5, 59, 111, 158, 202, 243, 5, 55, 103, 147, 187,
257 224, 5, 60, 113, 161, 206, 248, 4, 65, 122, 175, 224, 4, 67, 127,
262 -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 41, 41, 41,
263 82, 82, 123, 164, 200, 222, 0, 0, 0, 0, 0, 0, 0, 0, 41,
264 41, 41, 41, 123, 123, 123, 164, 164, 240, 266, 283, 295, 41, 41, 41,
265 41, 41, 41, 41, 41, 123, 123, 123, 123, 240, 240, 240, 266, 266, 305,
266 318, 328, 336, 123, 123, 123, 123, 123, 123, 123, 123, 240, 240, 240, 240,
267 305, 305, 305, 318, 318, 343, 351, 358, 364, 240, 240, 240, 240, 240, 240,
268 240, 240, 305, 305, 305, 305, 343, 343, 343, 351, 351, 370, 376, 382, 387,
272 0, 8, 13, 16, 19, 21, 23, 24, 26, 27, 28, 29, 30, 31, 32, 32, 33, 34, 34, 35, 36, 36, 37, 37
276 0, 1, 1, 1, 2, 3, 3, 3, 2, 3, 3, 3, 2, 3, 3, 3
280 0x00, 0x03, 0x0C, 0x0F, 0x30, 0x33, 0x3C, 0x3F,
281 0xC0, 0xC3, 0xCC, 0xCF, 0xF0, 0xF3, 0xFC, 0xFF
287 7, 0, 4, 3, 6, 1, 5, 2,
288 15, 0, 8, 7, 12, 3, 11, 4, 14, 1, 9, 6, 13, 2, 10, 5
292 16384, 17866, 19483, 21247, 23170, 25267, 27554, 30048
297 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,
298 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,
299 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,
300 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,
301 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,
302 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,
303 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
305 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,
306 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,
307 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,
308 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,
309 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,
310 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,
311 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
313 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41,
314 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79,
315 81, 83, 85, 87, 89, 91, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 113,
316 115, 117, 119, 121, 123, 125, 127, 129, 131, 133, 135, 137, 139, 141, 143,
317 145, 147, 149, 151, 153, 155, 157, 159, 161, 163, 165, 167, 169, 171, 173,
318 175, 177, 179, 181, 183, 185, 187, 189, 191, 193, 195, 197, 199, 201, 203,
319 205, 207, 209, 211, 213, 215, 217, 219, 221, 223, 225, 227, 229, 231, 233,
320 235, 237, 239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 259, 261, 263,
321 265, 267, 269, 271, 273, 275, 277, 279, 281, 283, 285, 287, 289, 291, 293,
322 295, 297, 299, 301, 303, 305, 307, 309, 311, 313, 315, 317, 319, 321, 323,
323 325, 327, 329, 331, 333, 335, 337, 339, 341, 343, 345, 347, 349, 351,
325 13, 25, 41, 61, 85, 113, 145, 181, 221, 265, 313, 365, 421, 481, 545, 613,
326 685, 761, 841, 925, 1013, 1105, 1201, 1301, 1405, 1513, 1625, 1741, 1861,
327 1985, 2113, 2245, 2381, 2521, 2665, 2813, 2965, 3121, 3281, 3445, 3613, 3785,
328 3961, 4141, 4325, 4513, 4705, 4901, 5101, 5305, 5513, 5725, 5941, 6161, 6385,
329 6613, 6845, 7081, 7321, 7565, 7813, 8065, 8321, 8581, 8845, 9113, 9385, 9661,
330 9941, 10225, 10513, 10805, 11101, 11401, 11705, 12013, 12325, 12641, 12961,
331 13285, 13613, 13945, 14281, 14621, 14965, 15313, 15665, 16021, 16381, 16745,
332 17113, 17485, 17861, 18241, 18625, 19013, 19405, 19801, 20201, 20605, 21013,
333 21425, 21841, 22261, 22685, 23113, 23545, 23981, 24421, 24865, 25313, 25765,
334 26221, 26681, 27145, 27613, 28085, 28561, 29041, 29525, 30013, 30505, 31001,
335 31501, 32005, 32513, 33025, 33541, 34061, 34585, 35113, 35645, 36181, 36721,
336 37265, 37813, 38365, 38921, 39481, 40045, 40613, 41185, 41761, 42341, 42925,
337 43513, 44105, 44701, 45301, 45905, 46513, 47125, 47741, 48361, 48985, 49613,
338 50245, 50881, 51521, 52165, 52813, 53465, 54121, 54781, 55445, 56113, 56785,
339 57461, 58141, 58825, 59513, 60205, 60901, 61601,
341 63, 129, 231, 377, 575, 833, 1159, 1561, 2047, 2625, 3303, 4089, 4991, 6017,
342 7175, 8473, 9919, 11521, 13287, 15225, 17343, 19649, 22151, 24857, 27775,
343 30913, 34279, 37881, 41727, 45825, 50183, 54809, 59711, 64897, 70375, 76153,
344 82239, 88641, 95367, 102425, 109823, 117569, 125671, 134137, 142975, 152193,
345 161799, 171801, 182207, 193025, 204263, 215929, 228031, 240577, 253575,
346 267033, 280959, 295361, 310247, 325625, 341503, 357889, 374791, 392217,
347 410175, 428673, 447719, 467321, 487487, 508225, 529543, 551449, 573951,
348 597057, 620775, 645113, 670079, 695681, 721927, 748825, 776383, 804609,
349 833511, 863097, 893375, 924353, 956039, 988441, 1021567, 1055425, 1090023,
350 1125369, 1161471, 1198337, 1235975, 1274393, 1313599, 1353601, 1394407,
351 1436025, 1478463, 1521729, 1565831, 1610777, 1656575, 1703233, 1750759,
352 1799161, 1848447, 1898625, 1949703, 2001689, 2054591, 2108417, 2163175,
353 2218873, 2275519, 2333121, 2391687, 2451225, 2511743, 2573249, 2635751,
354 2699257, 2763775, 2829313, 2895879, 2963481, 3032127, 3101825, 3172583,
355 3244409, 3317311, 3391297, 3466375, 3542553, 3619839, 3698241, 3777767,
356 3858425, 3940223, 4023169, 4107271, 4192537, 4278975, 4366593, 4455399,
357 4545401, 4636607, 4729025, 4822663, 4917529, 5013631, 5110977, 5209575,
358 5309433, 5410559, 5512961, 5616647, 5721625, 5827903, 5935489, 6044391,
359 6154617, 6266175, 6379073, 6493319, 6608921, 6725887, 6844225, 6963943,
362 321, 681, 1289, 2241, 3649, 5641, 8361, 11969, 16641, 22569, 29961, 39041,
363 50049, 63241, 78889, 97281, 118721, 143529, 172041, 204609, 241601, 283401,
364 330409, 383041, 441729, 506921, 579081, 658689, 746241, 842249, 947241,
365 1061761, 1186369, 1321641, 1468169, 1626561, 1797441, 1981449, 2179241,
366 2391489, 2618881, 2862121, 3121929, 3399041, 3694209, 4008201, 4341801,
367 4695809, 5071041, 5468329, 5888521, 6332481, 6801089, 7295241, 7815849,
368 8363841, 8940161, 9545769, 10181641, 10848769, 11548161, 12280841, 13047849,
369 13850241, 14689089, 15565481, 16480521, 17435329, 18431041, 19468809,
370 20549801, 21675201, 22846209, 24064041, 25329929, 26645121, 28010881,
371 29428489, 30899241, 32424449, 34005441, 35643561, 37340169, 39096641,
372 40914369, 42794761, 44739241, 46749249, 48826241, 50971689, 53187081,
373 55473921, 57833729, 60268041, 62778409, 65366401, 68033601, 70781609,
374 73612041, 76526529, 79526721, 82614281, 85790889, 89058241, 92418049,
375 95872041, 99421961, 103069569, 106816641, 110664969, 114616361, 118672641,
376 122835649, 127107241, 131489289, 135983681, 140592321, 145317129, 150160041,
377 155123009, 160208001, 165417001, 170752009, 176215041, 181808129, 187533321,
378 193392681, 199388289, 205522241, 211796649, 218213641, 224775361, 231483969,
379 238341641, 245350569, 252512961, 259831041, 267307049, 274943241, 282741889,
380 290705281, 298835721, 307135529, 315607041, 324252609, 333074601, 342075401,
381 351257409, 360623041, 370174729, 379914921, 389846081, 399970689, 410291241,
382 420810249, 431530241, 442453761, 453583369, 464921641, 476471169, 488234561,
383 500214441, 512413449, 524834241, 537479489, 550351881, 563454121, 576788929,
384 590359041, 604167209, 618216201, 632508801,
387 1683, 3653, 7183, 13073, 22363, 36365, 56695, 85305, 124515, 177045, 246047,
388 335137, 448427, 590557, 766727, 982729, 1244979, 1560549, 1937199, 2383409,
389 2908411, 3522221, 4235671, 5060441, 6009091, 7095093, 8332863, 9737793,
390 11326283, 13115773, 15124775, 17372905, 19880915, 22670725, 25765455,
391 29189457, 32968347, 37129037, 41699767, 46710137, 52191139, 58175189,
392 64696159, 71789409, 79491819, 87841821, 96879431, 106646281, 117185651,
393 128542501, 140763503, 153897073, 167993403, 183104493, 199284183, 216588185,
394 235074115, 254801525, 275831935, 298228865, 322057867, 347386557, 374284647,
395 402823977, 433078547, 465124549, 499040399, 534906769, 572806619, 612825229,
396 655050231, 699571641, 746481891, 795875861, 847850911, 902506913, 959946283,
397 1020274013, 1083597703, 1150027593, 1219676595, 1292660325, 1369097135,
398 1449108145, 1532817275, 1620351277, 1711839767, 1807415257, 1907213187,
399 2011371957, 2120032959,
402 8989, 19825, 40081, 75517, 134245, 227305, 369305, 579125, 880685, 1303777,
403 1884961, 2668525, 3707509, 5064793, 6814249, 9041957, 11847485, 15345233,
404 19665841, 24957661, 31388293, 39146185, 48442297, 59511829, 72616013,
405 88043969, 106114625, 127178701, 151620757, 179861305, 212358985, 249612805,
406 292164445, 340600625, 395555537, 457713341, 527810725, 606639529, 695049433,
407 793950709, 904317037, 1027188385, 1163673953, 1314955181, 1482288821,
408 1667010073, 1870535785, 2094367717,
411 48639, 108545, 224143, 433905, 795455, 1392065, 2340495, 3800305, 5984767,
412 9173505, 13726991, 20103025, 28875327, 40754369, 56610575, 77500017,
413 104692735, 139703809, 184327311, 240673265, 311207743, 398796225, 506750351,
414 638878193, 799538175, 993696769, 1226990095, 1505789553, 1837271615,
418 265729, 598417, 1256465, 2485825, 4673345, 8405905, 14546705, 24331777,
419 39490049, 62390545, 96220561, 145198913, 214828609, 312193553, 446304145,
420 628496897, 872893441, 1196924561, 1621925137, 2173806145,
422 1462563, 3317445, 7059735, 14218905, 27298155, 50250765, 89129247, 152951073,
423 254831667, 413442773, 654862247, 1014889769, 1541911931, 2300409629,
427 8097453, 18474633, 39753273, 81270333, 158819253, 298199265, 540279585,
428 948062325, 1616336765,
430 45046719, 103274625, 224298231, 464387817, 921406335, 1759885185,
433 251595969, 579168825, 1267854873, 2653649025,
439 6.7286966e-05f, 0.00060551348f, 0.0016815970f, 0.0032947962f, 0.0054439943f,
440 0.0081276923f, 0.011344001f, 0.015090633f, 0.019364886f, 0.024163635f,
441 0.029483315f, 0.035319905f, 0.041668911f, 0.048525347f, 0.055883718f,
442 0.063737999f, 0.072081616f, 0.080907428f, 0.090207705f, 0.099974111f,
443 0.11019769f, 0.12086883f, 0.13197729f, 0.14351214f, 0.15546177f,
444 0.16781389f, 0.18055550f, 0.19367290f, 0.20715171f, 0.22097682f,
445 0.23513243f, 0.24960208f, 0.26436860f, 0.27941419f, 0.29472040f,
446 0.31026818f, 0.32603788f, 0.34200931f, 0.35816177f, 0.37447407f,
447 0.39092462f, 0.40749142f, 0.42415215f, 0.44088423f, 0.45766484f,
448 0.47447104f, 0.49127978f, 0.50806798f, 0.52481261f, 0.54149077f,
449 0.55807973f, 0.57455701f, 0.59090049f, 0.60708841f, 0.62309951f,
450 0.63891306f, 0.65450896f, 0.66986776f, 0.68497077f, 0.69980010f,
451 0.71433873f, 0.72857055f, 0.74248043f, 0.75605424f, 0.76927895f,
452 0.78214257f, 0.79463430f, 0.80674445f, 0.81846456f, 0.82978733f,
453 0.84070669f, 0.85121779f, 0.86131698f, 0.87100183f, 0.88027111f,
454 0.88912479f, 0.89756398f, 0.90559094f, 0.91320904f, 0.92042270f,
455 0.92723738f, 0.93365955f, 0.93969656f, 0.94535671f, 0.95064907f,
456 0.95558353f, 0.96017067f, 0.96442171f, 0.96834849f, 0.97196334f,
457 0.97527906f, 0.97830883f, 0.98106616f, 0.98356480f, 0.98581869f,
458 0.98784191f, 0.98964856f, 0.99125274f, 0.99266849f, 0.99390969f,
459 0.99499004f, 0.99592297f, 0.99672162f, 0.99739874f, 0.99796667f,
460 0.99843728f, 0.99882195f, 0.99913147f, 0.99937606f, 0.99956527f,
461 0.99970802f, 0.99981248f, 0.99988613f, 0.99993565f, 0.99996697f,
462 0.99998518f, 0.99999457f, 0.99999859f, 0.99999982f, 1.0000000f,
467 4.5275357e-09f, 3.66647e-07f, 2.82777e-06f, 1.08557e-05f, 2.96371e-05f, 6.60594e-05f,
468 0.000128686f, 0.000227727f, 0.000374999f, 0.000583881f, 0.000869266f, 0.0012475f,
469 0.0017363f, 0.00235471f, 0.00312299f, 0.00406253f, 0.00519576f, 0.00654601f,
470 0.00813743f, 0.00999482f, 0.0121435f, 0.0146093f, 0.017418f, 0.0205957f, 0.0241684f,
471 0.0281615f, 0.0326003f, 0.0375092f, 0.0429118f, 0.0488308f, 0.0552873f, 0.0623012f,
472 0.0698908f, 0.0780723f, 0.0868601f, 0.0962664f, 0.106301f, 0.11697f, 0.12828f,
473 0.140231f, 0.152822f, 0.166049f, 0.179905f, 0.194379f, 0.209457f, 0.225123f, 0.241356f,
474 0.258133f, 0.275428f, 0.293212f, 0.311453f, 0.330116f, 0.349163f, 0.368556f, 0.388253f,
475 0.40821f, 0.428382f, 0.448723f, 0.469185f, 0.48972f, 0.51028f, 0.530815f, 0.551277f,
476 0.571618f, 0.59179f, 0.611747f, 0.631444f, 0.650837f, 0.669884f, 0.688547f, 0.706788f,
477 0.724572f, 0.741867f, 0.758644f, 0.774877f, 0.790543f, 0.805621f, 0.820095f, 0.833951f,
478 0.847178f, 0.859769f, 0.87172f, 0.88303f, 0.893699f, 0.903734f, 0.91314f, 0.921928f,
479 0.930109f, 0.937699f, 0.944713f, 0.951169f, 0.957088f, 0.962491f, 0.9674f, 0.971838f,
480 0.975832f, 0.979404f, 0.982582f, 0.985391f, 0.987857f, 0.990005f, 0.991863f, 0.993454f,
481 0.994804f, 0.995937f, 0.996877f, 0.997645f, 0.998264f, 0.998753f, 0.999131f, 0.999416f,
482 0.999625f, 0.999772f, 0.999871f, 0.999934f, 0.99997f, 0.999989f, 0.999997f, 0.99999964f, 1.0f,
487 celt_pvq_u + 525, celt_pvq_u + 698, celt_pvq_u + 870,
488 celt_pvq_u + 1041, celt_pvq_u + 1131, celt_pvq_u + 1178,
489 celt_pvq_u + 1207, celt_pvq_u + 1226, celt_pvq_u + 1240,
490 celt_pvq_u + 1248, celt_pvq_u + 1254, celt_pvq_u + 1257
495 x = (
MUL16(x, x) + 4096) >> 13;
507 return (ls << 11) - (lc << 11) +
514 s->
seed = 1664525 * s->
seed + 1013904223;
531 beta = 1.0f - 4915.0f/32768.0f;
545 if (i < s->startband || i >= s->
endband) {
551 if (available >= 15) {
553 int k =
FFMIN(i, 20) << 1;
555 }
else if (available >= 2) {
557 value = (x>>1) ^ -(x&1);
558 }
else if (available >= 1) {
563 prev[j] += beta *
value;
571 for (i = s->
startband; i < s->endband; i++) {
581 offset = (q2 + 0.5f) * (1 << (14 - s->
fine_bits[i])) / 16384.0f - 0.5f;
592 for (priority = 0; priority < 2; priority++) {
601 offset = (q2 - 0.5f) * (1 << (14 - s->
fine_bits[i] - 1)) / 16384.0f;
612 int i,
diff = 0, tf_select = 0, tf_changed = 0, tf_select_bit;
613 int consumed,
bits =
transient ? 2 : 4;
618 for (i = s->
startband; i < s->endband; i++) {
619 if (consumed+bits+tf_select_bit <= s->framebits) {
625 bits =
transient ? 4 : 5;
632 for (i = s->
startband; i < s->endband; i++) {
653 int intensitystereo_bit = 0;
654 int dualstereo_bit = 0;
656 int remaining, bandbits;
657 int low, high, total, done;
678 for (i = s->
startband; i < s->endband; i++) {
679 int quanta, band_dynalloc;
684 quanta =
FFMIN(quanta << 3,
FFMAX(6 << 3, quanta));
685 band_dynalloc = dynalloc;
686 while (consumed + (band_dynalloc<<3) < totalbits && boost[i] < cap[i]) {
698 dynalloc =
FFMAX(2, dynalloc - 1);
702 if (consumed + (6 << 3) <= totalbits)
709 totalbits >= ((s->
duration + 2) << 3))
714 if (totalbits >= 1 << 3)
716 totalbits -= skip_bit;
721 if (intensitystereo_bit <= totalbits) {
722 totalbits -= intensitystereo_bit;
723 if (totalbits >= 1 << 3) {
724 dualstereo_bit = 1 << 3;
728 intensitystereo_bit = 0;
731 for (i = s->
startband; i < s->endband; i++) {
732 int trim = alloctrim - 5 - s->
duration;
742 trim_offset[i] = trim * (band << scale) >> 6;
751 while (low <= high) {
752 int center = (low + high) >> 1;
760 bandbits =
FFMAX(0, bandbits + trim_offset[i]);
761 bandbits += boost[i];
763 if (bandbits >= threshold[i] || done) {
765 total +=
FFMIN(bandbits, cap[i]);
770 if (total > totalbits)
777 for (i = s->
startband; i < s->endband; i++) {
785 bits1[i] =
FFMAX(0, bits1[i] + trim_offset[i]);
787 bits2[i] =
FFMAX(0, bits2[i] + trim_offset[i]);
789 bits1[i] += boost[i];
790 bits2[i] += boost[i];
794 bits2[i] =
FFMAX(0, bits2[i] - bits1[i]);
801 int center = (low + high) >> 1;
807 if (bandbits >= threshold[j] || done) {
809 total +=
FFMIN(bandbits, cap[j]);
813 if (total > totalbits)
823 if (bandbits >= threshold[i] || done)
829 bandbits =
FFMIN(bandbits, cap[i]);
839 if (j == skip_startband) {
841 totalbits += skip_bit;
846 remaining = totalbits - total;
859 allocation -= 1 << 3;
864 if (intensitystereo_bit) {
865 total -= intensitystereo_bit;
867 total += intensitystereo_bit;
877 if (intensitystereo_bit)
881 totalbits += dualstereo_bit;
882 else if (dualstereo_bit)
886 remaining = totalbits - total;
889 for (i = s->
startband; i < s->codedbands; i++) {
896 for (i = s->
startband; i < s->codedbands; i++) {
898 int prev_extra = extrabits;
899 s->
pulses[i] += extrabits;
907 int fine_bits, max_bits;
910 s->
pulses[i] -= extrabits;
921 if (s->
pulses[i] + offset < 2 * (dof << 3))
923 else if (s->
pulses[i] + offset < 3 * (dof << 3))
926 fine_bits = (s->
pulses[i] + offset + (dof << 2)) / (dof << 3);
930 max_bits =
FFMAX(max_bits, 0);
932 s->
fine_bits[i] = av_clip(fine_bits, 0, max_bits);
943 s->
pulses[i] -= extrabits;
956 extrabits -= fineextra;
972 int i, low = 0, high;
977 for (i = 0; i < 6; i++) {
978 int center = (low + high + 1) >> 1;
979 if (cache[center] >= bits)
985 return (bits - (low == 0 ? -1 : cache[low]) <= cache[high] -
bits) ? low : high;
991 return (pulses == 0) ? 0 : cache[
pulses] + 1;
998 for (i = 0; i <
N; i++)
1009 for (i = 0; i < len -
stride; i++) {
1013 Xptr[
stride] = c * x2 + s * x1;
1014 *Xptr++ = c * x1 - s * x2;
1017 Xptr = &X[len - 2 * stride - 1];
1018 for (i = len - 2 * stride - 1; i >= 0; i--) {
1022 Xptr[
stride] = c * x2 + s * x1;
1023 *Xptr-- = c * x1 - s * x2;
1028 unsigned int stride,
unsigned int K,
1031 unsigned int stride2 = 0;
1039 gain = (float)len / (len + (20 - 5*spread) * K);
1040 theta =
M_PI * gain * gain / 4;
1045 if (len >= stride << 3) {
1049 while ((stride2 * stride2 + stride2) * stride + (stride >> 2) < len)
1056 for (i = 0; i <
stride; i++) {
1067 unsigned int collapse_mask;
1078 for (i = 0; i <
B; i++)
1079 for (j = 0; j <
N0; j++)
1080 collapse_mask |= (iy[i*N0+j]!=0)<<i;
1081 return collapse_mask;
1088 for (i = 0; i <
N; i++)
1090 g = gain / sqrtf(g);
1092 for (i = 0; i <
N; i++)
1099 float xp = 0, side = 0;
1105 for (i = 0; i <
N; i++) {
1107 side += Y[i] * Y[i];
1113 E[0] = mid2 * mid2 + side - 2 * xp;
1114 E[1] = mid2 * mid2 + side + 2 * xp;
1115 if (E[0] < 6e-4f || E[1] < 6e-4f) {
1116 for (i = 0; i <
N; i++)
1122 gain[0] = 1.0f / sqrtf(t);
1124 gain[1] = 1.0f / sqrtf(t);
1126 for (i = 0; i <
N; i++) {
1129 value[0] = mid * X[i];
1131 X[i] = gain[0] * (value[0] - value[1]);
1132 Y[i] = gain[1] * (value[0] + value[1]);
1137 int stride,
int hadamard)
1144 for (i = 0; i <
stride; i++)
1145 for (j = 0; j <
N0; j++)
1146 tmp[j*stride+i] = X[ordery[i]*N0+j];
1148 for (i = 0; i <
stride; i++)
1149 for (j = 0; j <
N0; j++)
1150 tmp[j*stride+i] = X[i*N0+j];
1153 for (i = 0; i <
N; i++)
1158 int stride,
int hadamard)
1165 for (i = 0; i <
stride; i++)
1166 for (j = 0; j <
N0; j++)
1167 tmp[ordery[i]*N0+j] = X[j*stride+i];
1169 for (i = 0; i <
stride; i++)
1170 for (j = 0; j <
N0; j++)
1171 tmp[i*N0+j] = X[j*stride+i];
1174 for (i = 0; i <
N; i++)
1182 for (i = 0; i <
stride; i++) {
1183 for (j = 0; j <
N0; j++) {
1184 float x0 = X[stride * (2 * j + 0) + i];
1185 float x1 = X[stride * (2 * j + 1) + i];
1186 X[stride * (2 * j + 0) + i] = (x0 + x1) *
M_SQRT1_2;
1187 X[stride * (2 * j + 1) + i] = (x0 - x1) *
M_SQRT1_2;
1197 if (dualstereo && N == 2)
1203 qb =
FFMIN3(b - pulse_cap - (4 << 3), (b + N2 * offset) / N2, 8 << 3);
1204 qn = (qb < (1 << 3 >> 1)) ? 1 : ((
celt_qn_exp2[qb & 0x7] >> (14 - (qb >> 3))) + 1) >> 1 << 1;
1209 static inline uint64_t
celt_cwrsi(
unsigned int N,
unsigned int K,
unsigned int i,
int *
y)
1237 for (p = row[K]; p > i; p = row[K])
1241 val = (k0 - K +
s) ^ s;
1249 if (p <= i && i < q) {
1263 val = (k0 - K +
s) ^ s;
1281 val = (k0 - K +
s) ^ s;
1297 #define CELT_PVQ_U(n, k) (celt_pvq_u_row[FFMIN(n, k)][FFMAX(n, k)])
1298 #define CELT_PVQ_V(n, k) (CELT_PVQ_U(n, k) + CELT_PVQ_U(n, (k) + 1))
1306 unsigned int N,
unsigned int K,
1308 unsigned int blocks,
float gain)
1319 const int band,
float *X,
float *
Y,
1320 int N,
int b,
unsigned int blocks,
1322 float *lowband_out,
int level,
1323 float gain,
float *lowband_scratch,
1327 int dualstereo,
split;
1328 int imid = 0, iside = 0;
1329 unsigned int N0 =
N;
1333 int time_divide = 0;
1336 float mid = 0, side = 0;
1337 int longblocks = (B0 == 1);
1338 unsigned int cm = 0;
1340 N_B0 = N_B = N / blocks;
1341 split = dualstereo = (Y !=
NULL);
1347 for (i = 0; i <= dualstereo; i++) {
1354 x[0] = sign ? -1.0f : 1.0f;
1358 lowband_out[0] = X[0];
1362 if (!dualstereo && level == 0) {
1366 recombine = tf_change;
1370 (recombine || ((N_B & 1) == 0 && tf_change < 0) || B0 > 1)) {
1372 for (j = 0; j <
N; j++)
1373 lowband_scratch[j] = lowband[j];
1374 lowband = lowband_scratch;
1377 for (k = 0; k < recombine; k++) {
1382 blocks >>= recombine;
1386 while ((N_B & 1) == 0 && tf_change < 0) {
1389 fill |= fill << blocks;
1399 if (B0 > 1 && lowband)
1401 B0 << recombine, longblocks);
1407 if (!dualstereo && duration >= 0 && b > cache[cache[0]] + 12 && N > 2) {
1413 fill = (fill & 1) | (fill << 1);
1414 blocks = (blocks + 1) >> 1;
1420 int mbits, sbits,
delta;
1437 if (dualstereo && N > 2)
1439 else if (dualstereo || B0 > 1)
1443 itheta = itheta * 16384 / qn;
1446 }
else if (dualstereo) {
1457 fill = av_mod_uintp2(fill, blocks);
1459 }
else if (itheta == 16384) {
1462 fill &= ((1 << blocks) - 1) << blocks;
1472 mid = imid / 32768.0f;
1473 side = iside / 32768.0f;
1478 if (N == 2 && dualstereo) {
1485 sbits = (itheta != 0 && itheta != 16384) ? 1 << 3 : 0;
1487 c = (itheta > 8192);
1494 sign = 1 - 2 * sign;
1498 lowband, duration, lowband_out, level, gain,
1499 lowband_scratch, orig_fill);
1502 y2[0] = -sign * x2[1];
1503 y2[1] = sign * x2[0];
1516 float *next_lowband2 =
NULL;
1517 float *next_lowband_out1 =
NULL;
1523 if (B0 > 1 && !dualstereo && (itheta & 0x3fff)) {
1530 delta =
FFMIN(0, delta + (N << 3 >> (5 - duration)));
1532 mbits = av_clip((b - delta) / 2, 0, b);
1536 if (lowband && !dualstereo)
1537 next_lowband2 = lowband +
N;
1542 next_lowband_out1 = lowband_out;
1544 next_level = level + 1;
1547 if (mbits >= sbits) {
1551 lowband, duration, next_lowband_out1,
1552 next_level, dualstereo ? 1.0f : (gain * mid),
1553 lowband_scratch, fill);
1555 rebalance = mbits - (rebalance - s->
remaining2);
1556 if (rebalance > 3 << 3 && itheta != 0)
1557 sbits += rebalance - (3 << 3);
1562 next_lowband2, duration,
NULL,
1563 next_level, gain * side,
NULL,
1564 fill >> blocks) << ((B0 >> 1) & (dualstereo - 1));
1569 next_lowband2, duration,
NULL,
1570 next_level, gain * side,
NULL,
1571 fill >> blocks) << ((B0 >> 1) & (dualstereo - 1));
1573 rebalance = sbits - (rebalance - s->
remaining2);
1574 if (rebalance > 3 << 3 && itheta != 16384)
1575 mbits += rebalance - (3 << 3);
1580 lowband, duration, next_lowband_out1,
1581 next_level, dualstereo ? 1.0f : (gain * mid),
1582 lowband_scratch, fill);
1600 cm =
celt_alg_unquant(rc, X, N, (q < 8) ? q : (8 + (q & 7)) << ((q >> 3) - 1),
1601 s->
spread, blocks, gain);
1605 unsigned int cm_mask = (1 << blocks) - 1;
1608 for (j = 0; j <
N; j++)
1613 for (j = 0; j <
N; j++)
1618 for (j = 0; j <
N; j++) {
1620 X[j] = lowband[j] + (((
celt_rng(s)) & 0x8000) ? 1.0f / 256 : -1.0f / 256);
1635 for (j = 0; j <
N; j++)
1638 }
else if (level == 0) {
1644 B0<<recombine, longblocks);
1649 for (k = 0; k < time_divide; k++) {
1656 for (k = 0; k < recombine; k++) {
1660 blocks <<= recombine;
1665 float n = sqrtf(N0);
1666 for (j = 0; j <
N0; j++)
1667 lowband_out[j] = n * X[j];
1669 cm = av_mod_uintp2(cm, blocks);
1678 for (i = s->
startband; i < s->endband; i++) {
1692 float g00, g01, g02;
1693 float g10, g11, g12;
1695 float x0, x1, x2, x3, x4;
1717 x0 = data[i - T1 + 2];
1719 data[i] += (1.0 - w) * g00 * data[i - T0] +
1720 (1.0 - w) * g01 * (data[i - T0 - 1] + data[i - T0 + 1]) +
1721 (1.0 - w) * g02 * (data[i - T0 - 2] + data[i - T0 + 2]) +
1723 w * g11 * (x1 + x3) +
1724 w * g12 * (x0 + x4);
1737 float x0, x1, x2, x3, x4;
1740 if (frame->
pf_gains[0] == 0.0 || len <= 0)
1752 for (i = 0; i <
len; i++) {
1753 x0 = data[i - T + 2];
1754 data[i] += g0 * x2 +
1790 static const float postfilter_taps[3][3] = {
1791 { 0.3066406250f, 0.2170410156f, 0.1296386719f },
1792 { 0.4638671875f, 0.2680664062f, 0.0 },
1793 { 0.7998046875f, 0.1000976562f, 0.0 }
1802 if (has_postfilter) {
1804 int tapset, octave, period;
1812 for (i = 0; i < 2; i++) {
1816 frame->
pf_gains_new[0] = gain * postfilter_taps[tapset][0];
1817 frame->
pf_gains_new[1] = gain * postfilter_taps[tapset][1];
1818 frame->
pf_gains_new[2] = gain * postfilter_taps[tapset][2];
1832 for (i = s->
startband; i < s->endband; i++) {
1833 int renormalize = 0;
1837 float thresh, sqrt_1;
1842 thresh = pow(2, -1.0 - 0.125f * depth);
1855 Ediff = frame->
energy[i] -
FFMIN(prev[0], prev[1]);
1856 Ediff =
FFMAX(0, Ediff);
1860 r = pow(2, 1 - Ediff);
1863 r =
FFMIN(thresh, r) * sqrt_1;
1864 for (k = 0; k < 1 << s->
duration; k++) {
1882 float lowband_scratch[8 * 22];
1883 float norm[2 * 8 * 100];
1887 int update_lowband = 1;
1888 int lowband_offset = 0;
1894 for (i = s->
startband; i < s->endband; i++) {
1897 float *X = s->
coeffs[0] + band_offset;
1901 float *norm2 = norm + 8 * 100;
1902 int effective_lowband = -1;
1910 if (i <= s->codedbands - 1) {
1917 (update_lowband || lowband_offset == 0))
1924 int foldstart, foldend;
1929 foldstart = lowband_offset;
1931 foldend = lowband_offset - 1;
1935 for (j = foldstart; j < foldend; j++) {
1942 cm[0] = cm[1] = (1 << s->
blocks) - 1;
1948 norm[j] = (norm[j] + norm2[j]) / 2;
1954 norm + band_offset, 0, 1.0f, lowband_scratch, cm[0]);
1958 norm2 + band_offset, 0, 1.0f, lowband_scratch, cm[1]);
1962 norm + band_offset, 0, 1.0f, lowband_scratch, cm[0]|cm[1]);
1972 update_lowband = (b > band_size << 3);
1977 float **output,
int coded_channels,
int frame_size,
1978 int startband,
int endband)
1985 int anticollapse = 0;
1987 float imdct_scale = 1.0;
1989 if (coded_channels != 1 && coded_channels != 2) {
1994 if (startband < 0 || startband > endband || endband >
CELT_MAX_BANDS) {
1996 startband, endband);
2025 else if (consumed == 1)
2046 if (coded_channels == 1) {
2078 memcpy(s->
coeffs[1], s->
coeffs[0], frame_size *
sizeof(
float));
2081 for (i = 0; i < 2; i++) {
2096 for (j = 0; j < s->
blocks; j++) {
2110 float tmp = frame->
buf[1024 - frame_size + j] +
m;
2112 output[i][j] = tmp / 32768.;
2117 if (coded_channels == 1)
2120 for (i = 0; i < 2; i++ ) {
2153 for (i = 0; i < 2; i++) {
2160 memset(frame->
buf, 0,
sizeof(frame->
buf));
2193 if (output_channels != 1 && output_channels != 2) {
const char const char void * val
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
static void process_anticollapse(CeltContext *s, CeltFrame *frame, float *X)
ptrdiff_t const GLvoid * data
static int celt_pulses2bits(const uint8_t *cache, int pulses)
static void celt_haar1(float *X, int N0, int stride)
static av_always_inline unsigned int opus_rc_getsymbol(OpusRangeCoder *rc, const uint16_t *cdf)
static const uint8_t celt_static_alloc[11][21]
float prev_energy[2][CELT_MAX_BANDS]
static const float celt_alpha_coef[]
static float celt_decode_pulses(OpusRangeCoder *rc, int *y, unsigned int N, unsigned int K)
float energy[CELT_MAX_BANDS]
#define CELT_POSTFILTER_MINPERIOD
#define DECLARE_ALIGNED(n, t, v)
static av_always_inline unsigned int opus_rc_p2model(OpusRangeCoder *rc, unsigned int bits)
static const uint8_t celt_coarse_energy_dist[4][2][42]
#define FF_ARRAY_ELEMS(a)
int pulses[CELT_MAX_BANDS]
void ff_celt_free(CeltContext **ps)
int ff_celt_decode_frame(CeltContext *s, OpusRangeCoder *rc, float **output, int coded_channels, int frame_size, int startband, int endband)
static const uint16_t celt_model_energy_small[]
static uint64_t celt_cwrsi(unsigned int N, unsigned int K, unsigned int i, int *y)
void(* vector_fmac_scalar)(float *dst, const float *src, float mul, int len)
Multiply a vector of floats by a scalar float and add to destination vector.
static void celt_decode_fine_energy(CeltContext *s, OpusRangeCoder *rc)
void(* vector_fmul_window)(float *dst, const float *src0, const float *src1, const float *win, int len)
Overlap/add with window function.
unsigned int total_read_bits
int fine_bits[CELT_MAX_BANDS]
static void celt_denormalize(CeltContext *s, CeltFrame *frame, float *data)
#define CELT_DEEMPH_COEFF
static void celt_normalize_residual(const int *av_restrict iy, float *av_restrict X, int N, float g)
static const uint16_t celt_model_alloc_trim[]
#define CELT_MAX_LOG_BLOCKS
static const uint8_t celt_log_freq_range[]
static const uint8_t bits2[81]
#define CODEC_FLAG_BITEXACT
Use only bitexact stuff (except (I)DCT).
static unsigned int celt_alg_unquant(OpusRangeCoder *rc, float *X, unsigned int N, unsigned int K, enum CeltSpread spread, unsigned int blocks, float gain)
Decode pulse vector and combine the result with the pitch vector to produce the final normalised sign...
static void celt_postfilter(CeltContext *s, CeltFrame *frame)
static const uint8_t celt_bit_interleave[]
static unsigned int celt_decode_band(CeltContext *s, OpusRangeCoder *rc, const int band, float *X, float *Y, int N, int b, unsigned int blocks, float *lowband, int duration, float *lowband_out, int level, float gain, float *lowband_scratch, int fill)
static const uint8_t celt_freq_bands[]
static double alpha(void *priv, double x, double y)
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
static const int8_t celt_tf_select[4][2][2][2]
static const uint8_t celt_static_caps[4][2][21]
static void celt_exp_rotation1(float *X, unsigned int len, unsigned int stride, float c, float s)
void ff_celt_flush(CeltContext *s)
static void celt_stereo_merge(float *X, float *Y, float mid, int N)
static const uint8_t celt_freq_range[]
int fine_priority[CELT_MAX_BANDS]
static void celt_renormalize_vector(float *X, int N, float gain)
av_cold void ff_imdct15_uninit(IMDCT15Context **ps)
Free an iMDCT.
static void celt_decode_allocation(CeltContext *s, OpusRangeCoder *rc)
static void celt_decode_tf_changes(CeltContext *s, OpusRangeCoder *rc, int transient)
static av_always_inline unsigned int opus_rc_tell_frac(const OpusRangeCoder *rc)
static const uint8_t celt_log2_frac[]
static const float celt_mean_energy[]
static const uint8_t offset[127][2]
static int celt_compute_qn(int N, int b, int offset, int pulse_cap, int dualstereo)
static void celt_postfilter_apply(CeltFrame *frame, float *data, int len)
static const uint16_t celt_model_tapset[]
static void celt_decode_final_energy(CeltContext *s, OpusRangeCoder *rc, int bits_left)
static char * split(char *message, char delim)
float coeffs[2][CELT_MAX_FRAME_SIZE]
static const uint8_t celt_bit_deinterleave[]
static const int16_t celt_cache_index[105]
#define CELT_ENERGY_SILENCE
#define CELT_SHORT_BLOCKSIZE
static const uint32_t *const celt_pvq_u_row[15]
static const float celt_beta_coef[]
GLsizei GLboolean const GLfloat * value
#define CELT_QTHETA_OFFSET
static int parse_postfilter(CeltContext *s, OpusRangeCoder *rc, int consumed)
int ff_celt_init(AVCodecContext *avctx, CeltContext **ps, int output_channels)
static int celt_bits2pulses(const uint8_t *cache, int bits)
static void celt_decode_bands(CeltContext *s, OpusRangeCoder *rc)
static unsigned int celt_extract_collapse_mask(const int *iy, unsigned int N, unsigned int B)
uint8_t collapse_masks[CELT_MAX_BANDS]
static av_always_inline unsigned int opus_rc_stepmodel(OpusRangeCoder *rc, int k0)
static int celt_log2tan(int isin, int icos)
main external API structure.
static const uint32_t celt_pvq_u[1272]
static uint32_t celt_rng(CeltContext *s)
void(* imdct_half)(struct IMDCT15Context *s, float *dst, const float *src, ptrdiff_t src_stride, float scale)
Calculate the middle half of the iMDCT.
av_cold AVFloatDSPContext * avpriv_float_dsp_alloc(int bit_exact)
Allocate a float DSP context.
av_cold int ff_imdct15_init(IMDCT15Context **ps, int N)
Init an iMDCT of the length 2 * 15 * (2^N)
static const uint16_t celt_qn_exp2[]
static const uint16_t celt_model_spread[]
GLint GLenum GLboolean GLsizei stride
static av_always_inline unsigned int opus_rc_trimodel(OpusRangeCoder *rc, int qn)
static av_always_inline unsigned int opus_getrawbits(OpusRangeCoder *rc, unsigned int count)
CELT: read 1-25 raw bits at the end of the frame, backwards byte-wise.
#define ROUND_MUL16(a, b)
int tf_change[CELT_MAX_BANDS]
static void celt_deinterleave_hadamard(float *tmp, float *X, int N0, int stride, int hadamard)
static av_always_inline unsigned int opus_rc_unimodel(OpusRangeCoder *rc, unsigned int size)
CELT: read a uniform distribution.
static const uint8_t celt_cache_bits[392]
IMDCT15Context * imdct[4]
const float ff_celt_window2[120]
static av_always_inline int diff(const uint32_t a, const uint32_t b)
static const uint8_t celt_hadamard_ordery[]
static av_always_inline unsigned int opus_rc_tell(const OpusRangeCoder *rc)
CELT: estimate bits of entropy that have thus far been consumed for the current CELT frame...
static void celt_decode_coarse_energy(CeltContext *s, OpusRangeCoder *rc)
#define CELT_MAX_FRAME_SIZE
static void celt_exp_rotation(float *X, unsigned int len, unsigned int stride, unsigned int K, enum CeltSpread spread)
static const int8_t pulses[4]
Number of non-zero pulses in the MP-MLQ excitation.
static void celt_postfilter_apply_transition(CeltFrame *frame, float *data)
static av_always_inline int opus_rc_laplace(OpusRangeCoder *rc, unsigned int symbol, int decay)
static int16_t celt_cos(int16_t x)
#define CELT_QTHETA_OFFSET_TWOPHASE
static const float celt_window[120]
static void celt_interleave_hadamard(float *tmp, float *X, int N0, int stride, int hadamard)
#define CELT_MAX_FINE_BITS
void * av_mallocz(size_t size)
Allocate a block of size bytes with alignment suitable for all memory accesses (including vectors if ...
static const uint8_t bits1[81]