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