110 128, 2, 4, 9, 19, 41, 87, 109, 119, 124, 126, 128
116 0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24, 28, 34, 40, 48, 60, 78, 100
120 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 4, 4, 4, 6, 6, 8, 12, 18, 22
124 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 8, 16, 16, 16, 21, 21, 24, 29, 34, 36
128 { { { 0, -1 }, { 0, -1 } }, { { 0, -1 }, { 0, -1 } } },
129 { { { 0, -1 }, { 0, -2 } }, { { 1, 0 }, { 1, -1 } } },
130 { { { 0, -2 }, { 0, -3 } }, { { 2, 0 }, { 1, -1 } } },
131 { { { 0, -2 }, { 0, -3 } }, { { 3, 0 }, { 1, -1 } } }
135 6.437500f, 6.250000f, 5.750000f, 5.312500f, 5.062500f,
136 4.812500f, 4.500000f, 4.375000f, 4.875000f, 4.687500f,
137 4.562500f, 4.437500f, 4.875000f, 4.625000f, 4.312500f,
138 4.500000f, 4.375000f, 4.625000f, 4.750000f, 4.437500f,
139 3.750000f, 3.750000f, 3.750000f, 3.750000f, 3.750000f
143 29440.0f/32768.0f, 26112.0f/32768.0f, 21248.0f/32768.0f, 16384.0f/32768.0f
147 30147.0f/32768.0f, 22282.0f/32768.0f, 12124.0f/32768.0f, 6554.0f/32768.0f
153 72, 127, 65, 129, 66, 128, 65, 128, 64, 128, 62, 128, 64, 128,
154 64, 128, 92, 78, 92, 79, 92, 78, 90, 79, 116, 41, 115, 40,
155 114, 40, 132, 26, 132, 26, 145, 17, 161, 12, 176, 10, 177, 11
157 24, 179, 48, 138, 54, 135, 54, 132, 53, 134, 56, 133, 55, 132,
158 55, 132, 61, 114, 70, 96, 74, 88, 75, 88, 87, 74, 89, 66,
159 91, 67, 100, 59, 108, 50, 120, 40, 122, 37, 97, 43, 78, 50
163 83, 78, 84, 81, 88, 75, 86, 74, 87, 71, 90, 73, 93, 74,
164 93, 74, 109, 40, 114, 36, 117, 34, 117, 34, 143, 17, 145, 18,
165 146, 19, 162, 12, 165, 10, 178, 7, 189, 6, 190, 8, 177, 9
167 23, 178, 54, 115, 63, 102, 66, 98, 69, 99, 74, 89, 71, 91,
168 73, 91, 78, 89, 86, 80, 92, 66, 93, 64, 102, 59, 103, 60,
169 104, 60, 117, 52, 123, 44, 138, 35, 133, 31, 97, 38, 77, 45
173 61, 90, 93, 60, 105, 42, 107, 41, 110, 45, 116, 38, 113, 38,
174 112, 38, 124, 26, 132, 27, 136, 19, 140, 20, 155, 14, 159, 16,
175 158, 18, 170, 13, 177, 10, 187, 8, 192, 6, 175, 9, 159, 10
177 21, 178, 59, 110, 71, 86, 75, 85, 84, 83, 91, 66, 88, 73,
178 87, 72, 92, 75, 98, 72, 105, 58, 107, 54, 115, 52, 114, 55,
179 112, 56, 129, 51, 132, 40, 150, 33, 140, 29, 98, 35, 77, 42
183 42, 121, 96, 66, 108, 43, 111, 40, 117, 44, 123, 32, 120, 36,
184 119, 33, 127, 33, 134, 34, 139, 21, 147, 23, 152, 20, 158, 25,
185 154, 26, 166, 21, 173, 16, 184, 13, 184, 10, 150, 13, 139, 15
187 22, 178, 63, 114, 74, 82, 84, 83, 92, 82, 103, 62, 96, 72,
188 96, 67, 101, 73, 107, 72, 113, 55, 118, 52, 125, 52, 118, 52,
189 117, 55, 135, 49, 137, 39, 157, 32, 145, 29, 97, 33, 77, 40
195 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
196 { 90, 80, 75, 69, 63, 56, 49, 40, 34, 29, 20, 18, 10, 0, 0, 0, 0, 0, 0, 0, 0 },
197 { 110, 100, 90, 84, 78, 71, 65, 58, 51, 45, 39, 32, 26, 20, 12, 0, 0, 0, 0, 0, 0 },
198 { 118, 110, 103, 93, 86, 80, 75, 70, 65, 59, 53, 47, 40, 31, 23, 15, 4, 0, 0, 0, 0 },
199 { 126, 119, 112, 104, 95, 89, 83, 78, 72, 66, 60, 54, 47, 39, 32, 25, 17, 12, 1, 0, 0 },
200 { 134, 127, 120, 114, 103, 97, 91, 85, 78, 72, 66, 60, 54, 47, 41, 35, 29, 23, 16, 10, 1 },
201 { 144, 137, 130, 124, 113, 107, 101, 95, 88, 82, 76, 70, 64, 57, 51, 45, 39, 33, 26, 15, 1 },
202 { 152, 145, 138, 132, 123, 117, 111, 105, 98, 92, 86, 80, 74, 67, 61, 55, 49, 43, 36, 20, 1 },
203 { 162, 155, 148, 142, 133, 127, 121, 115, 108, 102, 96, 90, 84, 77, 71, 65, 59, 53, 46, 30, 1 },
204 { 172, 165, 158, 152, 143, 137, 131, 125, 118, 112, 106, 100, 94, 87, 81, 75, 69, 63, 56, 45, 20 },
205 { 200, 200, 200, 200, 200, 200, 200, 200, 198, 193, 188, 183, 178, 173, 168, 163, 158, 153, 148, 129, 104 }
210 {224, 224, 224, 224, 224, 224, 224, 224, 160, 160,
211 160, 160, 185, 185, 185, 178, 178, 168, 134, 61, 37},
212 {224, 224, 224, 224, 224, 224, 224, 224, 240, 240,
213 240, 240, 207, 207, 207, 198, 198, 183, 144, 66, 40},
215 {160, 160, 160, 160, 160, 160, 160, 160, 185, 185,
216 185, 185, 193, 193, 193, 183, 183, 172, 138, 64, 38},
217 {240, 240, 240, 240, 240, 240, 240, 240, 207, 207,
218 207, 207, 204, 204, 204, 193, 193, 180, 143, 66, 40},
220 {185, 185, 185, 185, 185, 185, 185, 185, 193, 193,
221 193, 193, 193, 193, 193, 183, 183, 172, 138, 65, 39},
222 {207, 207, 207, 207, 207, 207, 207, 207, 204, 204,
223 204, 204, 201, 201, 201, 188, 188, 176, 141, 66, 40},
225 {193, 193, 193, 193, 193, 193, 193, 193, 193, 193,
226 193, 193, 194, 194, 194, 184, 184, 173, 139, 65, 39},
227 {204, 204, 204, 204, 204, 204, 204, 204, 201, 201,
228 201, 201, 198, 198, 198, 187, 187, 175, 140, 66, 40}
233 40, 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, 7, 7, 7, 7,
235 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 40, 15, 23, 28,
236 31, 34, 36, 38, 39, 41, 42, 43, 44, 45, 46, 47, 47, 49, 50,
237 51, 52, 53, 54, 55, 55, 57, 58, 59, 60, 61, 62, 63, 63, 65,
238 66, 67, 68, 69, 70, 71, 71, 40, 20, 33, 41, 48, 53, 57, 61,
239 64, 66, 69, 71, 73, 75, 76, 78, 80, 82, 85, 87, 89, 91, 92,
240 94, 96, 98, 101, 103, 105, 107, 108, 110, 112, 114, 117, 119, 121, 123,
241 124, 126, 128, 40, 23, 39, 51, 60, 67, 73, 79, 83, 87, 91, 94,
242 97, 100, 102, 105, 107, 111, 115, 118, 121, 124, 126, 129, 131, 135, 139,
243 142, 145, 148, 150, 153, 155, 159, 163, 166, 169, 172, 174, 177, 179, 35,
244 28, 49, 65, 78, 89, 99, 107, 114, 120, 126, 132, 136, 141, 145, 149,
245 153, 159, 165, 171, 176, 180, 185, 189, 192, 199, 205, 211, 216, 220, 225,
246 229, 232, 239, 245, 251, 21, 33, 58, 79, 97, 112, 125, 137, 148, 157,
247 166, 174, 182, 189, 195, 201, 207, 217, 227, 235, 243, 251, 17, 35, 63,
248 86, 106, 123, 139, 152, 165, 177, 187, 197, 206, 214, 222, 230, 237, 250,
249 25, 31, 55, 75, 91, 105, 117, 128, 138, 146, 154, 161, 168, 174, 180,
250 185, 190, 200, 208, 215, 222, 229, 235, 240, 245, 255, 16, 36, 65, 89,
251 110, 128, 144, 159, 173, 185, 196, 207, 217, 226, 234, 242, 250, 11, 41,
252 74, 103, 128, 151, 172, 191, 209, 225, 241, 255, 9, 43, 79, 110, 138,
253 163, 186, 207, 227, 246, 12, 39, 71, 99, 123, 144, 164, 182, 198, 214,
254 228, 241, 253, 9, 44, 81, 113, 142, 168, 192, 214, 235, 255, 7, 49,
255 90, 127, 160, 191, 220, 247, 6, 51, 95, 134, 170, 203, 234, 7, 47,
256 87, 123, 155, 184, 212, 237, 6, 52, 97, 137, 174, 208, 240, 5, 57,
257 106, 151, 192, 231, 5, 59, 111, 158, 202, 243, 5, 55, 103, 147, 187,
258 224, 5, 60, 113, 161, 206, 248, 4, 65, 122, 175, 224, 4, 67, 127,
263 -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 41, 41, 41,
264 82, 82, 123, 164, 200, 222, 0, 0, 0, 0, 0, 0, 0, 0, 41,
265 41, 41, 41, 123, 123, 123, 164, 164, 240, 266, 283, 295, 41, 41, 41,
266 41, 41, 41, 41, 41, 123, 123, 123, 123, 240, 240, 240, 266, 266, 305,
267 318, 328, 336, 123, 123, 123, 123, 123, 123, 123, 123, 240, 240, 240, 240,
268 305, 305, 305, 318, 318, 343, 351, 358, 364, 240, 240, 240, 240, 240, 240,
269 240, 240, 305, 305, 305, 305, 343, 343, 343, 351, 351, 370, 376, 382, 387,
273 0, 8, 13, 16, 19, 21, 23, 24, 26, 27, 28, 29, 30, 31, 32, 32, 33, 34, 34, 35, 36, 36, 37, 37
277 0, 1, 1, 1, 2, 3, 3, 3, 2, 3, 3, 3, 2, 3, 3, 3
281 0x00, 0x03, 0x0C, 0x0F, 0x30, 0x33, 0x3C, 0x3F,
282 0xC0, 0xC3, 0xCC, 0xCF, 0xF0, 0xF3, 0xFC, 0xFF
288 7, 0, 4, 3, 6, 1, 5, 2,
289 15, 0, 8, 7, 12, 3, 11, 4, 14, 1, 9, 6, 13, 2, 10, 5
293 16384, 17866, 19483, 21247, 23170, 25267, 27554, 30048
298 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,
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, 0, 0, 0, 0, 0,
304 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
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, 1, 1, 1, 1, 1, 1,
312 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
314 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41,
315 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79,
316 81, 83, 85, 87, 89, 91, 93, 95, 97, 99, 101, 103, 105, 107, 109, 111, 113,
317 115, 117, 119, 121, 123, 125, 127, 129, 131, 133, 135, 137, 139, 141, 143,
318 145, 147, 149, 151, 153, 155, 157, 159, 161, 163, 165, 167, 169, 171, 173,
319 175, 177, 179, 181, 183, 185, 187, 189, 191, 193, 195, 197, 199, 201, 203,
320 205, 207, 209, 211, 213, 215, 217, 219, 221, 223, 225, 227, 229, 231, 233,
321 235, 237, 239, 241, 243, 245, 247, 249, 251, 253, 255, 257, 259, 261, 263,
322 265, 267, 269, 271, 273, 275, 277, 279, 281, 283, 285, 287, 289, 291, 293,
323 295, 297, 299, 301, 303, 305, 307, 309, 311, 313, 315, 317, 319, 321, 323,
324 325, 327, 329, 331, 333, 335, 337, 339, 341, 343, 345, 347, 349, 351,
326 13, 25, 41, 61, 85, 113, 145, 181, 221, 265, 313, 365, 421, 481, 545, 613,
327 685, 761, 841, 925, 1013, 1105, 1201, 1301, 1405, 1513, 1625, 1741, 1861,
328 1985, 2113, 2245, 2381, 2521, 2665, 2813, 2965, 3121, 3281, 3445, 3613, 3785,
329 3961, 4141, 4325, 4513, 4705, 4901, 5101, 5305, 5513, 5725, 5941, 6161, 6385,
330 6613, 6845, 7081, 7321, 7565, 7813, 8065, 8321, 8581, 8845, 9113, 9385, 9661,
331 9941, 10225, 10513, 10805, 11101, 11401, 11705, 12013, 12325, 12641, 12961,
332 13285, 13613, 13945, 14281, 14621, 14965, 15313, 15665, 16021, 16381, 16745,
333 17113, 17485, 17861, 18241, 18625, 19013, 19405, 19801, 20201, 20605, 21013,
334 21425, 21841, 22261, 22685, 23113, 23545, 23981, 24421, 24865, 25313, 25765,
335 26221, 26681, 27145, 27613, 28085, 28561, 29041, 29525, 30013, 30505, 31001,
336 31501, 32005, 32513, 33025, 33541, 34061, 34585, 35113, 35645, 36181, 36721,
337 37265, 37813, 38365, 38921, 39481, 40045, 40613, 41185, 41761, 42341, 42925,
338 43513, 44105, 44701, 45301, 45905, 46513, 47125, 47741, 48361, 48985, 49613,
339 50245, 50881, 51521, 52165, 52813, 53465, 54121, 54781, 55445, 56113, 56785,
340 57461, 58141, 58825, 59513, 60205, 60901, 61601,
342 63, 129, 231, 377, 575, 833, 1159, 1561, 2047, 2625, 3303, 4089, 4991, 6017,
343 7175, 8473, 9919, 11521, 13287, 15225, 17343, 19649, 22151, 24857, 27775,
344 30913, 34279, 37881, 41727, 45825, 50183, 54809, 59711, 64897, 70375, 76153,
345 82239, 88641, 95367, 102425, 109823, 117569, 125671, 134137, 142975, 152193,
346 161799, 171801, 182207, 193025, 204263, 215929, 228031, 240577, 253575,
347 267033, 280959, 295361, 310247, 325625, 341503, 357889, 374791, 392217,
348 410175, 428673, 447719, 467321, 487487, 508225, 529543, 551449, 573951,
349 597057, 620775, 645113, 670079, 695681, 721927, 748825, 776383, 804609,
350 833511, 863097, 893375, 924353, 956039, 988441, 1021567, 1055425, 1090023,
351 1125369, 1161471, 1198337, 1235975, 1274393, 1313599, 1353601, 1394407,
352 1436025, 1478463, 1521729, 1565831, 1610777, 1656575, 1703233, 1750759,
353 1799161, 1848447, 1898625, 1949703, 2001689, 2054591, 2108417, 2163175,
354 2218873, 2275519, 2333121, 2391687, 2451225, 2511743, 2573249, 2635751,
355 2699257, 2763775, 2829313, 2895879, 2963481, 3032127, 3101825, 3172583,
356 3244409, 3317311, 3391297, 3466375, 3542553, 3619839, 3698241, 3777767,
357 3858425, 3940223, 4023169, 4107271, 4192537, 4278975, 4366593, 4455399,
358 4545401, 4636607, 4729025, 4822663, 4917529, 5013631, 5110977, 5209575,
359 5309433, 5410559, 5512961, 5616647, 5721625, 5827903, 5935489, 6044391,
360 6154617, 6266175, 6379073, 6493319, 6608921, 6725887, 6844225, 6963943,
363 321, 681, 1289, 2241, 3649, 5641, 8361, 11969, 16641, 22569, 29961, 39041,
364 50049, 63241, 78889, 97281, 118721, 143529, 172041, 204609, 241601, 283401,
365 330409, 383041, 441729, 506921, 579081, 658689, 746241, 842249, 947241,
366 1061761, 1186369, 1321641, 1468169, 1626561, 1797441, 1981449, 2179241,
367 2391489, 2618881, 2862121, 3121929, 3399041, 3694209, 4008201, 4341801,
368 4695809, 5071041, 5468329, 5888521, 6332481, 6801089, 7295241, 7815849,
369 8363841, 8940161, 9545769, 10181641, 10848769, 11548161, 12280841, 13047849,
370 13850241, 14689089, 15565481, 16480521, 17435329, 18431041, 19468809,
371 20549801, 21675201, 22846209, 24064041, 25329929, 26645121, 28010881,
372 29428489, 30899241, 32424449, 34005441, 35643561, 37340169, 39096641,
373 40914369, 42794761, 44739241, 46749249, 48826241, 50971689, 53187081,
374 55473921, 57833729, 60268041, 62778409, 65366401, 68033601, 70781609,
375 73612041, 76526529, 79526721, 82614281, 85790889, 89058241, 92418049,
376 95872041, 99421961, 103069569, 106816641, 110664969, 114616361, 118672641,
377 122835649, 127107241, 131489289, 135983681, 140592321, 145317129, 150160041,
378 155123009, 160208001, 165417001, 170752009, 176215041, 181808129, 187533321,
379 193392681, 199388289, 205522241, 211796649, 218213641, 224775361, 231483969,
380 238341641, 245350569, 252512961, 259831041, 267307049, 274943241, 282741889,
381 290705281, 298835721, 307135529, 315607041, 324252609, 333074601, 342075401,
382 351257409, 360623041, 370174729, 379914921, 389846081, 399970689, 410291241,
383 420810249, 431530241, 442453761, 453583369, 464921641, 476471169, 488234561,
384 500214441, 512413449, 524834241, 537479489, 550351881, 563454121, 576788929,
385 590359041, 604167209, 618216201, 632508801,
388 1683, 3653, 7183, 13073, 22363, 36365, 56695, 85305, 124515, 177045, 246047,
389 335137, 448427, 590557, 766727, 982729, 1244979, 1560549, 1937199, 2383409,
390 2908411, 3522221, 4235671, 5060441, 6009091, 7095093, 8332863, 9737793,
391 11326283, 13115773, 15124775, 17372905, 19880915, 22670725, 25765455,
392 29189457, 32968347, 37129037, 41699767, 46710137, 52191139, 58175189,
393 64696159, 71789409, 79491819, 87841821, 96879431, 106646281, 117185651,
394 128542501, 140763503, 153897073, 167993403, 183104493, 199284183, 216588185,
395 235074115, 254801525, 275831935, 298228865, 322057867, 347386557, 374284647,
396 402823977, 433078547, 465124549, 499040399, 534906769, 572806619, 612825229,
397 655050231, 699571641, 746481891, 795875861, 847850911, 902506913, 959946283,
398 1020274013, 1083597703, 1150027593, 1219676595, 1292660325, 1369097135,
399 1449108145, 1532817275, 1620351277, 1711839767, 1807415257, 1907213187,
400 2011371957, 2120032959,
403 8989, 19825, 40081, 75517, 134245, 227305, 369305, 579125, 880685, 1303777,
404 1884961, 2668525, 3707509, 5064793, 6814249, 9041957, 11847485, 15345233,
405 19665841, 24957661, 31388293, 39146185, 48442297, 59511829, 72616013,
406 88043969, 106114625, 127178701, 151620757, 179861305, 212358985, 249612805,
407 292164445, 340600625, 395555537, 457713341, 527810725, 606639529, 695049433,
408 793950709, 904317037, 1027188385, 1163673953, 1314955181, 1482288821,
409 1667010073, 1870535785, 2094367717,
412 48639, 108545, 224143, 433905, 795455, 1392065, 2340495, 3800305, 5984767,
413 9173505, 13726991, 20103025, 28875327, 40754369, 56610575, 77500017,
414 104692735, 139703809, 184327311, 240673265, 311207743, 398796225, 506750351,
415 638878193, 799538175, 993696769, 1226990095, 1505789553, 1837271615,
419 265729, 598417, 1256465, 2485825, 4673345, 8405905, 14546705, 24331777,
420 39490049, 62390545, 96220561, 145198913, 214828609, 312193553, 446304145,
421 628496897, 872893441, 1196924561, 1621925137, 2173806145,
423 1462563, 3317445, 7059735, 14218905, 27298155, 50250765, 89129247, 152951073,
424 254831667, 413442773, 654862247, 1014889769, 1541911931, 2300409629,
428 8097453, 18474633, 39753273, 81270333, 158819253, 298199265, 540279585,
429 948062325, 1616336765,
431 45046719, 103274625, 224298231, 464387817, 921406335, 1759885185,
434 251595969, 579168825, 1267854873, 2653649025,
440 6.7286966e-05f, 0.00060551348f, 0.0016815970f, 0.0032947962f, 0.0054439943f,
441 0.0081276923f, 0.011344001f, 0.015090633f, 0.019364886f, 0.024163635f,
442 0.029483315f, 0.035319905f, 0.041668911f, 0.048525347f, 0.055883718f,
443 0.063737999f, 0.072081616f, 0.080907428f, 0.090207705f, 0.099974111f,
444 0.11019769f, 0.12086883f, 0.13197729f, 0.14351214f, 0.15546177f,
445 0.16781389f, 0.18055550f, 0.19367290f, 0.20715171f, 0.22097682f,
446 0.23513243f, 0.24960208f, 0.26436860f, 0.27941419f, 0.29472040f,
447 0.31026818f, 0.32603788f, 0.34200931f, 0.35816177f, 0.37447407f,
448 0.39092462f, 0.40749142f, 0.42415215f, 0.44088423f, 0.45766484f,
449 0.47447104f, 0.49127978f, 0.50806798f, 0.52481261f, 0.54149077f,
450 0.55807973f, 0.57455701f, 0.59090049f, 0.60708841f, 0.62309951f,
451 0.63891306f, 0.65450896f, 0.66986776f, 0.68497077f, 0.69980010f,
452 0.71433873f, 0.72857055f, 0.74248043f, 0.75605424f, 0.76927895f,
453 0.78214257f, 0.79463430f, 0.80674445f, 0.81846456f, 0.82978733f,
454 0.84070669f, 0.85121779f, 0.86131698f, 0.87100183f, 0.88027111f,
455 0.88912479f, 0.89756398f, 0.90559094f, 0.91320904f, 0.92042270f,
456 0.92723738f, 0.93365955f, 0.93969656f, 0.94535671f, 0.95064907f,
457 0.95558353f, 0.96017067f, 0.96442171f, 0.96834849f, 0.97196334f,
458 0.97527906f, 0.97830883f, 0.98106616f, 0.98356480f, 0.98581869f,
459 0.98784191f, 0.98964856f, 0.99125274f, 0.99266849f, 0.99390969f,
460 0.99499004f, 0.99592297f, 0.99672162f, 0.99739874f, 0.99796667f,
461 0.99843728f, 0.99882195f, 0.99913147f, 0.99937606f, 0.99956527f,
462 0.99970802f, 0.99981248f, 0.99988613f, 0.99993565f, 0.99996697f,
463 0.99998518f, 0.99999457f, 0.99999859f, 0.99999982f, 1.0000000f,
468 4.5275357e-09f, 3.66647e-07f, 2.82777e-06f, 1.08557e-05f, 2.96371e-05f, 6.60594e-05f,
469 0.000128686f, 0.000227727f, 0.000374999f, 0.000583881f, 0.000869266f, 0.0012475f,
470 0.0017363f, 0.00235471f, 0.00312299f, 0.00406253f, 0.00519576f, 0.00654601f,
471 0.00813743f, 0.00999482f, 0.0121435f, 0.0146093f, 0.017418f, 0.0205957f, 0.0241684f,
472 0.0281615f, 0.0326003f, 0.0375092f, 0.0429118f, 0.0488308f, 0.0552873f, 0.0623012f,
473 0.0698908f, 0.0780723f, 0.0868601f, 0.0962664f, 0.106301f, 0.11697f, 0.12828f,
474 0.140231f, 0.152822f, 0.166049f, 0.179905f, 0.194379f, 0.209457f, 0.225123f, 0.241356f,
475 0.258133f, 0.275428f, 0.293212f, 0.311453f, 0.330116f, 0.349163f, 0.368556f, 0.388253f,
476 0.40821f, 0.428382f, 0.448723f, 0.469185f, 0.48972f, 0.51028f, 0.530815f, 0.551277f,
477 0.571618f, 0.59179f, 0.611747f, 0.631444f, 0.650837f, 0.669884f, 0.688547f, 0.706788f,
478 0.724572f, 0.741867f, 0.758644f, 0.774877f, 0.790543f, 0.805621f, 0.820095f, 0.833951f,
479 0.847178f, 0.859769f, 0.87172f, 0.88303f, 0.893699f, 0.903734f, 0.91314f, 0.921928f,
480 0.930109f, 0.937699f, 0.944713f, 0.951169f, 0.957088f, 0.962491f, 0.9674f, 0.971838f,
481 0.975832f, 0.979404f, 0.982582f, 0.985391f, 0.987857f, 0.990005f, 0.991863f, 0.993454f,
482 0.994804f, 0.995937f, 0.996877f, 0.997645f, 0.998264f, 0.998753f, 0.999131f, 0.999416f,
483 0.999625f, 0.999772f, 0.999871f, 0.999934f, 0.99997f, 0.999989f, 0.999997f, 0.99999964f, 1.0f,
488 celt_pvq_u + 525, celt_pvq_u + 698, celt_pvq_u + 870,
489 celt_pvq_u + 1041, celt_pvq_u + 1131, celt_pvq_u + 1178,
490 celt_pvq_u + 1207, celt_pvq_u + 1226, celt_pvq_u + 1240,
491 celt_pvq_u + 1248, celt_pvq_u + 1254, celt_pvq_u + 1257
496 x = (
MUL16(x, x) + 4096) >> 13;
508 return (ls << 11) - (lc << 11) +
515 s->
seed = 1664525 * s->
seed + 1013904223;
532 beta = 1.0f - 4915.0f/32768.0f;
546 if (i < s->startband || i >= s->
endband) {
552 if (available >= 15) {
554 int k =
FFMIN(i, 20) << 1;
556 }
else if (available >= 2) {
558 value = (x>>1) ^ -(x&1);
559 }
else if (available >= 1) {
564 prev[j] += beta *
value;
572 for (i = s->
startband; i < s->endband; i++) {
582 offset = (q2 + 0.5f) * (1 << (14 - s->
fine_bits[i])) / 16384.0f - 0.5f;
593 for (priority = 0; priority < 2; priority++) {
602 offset = (q2 - 0.5f) * (1 << (14 - s->
fine_bits[i] - 1)) / 16384.0f;
613 int i,
diff = 0, tf_select = 0, tf_changed = 0, tf_select_bit;
614 int consumed,
bits =
transient ? 2 : 4;
619 for (i = s->
startband; i < s->endband; i++) {
620 if (consumed+bits+tf_select_bit <= s->framebits) {
626 bits =
transient ? 4 : 5;
633 for (i = s->
startband; i < s->endband; i++) {
654 int intensitystereo_bit = 0;
655 int dualstereo_bit = 0;
657 int remaining, bandbits;
658 int low, high, total, done;
679 for (i = s->
startband; i < s->endband; i++) {
680 int quanta, band_dynalloc;
685 quanta =
FFMIN(quanta << 3,
FFMAX(6 << 3, quanta));
686 band_dynalloc = dynalloc;
687 while (consumed + (band_dynalloc<<3) < totalbits && boost[i] < cap[i]) {
699 dynalloc =
FFMAX(2, dynalloc - 1);
703 if (consumed + (6 << 3) <= totalbits)
710 totalbits >= ((s->
duration + 2) << 3))
715 if (totalbits >= 1 << 3)
717 totalbits -= skip_bit;
722 if (intensitystereo_bit <= totalbits) {
723 totalbits -= intensitystereo_bit;
724 if (totalbits >= 1 << 3) {
725 dualstereo_bit = 1 << 3;
729 intensitystereo_bit = 0;
732 for (i = s->
startband; i < s->endband; i++) {
733 int trim = alloctrim - 5 - s->
duration;
743 trim_offset[i] = trim * (band << scale) >> 6;
752 while (low <= high) {
753 int center = (low + high) >> 1;
761 bandbits =
FFMAX(0, bandbits + trim_offset[i]);
762 bandbits += boost[i];
764 if (bandbits >= threshold[i] || done) {
766 total +=
FFMIN(bandbits, cap[i]);
771 if (total > totalbits)
778 for (i = s->
startband; i < s->endband; i++) {
786 bits1[i] =
FFMAX(0, bits1[i] + trim_offset[i]);
788 bits2[i] =
FFMAX(0, bits2[i] + trim_offset[i]);
790 bits1[i] += boost[i];
791 bits2[i] += boost[i];
795 bits2[i] =
FFMAX(0, bits2[i] - bits1[i]);
802 int center = (low + high) >> 1;
808 if (bandbits >= threshold[j] || done) {
810 total +=
FFMIN(bandbits, cap[j]);
814 if (total > totalbits)
824 if (bandbits >= threshold[i] || done)
830 bandbits =
FFMIN(bandbits, cap[i]);
840 if (j == skip_startband) {
842 totalbits += skip_bit;
847 remaining = totalbits - total;
860 allocation -= 1 << 3;
865 if (intensitystereo_bit) {
866 total -= intensitystereo_bit;
868 total += intensitystereo_bit;
878 if (intensitystereo_bit)
882 totalbits += dualstereo_bit;
883 else if (dualstereo_bit)
887 remaining = totalbits - total;
890 for (i = s->
startband; i < s->codedbands; i++) {
897 for (i = s->
startband; i < s->codedbands; i++) {
899 int prev_extra = extrabits;
900 s->
pulses[i] += extrabits;
908 int fine_bits, max_bits;
911 s->
pulses[i] -= extrabits;
922 if (s->
pulses[i] + offset < 2 * (dof << 3))
924 else if (s->
pulses[i] + offset < 3 * (dof << 3))
927 fine_bits = (s->
pulses[i] + offset + (dof << 2)) / (dof << 3);
931 max_bits =
FFMAX(max_bits, 0);
933 s->
fine_bits[i] = av_clip(fine_bits, 0, max_bits);
944 s->
pulses[i] -= extrabits;
957 extrabits -= fineextra;
973 int i, low = 0, high;
978 for (i = 0; i < 6; i++) {
979 int center = (low + high + 1) >> 1;
980 if (cache[center] >= bits)
986 return (bits - (low == 0 ? -1 : cache[low]) <= cache[high] -
bits) ? low : high;
992 return (pulses == 0) ? 0 : cache[
pulses] + 1;
999 for (i = 0; i <
N; i++)
1010 for (i = 0; i < len -
stride; i++) {
1014 Xptr[
stride] = c * x2 + s * x1;
1015 *Xptr++ = c * x1 - s * x2;
1018 Xptr = &X[len - 2 * stride - 1];
1019 for (i = len - 2 * stride - 1; i >= 0; i--) {
1023 Xptr[
stride] = c * x2 + s * x1;
1024 *Xptr-- = c * x1 - s * x2;
1029 unsigned int stride,
unsigned int K,
1032 unsigned int stride2 = 0;
1040 gain = (float)len / (len + (20 - 5*spread) * K);
1041 theta =
M_PI * gain * gain / 4;
1046 if (len >= stride << 3) {
1050 while ((stride2 * stride2 + stride2) * stride + (stride >> 2) < len)
1057 for (i = 0; i <
stride; i++) {
1068 unsigned int collapse_mask;
1079 for (i = 0; i <
B; i++)
1080 for (j = 0; j <
N0; j++)
1081 collapse_mask |= (iy[i*N0+j]!=0)<<i;
1082 return collapse_mask;
1089 for (i = 0; i <
N; i++)
1091 g = gain / sqrtf(g);
1093 for (i = 0; i <
N; i++)
1100 float xp = 0, side = 0;
1106 for (i = 0; i <
N; i++) {
1108 side += Y[i] * Y[i];
1114 E[0] = mid2 * mid2 + side - 2 * xp;
1115 E[1] = mid2 * mid2 + side + 2 * xp;
1116 if (E[0] < 6e-4f || E[1] < 6e-4f) {
1117 for (i = 0; i <
N; i++)
1123 gain[0] = 1.0f / sqrtf(t);
1125 gain[1] = 1.0f / sqrtf(t);
1127 for (i = 0; i <
N; i++) {
1130 value[0] = mid * X[i];
1132 X[i] = gain[0] * (value[0] - value[1]);
1133 Y[i] = gain[1] * (value[0] + value[1]);
1138 int stride,
int hadamard)
1145 for (i = 0; i <
stride; i++)
1146 for (j = 0; j <
N0; j++)
1147 tmp[j*stride+i] = X[ordery[i]*N0+j];
1149 for (i = 0; i <
stride; i++)
1150 for (j = 0; j <
N0; j++)
1151 tmp[j*stride+i] = X[i*N0+j];
1154 for (i = 0; i <
N; i++)
1159 int stride,
int hadamard)
1166 for (i = 0; i <
stride; i++)
1167 for (j = 0; j <
N0; j++)
1168 tmp[ordery[i]*N0+j] = X[j*stride+i];
1170 for (i = 0; i <
stride; i++)
1171 for (j = 0; j <
N0; j++)
1172 tmp[i*N0+j] = X[j*stride+i];
1175 for (i = 0; i <
N; i++)
1183 for (i = 0; i <
stride; i++) {
1184 for (j = 0; j <
N0; j++) {
1185 float x0 = X[stride * (2 * j + 0) + i];
1186 float x1 = X[stride * (2 * j + 1) + i];
1187 X[stride * (2 * j + 0) + i] = (x0 + x1) *
M_SQRT1_2;
1188 X[stride * (2 * j + 1) + i] = (x0 - x1) *
M_SQRT1_2;
1198 if (dualstereo && N == 2)
1204 qb =
FFMIN3(b - pulse_cap - (4 << 3), (b + N2 * offset) / N2, 8 << 3);
1205 qn = (qb < (1 << 3 >> 1)) ? 1 : ((
celt_qn_exp2[qb & 0x7] >> (14 - (qb >> 3))) + 1) >> 1 << 1;
1210 static inline uint64_t
celt_cwrsi(
unsigned int N,
unsigned int K,
unsigned int i,
int *y)
1238 for (p = row[K]; p > i; p = row[K])
1242 val = (k0 - K +
s) ^ s;
1250 if (p <= i && i < q) {
1264 val = (k0 - K +
s) ^ s;
1282 val = (k0 - K +
s) ^ s;
1298 #define CELT_PVQ_U(n, k) (celt_pvq_u_row[FFMIN(n, k)][FFMAX(n, k)])
1299 #define CELT_PVQ_V(n, k) (CELT_PVQ_U(n, k) + CELT_PVQ_U(n, (k) + 1))
1307 unsigned int N,
unsigned int K,
1309 unsigned int blocks,
float gain)
1320 const int band,
float *X,
float *
Y,
1321 int N,
int b,
unsigned int blocks,
1323 float *lowband_out,
int level,
1324 float gain,
float *lowband_scratch,
1328 int dualstereo,
split;
1329 int imid = 0, iside = 0;
1330 unsigned int N0 =
N;
1334 int time_divide = 0;
1337 float mid = 0, side = 0;
1338 int longblocks = (B0 == 1);
1339 unsigned int cm = 0;
1341 N_B0 = N_B = N / blocks;
1342 split = dualstereo = (Y !=
NULL);
1348 for (i = 0; i <= dualstereo; i++) {
1355 x[0] = sign ? -1.0f : 1.0f;
1359 lowband_out[0] = X[0];
1363 if (!dualstereo && level == 0) {
1367 recombine = tf_change;
1371 (recombine || ((N_B & 1) == 0 && tf_change < 0) || B0 > 1)) {
1373 for (j = 0; j <
N; j++)
1374 lowband_scratch[j] = lowband[j];
1375 lowband = lowband_scratch;
1378 for (k = 0; k < recombine; k++) {
1383 blocks >>= recombine;
1387 while ((N_B & 1) == 0 && tf_change < 0) {
1390 fill |= fill << blocks;
1400 if (B0 > 1 && lowband)
1402 B0 << recombine, longblocks);
1408 if (!dualstereo && duration >= 0 && b > cache[cache[0]] + 12 && N > 2) {
1414 fill = (fill & 1) | (fill << 1);
1415 blocks = (blocks + 1) >> 1;
1421 int mbits, sbits,
delta;
1438 if (dualstereo && N > 2)
1440 else if (dualstereo || B0 > 1)
1444 itheta = itheta * 16384 / qn;
1447 }
else if (dualstereo) {
1458 fill = av_mod_uintp2(fill, blocks);
1460 }
else if (itheta == 16384) {
1463 fill &= ((1 << blocks) - 1) << blocks;
1473 mid = imid / 32768.0f;
1474 side = iside / 32768.0f;
1479 if (N == 2 && dualstereo) {
1486 sbits = (itheta != 0 && itheta != 16384) ? 1 << 3 : 0;
1488 c = (itheta > 8192);
1495 sign = 1 - 2 * sign;
1499 lowband, duration, lowband_out, level, gain,
1500 lowband_scratch, orig_fill);
1503 y2[0] = -sign * x2[1];
1504 y2[1] = sign * x2[0];
1517 float *next_lowband2 =
NULL;
1518 float *next_lowband_out1 =
NULL;
1524 if (B0 > 1 && !dualstereo && (itheta & 0x3fff)) {
1531 delta =
FFMIN(0, delta + (N << 3 >> (5 - duration)));
1533 mbits = av_clip((b - delta) / 2, 0, b);
1537 if (lowband && !dualstereo)
1538 next_lowband2 = lowband +
N;
1543 next_lowband_out1 = lowband_out;
1545 next_level = level + 1;
1548 if (mbits >= sbits) {
1552 lowband, duration, next_lowband_out1,
1553 next_level, dualstereo ? 1.0f : (gain * mid),
1554 lowband_scratch, fill);
1556 rebalance = mbits - (rebalance - s->
remaining2);
1557 if (rebalance > 3 << 3 && itheta != 0)
1558 sbits += rebalance - (3 << 3);
1563 next_lowband2, duration,
NULL,
1564 next_level, gain * side,
NULL,
1565 fill >> blocks) << ((B0 >> 1) & (dualstereo - 1));
1570 next_lowband2, duration,
NULL,
1571 next_level, gain * side,
NULL,
1572 fill >> blocks) << ((B0 >> 1) & (dualstereo - 1));
1574 rebalance = sbits - (rebalance - s->
remaining2);
1575 if (rebalance > 3 << 3 && itheta != 16384)
1576 mbits += rebalance - (3 << 3);
1581 lowband, duration, next_lowband_out1,
1582 next_level, dualstereo ? 1.0f : (gain * mid),
1583 lowband_scratch, fill);
1601 cm =
celt_alg_unquant(rc, X, N, (q < 8) ? q : (8 + (q & 7)) << ((q >> 3) - 1),
1602 s->
spread, blocks, gain);
1606 unsigned int cm_mask = (1 << blocks) - 1;
1609 for (j = 0; j <
N; j++)
1614 for (j = 0; j <
N; j++)
1619 for (j = 0; j <
N; j++) {
1621 X[j] = lowband[j] + (((
celt_rng(s)) & 0x8000) ? 1.0f / 256 : -1.0f / 256);
1636 for (j = 0; j <
N; j++)
1639 }
else if (level == 0) {
1645 B0<<recombine, longblocks);
1650 for (k = 0; k < time_divide; k++) {
1657 for (k = 0; k < recombine; k++) {
1661 blocks <<= recombine;
1666 float n = sqrtf(N0);
1667 for (j = 0; j <
N0; j++)
1668 lowband_out[j] = n * X[j];
1670 cm = av_mod_uintp2(cm, blocks);
1679 for (i = s->
startband; i < s->endband; i++) {
1693 float g00, g01, g02;
1694 float g10, g11, g12;
1696 float x0, x1, x2, x3, x4;
1718 x0 = data[i - T1 + 2];
1720 data[i] += (1.0 - w) * g00 * data[i - T0] +
1721 (1.0 - w) * g01 * (data[i - T0 - 1] + data[i - T0 + 1]) +
1722 (1.0 - w) * g02 * (data[i - T0 - 2] + data[i - T0 + 2]) +
1724 w * g11 * (x1 + x3) +
1725 w * g12 * (x0 + x4);
1738 float x0, x1, x2, x3, x4;
1741 if (frame->
pf_gains[0] == 0.0 || len <= 0)
1753 for (i = 0; i <
len; i++) {
1754 x0 = data[i - T + 2];
1755 data[i] += g0 * x2 +
1791 static const float postfilter_taps[3][3] = {
1792 { 0.3066406250f, 0.2170410156f, 0.1296386719f },
1793 { 0.4638671875f, 0.2680664062f, 0.0 },
1794 { 0.7998046875f, 0.1000976562f, 0.0 }
1803 if (has_postfilter) {
1805 int tapset, octave, period;
1813 for (i = 0; i < 2; i++) {
1817 frame->
pf_gains_new[0] = gain * postfilter_taps[tapset][0];
1818 frame->
pf_gains_new[1] = gain * postfilter_taps[tapset][1];
1819 frame->
pf_gains_new[2] = gain * postfilter_taps[tapset][2];
1833 for (i = s->
startband; i < s->endband; i++) {
1834 int renormalize = 0;
1838 float thresh, sqrt_1;
1843 thresh =
exp2f(-1.0 - 0.125f * depth);
1856 Ediff = frame->
energy[i] -
FFMIN(prev[0], prev[1]);
1857 Ediff =
FFMAX(0, Ediff);
1861 r =
exp2(1 - Ediff);
1864 r =
FFMIN(thresh, r) * sqrt_1;
1865 for (k = 0; k < 1 << s->
duration; k++) {
1883 float lowband_scratch[8 * 22];
1884 float norm[2 * 8 * 100];
1888 int update_lowband = 1;
1889 int lowband_offset = 0;
1895 for (i = s->
startband; i < s->endband; i++) {
1898 float *X = s->
coeffs[0] + band_offset;
1902 float *norm2 = norm + 8 * 100;
1903 int effective_lowband = -1;
1911 if (i <= s->codedbands - 1) {
1918 (update_lowband || lowband_offset == 0))
1925 int foldstart, foldend;
1930 foldstart = lowband_offset;
1932 foldend = lowband_offset - 1;
1936 for (j = foldstart; j < foldend; j++) {
1943 cm[0] = cm[1] = (1 << s->
blocks) - 1;
1949 norm[j] = (norm[j] + norm2[j]) / 2;
1955 norm + band_offset, 0, 1.0f, lowband_scratch, cm[0]);
1959 norm2 + band_offset, 0, 1.0f, lowband_scratch, cm[1]);
1963 norm + band_offset, 0, 1.0f, lowband_scratch, cm[0]|cm[1]);
1973 update_lowband = (b > band_size << 3);
1978 float **output,
int coded_channels,
int frame_size,
1979 int startband,
int endband)
1986 int anticollapse = 0;
1988 float imdct_scale = 1.0;
1990 if (coded_channels != 1 && coded_channels != 2) {
1995 if (startband < 0 || startband > endband || endband >
CELT_MAX_BANDS) {
1997 startband, endband);
2026 else if (consumed == 1)
2047 if (coded_channels == 1) {
2079 memcpy(s->
coeffs[1], s->
coeffs[0], frame_size *
sizeof(
float));
2082 for (i = 0; i < 2; i++) {
2097 for (j = 0; j < s->
blocks; j++) {
2111 float tmp = frame->
buf[1024 - frame_size + j] +
m;
2113 output[i][j] = tmp / 32768.;
2118 if (coded_channels == 1)
2121 for (i = 0; i < 2; i++ ) {
2154 for (i = 0; i < 2; i++) {
2161 memset(frame->
buf, 0,
sizeof(frame->
buf));
2194 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]
static const int8_t pulses[4]
Number of non-zero pulses in the MP-MLQ excitation.
#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]
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]
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)
int flags
AV_CODEC_FLAG_*.
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[]
#define AV_CODEC_FLAG_BITEXACT
Use only bitexact stuff (except (I)DCT).
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)
#define FF_ARRAY_ELEMS(a)
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]
Replacements for frequently missing libm functions.
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 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]