27 -9948, 9948, 29860, 49808, 69822, 89926, 110144, 130502,
28 151026, 171738, 192666, 213832, 235264, 256982, 279014, 301384,
29 324118, 347244, 370790, 394782, 419250, 444226, 469742, 495832,
30 522536, 549890, 577936, 606720, 636290, 666700, 698006, 730270,
31 763562, 797958, 833538, 870398, 908640, 948376, 989740, 1032874,
32 1077948, 1125150, 1174700, 1226850, 1281900, 1340196, 1402156, 1468282,
33 1539182, 1615610, 1698514, 1789098, 1888944, 2000168, 2125700, 2269750,
34 2438670, 2642660, 2899462, 3243240, 3746078, 4535138, 5664098, 7102424,
38 9948, 9948, 9962, 9988, 10026, 10078, 10142, 10218,
39 10306, 10408, 10520, 10646, 10784, 10934, 11098, 11274,
40 11462, 11664, 11880, 12112, 12358, 12618, 12898, 13194,
41 13510, 13844, 14202, 14582, 14988, 15422, 15884, 16380,
42 16912, 17484, 18098, 18762, 19480, 20258, 21106, 22030,
43 23044, 24158, 25390, 26760, 28290, 30008, 31954, 34172,
44 36728, 39700, 43202, 47382, 52462, 58762, 66770, 77280,
45 91642, 112348, 144452, 199326, 303512, 485546, 643414, 794914,
49 0, 4, 7, 10, 13, 16, 19, 22,
50 26, 28, 32, 35, 38, 41, 44, 47,
51 51, 54, 58, 62, 65, 70, 74, 79,
52 84, 90, 95, 102, 109, 116, 124, 133,
53 143, 154, 166, 180, 195, 212, 231, 254,
54 279, 308, 343, 383, 430, 487, 555, 639,
55 743, 876, 1045, 1270, 1575, 2002, 2628, 3591,
56 5177, 8026, 13719, 26047, 45509, 39467, 37875, 51303,
60 0, -21, -19, -17, -15, -12, -10, -8,
61 -6, -4, -1, 1, 3, 6, 8, 10,
62 13, 15, 18, 20, 23, 26, 29, 31,
63 34, 37, 40, 43, 47, 50, 53, 57,
64 60, 64, 68, 72, 76, 80, 85, 89,
65 94, 99, 105, 110, 116, 123, 129, 136,
66 144, 152, 161, 171, 182, 194, 207, 223,
67 241, 263, 291, 328, 382, 467, 522, 522,
73 -89806, 89806, 278502, 494338, 759442, 1113112, 1652322, 2720256, 5190186,
76 89806, 89806, 98890, 116946, 148158, 205512, 333698, 734236, 1735696,
79 0, 2271, 4514, 7803, 14339, 32047, 100135, 250365, 0,
82 0, -14, 6, 29, 58, 96, 154, 270, 521,
87 -194080, 194080, 890562,
90 194080, 194080, 502402,
101 -163006, 163006, 542708, 1120554, 2669238,
104 163006, 163006, 216698, 361148, 1187538,
107 0, 13423, 36113, 206598, 0,
115 -2436, 2436, 7308, 12180, 17054, 21930, 26806, 31686,
116 36566, 41450, 46338, 51230, 56124, 61024, 65928, 70836,
117 75750, 80670, 85598, 90530, 95470, 100418, 105372, 110336,
118 115308, 120288, 125278, 130276, 135286, 140304, 145334, 150374,
119 155426, 160490, 165566, 170654, 175756, 180870, 185998, 191138,
120 196294, 201466, 206650, 211850, 217068, 222300, 227548, 232814,
121 238096, 243396, 248714, 254050, 259406, 264778, 270172, 275584,
122 281018, 286470, 291944, 297440, 302956, 308496, 314056, 319640,
123 325248, 330878, 336532, 342212, 347916, 353644, 359398, 365178,
124 370986, 376820, 382680, 388568, 394486, 400430, 406404, 412408,
125 418442, 424506, 430600, 436726, 442884, 449074, 455298, 461554,
126 467844, 474168, 480528, 486922, 493354, 499820, 506324, 512866,
127 519446, 526064, 532722, 539420, 546160, 552940, 559760, 566624,
128 573532, 580482, 587478, 594520, 601606, 608740, 615920, 623148,
129 630426, 637754, 645132, 652560, 660042, 667576, 675164, 682808,
130 690506, 698262, 706074, 713946, 721876, 729868, 737920, 746036,
131 754216, 762460, 770770, 779148, 787594, 796108, 804694, 813354,
132 822086, 830892, 839774, 848736, 857776, 866896, 876100, 885386,
133 894758, 904218, 913766, 923406, 933138, 942964, 952886, 962908,
134 973030, 983254, 993582, 1004020, 1014566, 1025224, 1035996, 1046886,
135 1057894, 1069026, 1080284, 1091670, 1103186, 1114838, 1126628, 1138558,
136 1150634, 1162858, 1175236, 1187768, 1200462, 1213320, 1226346, 1239548,
137 1252928, 1266490, 1280242, 1294188, 1308334, 1322688, 1337252, 1352034,
138 1367044, 1382284, 1397766, 1413494, 1429478, 1445728, 1462252, 1479058,
139 1496158, 1513562, 1531280, 1549326, 1567710, 1586446, 1605550, 1625034,
140 1644914, 1665208, 1685932, 1707108, 1728754, 1750890, 1773542, 1796732,
141 1820488, 1844840, 1869816, 1895452, 1921780, 1948842, 1976680, 2005338,
142 2034868, 2065322, 2096766, 2129260, 2162880, 2197708, 2233832, 2271352,
143 2310384, 2351050, 2393498, 2437886, 2484404, 2533262, 2584710, 2639036,
144 2696578, 2757738, 2822998, 2892940, 2968278, 3049896, 3138912, 3236760,
145 3345312, 3467068, 3605434, 3765154, 3952904, 4177962, 4452178, 4787134,
146 5187290, 5647128, 6159120, 6720518, 7332904, 8000032, 8726664, 9518152,
150 2436, 2436, 2436, 2436, 2438, 2438, 2438, 2440,
151 2442, 2442, 2444, 2446, 2448, 2450, 2454, 2456,
152 2458, 2462, 2464, 2468, 2472, 2476, 2480, 2484,
153 2488, 2492, 2498, 2502, 2506, 2512, 2518, 2524,
154 2528, 2534, 2540, 2548, 2554, 2560, 2568, 2574,
155 2582, 2588, 2596, 2604, 2612, 2620, 2628, 2636,
156 2646, 2654, 2664, 2672, 2682, 2692, 2702, 2712,
157 2722, 2732, 2742, 2752, 2764, 2774, 2786, 2798,
158 2810, 2822, 2834, 2846, 2858, 2870, 2884, 2896,
159 2910, 2924, 2938, 2952, 2966, 2980, 2994, 3010,
160 3024, 3040, 3056, 3070, 3086, 3104, 3120, 3136,
161 3154, 3170, 3188, 3206, 3224, 3242, 3262, 3280,
162 3300, 3320, 3338, 3360, 3380, 3400, 3422, 3442,
163 3464, 3486, 3508, 3532, 3554, 3578, 3602, 3626,
164 3652, 3676, 3702, 3728, 3754, 3780, 3808, 3836,
165 3864, 3892, 3920, 3950, 3980, 4010, 4042, 4074,
166 4106, 4138, 4172, 4206, 4240, 4276, 4312, 4348,
167 4384, 4422, 4460, 4500, 4540, 4580, 4622, 4664,
168 4708, 4752, 4796, 4842, 4890, 4938, 4986, 5036,
169 5086, 5138, 5192, 5246, 5300, 5358, 5416, 5474,
170 5534, 5596, 5660, 5726, 5792, 5860, 5930, 6002,
171 6074, 6150, 6226, 6306, 6388, 6470, 6556, 6644,
172 6736, 6828, 6924, 7022, 7124, 7228, 7336, 7448,
173 7562, 7680, 7802, 7928, 8058, 8192, 8332, 8476,
174 8624, 8780, 8940, 9106, 9278, 9458, 9644, 9840,
175 10042, 10252, 10472, 10702, 10942, 11194, 11458, 11734,
176 12024, 12328, 12648, 12986, 13342, 13720, 14118, 14540,
177 14990, 15466, 15976, 16520, 17102, 17726, 18398, 19124,
178 19908, 20760, 21688, 22702, 23816, 25044, 26404, 27922,
179 29622, 31540, 33720, 36222, 39116, 42502, 46514, 51334,
180 57218, 64536, 73830, 85890, 101860, 123198, 151020, 183936,
181 216220, 243618, 268374, 293022, 319362, 347768, 378864, 412626, 449596,
184 0, 0, 0, 1, 0, 0, 1, 1,
185 0, 1, 1, 1, 1, 1, 1, 1,
186 1, 1, 1, 1, 1, 1, 1, 1,
187 1, 2, 1, 1, 2, 2, 2, 1,
188 2, 2, 2, 2, 2, 2, 2, 2,
189 2, 2, 2, 2, 2, 2, 2, 3,
190 2, 3, 2, 3, 3, 3, 3, 3,
191 3, 3, 3, 3, 3, 3, 3, 3,
192 3, 3, 3, 3, 3, 4, 3, 4,
193 4, 4, 4, 4, 4, 4, 4, 4,
194 4, 4, 4, 4, 5, 4, 4, 5,
195 4, 5, 5, 5, 5, 5, 5, 5,
196 5, 5, 6, 5, 5, 6, 5, 6,
197 6, 6, 6, 6, 6, 6, 6, 7,
198 6, 7, 7, 7, 7, 7, 7, 7,
199 7, 7, 8, 8, 8, 8, 8, 8,
200 8, 9, 9, 9, 9, 9, 9, 9,
201 10, 10, 10, 10, 10, 11, 11, 11,
202 11, 11, 12, 12, 12, 12, 13, 13,
203 13, 14, 14, 14, 15, 15, 15, 15,
204 16, 16, 17, 17, 17, 18, 18, 18,
205 19, 19, 20, 21, 21, 22, 22, 23,
206 23, 24, 25, 26, 26, 27, 28, 29,
207 30, 31, 32, 33, 34, 35, 36, 37,
208 39, 40, 42, 43, 45, 47, 49, 51,
209 53, 55, 58, 60, 63, 66, 69, 73,
210 76, 80, 85, 89, 95, 100, 106, 113,
211 119, 128, 136, 146, 156, 168, 182, 196,
212 213, 232, 254, 279, 307, 340, 380, 425,
213 480, 545, 626, 724, 847, 1003, 1205, 1471,
214 1830, 2324, 3015, 3993, 5335, 6956, 8229, 8071,
215 6850, 6189, 6162, 6585, 7102, 7774, 8441, 9243,
218 0, -22, -21, -21, -20, -20, -19, -19,
219 -18, -18, -17, -17, -16, -16, -15, -14,
220 -14, -13, -13, -12, -12, -11, -11, -10,
221 -10, -9, -9, -8, -7, -7, -6, -6,
222 -5, -5, -4, -4, -3, -3, -2, -1,
223 -1, 0, 0, 1, 1, 2, 2, 3,
224 4, 4, 5, 5, 6, 6, 7, 8,
225 8, 9, 9, 10, 11, 11, 12, 12,
226 13, 14, 14, 15, 15, 16, 17, 17,
227 18, 19, 19, 20, 20, 21, 22, 22,
228 23, 24, 24, 25, 26, 26, 27, 28,
229 28, 29, 30, 30, 31, 32, 33, 33,
230 34, 35, 35, 36, 37, 38, 38, 39,
231 40, 41, 41, 42, 43, 44, 44, 45,
232 46, 47, 48, 48, 49, 50, 51, 52,
233 52, 53, 54, 55, 56, 57, 58, 58,
234 59, 60, 61, 62, 63, 64, 65, 66,
235 67, 68, 69, 69, 70, 71, 72, 73,
236 74, 75, 77, 78, 79, 80, 81, 82,
237 83, 84, 85, 86, 87, 89, 90, 91,
238 92, 93, 94, 96, 97, 98, 99, 101,
239 102, 103, 105, 106, 107, 109, 110, 112,
240 113, 115, 116, 118, 119, 121, 122, 124,
241 125, 127, 129, 130, 132, 134, 136, 137,
242 139, 141, 143, 145, 147, 149, 151, 153,
243 155, 158, 160, 162, 164, 167, 169, 172,
244 174, 177, 180, 182, 185, 188, 191, 194,
245 197, 201, 204, 208, 211, 215, 219, 223,
246 227, 232, 236, 241, 246, 251, 257, 263,
247 269, 275, 283, 290, 298, 307, 317, 327,
248 339, 352, 367, 384, 404, 429, 458, 494,
249 522, 522, 522, 522, 522, 522, 522, 522, 522,
254 -21236, 21236, 63830, 106798, 150386, 194832, 240376, 287258,
255 335726, 386034, 438460, 493308, 550924, 611696, 676082, 744626,
256 817986, 896968, 982580, 1076118, 1179278, 1294344, 1424504, 1574386,
257 1751090, 1966260, 2240868, 2617662, 3196432, 4176450, 5658260, 7671068,
261 21236, 21236, 21360, 21608, 21978, 22468, 23076, 23806,
262 24660, 25648, 26778, 28070, 29544, 31228, 33158, 35386,
263 37974, 41008, 44606, 48934, 54226, 60840, 69320, 80564,
264 96140, 119032, 155576, 221218, 357552, 622468, 859344, 1153464, 1555840,
267 0, 31, 62, 93, 123, 152, 183, 214,
268 247, 283, 323, 369, 421, 483, 557, 647,
269 759, 900, 1082, 1323, 1654, 2120, 2811, 3894,
270 5723, 9136, 16411, 34084, 66229, 59219, 73530, 100594,
273 0, -21, -16, -12, -7, -2, 3, 8,
274 13, 19, 24, 30, 36, 43, 50, 57,
275 65, 74, 83, 93, 104, 117, 131, 147,
276 166, 189, 219, 259, 322, 427, 521, 521, 521,
281 -95044, 95044, 295844, 528780, 821332, 1226438, 1890540, 3344850, 6450664,
284 95044, 95044, 105754, 127180, 165372, 39736, 424366, 1029946, 2075866,
287 0, 2678, 5357, 9548, -31409, 96158, 151395, 261480,
290 0, -17, 5, 30, 62, 105, 177, 334, 518,
295 -45754, 45754, 138496, 234896, 337336, 448310, 570738, 708380,
296 866534, 1053262, 1281958, 1577438, 1993050, 2665984, 3900982, 5902844,
300 45754, 45754, 46988, 49412, 53026, 57950, 64478, 73164,
301 84988, 101740, 126958, 168522, 247092, 425842, 809154, 1192708, 1801910,
304 0, 309, 606, 904, 1231, 1632, 2172, 2956,
305 4188, 6305, 10391, 19643, 44688, 95828, 95889, 152301,
308 0, -18, -8, 2, 13, 25, 38, 53,
309 70, 90, 115, 147, 192, 264, 398, 521, 521,
368 2048, 2093, 2139, 2186, 2233, 2282, 2332, 2383,
369 2435, 2489, 2543, 2599, 2656, 2714, 2774, 2834,
370 2896, 2960, 3025, 3091, 3158, 3228, 3298, 3371,
371 3444, 3520, 3597, 3676, 3756, 3838, 3922, 4008,
379 ((
channel->quantize[1].quantized_sample & 2) << 1) +
380 ((
channel->quantize[2].quantized_sample & 1) << 3);
381 channel->codeword_history = (cw << 8) + ((
unsigned)
channel->codeword_history << 4);
392 m = (int64_t)5184443 * (
channel->codeword_history >> 7);
393 d = (m * 4) + (m >> 22);
394 for (subband = 0; subband <
NB_SUBBANDS; subband++)
395 channel->dither[subband] = (
unsigned)d << (23 - 5*subband);
396 channel->dither_parity = (d >> 25) & 1;
405 idx = (quantized_sample ^ -(quantized_sample < 0)) + 1;
406 qr =
tables->quantize_intervals[idx] / 2;
407 if (quantized_sample < 0)
410 qr = rshift64_clip24((qr * (1LL<<32)) +
MUL64(
dither,
tables->invert_quantize_dither_factors[idx]), 32);
415 factor_select = rshift32(factor_select + (
tables->quantize_factor_select_offset[idx] * (1 << 15)), 15);
425 int32_t reconstructed_difference,
429 int p = prediction->
pos;
432 prediction->
pos = p = (p + 1) % order;
433 rd2[p] = reconstructed_difference;
438 int32_t reconstructed_difference,
442 int32_t *reconstructed_differences;
443 int64_t predicted_difference = 0;
448 +
MUL64(prediction->
s_weight[1], reconstructed_sample)) >> 22, 23);
452 srd0 =
FFDIFFSIGN(reconstructed_difference, 0) * (1 << 23);
453 for (
i = 0;
i < order;
i++) {
456 predicted_difference +=
MUL64(reconstructed_differences[-
i], prediction->
d_weight[
i]);
474 same_sign[0] = sign * prediction->
prev_sign[0];
475 same_sign[1] = sign * prediction->
prev_sign[1];
480 sw1 = rshift32(-same_sign[1] * prediction->
s_weight[1], 1);
481 sw1 = (
av_clip(sw1, -range, range) & ~0xF) * 16;
484 weight[0] = 254 * prediction->
s_weight[0] + 0x800000*same_sign[0] + sw1;
487 range = 0x3C0000 - prediction->
s_weight[0];
488 weight[1] = 255 * prediction->
s_weight[1] + 0xC00000*same_sign[1];
493 tables->prediction_order);
499 for (subband = 0; subband <
NB_SUBBANDS; subband++)
502 channel->quantize[subband].quantized_sample,
516 s->block_size =
s->hd ? 6 : 4;
523 "Frame size must be a multiple of %d samples\n",
s->block_size);
529 for (subband = 0; subband <
NB_SUBBANDS; subband++) {