42 0, 16, 32, 48, 64, 80, 96, 112,
43 128, 160, 192, 224, 256, 288, 320, 352,
44 384, 448, 512, 576, 640, 704, 768, 896,
45 1024, 1152, 1280, 1408, 1536, 1664, 1792, 1920,
52 0.027852058, 0.0350914, 0.044212341, 0.055704117, 0.0701828,
53 0.088424683, 0.11140823, 0.1403656, 0.17684937, 0.22281647, 0.2807312, 0.35369873,
54 0.44563293, 0.5614624, 0.70739746, 0.89126587, 1.1229248, 1.4147949, 1.7825317,
55 2.2458496, 2.8295898, 3.5650635, 4.4916992, 5.6591797, 7.130127, 8.9833984,
56 11.318359, 14.260254, 17.966797, 22.636719, 28.520508, 35.933594, 45.273438,
57 57.041016, 71.867188, 90.546875, 114.08203, 143.73438, 181.09375, 228.16406,
58 287.46875, 362.1875, 456.32812, 574.9375, 724.375, 912.65625, 1149.875,
59 1448.75, 1825.3125, 2299.75, 2897.5, 3650.625, 4599.5, 5795.0,
60 7301.25, 9199.0, 11590.0, 14602.5, 18398.0, 23180.0, 29205.0,
61 36796.0, 46360.0, 58410.0
77 #define ATRAC3P_MDCT_SIZE (ATRAC3P_SUBBAND_SAMPLES * 2)
88 #define TWOPI (2 * M_PI)
90 #define DEQUANT_PHASE(ph) (((ph) & 0x1F) << 6)
101 for (i = 0; i < 2048; i++)
105 for (i = 0; i < 256; i++)
109 for (i = 0; i < 64; i++)
110 amp_sf_tab[i] = pow(2.0f, ((
double)i - 3) / 4.0f);
128 int invert_phase,
int reg_offset,
float *
out)
134 for (wn = 0; wn < waves_info->
num_wavs; wn++, wave_param++) {
145 for (i = 0; i < 128; i++) {
147 pos = (pos + inc) & 2047;
157 pos = (envelope->
start_pos << 2) - reg_offset;
158 if (pos > 0 && pos <= 128) {
159 memset(out, 0, pos *
sizeof(*out));
172 pos = (envelope->
stop_pos + 1 << 2) - reg_offset;
173 if (pos > 0 && pos <= 128) {
178 memset(&out[pos], 0, (128 - pos) *
sizeof(out[pos]));
184 int ch_num,
int sb,
float *
out)
188 int i, reg1_env_nonzero, reg2_env_nonzero;
223 if (tones_now->
num_wavs && reg1_env_nonzero)
228 if (tones_next->
num_wavs && reg2_env_nonzero)
234 reg1_env_nonzero && reg2_env_nonzero) {
246 for (i = 0; i < 128; i++)
247 out[i] += wavreg1[i] + wavreg2[i];
251 0, 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4
256 -0.01358032, -0.05593872, 0.01696777, -0.14871216, -0.26412964, -0.09893799, 0.25723267,
257 0.02008057, -0.72235107, -0.44351196, -0.22985840, 0.16833496, 0.46902466, 0.05917358,
258 -0.15179443, 0.41299438, -0.01287842, 0.13360596, 0.43557739, -0.09530640, -0.58422852,
259 0.39266968, -0.08343506, -0.25604248, 0.22848511, 0.26013184, -0.65588379, 0.17288208,
260 -0.08673096, -0.05203247, 0.07299805, -0.28665161, -0.35806274, 0.06552124, -0.09387207,
261 0.21099854, -0.28347778, -0.72402954, 0.05050659, -0.10635376, -0.18853760, 0.29724121,
262 0.20703125, -0.29791260, -0.37634277, 0.47970581, -0.09976196, 0.32641602, -0.29248047,
263 -0.28237915, 0.26028442, -0.36157227, 0.22042847, -0.03222656, -0.37268066, -0.03759766,
264 0.09909058, 0.23284912, 0.19320679, 0.14453125, -0.02139282, -0.19702148, 0.31533813,
265 -0.16741943, 0.35031128, -0.35656738, -0.66128540, -0.00701904, 0.20898438, 0.26837158,
266 -0.33706665, -0.04568481, 0.12600708, 0.10284424, 0.07321167, -0.18280029, 0.38101196,
267 0.21301270, 0.04541016, 0.01156616, -0.26391602, -0.02346802, -0.22125244, 0.29760742,
268 -0.36233521, -0.31314087, -0.13967896, -0.11276245, -0.19433594, 0.34490967, 0.02343750,
269 0.21963501, -0.02777100, -0.67678833, -0.08999634, 0.14233398, -0.27697754, 0.51422119,
270 -0.05047607, 0.48327637, 0.37167358, -0.60806274, 0.18728638, -0.15191650, 0.00637817,
271 0.02832031, -0.15618896, 0.60644531, 0.21826172, 0.06384277, -0.31863403, 0.08816528,
272 0.15447998, -0.07015991, -0.08154297, -0.40966797, -0.39785767, -0.11709595, 0.22052002,
273 0.18466187, -0.17257690, 0.03759766, -0.06195068, 0.00433350, 0.12176514, 0.34011841,
274 0.25610352, -0.05294800, 0.41033936, 0.16854858, -0.76187134, 0.13845825, -0.19418335,
275 -0.21524048, -0.44412231, -0.08160400, -0.28195190, -0.01873779, 0.15524292, -0.37438965,
276 -0.44860840, 0.43096924, -0.24746704, 0.49856567, 0.14859009, 0.38159180, 0.20541382,
277 -0.39175415, -0.65850830, -0.43716431, 0.13037109, -0.05111694, 0.39956665, 0.21447754,
278 -0.04861450, 0.33654785, 0.10589600, -0.88085938, -0.30822754, 0.38577271, 0.30047607,
279 0.38836670, 0.09118652, -0.36477661, -0.01641846, -0.23031616, 0.26058960, 0.18859863,
280 -0.21868896, -0.17861938, -0.29754639, 0.09777832, 0.10806274, -0.51605225, 0.00076294,
281 0.13259888, 0.11090088, -0.24084473, 0.24957275, 0.01379395, -0.04141235, -0.04937744,
282 0.57394409, 0.27410889, 0.27587891, 0.45013428, -0.32592773, 0.11160278, -0.00970459,
283 0.29092407, 0.03356934, -0.70925903, 0.04882812, 0.43499756, 0.07720947, -0.27554321,
284 -0.01742554, -0.08413696, -0.04028320, -0.52850342, -0.07330322, 0.05181885, 0.21362305,
285 -0.18765259, 0.07058716, -0.03009033, 0.32662964, 0.27023315, -0.28002930, 0.17568970,
286 0.03338623, 0.30242920, -0.03921509, 0.32174683, -0.23733521, 0.08575439, -0.38269043,
287 0.09194946, -0.07238770, 0.17941284, -0.51278687, -0.25146484, 0.19790649, -0.19195557,
288 0.16549683, 0.42456055, 0.39129639, -0.02868652, 0.17980957, 0.24902344, -0.76583862,
289 -0.20959473, 0.61013794, 0.37011719, 0.36859131, -0.04486084, 0.10678101, -0.15994263,
290 -0.05328369, 0.28463745, -0.06420898, -0.36987305, -0.28009033, -0.11764526, 0.04312134,
291 -0.08038330, 0.04885864, -0.03067017, -0.00042725, 0.34289551, -0.00988770, 0.34838867,
292 0.32516479, -0.16271973, 0.38269043, 0.03240967, 0.12417603, -0.14331055, -0.34902954,
293 -0.18325806, 0.29421997, 0.44284058, 0.75170898, -0.67245483, -0.12176514, 0.27914429,
294 -0.29806519, 0.19863892, 0.30087280, 0.22680664, -0.36633301, -0.32534790, -0.57553101,
295 -0.16641235, 0.43811035, 0.08331299, 0.15942383, 0.26516724, -0.24240112, -0.11761475,
296 -0.16827393, -0.14260864, 0.46343994, 0.11804199, -0.55514526, -0.02520752, -0.14309692,
297 0.00448608, 0.02749634, -0.30545044, 0.70965576, 0.45108032, 0.66439819, -0.68255615,
298 -0.12496948, 0.09146118, -0.21109009, -0.23791504, 0.79943848, -0.35205078, -0.24963379,
299 0.18719482, -0.19079590, 0.07458496, 0.07623291, -0.28781128, -0.37121582, -0.19580078,
300 -0.01773071, -0.16717529, 0.13040161, 0.14672852, 0.42379761, 0.03582764, 0.11431885,
301 0.05145264, 0.44702148, 0.08963013, 0.01367188, -0.54519653, -0.12692261, 0.21176147,
302 0.04925537, 0.30670166, -0.11029053, 0.19555664, -0.27740479, 0.23043823, 0.15554810,
303 -0.19299316, -0.25729370, 0.17800903, -0.03579712, -0.05065918, -0.06933594, -0.09500122,
304 -0.07821655, 0.23889160, -0.31900024, 0.03073120, -0.00415039, 0.61315918, 0.37176514,
305 -0.13442993, -0.15536499, -0.19216919, -0.37899780, 0.19992065, 0.02630615, -0.12573242,
306 0.25927734, -0.02447510, 0.29629517, -0.40731812, -0.17333984, 0.24310303, -0.10607910,
307 0.14828491, 0.08792114, -0.18743896, -0.05572510, -0.04833984, 0.10473633, -0.29028320,
308 -0.67687988, -0.28170776, -0.41687012, 0.05413818, -0.23284912, 0.09555054, -0.08969116,
309 -0.15112305, 0.12738037, 0.35986328, 0.28948975, 0.30691528, 0.23956299, 0.06973267,
310 -0.31198120, -0.18450928, 0.22280884, -0.21600342, 0.23522949, -0.61840820, -0.13012695,
311 0.26412964, 0.47320557, -0.26440430, 0.38757324, 0.17352295, -0.26104736, -0.25866699,
312 -0.12274170, -0.29733276, 0.07687378, 0.18588257, -0.08880615, 0.31185913, 0.05313110,
313 -0.10885620, -0.14901733, -0.22323608, -0.08538818, 0.19812012, 0.19732666, -0.18927002,
314 0.29058838, 0.25555420, -0.48599243, 0.18768311, 0.01345825, 0.34887695, 0.21530151,
315 0.19857788, 0.18661499, -0.01394653, -0.09063721, -0.38781738, 0.27160645, -0.20379639,
316 -0.32119751, -0.23889160, 0.27096558, 0.24951172, 0.07922363, 0.07479858, -0.50946045,
317 0.10220337, 0.58364868, -0.19503784, -0.18560791, -0.01165771, 0.47195435, 0.22430420,
318 -0.38635254, -0.03732300, -0.09179688, 0.06991577, 0.15106201, 0.20605469, -0.05969238,
319 -0.41821289, 0.12231445, -0.04672241, -0.05117798, -0.11523438, -0.51849365, -0.04077148,
320 0.44284058, -0.64086914, 0.17019653, 0.02236938, 0.22848511, -0.23214722, -0.32354736,
321 -0.14068604, -0.29690552, -0.19891357, 0.02774048, -0.20965576, -0.52191162, -0.19299316,
322 -0.07290649, 0.49053955, -0.22302246, 0.05642700, 0.13122559, -0.20819092, -0.83590698,
323 -0.08181763, 0.26797485, -0.00091553, -0.09457397, 0.17089844, -0.27020264, 0.30270386,
324 0.05496216, 0.09564209, -0.08590698, 0.02130127, 0.35931396, 0.21728516, -0.15396118,
325 -0.05053711, 0.02719116, 0.16302490, 0.43212891, 0.10229492, -0.40820312, 0.21646118,
326 0.08435059, -0.11145020, -0.39962769, -0.05618286, -0.10223389, -0.60839844, 0.33724976,
327 -0.06341553, -0.47369385, -0.32852173, 0.05242920, 0.19635010, -0.19137573, -0.67901611,
328 0.16180420, 0.05133057, -0.22283936, 0.09646606, 0.24288940, -0.45007324, 0.08804321,
329 0.14053345, 0.22619629, -0.01000977, 0.36355591, -0.19863892, -0.30364990, -0.24118042,
330 -0.57461548, 0.26498413, 0.04345703, -0.09796143, -0.47714233, -0.23739624, 0.18737793,
331 0.08926392, -0.02795410, 0.00305176, -0.08700562, -0.38711548, 0.03222656, 0.10940552,
332 -0.41906738, -0.01620483, -0.47061157, 0.37985229, -0.21624756, 0.47976685, -0.20046997,
333 -0.62533569, -0.26907349, -0.02877808, 0.00671387, -0.29071045, -0.24685669, -0.15722656,
334 -0.26055908, 0.29968262, 0.28225708, -0.08990479, -0.16748047, -0.46759033, -0.25067139,
335 -0.25183105, -0.45932007, 0.05828857, 0.29006958, 0.23840332, -0.17974854, 0.26931763,
336 0.10696411, -0.06848145, -0.17126465, -0.10522461, -0.55386353, -0.42306519, -0.07608032,
337 0.24380493, 0.38586426, 0.16882324, 0.26751709, 0.17303467, 0.35809326, -0.22094727,
338 -0.30703735, -0.28497314, -0.04321289, 0.15219116, -0.17071533, -0.39334106, 0.03439331,
339 -0.10809326, -0.30590820, 0.26449585, -0.07412720, 0.13638306, -0.01062012, 0.27996826,
340 0.04397583, -0.05557251, -0.56933594, 0.03363037, -0.00949097, 0.52642822, -0.44329834,
341 0.28308105, -0.05499268, -0.23312378, -0.29870605, -0.05123901, 0.26831055, -0.35238647,
342 -0.30993652, 0.34646606, -0.19775391, 0.44595337, 0.13769531, 0.45358276, 0.19961548,
343 0.42681885, 0.15722656, 0.00128174, 0.23757935, 0.40988159, 0.25164795, -0.00732422,
344 -0.12405396, -0.43420410, -0.00402832, 0.34243774, 0.36264038, 0.18807983, -0.09301758,
345 -0.10296631, 0.05532837, -0.31652832, 0.14337158, 0.35040283, 0.32540894, 0.05728149,
346 -0.12030029, -0.25942993, -0.20312500, -0.16491699, -0.46051025, -0.08004761, 0.50772095,
347 0.16168213, 0.28439331, 0.08105469, -0.19104004, 0.38589478, -0.16400146, -0.25454712,
348 0.20281982, -0.20730591, -0.06311035, 0.32937622, 0.15032959, -0.05340576, 0.30487061,
349 -0.11648560, 0.38009644, -0.20062256, 0.43466187, 0.01150513, 0.35754395, -0.13146973,
350 0.67489624, 0.05212402, 0.27914429, -0.39431763, 0.75308228, -0.13366699, 0.24453735,
351 0.42248535, -0.65905762, -0.00546265, -0.03491211, -0.13659668, -0.08294678, -0.45666504,
352 0.27188110, 0.12731934, 0.61148071, 0.10449219, -0.28836060, 0.00091553, 0.24618530,
353 0.13119507, 0.05685425, 0.17355347, 0.42034912, 0.08514404, 0.24536133, 0.18951416,
354 -0.19107056, -0.15036011, 0.02334595, 0.54986572, 0.32321167, -0.16104126, -0.03054810,
355 0.43594360, 0.17309570, 0.61053467, 0.24731445, 0.33334351, 0.15240479, 0.15588379,
356 0.36425781, -0.30407715, -0.13302612, 0.00427246, 0.04171753, -0.33178711, 0.34216309,
357 -0.12463379, -0.02764893, 0.05905151, -0.31436157, 0.16531372, 0.34542847, -0.03292847,
358 0.12527466, -0.12313843, -0.13171387, 0.04757690, -0.45095825, -0.19085693, 0.35342407,
359 -0.23239136, -0.34387207, 0.11264038, -0.15740967, 0.05273438, 0.74942017, 0.21505737,
360 0.08514404, -0.42391968, -0.19531250, 0.35293579, 0.25305176, 0.15731812, -0.70324707,
361 -0.21591187, 0.35604858, 0.14132690, 0.11724854, 0.15853882, -0.24597168, 0.07019043,
362 0.02127075, 0.12658691, 0.06390381, -0.12292480, 0.15441895, -0.47640991, 0.06195068,
363 0.58981323, -0.15151978, -0.03604126, -0.45059204, -0.01672363, -0.46997070, 0.25750732,
364 0.18084717, 0.06661987, 0.13253784, 0.67828369, 0.11370850, 0.11325073, -0.04611206,
365 -0.07791138, -0.36544800, -0.06747437, -0.31594849, 0.16131592, 0.41983032, 0.11071777,
366 -0.36889648, 0.30963135, -0.37875366, 0.58508301, 0.00393677, 0.12338257, 0.03424072,
367 -0.21728516, -0.12838745, -0.46981812, 0.05868530, -0.25015259, 0.27407837, 0.65240479,
368 -0.34429932, -0.15179443, 0.14056396, 0.33505249, 0.28826904, 0.09921265, 0.34390259,
369 0.13656616, -0.23608398, 0.00863647, 0.02627563, -0.19119263, 0.19775391, -0.07214355,
370 0.07809448, 0.03454590, -0.03417969, 0.00033569, -0.23095703, 0.18673706, 0.05798340,
371 0.03814697, -0.04318237, 0.05487061, 0.08633423, 0.55950928, -0.06347656, 0.10333252,
372 0.25305176, 0.05853271, 0.12246704, -0.25543213, -0.34262085, -0.36437988, -0.21304321,
373 -0.05093384, 0.02777100, 0.07620239, -0.21215820, -0.09326172, 0.19021606, -0.40579224,
374 -0.01193237, 0.19845581, -0.35336304, -0.07397461, 0.20104980, 0.08615112, -0.44375610,
375 0.11419678, 0.24453735, -0.16555786, -0.05081177, -0.01406860, 0.27893066, -0.18692017,
376 0.07473755, 0.03451538, -0.39733887, 0.21548462, -0.22534180, -0.39651489, -0.04989624,
377 -0.57662964, 0.06390381, 0.62020874, -0.13470459, 0.04345703, -0.21862793, -0.02789307,
378 0.51696777, -0.27587891, 0.39004517, 0.09857178, -0.00738525, 0.31317139, 0.00048828,
379 -0.46572876, 0.29531860, -0.10009766, -0.27856445, 0.03594971, 0.25048828, -0.74584961,
380 -0.25350952, -0.03302002, 0.31188965, 0.01571655, 0.46710205, 0.21591187, 0.07260132,
381 -0.42132568, -0.53900146, -0.13674927, -0.16571045, -0.34454346, 0.12359619, -0.11184692,
382 0.00967407, 0.34576416, -0.05761719, 0.34848022, 0.17645264, -0.39395142, 0.10339355,
383 0.18215942, 0.20697021, 0.59109497, -0.11560059, -0.07385254, 0.10397339, 0.35437012,
384 -0.22863770, 0.01794434, 0.17559814, -0.17495728, 0.12142944, 0.10928345, -1.00000000,
385 -0.01379395, 0.21237183, -0.27035522, 0.27319336, -0.37066650, 0.41354370, -0.40054321,
386 0.00689697, 0.26321411, 0.39266968, 0.65298462, 0.41625977, -0.13909912, 0.78375244,
387 -0.30941772, 0.20169067, -0.39367676, 0.94021606, -0.24066162, 0.05557251, -0.24533081,
388 -0.05444336, -0.76754761, -0.19375610, -0.11041260, -0.17532349, 0.16006470, 0.02188110,
389 0.17465210, -0.04342651, -0.56777954, -0.40988159, 0.26687622, 0.11700439, -0.00344849,
390 -0.05395508, 0.37426758, -0.40719604, -0.15032959, -0.01660156, 0.04196167, -0.04559326,
391 -0.12969971, 0.12011719, 0.08419800, -0.11199951, 0.35174561, 0.10275269, -0.25686646,
392 0.48446655, 0.03225708, 0.28408813, -0.18701172, 0.36282349, -0.03280640, 0.32302856,
393 0.17233276, 0.48269653, 0.31112671, -0.04946899, 0.12774658, 0.52685547, 0.10211182,
394 0.05953979, 0.05999756, 0.20144653, 0.00744629, 0.27316284, 0.24377441, 0.39672852,
395 0.01702881, -0.35513306, 0.11364746, -0.13555908, 0.48880005, -0.15417480, -0.09149170,
396 -0.02615356, 0.46246338, -0.72250366, 0.22332764, 0.23849487, -0.25686646, -0.08514404,
397 -0.02062988, -0.34494019, -0.02297974, -0.80386353, -0.08074951, -0.12689209, -0.06896973,
398 0.24099731, -0.35650635, -0.09558105, 0.29254150, 0.23132324, -0.16726685, 0.00000000,
399 -0.24237061, 0.30899048, 0.29504395, -0.20898438, 0.17059326, -0.07672119, -0.14395142,
400 0.05572510, 0.20602417, -0.51550293, -0.03167725, -0.48840332, -0.20425415, 0.14144897,
401 0.07275391, -0.76669312, -0.22488403, 0.20651245, 0.03259277, 0.00085449, 0.03039551,
402 0.47555542, 0.38351440
408 3.96875, 3.15625, 2.5, 2.0, 1.59375, 1.25, 1.0, 0.78125,
409 0.625, 0.5, 0.40625, 0.3125, 0.25, 0.1875, 0.15625, 0.0
414 0, 8, 12, 16, 18, 20, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32
418 float *
sp,
int rng_index,
int sb)
422 int i, gain_lev, gcv = 0,
qu, nsp;
456 nsp = ff_atrac3p_qu_to_spec_pos[
qu + 1] - ff_atrac3p_qu_to_spec_pos[
qu];
458 for (i = 0; i < nsp; i++)
459 dst[i] += pwcsp[i] * qu_lev;
464 float *pOut,
int wind_id,
int sb)
481 memset(pOut, 0,
sizeof(
float) * 32);
482 fdsp->
vector_fmul(&pOut[32], &pOut[32], ff_sine_64, 64);
488 memset(&pOut[224], 0,
sizeof(
float) * 32);
496 23, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
497 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0
502 { -5.8336207e-7, -8.0604229e-7, -4.2005411e-7, -4.4400572e-8,
503 3.226247e-8, 3.530856e-8, 1.2660377e-8, 0.000010516783,
504 -0.000011838618, 6.005389e-7, 0.0000014333754, 0.0000023108685,
505 0.0000032569742, 0.0000046192422, 0.0000063894258, 0.0000070302972 },
506 { -0.0000091622824, -0.000010502935, -0.0000079212787, -0.0000041712024,
507 -0.0000026336629, -0.0000015432918, -5.7168614e-7, 0.0000018111954,
508 0.000023530851, 0.00002780562, 0.000032302323, 0.000036968919,
509 0.000041575615, 0.000045337845, 0.000046043948, 0.000048585582 },
510 { -0.000064464548, -0.000068306952, -0.000073081472, -0.00007612785,
511 -0.000074850752, -0.000070208509, -0.000062285151, -0.000058270442,
512 -0.000056296329, -0.000049888811, -0.000035615325, -0.000018532943,
513 0.0000016657353, 0.00002610587, 0.000053397067, 0.00008079566 },
514 { -0.00054488552, -0.00052537228, -0.00049731287, -0.00045778,
515 -0.00040612387, -0.00034301577, -0.00026866337, -0.00018248901,
516 -0.000084307925, 0.000025081157, 0.00014135583, 0.00026649953,
517 0.00039945057, 0.00053928449, 0.00068422867, 0.00083093712 },
518 { -0.0014771431, -0.001283227, -0.0010566821, -0.00079780724,
519 -0.00050782406, -0.00018855913, 0.00015771533, 0.00052769453,
520 0.00091862219, 0.001326357, 0.0017469483, 0.0021754825,
521 0.0026067684, 0.0030352892, 0.0034549395, 0.0038591374 },
522 { -0.0022995141, -0.001443546, -0.00049266568, 0.00055068987,
523 0.001682895, 0.0028992873, 0.0041943151, 0.0055614738,
524 0.0069935122, 0.0084823566, 0.010018963, 0.011593862,
525 0.013196872, 0.014817309, 0.016444042, 0.018065533 },
526 { -0.034426283, -0.034281436, -0.033992987, -0.033563249,
527 -0.032995768, -0.032295227, -0.031467363, -0.030518902,
528 -0.02945766, -0.028291954, -0.027031265, -0.025685543,
529 -0.024265358, -0.022781773, -0.021246184, -0.019670162 },
530 { -0.0030586775, -0.0037203205, -0.0042847847, -0.0047529764,
531 -0.0051268316, -0.0054091476, -0.0056034233, -0.005714261,
532 -0.0057445862, -0.0057025906, -0.0055920109, -0.0054194843,
533 -0.0051914565, -0.0049146507, -0.0045959447, -0.0042418269 },
534 { -0.0016376863, -0.0017651899, -0.0018608454, -0.0019252141,
535 -0.0019593791, -0.0019653172, -0.0019450618, -0.0018990048,
536 -0.00183808, -0.0017501717, -0.0016481078, -0.0015320742,
537 -0.0014046903, -0.0012685474, -0.001125814, -0.00097943726 },
538 { -0.00055432378, -0.00055472925, -0.00054783461, -0.00053276919,
539 -0.00051135791, -0.00048466062, -0.00045358928, -0.00042499689,
540 -0.00036942671, -0.0003392619, -0.00030001783, -0.00025986304,
541 -0.0002197204, -0.00018116167, -0.00014691355, -0.00011279432 },
542 { -0.000064147389, -0.00006174868, -0.000054267788, -0.000047133824,
543 -0.000042927582, -0.000039477309, -0.000036340745, -0.000029687517,
544 -0.000049787737, -0.000041577889, -0.000033864744, -0.000026534748,
545 -0.000019841305, -0.000014789486, -0.000013131184, -0.0000099198869 },
546 { -0.0000062990207, -0.0000072701259, -0.000011984052, -0.000017348082,
547 -0.000019907106, -0.000021348773, -0.000021961965, -0.000012203576,
548 -0.000010840992, 4.6299544e-7, 5.2588763e-7, 2.7792686e-7,
549 -2.3649704e-7, -0.0000010897784, -9.171448e-7, -5.22682e-7 }
554 { 5.22682e-7, 9.171448e-7, 0.0000010897784, 2.3649704e-7,
555 -2.7792686e-7, -5.2588763e-7, -4.6299544e-7, 0.000010840992,
556 -0.000012203576, -0.000021961965, -0.000021348773, -0.000019907106,
557 -0.000017348082, -0.000011984052, -0.0000072701259, -0.0000062990207 },
558 { 0.0000099198869, 0.000013131184, 0.000014789486, 0.000019841305,
559 0.000026534748, 0.000033864744, 0.000041577889, 0.000049787737,
560 -0.000029687517, -0.000036340745, -0.000039477309, -0.000042927582,
561 -0.000047133824, -0.000054267788, -0.00006174868, -0.000064147389 },
562 { 0.00011279432, 0.00014691355, 0.00018116167, 0.0002197204,
563 0.00025986304, 0.00030001783, 0.0003392619, 0.00036942671,
564 -0.00042499689, -0.00045358928, -0.00048466062, -0.00051135791,
565 -0.00053276919, -0.00054783461, -0.00055472925, -0.00055432378 },
566 { 0.00097943726, 0.001125814, 0.0012685474, 0.0014046903,
567 0.0015320742, 0.0016481078, 0.0017501717, 0.00183808,
568 -0.0018990048, -0.0019450618, -0.0019653172, -0.0019593791,
569 -0.0019252141, -0.0018608454, -0.0017651899, -0.0016376863 },
570 { 0.0042418269, 0.0045959447, 0.0049146507, 0.0051914565,
571 0.0054194843, 0.0055920109, 0.0057025906, 0.0057445862,
572 -0.005714261, -0.0056034233, -0.0054091476, -0.0051268316,
573 -0.0047529764, -0.0042847847, -0.0037203205, -0.0030586775 },
574 { 0.019670162, 0.021246184, 0.022781773, 0.024265358,
575 0.025685543, 0.027031265, 0.028291954, 0.02945766,
576 -0.030518902, -0.031467363, -0.032295227, -0.032995768,
577 -0.033563249, -0.033992987, -0.034281436, -0.034426283 },
578 { -0.018065533, -0.016444042, -0.014817309, -0.013196872,
579 -0.011593862, -0.010018963, -0.0084823566, -0.0069935122,
580 0.0055614738, 0.0041943151, 0.0028992873, 0.001682895,
581 0.00055068987, -0.00049266568, -0.001443546, -0.0022995141 },
582 { -0.0038591374, -0.0034549395, -0.0030352892, -0.0026067684,
583 -0.0021754825, -0.0017469483, -0.001326357, -0.00091862219,
584 0.00052769453, 0.00015771533, -0.00018855913, -0.00050782406,
585 -0.00079780724, -0.0010566821, -0.001283227, -0.0014771431 },
586 { -0.00083093712, -0.00068422867, -0.00053928449, -0.00039945057,
587 -0.00026649953, -0.00014135583, -0.000025081157, 0.000084307925,
588 -0.00018248901, -0.00026866337, -0.00034301577, -0.00040612387,
589 -0.00045778, -0.00049731287, -0.00052537228, -0.00054488552 },
590 { -0.00008079566, -0.000053397067, -0.00002610587, -0.0000016657353,
591 0.000018532943, 0.000035615325, 0.000049888811, 0.000056296329,
592 -0.000058270442, -0.000062285151, -0.000070208509, -0.000074850752,
593 -0.00007612785, -0.000073081472, -0.000068306952, -0.000064464548 },
594 { -0.000048585582, -0.000046043948, -0.000045337845, -0.000041575615,
595 -0.000036968919, -0.000032302323, -0.00002780562, -0.000023530851,
596 0.0000018111954, -5.7168614e-7, -0.0000015432918, -0.0000026336629,
597 -0.0000041712024, -0.0000079212787, -0.000010502935, -0.0000091622824 },
598 { -0.0000070302972, -0.0000063894258, -0.0000046192422, -0.0000032569742,
599 -0.0000023108685, -0.0000014333754, -6.005389e-7, 0.000011838618,
600 0.000010516783, 1.2660377e-8, 3.530856e-8, 3.226247e-8,
601 -4.4400572e-8, -4.2005411e-7, -8.0604229e-7, -5.8336207e-7 }
605 const float *
in,
float *
out)
607 int i,
s, sb, t, pos_now, pos_next;
616 idct_in[sb] = in[sb * ATRAC3P_SUBBAND_SAMPLES + s];
619 dct_ctx->
imdct_half(dct_ctx, idct_out, idct_in);
622 for (i = 0; i < 8; i++) {
623 hist->
buf1[hist->
pos][i] = idct_out[i + 8];
624 hist->
buf2[hist->
pos][i] = idct_out[7 - i];
631 for (i = 0; i < 8; i++) {
634 out[s * 16 + i + 8] += hist->
buf1[pos_now][7 - i] *
ipqf_coeffs1[t][i + 8] +
static const float ipqf_coeffs2[ATRAC3P_PQF_FIR_LEN][16]
av_cold void ff_atrac3p_init_wave_synth(void)
Initialize sine waves synthesizer.
Atrac3pWaveParam waves[48]
void ff_atrac3p_imdct(AVFloatDSPContext *fdsp, FFTContext *mdct_ctx, float *pIn, float *pOut, int wind_id, int sb)
Regular IMDCT and windowing without overlapping, with spectrum reversal in the odd subbands...
static float sine_table[2048]
wave table
static const float noise_tab[1024]
Atrac3pWavesData * tones_info_prev
#define DECLARE_ALIGNED(n, t, v)
void ff_atrac3p_ipqf(FFTContext *dct_ctx, Atrac3pIPQFChannelCtx *hist, const float *in, float *out)
Subband synthesis filter based on the polyphase quadrature (pseudo-QMF) filter bank.
void(* vector_fmul_reverse)(float *dst, const float *src0, const float *src1, int len)
Calculate the entry wise product of two vectors of floats, and store the result in a vector of floats...
int num_wavs
number of sine waves in the group
int lev_code[7]
level at corresponding control point
#define ATRAC3P_SUBBANDS
Global unit sizes.
AtracGainInfo * gain_data_prev
gain control data for previous frame
int stop_pos
stop position expressed in n*4 samples
const float ff_atrac3p_sf_tab[64]
#define ATRAC3P_FRAME_SAMPLES
static const float ipqf_coeffs1[ATRAC3P_PQF_FIR_LEN][16]
#define ATRAC3P_PQF_FIR_LEN
length of the prototype FIR of the PQF
int amp_index
quantized amplitude index
float buf2[ATRAC3P_PQF_FIR_LEN *2][8]
void ff_atrac3p_power_compensation(Atrac3pChanUnitCtx *ctx, int ch_index, float *sp, int rng_index, int sb)
Perform power compensation aka noise dithering.
Parameters of a single sine wave.
Atrac3pWaveEnvelope pend_env
pending envelope from the previous frame
int qu_sf_idx[32]
array of scale factor indexes for each quant unit
uint8_t invert_phase[ATRAC3P_SUBBANDS]
1 - subband-wise phase inversion
Amplitude envelope of a group of sine waves.
void(* vector_fmul)(float *dst, const float *src0, const float *src1, int len)
Calculate the entry wise product of two vectors of floats and store the result in a vector of floats...
Parameters of a group of sine waves.
Libavcodec external API header.
int qu_wordlen[32]
array of word lengths for each quant unit
const uint16_t ff_atrac3p_qu_to_spec_pos[33]
Map quant unit number to its position in the spectrum.
float buf1[ATRAC3P_PQF_FIR_LEN *2][8]
int amplitude_mode
1 - low range, 0 - high range
void(* imdct_calc)(struct FFTContext *s, FFTSample *output, const FFTSample *input)
#define ATRAC3P_POWER_COMP_OFF
Global constants.
#define ATRAC3P_SUBBAND_SAMPLES
number of samples per subband
#define DEQUANT_PHASE(ph)
static const float pwc_levs[16]
Noise level table for power compensation.
Atrac3pWavesData * tones_info
#define ATRAC3P_MDCT_SIZE
int unit_type
unit type (mono/stereo)
uint8_t swap_channels[ATRAC3P_SUBBANDS]
1 - perform subband-wise channel swapping
const float ff_atrac3p_mant_tab[8]
void(* vector_fmul_scalar)(float *dst, const float *src, float mul, int len)
Multiply a vector of floats by a scalar float.
static const int subband_to_powgrp[ATRAC3P_SUBBANDS]
int start_index
start index into global tones table for that subband
Gain control parameters for one subband.
int freq_index
wave frequency index
int phase_index
quantized phase index
av_cold void ff_atrac3p_init_imdct(AVCodecContext *avctx, FFTContext *mdct_ctx)
Initialize IMDCT transform.
main external API structure.
uint8_t pi<< 24) CONV_FUNC_GROUP(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_U8, uint8_t,(*(constuint8_t *) pi-0x80)*(1.0f/(1<< 7))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_U8, uint8_t,(*(constuint8_t *) pi-0x80)*(1.0/(1<< 7))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_S16, int16_t,(*(constint16_t *) pi >>8)+0x80) CONV_FUNC_GROUP(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_S16, int16_t,*(constint16_t *) pi *(1.0f/(1<< 15))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_S16, int16_t,*(constint16_t *) pi *(1.0/(1<< 15))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_S32, int32_t,(*(constint32_t *) pi >>24)+0x80) CONV_FUNC_GROUP(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_S32, int32_t,*(constint32_t *) pi *(1.0f/(1U<< 31))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_S32, int32_t,*(constint32_t *) pi *(1.0/(1U<< 31))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_FLT, float, av_clip_uint8(lrintf(*(constfloat *) pi *(1<< 7))+0x80)) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S16, int16_t, AV_SAMPLE_FMT_FLT, float, av_clip_int16(lrintf(*(constfloat *) pi *(1<< 15)))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S32, int32_t, AV_SAMPLE_FMT_FLT, float, av_clipl_int32(llrintf(*(constfloat *) pi *(1U<< 31)))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_DBL, double, av_clip_uint8(lrint(*(constdouble *) pi *(1<< 7))+0x80)) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S16, int16_t, AV_SAMPLE_FMT_DBL, double, av_clip_int16(lrint(*(constdouble *) pi *(1<< 15)))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S32, int32_t, AV_SAMPLE_FMT_DBL, double, av_clipl_int32(llrint(*(constdouble *) pi *(1U<< 31))))#defineSET_CONV_FUNC_GROUP(ofmt, ifmt) staticvoidset_generic_function(AudioConvert *ac){}voidff_audio_convert_free(AudioConvert **ac){if(!*ac) return;ff_dither_free(&(*ac) ->dc);av_freep(ac);}AudioConvert *ff_audio_convert_alloc(AVAudioResampleContext *avr, enumAVSampleFormatout_fmt, enumAVSampleFormatin_fmt, intchannels, intsample_rate, intapply_map){AudioConvert *ac;intin_planar, out_planar;ac=av_mallocz(sizeof(*ac));if(!ac) returnNULL;ac->avr=avr;ac->out_fmt=out_fmt;ac->in_fmt=in_fmt;ac->channels=channels;ac->apply_map=apply_map;if(avr->dither_method!=AV_RESAMPLE_DITHER_NONE &&av_get_packed_sample_fmt(out_fmt)==AV_SAMPLE_FMT_S16 &&av_get_bytes_per_sample(in_fmt)>2){ac->dc=ff_dither_alloc(avr, out_fmt, in_fmt, channels, sample_rate, apply_map);if(!ac->dc){av_free(ac);returnNULL;}returnac;}in_planar=ff_sample_fmt_is_planar(in_fmt, channels);out_planar=ff_sample_fmt_is_planar(out_fmt, channels);if(in_planar==out_planar){ac->func_type=CONV_FUNC_TYPE_FLAT;ac->planes=in_planar?ac->channels:1;}elseif(in_planar) ac->func_type=CONV_FUNC_TYPE_INTERLEAVE;elseac->func_type=CONV_FUNC_TYPE_DEINTERLEAVE;set_generic_function(ac);if(ARCH_AARCH64) ff_audio_convert_init_aarch64(ac);if(ARCH_ARM) ff_audio_convert_init_arm(ac);if(ARCH_X86) ff_audio_convert_init_x86(ac);returnac;}intff_audio_convert(AudioConvert *ac, AudioData *out, AudioData *in){intuse_generic=1;intlen=in->nb_samples;intp;if(ac->dc){av_log(ac->avr, AV_LOG_TRACE,"%dsamples-audio_convert:%sto%s(dithered)\n", len, av_get_sample_fmt_name(ac->in_fmt), av_get_sample_fmt_name(ac->out_fmt));returnff_convert_dither(ac-> in
void(* imdct_half)(struct FFTContext *s, FFTSample *output, const FFTSample *input)
int amp_sf
quantized amplitude scale factor
Atrac3pWaveEnvelope curr_env
group envelope from the current frame
Per-channel IPQF history.
Atrac3pWaveSynthParams * waves_info_prev
void ff_atrac3p_generate_tones(Atrac3pChanUnitCtx *ch_unit, AVFloatDSPContext *fdsp, int ch_num, int sb, float *out)
Synthesize sine waves for a particular subband.
int num_points
number of gain control points
static float amp_sf_tab[64]
scalefactors for quantized amplitudes
int has_start_point
indicates start point within the GHA window
#define LOCAL_ALIGNED(a, t, v,...)
AtracGainInfo * gain_data
gain control data for next frame
int has_stop_point
indicates stop point within the GHA window
unit containing two jointly-coded channels
Atrac3pWaveSynthParams * waves_info
Atrac3pChanParams channels[2]
int start_pos
start position expressed in n*4 samples
uint8_t pi<< 24) CONV_FUNC_GROUP(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_U8, uint8_t,(*(constuint8_t *) pi-0x80)*(1.0f/(1<< 7))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_U8, uint8_t,(*(constuint8_t *) pi-0x80)*(1.0/(1<< 7))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_S16, int16_t,(*(constint16_t *) pi >>8)+0x80) CONV_FUNC_GROUP(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_S16, int16_t,*(constint16_t *) pi *(1.0f/(1<< 15))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_S16, int16_t,*(constint16_t *) pi *(1.0/(1<< 15))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_S32, int32_t,(*(constint32_t *) pi >>24)+0x80) CONV_FUNC_GROUP(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_S32, int32_t,*(constint32_t *) pi *(1.0f/(1U<< 31))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_S32, int32_t,*(constint32_t *) pi *(1.0/(1U<< 31))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_FLT, float, av_clip_uint8(lrintf(*(constfloat *) pi *(1<< 7))+0x80)) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S16, int16_t, AV_SAMPLE_FMT_FLT, float, av_clip_int16(lrintf(*(constfloat *) pi *(1<< 15)))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S32, int32_t, AV_SAMPLE_FMT_FLT, float, av_clipl_int32(llrintf(*(constfloat *) pi *(1U<< 31)))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_DBL, double, av_clip_uint8(lrint(*(constdouble *) pi *(1<< 7))+0x80)) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S16, int16_t, AV_SAMPLE_FMT_DBL, double, av_clip_int16(lrint(*(constdouble *) pi *(1<< 15)))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S32, int32_t, AV_SAMPLE_FMT_DBL, double, av_clipl_int32(llrint(*(constdouble *) pi *(1U<< 31))))#defineSET_CONV_FUNC_GROUP(ofmt, ifmt) staticvoidset_generic_function(AudioConvert *ac){}voidff_audio_convert_free(AudioConvert **ac){if(!*ac) return;ff_dither_free(&(*ac) ->dc);av_freep(ac);}AudioConvert *ff_audio_convert_alloc(AVAudioResampleContext *avr, enumAVSampleFormatout_fmt, enumAVSampleFormatin_fmt, intchannels, intsample_rate, intapply_map){AudioConvert *ac;intin_planar, out_planar;ac=av_mallocz(sizeof(*ac));if(!ac) returnNULL;ac->avr=avr;ac->out_fmt=out_fmt;ac->in_fmt=in_fmt;ac->channels=channels;ac->apply_map=apply_map;if(avr->dither_method!=AV_RESAMPLE_DITHER_NONE &&av_get_packed_sample_fmt(out_fmt)==AV_SAMPLE_FMT_S16 &&av_get_bytes_per_sample(in_fmt)>2){ac->dc=ff_dither_alloc(avr, out_fmt, in_fmt, channels, sample_rate, apply_map);if(!ac->dc){av_free(ac);returnNULL;}returnac;}in_planar=ff_sample_fmt_is_planar(in_fmt, channels);out_planar=ff_sample_fmt_is_planar(out_fmt, channels);if(in_planar==out_planar){ac->func_type=CONV_FUNC_TYPE_FLAT;ac->planes=in_planar?ac->channels:1;}elseif(in_planar) ac->func_type=CONV_FUNC_TYPE_INTERLEAVE;elseac->func_type=CONV_FUNC_TYPE_DEINTERLEAVE;set_generic_function(ac);if(ARCH_AARCH64) ff_audio_convert_init_aarch64(ac);if(ARCH_ARM) ff_audio_convert_init_arm(ac);if(ARCH_X86) ff_audio_convert_init_x86(ac);returnac;}intff_audio_convert(AudioConvert *ac, AudioData *out, AudioData *in){intuse_generic=1;intlen=in->nb_samples;intp;if(ac->dc){av_log(ac->avr, AV_LOG_TRACE,"%dsamples-audio_convert:%sto%s(dithered)\n", len, av_get_sample_fmt_name(ac->in_fmt), av_get_sample_fmt_name(ac->out_fmt));returnff_convert_dither(ac-> out
static const int mod23_lut[26]
static void waves_synth(Atrac3pWaveSynthParams *synth_param, Atrac3pWavesData *waves_info, Atrac3pWaveEnvelope *envelope, AVFloatDSPContext *fdsp, int invert_phase, int reg_offset, float *out)
Synthesize sine waves according to given parameters.
#define FFSWAP(type, a, b)
static const int subband_to_qu[17]
Map subband number to quant unit number.
Global structures, constants and data for ATRAC3+ decoder.
static float hann_window[256]
Hann windowing function.
void ff_init_ff_sine_windows(int index)
initialize the specified entry of ff_sine_windows
uint8_t power_levs[5]
power compensation levels