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);
126 int phase_shift,
int reg_offset,
float *
out)
132 for (wn = 0; wn < waves_info->
num_wavs; wn++, wave_param++) {
143 for (i = 0; i < 128; i++) {
145 pos = (pos + inc) & 2047;
151 pos = (envelope->
start_pos << 2) - reg_offset;
152 if (pos > 0 && pos <= 128) {
153 memset(out, 0, pos *
sizeof(*out));
166 pos = (envelope->
stop_pos + 1 << 2) - reg_offset;
167 if (pos > 0 && pos <= 128) {
172 memset(&out[pos], 0, (128 - pos) *
sizeof(out[pos]));
178 int ch_num,
int sb,
float *
out)
182 int i, reg1_env_nonzero, reg2_env_nonzero;
217 if (tones_now->
num_wavs && reg1_env_nonzero)
222 if (tones_next->
num_wavs && reg2_env_nonzero)
228 reg1_env_nonzero && reg2_env_nonzero) {
240 for (i = 0; i < 128; i++)
241 out[i] += wavreg1[i] + wavreg2[i];
245 0, 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4
250 -0.01358032, -0.05593872, 0.01696777, -0.14871216, -0.26412964, -0.09893799, 0.25723267,
251 0.02008057, -0.72235107, -0.44351196, -0.22985840, 0.16833496, 0.46902466, 0.05917358,
252 -0.15179443, 0.41299438, -0.01287842, 0.13360596, 0.43557739, -0.09530640, -0.58422852,
253 0.39266968, -0.08343506, -0.25604248, 0.22848511, 0.26013184, -0.65588379, 0.17288208,
254 -0.08673096, -0.05203247, 0.07299805, -0.28665161, -0.35806274, 0.06552124, -0.09387207,
255 0.21099854, -0.28347778, -0.72402954, 0.05050659, -0.10635376, -0.18853760, 0.29724121,
256 0.20703125, -0.29791260, -0.37634277, 0.47970581, -0.09976196, 0.32641602, -0.29248047,
257 -0.28237915, 0.26028442, -0.36157227, 0.22042847, -0.03222656, -0.37268066, -0.03759766,
258 0.09909058, 0.23284912, 0.19320679, 0.14453125, -0.02139282, -0.19702148, 0.31533813,
259 -0.16741943, 0.35031128, -0.35656738, -0.66128540, -0.00701904, 0.20898438, 0.26837158,
260 -0.33706665, -0.04568481, 0.12600708, 0.10284424, 0.07321167, -0.18280029, 0.38101196,
261 0.21301270, 0.04541016, 0.01156616, -0.26391602, -0.02346802, -0.22125244, 0.29760742,
262 -0.36233521, -0.31314087, -0.13967896, -0.11276245, -0.19433594, 0.34490967, 0.02343750,
263 0.21963501, -0.02777100, -0.67678833, -0.08999634, 0.14233398, -0.27697754, 0.51422119,
264 -0.05047607, 0.48327637, 0.37167358, -0.60806274, 0.18728638, -0.15191650, 0.00637817,
265 0.02832031, -0.15618896, 0.60644531, 0.21826172, 0.06384277, -0.31863403, 0.08816528,
266 0.15447998, -0.07015991, -0.08154297, -0.40966797, -0.39785767, -0.11709595, 0.22052002,
267 0.18466187, -0.17257690, 0.03759766, -0.06195068, 0.00433350, 0.12176514, 0.34011841,
268 0.25610352, -0.05294800, 0.41033936, 0.16854858, -0.76187134, 0.13845825, -0.19418335,
269 -0.21524048, -0.44412231, -0.08160400, -0.28195190, -0.01873779, 0.15524292, -0.37438965,
270 -0.44860840, 0.43096924, -0.24746704, 0.49856567, 0.14859009, 0.38159180, 0.20541382,
271 -0.39175415, -0.65850830, -0.43716431, 0.13037109, -0.05111694, 0.39956665, 0.21447754,
272 -0.04861450, 0.33654785, 0.10589600, -0.88085938, -0.30822754, 0.38577271, 0.30047607,
273 0.38836670, 0.09118652, -0.36477661, -0.01641846, -0.23031616, 0.26058960, 0.18859863,
274 -0.21868896, -0.17861938, -0.29754639, 0.09777832, 0.10806274, -0.51605225, 0.00076294,
275 0.13259888, 0.11090088, -0.24084473, 0.24957275, 0.01379395, -0.04141235, -0.04937744,
276 0.57394409, 0.27410889, 0.27587891, 0.45013428, -0.32592773, 0.11160278, -0.00970459,
277 0.29092407, 0.03356934, -0.70925903, 0.04882812, 0.43499756, 0.07720947, -0.27554321,
278 -0.01742554, -0.08413696, -0.04028320, -0.52850342, -0.07330322, 0.05181885, 0.21362305,
279 -0.18765259, 0.07058716, -0.03009033, 0.32662964, 0.27023315, -0.28002930, 0.17568970,
280 0.03338623, 0.30242920, -0.03921509, 0.32174683, -0.23733521, 0.08575439, -0.38269043,
281 0.09194946, -0.07238770, 0.17941284, -0.51278687, -0.25146484, 0.19790649, -0.19195557,
282 0.16549683, 0.42456055, 0.39129639, -0.02868652, 0.17980957, 0.24902344, -0.76583862,
283 -0.20959473, 0.61013794, 0.37011719, 0.36859131, -0.04486084, 0.10678101, -0.15994263,
284 -0.05328369, 0.28463745, -0.06420898, -0.36987305, -0.28009033, -0.11764526, 0.04312134,
285 -0.08038330, 0.04885864, -0.03067017, -0.00042725, 0.34289551, -0.00988770, 0.34838867,
286 0.32516479, -0.16271973, 0.38269043, 0.03240967, 0.12417603, -0.14331055, -0.34902954,
287 -0.18325806, 0.29421997, 0.44284058, 0.75170898, -0.67245483, -0.12176514, 0.27914429,
288 -0.29806519, 0.19863892, 0.30087280, 0.22680664, -0.36633301, -0.32534790, -0.57553101,
289 -0.16641235, 0.43811035, 0.08331299, 0.15942383, 0.26516724, -0.24240112, -0.11761475,
290 -0.16827393, -0.14260864, 0.46343994, 0.11804199, -0.55514526, -0.02520752, -0.14309692,
291 0.00448608, 0.02749634, -0.30545044, 0.70965576, 0.45108032, 0.66439819, -0.68255615,
292 -0.12496948, 0.09146118, -0.21109009, -0.23791504, 0.79943848, -0.35205078, -0.24963379,
293 0.18719482, -0.19079590, 0.07458496, 0.07623291, -0.28781128, -0.37121582, -0.19580078,
294 -0.01773071, -0.16717529, 0.13040161, 0.14672852, 0.42379761, 0.03582764, 0.11431885,
295 0.05145264, 0.44702148, 0.08963013, 0.01367188, -0.54519653, -0.12692261, 0.21176147,
296 0.04925537, 0.30670166, -0.11029053, 0.19555664, -0.27740479, 0.23043823, 0.15554810,
297 -0.19299316, -0.25729370, 0.17800903, -0.03579712, -0.05065918, -0.06933594, -0.09500122,
298 -0.07821655, 0.23889160, -0.31900024, 0.03073120, -0.00415039, 0.61315918, 0.37176514,
299 -0.13442993, -0.15536499, -0.19216919, -0.37899780, 0.19992065, 0.02630615, -0.12573242,
300 0.25927734, -0.02447510, 0.29629517, -0.40731812, -0.17333984, 0.24310303, -0.10607910,
301 0.14828491, 0.08792114, -0.18743896, -0.05572510, -0.04833984, 0.10473633, -0.29028320,
302 -0.67687988, -0.28170776, -0.41687012, 0.05413818, -0.23284912, 0.09555054, -0.08969116,
303 -0.15112305, 0.12738037, 0.35986328, 0.28948975, 0.30691528, 0.23956299, 0.06973267,
304 -0.31198120, -0.18450928, 0.22280884, -0.21600342, 0.23522949, -0.61840820, -0.13012695,
305 0.26412964, 0.47320557, -0.26440430, 0.38757324, 0.17352295, -0.26104736, -0.25866699,
306 -0.12274170, -0.29733276, 0.07687378, 0.18588257, -0.08880615, 0.31185913, 0.05313110,
307 -0.10885620, -0.14901733, -0.22323608, -0.08538818, 0.19812012, 0.19732666, -0.18927002,
308 0.29058838, 0.25555420, -0.48599243, 0.18768311, 0.01345825, 0.34887695, 0.21530151,
309 0.19857788, 0.18661499, -0.01394653, -0.09063721, -0.38781738, 0.27160645, -0.20379639,
310 -0.32119751, -0.23889160, 0.27096558, 0.24951172, 0.07922363, 0.07479858, -0.50946045,
311 0.10220337, 0.58364868, -0.19503784, -0.18560791, -0.01165771, 0.47195435, 0.22430420,
312 -0.38635254, -0.03732300, -0.09179688, 0.06991577, 0.15106201, 0.20605469, -0.05969238,
313 -0.41821289, 0.12231445, -0.04672241, -0.05117798, -0.11523438, -0.51849365, -0.04077148,
314 0.44284058, -0.64086914, 0.17019653, 0.02236938, 0.22848511, -0.23214722, -0.32354736,
315 -0.14068604, -0.29690552, -0.19891357, 0.02774048, -0.20965576, -0.52191162, -0.19299316,
316 -0.07290649, 0.49053955, -0.22302246, 0.05642700, 0.13122559, -0.20819092, -0.83590698,
317 -0.08181763, 0.26797485, -0.00091553, -0.09457397, 0.17089844, -0.27020264, 0.30270386,
318 0.05496216, 0.09564209, -0.08590698, 0.02130127, 0.35931396, 0.21728516, -0.15396118,
319 -0.05053711, 0.02719116, 0.16302490, 0.43212891, 0.10229492, -0.40820312, 0.21646118,
320 0.08435059, -0.11145020, -0.39962769, -0.05618286, -0.10223389, -0.60839844, 0.33724976,
321 -0.06341553, -0.47369385, -0.32852173, 0.05242920, 0.19635010, -0.19137573, -0.67901611,
322 0.16180420, 0.05133057, -0.22283936, 0.09646606, 0.24288940, -0.45007324, 0.08804321,
323 0.14053345, 0.22619629, -0.01000977, 0.36355591, -0.19863892, -0.30364990, -0.24118042,
324 -0.57461548, 0.26498413, 0.04345703, -0.09796143, -0.47714233, -0.23739624, 0.18737793,
325 0.08926392, -0.02795410, 0.00305176, -0.08700562, -0.38711548, 0.03222656, 0.10940552,
326 -0.41906738, -0.01620483, -0.47061157, 0.37985229, -0.21624756, 0.47976685, -0.20046997,
327 -0.62533569, -0.26907349, -0.02877808, 0.00671387, -0.29071045, -0.24685669, -0.15722656,
328 -0.26055908, 0.29968262, 0.28225708, -0.08990479, -0.16748047, -0.46759033, -0.25067139,
329 -0.25183105, -0.45932007, 0.05828857, 0.29006958, 0.23840332, -0.17974854, 0.26931763,
330 0.10696411, -0.06848145, -0.17126465, -0.10522461, -0.55386353, -0.42306519, -0.07608032,
331 0.24380493, 0.38586426, 0.16882324, 0.26751709, 0.17303467, 0.35809326, -0.22094727,
332 -0.30703735, -0.28497314, -0.04321289, 0.15219116, -0.17071533, -0.39334106, 0.03439331,
333 -0.10809326, -0.30590820, 0.26449585, -0.07412720, 0.13638306, -0.01062012, 0.27996826,
334 0.04397583, -0.05557251, -0.56933594, 0.03363037, -0.00949097, 0.52642822, -0.44329834,
335 0.28308105, -0.05499268, -0.23312378, -0.29870605, -0.05123901, 0.26831055, -0.35238647,
336 -0.30993652, 0.34646606, -0.19775391, 0.44595337, 0.13769531, 0.45358276, 0.19961548,
337 0.42681885, 0.15722656, 0.00128174, 0.23757935, 0.40988159, 0.25164795, -0.00732422,
338 -0.12405396, -0.43420410, -0.00402832, 0.34243774, 0.36264038, 0.18807983, -0.09301758,
339 -0.10296631, 0.05532837, -0.31652832, 0.14337158, 0.35040283, 0.32540894, 0.05728149,
340 -0.12030029, -0.25942993, -0.20312500, -0.16491699, -0.46051025, -0.08004761, 0.50772095,
341 0.16168213, 0.28439331, 0.08105469, -0.19104004, 0.38589478, -0.16400146, -0.25454712,
342 0.20281982, -0.20730591, -0.06311035, 0.32937622, 0.15032959, -0.05340576, 0.30487061,
343 -0.11648560, 0.38009644, -0.20062256, 0.43466187, 0.01150513, 0.35754395, -0.13146973,
344 0.67489624, 0.05212402, 0.27914429, -0.39431763, 0.75308228, -0.13366699, 0.24453735,
345 0.42248535, -0.65905762, -0.00546265, -0.03491211, -0.13659668, -0.08294678, -0.45666504,
346 0.27188110, 0.12731934, 0.61148071, 0.10449219, -0.28836060, 0.00091553, 0.24618530,
347 0.13119507, 0.05685425, 0.17355347, 0.42034912, 0.08514404, 0.24536133, 0.18951416,
348 -0.19107056, -0.15036011, 0.02334595, 0.54986572, 0.32321167, -0.16104126, -0.03054810,
349 0.43594360, 0.17309570, 0.61053467, 0.24731445, 0.33334351, 0.15240479, 0.15588379,
350 0.36425781, -0.30407715, -0.13302612, 0.00427246, 0.04171753, -0.33178711, 0.34216309,
351 -0.12463379, -0.02764893, 0.05905151, -0.31436157, 0.16531372, 0.34542847, -0.03292847,
352 0.12527466, -0.12313843, -0.13171387, 0.04757690, -0.45095825, -0.19085693, 0.35342407,
353 -0.23239136, -0.34387207, 0.11264038, -0.15740967, 0.05273438, 0.74942017, 0.21505737,
354 0.08514404, -0.42391968, -0.19531250, 0.35293579, 0.25305176, 0.15731812, -0.70324707,
355 -0.21591187, 0.35604858, 0.14132690, 0.11724854, 0.15853882, -0.24597168, 0.07019043,
356 0.02127075, 0.12658691, 0.06390381, -0.12292480, 0.15441895, -0.47640991, 0.06195068,
357 0.58981323, -0.15151978, -0.03604126, -0.45059204, -0.01672363, -0.46997070, 0.25750732,
358 0.18084717, 0.06661987, 0.13253784, 0.67828369, 0.11370850, 0.11325073, -0.04611206,
359 -0.07791138, -0.36544800, -0.06747437, -0.31594849, 0.16131592, 0.41983032, 0.11071777,
360 -0.36889648, 0.30963135, -0.37875366, 0.58508301, 0.00393677, 0.12338257, 0.03424072,
361 -0.21728516, -0.12838745, -0.46981812, 0.05868530, -0.25015259, 0.27407837, 0.65240479,
362 -0.34429932, -0.15179443, 0.14056396, 0.33505249, 0.28826904, 0.09921265, 0.34390259,
363 0.13656616, -0.23608398, 0.00863647, 0.02627563, -0.19119263, 0.19775391, -0.07214355,
364 0.07809448, 0.03454590, -0.03417969, 0.00033569, -0.23095703, 0.18673706, 0.05798340,
365 0.03814697, -0.04318237, 0.05487061, 0.08633423, 0.55950928, -0.06347656, 0.10333252,
366 0.25305176, 0.05853271, 0.12246704, -0.25543213, -0.34262085, -0.36437988, -0.21304321,
367 -0.05093384, 0.02777100, 0.07620239, -0.21215820, -0.09326172, 0.19021606, -0.40579224,
368 -0.01193237, 0.19845581, -0.35336304, -0.07397461, 0.20104980, 0.08615112, -0.44375610,
369 0.11419678, 0.24453735, -0.16555786, -0.05081177, -0.01406860, 0.27893066, -0.18692017,
370 0.07473755, 0.03451538, -0.39733887, 0.21548462, -0.22534180, -0.39651489, -0.04989624,
371 -0.57662964, 0.06390381, 0.62020874, -0.13470459, 0.04345703, -0.21862793, -0.02789307,
372 0.51696777, -0.27587891, 0.39004517, 0.09857178, -0.00738525, 0.31317139, 0.00048828,
373 -0.46572876, 0.29531860, -0.10009766, -0.27856445, 0.03594971, 0.25048828, -0.74584961,
374 -0.25350952, -0.03302002, 0.31188965, 0.01571655, 0.46710205, 0.21591187, 0.07260132,
375 -0.42132568, -0.53900146, -0.13674927, -0.16571045, -0.34454346, 0.12359619, -0.11184692,
376 0.00967407, 0.34576416, -0.05761719, 0.34848022, 0.17645264, -0.39395142, 0.10339355,
377 0.18215942, 0.20697021, 0.59109497, -0.11560059, -0.07385254, 0.10397339, 0.35437012,
378 -0.22863770, 0.01794434, 0.17559814, -0.17495728, 0.12142944, 0.10928345, -1.00000000,
379 -0.01379395, 0.21237183, -0.27035522, 0.27319336, -0.37066650, 0.41354370, -0.40054321,
380 0.00689697, 0.26321411, 0.39266968, 0.65298462, 0.41625977, -0.13909912, 0.78375244,
381 -0.30941772, 0.20169067, -0.39367676, 0.94021606, -0.24066162, 0.05557251, -0.24533081,
382 -0.05444336, -0.76754761, -0.19375610, -0.11041260, -0.17532349, 0.16006470, 0.02188110,
383 0.17465210, -0.04342651, -0.56777954, -0.40988159, 0.26687622, 0.11700439, -0.00344849,
384 -0.05395508, 0.37426758, -0.40719604, -0.15032959, -0.01660156, 0.04196167, -0.04559326,
385 -0.12969971, 0.12011719, 0.08419800, -0.11199951, 0.35174561, 0.10275269, -0.25686646,
386 0.48446655, 0.03225708, 0.28408813, -0.18701172, 0.36282349, -0.03280640, 0.32302856,
387 0.17233276, 0.48269653, 0.31112671, -0.04946899, 0.12774658, 0.52685547, 0.10211182,
388 0.05953979, 0.05999756, 0.20144653, 0.00744629, 0.27316284, 0.24377441, 0.39672852,
389 0.01702881, -0.35513306, 0.11364746, -0.13555908, 0.48880005, -0.15417480, -0.09149170,
390 -0.02615356, 0.46246338, -0.72250366, 0.22332764, 0.23849487, -0.25686646, -0.08514404,
391 -0.02062988, -0.34494019, -0.02297974, -0.80386353, -0.08074951, -0.12689209, -0.06896973,
392 0.24099731, -0.35650635, -0.09558105, 0.29254150, 0.23132324, -0.16726685, 0.00000000,
393 -0.24237061, 0.30899048, 0.29504395, -0.20898438, 0.17059326, -0.07672119, -0.14395142,
394 0.05572510, 0.20602417, -0.51550293, -0.03167725, -0.48840332, -0.20425415, 0.14144897,
395 0.07275391, -0.76669312, -0.22488403, 0.20651245, 0.03259277, 0.00085449, 0.03039551,
396 0.47555542, 0.38351440
402 3.96875, 3.15625, 2.5, 2.0, 1.59375, 1.25, 1.0, 0.78125,
403 0.625, 0.5, 0.40625, 0.3125, 0.25, 0.1875, 0.15625, 0.0
408 0, 8, 12, 16, 18, 20, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32
412 float *sp,
int rng_index,
int sb)
416 int i, gain_lev, gcv = 0,
qu, nsp;
450 nsp = ff_atrac3p_qu_to_spec_pos[
qu + 1] - ff_atrac3p_qu_to_spec_pos[
qu];
452 for (i = 0; i < nsp; i++)
453 dst[i] += pwcsp[i] * qu_lev;
458 float *pOut,
int wind_id,
int sb)
475 memset(pOut, 0,
sizeof(
float) * 32);
476 fdsp->
vector_fmul(&pOut[32], &pOut[32], ff_sine_64, 64);
482 memset(&pOut[224], 0,
sizeof(
float) * 32);
490 23, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
491 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 0
496 { -5.8336207e-7, -8.0604229e-7, -4.2005411e-7, -4.4400572e-8,
497 3.226247e-8, 3.530856e-8, 1.2660377e-8, 0.000010516783,
498 -0.000011838618, 6.005389e-7, 0.0000014333754, 0.0000023108685,
499 0.0000032569742, 0.0000046192422, 0.0000063894258, 0.0000070302972 },
500 { -0.0000091622824, -0.000010502935, -0.0000079212787, -0.0000041712024,
501 -0.0000026336629, -0.0000015432918, -5.7168614e-7, 0.0000018111954,
502 0.000023530851, 0.00002780562, 0.000032302323, 0.000036968919,
503 0.000041575615, 0.000045337845, 0.000046043948, 0.000048585582 },
504 { -0.000064464548, -0.000068306952, -0.000073081472, -0.00007612785,
505 -0.000074850752, -0.000070208509, -0.000062285151, -0.000058270442,
506 -0.000056296329, -0.000049888811, -0.000035615325, -0.000018532943,
507 0.0000016657353, 0.00002610587, 0.000053397067, 0.00008079566 },
508 { -0.00054488552, -0.00052537228, -0.00049731287, -0.00045778,
509 -0.00040612387, -0.00034301577, -0.00026866337, -0.00018248901,
510 -0.000084307925, 0.000025081157, 0.00014135583, 0.00026649953,
511 0.00039945057, 0.00053928449, 0.00068422867, 0.00083093712 },
512 { -0.0014771431, -0.001283227, -0.0010566821, -0.00079780724,
513 -0.00050782406, -0.00018855913, 0.00015771533, 0.00052769453,
514 0.00091862219, 0.001326357, 0.0017469483, 0.0021754825,
515 0.0026067684, 0.0030352892, 0.0034549395, 0.0038591374 },
516 { -0.0022995141, -0.001443546, -0.00049266568, 0.00055068987,
517 0.001682895, 0.0028992873, 0.0041943151, 0.0055614738,
518 0.0069935122, 0.0084823566, 0.010018963, 0.011593862,
519 0.013196872, 0.014817309, 0.016444042, 0.018065533 },
520 { -0.034426283, -0.034281436, -0.033992987, -0.033563249,
521 -0.032995768, -0.032295227, -0.031467363, -0.030518902,
522 -0.02945766, -0.028291954, -0.027031265, -0.025685543,
523 -0.024265358, -0.022781773, -0.021246184, -0.019670162 },
524 { -0.0030586775, -0.0037203205, -0.0042847847, -0.0047529764,
525 -0.0051268316, -0.0054091476, -0.0056034233, -0.005714261,
526 -0.0057445862, -0.0057025906, -0.0055920109, -0.0054194843,
527 -0.0051914565, -0.0049146507, -0.0045959447, -0.0042418269 },
528 { -0.0016376863, -0.0017651899, -0.0018608454, -0.0019252141,
529 -0.0019593791, -0.0019653172, -0.0019450618, -0.0018990048,
530 -0.00183808, -0.0017501717, -0.0016481078, -0.0015320742,
531 -0.0014046903, -0.0012685474, -0.001125814, -0.00097943726 },
532 { -0.00055432378, -0.00055472925, -0.00054783461, -0.00053276919,
533 -0.00051135791, -0.00048466062, -0.00045358928, -0.00042499689,
534 -0.00036942671, -0.0003392619, -0.00030001783, -0.00025986304,
535 -0.0002197204, -0.00018116167, -0.00014691355, -0.00011279432 },
536 { -0.000064147389, -0.00006174868, -0.000054267788, -0.000047133824,
537 -0.000042927582, -0.000039477309, -0.000036340745, -0.000029687517,
538 -0.000049787737, -0.000041577889, -0.000033864744, -0.000026534748,
539 -0.000019841305, -0.000014789486, -0.000013131184, -0.0000099198869 },
540 { -0.0000062990207, -0.0000072701259, -0.000011984052, -0.000017348082,
541 -0.000019907106, -0.000021348773, -0.000021961965, -0.000012203576,
542 -0.000010840992, 4.6299544e-7, 5.2588763e-7, 2.7792686e-7,
543 -2.3649704e-7, -0.0000010897784, -9.171448e-7, -5.22682e-7 }
548 { 5.22682e-7, 9.171448e-7, 0.0000010897784, 2.3649704e-7,
549 -2.7792686e-7, -5.2588763e-7, -4.6299544e-7, 0.000010840992,
550 -0.000012203576, -0.000021961965, -0.000021348773, -0.000019907106,
551 -0.000017348082, -0.000011984052, -0.0000072701259, -0.0000062990207 },
552 { 0.0000099198869, 0.000013131184, 0.000014789486, 0.000019841305,
553 0.000026534748, 0.000033864744, 0.000041577889, 0.000049787737,
554 -0.000029687517, -0.000036340745, -0.000039477309, -0.000042927582,
555 -0.000047133824, -0.000054267788, -0.00006174868, -0.000064147389 },
556 { 0.00011279432, 0.00014691355, 0.00018116167, 0.0002197204,
557 0.00025986304, 0.00030001783, 0.0003392619, 0.00036942671,
558 -0.00042499689, -0.00045358928, -0.00048466062, -0.00051135791,
559 -0.00053276919, -0.00054783461, -0.00055472925, -0.00055432378 },
560 { 0.00097943726, 0.001125814, 0.0012685474, 0.0014046903,
561 0.0015320742, 0.0016481078, 0.0017501717, 0.00183808,
562 -0.0018990048, -0.0019450618, -0.0019653172, -0.0019593791,
563 -0.0019252141, -0.0018608454, -0.0017651899, -0.0016376863 },
564 { 0.0042418269, 0.0045959447, 0.0049146507, 0.0051914565,
565 0.0054194843, 0.0055920109, 0.0057025906, 0.0057445862,
566 -0.005714261, -0.0056034233, -0.0054091476, -0.0051268316,
567 -0.0047529764, -0.0042847847, -0.0037203205, -0.0030586775 },
568 { 0.019670162, 0.021246184, 0.022781773, 0.024265358,
569 0.025685543, 0.027031265, 0.028291954, 0.02945766,
570 -0.030518902, -0.031467363, -0.032295227, -0.032995768,
571 -0.033563249, -0.033992987, -0.034281436, -0.034426283 },
572 { -0.018065533, -0.016444042, -0.014817309, -0.013196872,
573 -0.011593862, -0.010018963, -0.0084823566, -0.0069935122,
574 0.0055614738, 0.0041943151, 0.0028992873, 0.001682895,
575 0.00055068987, -0.00049266568, -0.001443546, -0.0022995141 },
576 { -0.0038591374, -0.0034549395, -0.0030352892, -0.0026067684,
577 -0.0021754825, -0.0017469483, -0.001326357, -0.00091862219,
578 0.00052769453, 0.00015771533, -0.00018855913, -0.00050782406,
579 -0.00079780724, -0.0010566821, -0.001283227, -0.0014771431 },
580 { -0.00083093712, -0.00068422867, -0.00053928449, -0.00039945057,
581 -0.00026649953, -0.00014135583, -0.000025081157, 0.000084307925,
582 -0.00018248901, -0.00026866337, -0.00034301577, -0.00040612387,
583 -0.00045778, -0.00049731287, -0.00052537228, -0.00054488552 },
584 { -0.00008079566, -0.000053397067, -0.00002610587, -0.0000016657353,
585 0.000018532943, 0.000035615325, 0.000049888811, 0.000056296329,
586 -0.000058270442, -0.000062285151, -0.000070208509, -0.000074850752,
587 -0.00007612785, -0.000073081472, -0.000068306952, -0.000064464548 },
588 { -0.000048585582, -0.000046043948, -0.000045337845, -0.000041575615,
589 -0.000036968919, -0.000032302323, -0.00002780562, -0.000023530851,
590 0.0000018111954, -5.7168614e-7, -0.0000015432918, -0.0000026336629,
591 -0.0000041712024, -0.0000079212787, -0.000010502935, -0.0000091622824 },
592 { -0.0000070302972, -0.0000063894258, -0.0000046192422, -0.0000032569742,
593 -0.0000023108685, -0.0000014333754, -6.005389e-7, 0.000011838618,
594 0.000010516783, 1.2660377e-8, 3.530856e-8, 3.226247e-8,
595 -4.4400572e-8, -4.2005411e-7, -8.0604229e-7, -5.8336207e-7 }
599 const float *
in,
float *
out)
601 int i, s, sb, t, pos_now, pos_next;
610 idct_in[sb] = in[sb * ATRAC3P_SUBBAND_SAMPLES + s];
613 dct_ctx->
imdct_half(dct_ctx, idct_out, idct_in);
616 for (i = 0; i < 8; i++) {
617 hist->
buf1[hist->
pos][i] = idct_out[i + 8];
618 hist->
buf2[hist->
pos][i] = idct_out[7 - i];
625 for (i = 0; i < 8; i++) {
628 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...
uint8_t phase_shift[ATRAC3P_SUBBANDS]
1 - subband-wise 180° phase shifting
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.
uint8_t pi<< 24) CONV_FUNC_GROUP(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_U8, uint8_t,(*(const uint8_t *) pi - 0x80) *(1.0f/(1<< 7))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_U8, uint8_t,(*(const uint8_t *) pi - 0x80) *(1.0/(1<< 7))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_S16, int16_t,(*(const int16_t *) pi >> 8)+0x80) CONV_FUNC_GROUP(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_S16, int16_t, *(const int16_t *) pi *(1.0f/(1<< 15))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_S16, int16_t, *(const int16_t *) pi *(1.0/(1<< 15))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_S32, int32_t,(*(const int32_t *) pi >> 24)+0x80) CONV_FUNC_GROUP(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_S32, int32_t, *(const int32_t *) pi *(1.0f/(1U<< 31))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_S32, int32_t, *(const int32_t *) pi *(1.0/(1U<< 31))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_FLT, float, av_clip_uint8(lrintf(*(const float *) pi *(1<< 7))+0x80)) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S16, int16_t, AV_SAMPLE_FMT_FLT, float, av_clip_int16(lrintf(*(const float *) pi *(1<< 15)))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S32, int32_t, AV_SAMPLE_FMT_FLT, float, av_clipl_int32(llrintf(*(const float *) pi *(1U<< 31)))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_DBL, double, av_clip_uint8(lrint(*(const double *) pi *(1<< 7))+0x80)) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S16, int16_t, AV_SAMPLE_FMT_DBL, double, av_clip_int16(lrint(*(const double *) pi *(1<< 15)))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S32, int32_t, AV_SAMPLE_FMT_DBL, double, av_clipl_int32(llrint(*(const double *) pi *(1U<< 31)))) #define SET_CONV_FUNC_GROUP(ofmt, ifmt) static void set_generic_function(AudioConvert *ac) { } void ff_audio_convert_free(AudioConvert **ac) { if(! *ac) return;ff_dither_free(&(*ac) ->dc);av_freep(ac);} AudioConvert *ff_audio_convert_alloc(AVAudioResampleContext *avr, enum AVSampleFormat out_fmt, enum AVSampleFormat in_fmt, int channels, int sample_rate, int apply_map) { AudioConvert *ac;int in_planar, out_planar;ac=av_mallocz(sizeof(*ac));if(!ac) return NULL;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);return NULL;} return ac;} 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;} else if(in_planar) ac->func_type=CONV_FUNC_TYPE_INTERLEAVE;else ac->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);return ac;} int ff_audio_convert(AudioConvert *ac, AudioData *out, AudioData *in) { int use_generic=1;int len=in->nb_samples;int p;if(ac->dc) { av_dlog(ac->avr, "%d samples - audio_convert: %s to %s (dithered)\", len, av_get_sample_fmt_name(ac->in_fmt), av_get_sample_fmt_name(ac->out_fmt));return ff_convert_dither(ac-> out
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]
void(* vector_fmul)(float *dst, const float *src0, const float *src1, int len)
Calculate the product of two vectors of floats and store the result in a vector of floats...
#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
Amplitude envelope of a group of sine waves.
uint8_t pi<< 24) CONV_FUNC_GROUP(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_U8, uint8_t,(*(const uint8_t *) pi - 0x80) *(1.0f/(1<< 7))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_U8, uint8_t,(*(const uint8_t *) pi - 0x80) *(1.0/(1<< 7))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_S16, int16_t,(*(const int16_t *) pi >> 8)+0x80) CONV_FUNC_GROUP(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_S16, int16_t, *(const int16_t *) pi *(1.0f/(1<< 15))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_S16, int16_t, *(const int16_t *) pi *(1.0/(1<< 15))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_S32, int32_t,(*(const int32_t *) pi >> 24)+0x80) CONV_FUNC_GROUP(AV_SAMPLE_FMT_FLT, float, AV_SAMPLE_FMT_S32, int32_t, *(const int32_t *) pi *(1.0f/(1U<< 31))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_DBL, double, AV_SAMPLE_FMT_S32, int32_t, *(const int32_t *) pi *(1.0/(1U<< 31))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_FLT, float, av_clip_uint8(lrintf(*(const float *) pi *(1<< 7))+0x80)) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S16, int16_t, AV_SAMPLE_FMT_FLT, float, av_clip_int16(lrintf(*(const float *) pi *(1<< 15)))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S32, int32_t, AV_SAMPLE_FMT_FLT, float, av_clipl_int32(llrintf(*(const float *) pi *(1U<< 31)))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_U8, uint8_t, AV_SAMPLE_FMT_DBL, double, av_clip_uint8(lrint(*(const double *) pi *(1<< 7))+0x80)) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S16, int16_t, AV_SAMPLE_FMT_DBL, double, av_clip_int16(lrint(*(const double *) pi *(1<< 15)))) CONV_FUNC_GROUP(AV_SAMPLE_FMT_S32, int32_t, AV_SAMPLE_FMT_DBL, double, av_clipl_int32(llrint(*(const double *) pi *(1U<< 31)))) #define SET_CONV_FUNC_GROUP(ofmt, ifmt) static void set_generic_function(AudioConvert *ac) { } void ff_audio_convert_free(AudioConvert **ac) { if(! *ac) return;ff_dither_free(&(*ac) ->dc);av_freep(ac);} AudioConvert *ff_audio_convert_alloc(AVAudioResampleContext *avr, enum AVSampleFormat out_fmt, enum AVSampleFormat in_fmt, int channels, int sample_rate, int apply_map) { AudioConvert *ac;int in_planar, out_planar;ac=av_mallocz(sizeof(*ac));if(!ac) return NULL;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);return NULL;} return ac;} 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;} else if(in_planar) ac->func_type=CONV_FUNC_TYPE_INTERLEAVE;else ac->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);return ac;} int ff_audio_convert(AudioConvert *ac, AudioData *out, AudioData *in) { int use_generic=1;int len=in->nb_samples;int p;if(ac->dc) { av_dlog(ac->avr, "%d samples - audio_convert: %s to %s (dithered)\", len, av_get_sample_fmt_name(ac->in_fmt), av_get_sample_fmt_name(ac->out_fmt));return ff_convert_dither(ac-> in
Parameters of a group of sine waves.
void(* imdct_calc)(struct FFTContext *s, FFTSample *output, const FFTSample *input)
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
#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]
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
Libavcodec external API header.
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.
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.
void(* imdct_half)(struct FFTContext *s, FFTSample *output, const FFTSample *input)
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
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
static void waves_synth(Atrac3pWaveSynthParams *synth_param, Atrac3pWavesData *waves_info, Atrac3pWaveEnvelope *envelope, int phase_shift, int reg_offset, float *out)
Synthesize sine waves according to given parameters.
Atrac3pChanParams channels[2]
int start_pos
start position expressed in n*4 samples
static const int mod23_lut[26]
#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
void(* vector_fmul_reverse)(float *dst, const float *src0, const float *src1, int len)
Calculate the product of two vectors of floats, and store the result in a vector of floats...