The VP3/4/5/6 reference decoders all use three IDCT versions: one for the DC-only case, another for blocks with more than 10 coefficients, and an optimised one for blocks with up to 10 AC coefficents. VP6 relies on the sparse 10 coefficient version, and without it, IDCT drift occurs. Fixes: https://trac.ffmpeg.org/ticket/1282
Unified · Split
| @@ -252,6 +252,7 @@ static int vp5_parse_coeff(VP56Context *s) · 251 unmodified lines | ||
| 252 | 252 | for (i=coeff_idx; i<=ctx_last; i++) |
| 253 | 253 | s->coeff_ctx[ff_vp56_b6to4[b]][i] = 5; |
| 254 | 254 | s->above_blocks[s->above_block_idx[b]].not_null_dc = s->coeff_ctx[ff_vp56_b6to4[b]][0]; |
| 255 | + s->idct_selector[b] = 63; | |
| 255 | 256 | } |
| 256 | 257 | return 0; |
| 257 | 258 | } |
| @@ -406,6 +406,24 @@ static void vp56_mc(VP56Context *s, int b, int plane, uint8_t *src, · 405 unmodified lines | ||
| 406 | 406 | } |
| 407 | 407 | } |
| 408 | 408 | |
| 409 | +static void vp56_idct_put(VP56Context *s, uint8_t * dest, ptrdiff_t stride, int16_t *block, int selector) | |
| 410 | +{ | |
| 411 | + if (selector > 10 || selector == 1) | |
| 412 | + s->vp3dsp.idct_put(dest, stride, block); | |
| 413 | + else | |
| 414 | + ff_vp3dsp_idct10_put(dest, stride, block); | |
| 415 | +} | |
| 416 | + | |
| 417 | +static void vp56_idct_add(VP56Context *s, uint8_t * dest, ptrdiff_t stride, int16_t *block, int selector) | |
| 418 | +{ | |
| 419 | + if (selector > 10) | |
| 420 | + s->vp3dsp.idct_add(dest, stride, block); | |
| 421 | + else if (selector > 1) | |
| 422 | + ff_vp3dsp_idct10_add(dest, stride, block); | |
| 423 | + else | |
| 424 | + s->vp3dsp.idct_dc_add(dest, stride, block); | |
| 425 | +} | |
| 426 | + | |
| 409 | 427 | static av_always_inline void vp56_render_mb(VP56Context *s, int row, int col, int is_alpha, VP56mb mb_type) |
| 410 | 428 | { |
| 411 | 429 | int b, ab, b_max, plane, off; |
| @@ -426,8 +444,8 @@ static av_always_inline void vp56_render_mb(VP56Context *s, int row, int col, in · 14 unmodified lines | ||
| 426 | 444 | case VP56_MB_INTRA: |
| 427 | 445 | for (b=0; b<b_max; b++) { |
| 428 | 446 | plane = ff_vp56_b2p[b+ab]; |
| 429 | − s->vp3dsp.idct_put(frame_current->data[plane] + s->block_offset[b], | |
| 430 | − s->stride[plane], s->block_coeff[b]); | |
| 447 | + vp56_idct_put(s, frame_current->data[plane] + s->block_offset[b], | |
| 448 | + s->stride[plane], s->block_coeff[b], s->idct_selector[b]); | |
| 431 | 449 | } |
| 432 | 450 | break; |
| 433 | 451 | |
| @@ -439,8 +457,8 @@ static av_always_inline void vp56_render_mb(VP56Context *s, int row, int col, in · 5 unmodified lines | ||
| 439 | 457 | s->hdsp.put_pixels_tab[1][0](frame_current->data[plane] + off, |
| 440 | 458 | frame_ref->data[plane] + off, |
| 441 | 459 | s->stride[plane], 8); |
| 442 | − s->vp3dsp.idct_add(frame_current->data[plane] + off, | |
| 443 | − s->stride[plane], s->block_coeff[b]); | |
| 460 | + vp56_idct_add(s, frame_current->data[plane] + off, | |
| 461 | + s->stride[plane], s->block_coeff[b], s->idct_selector[b]); | |
| 444 | 462 | } |
| 445 | 463 | break; |
| 446 | 464 | |
| @@ -457,8 +475,8 @@ static av_always_inline void vp56_render_mb(VP56Context *s, int row, int col, in · 10 unmodified lines | ||
| 457 | 475 | plane = ff_vp56_b2p[b+ab]; |
| 458 | 476 | vp56_mc(s, b, plane, frame_ref->data[plane], s->stride[plane], |
| 459 | 477 | 16*col+x_off, 16*row+y_off); |
| 460 | − s->vp3dsp.idct_add(frame_current->data[plane] + s->block_offset[b], | |
| 461 | − s->stride[plane], s->block_coeff[b]); | |
| 478 | + vp56_idct_add(s, frame_current->data[plane] + s->block_offset[b], | |
| 479 | + s->stride[plane], s->block_coeff[b], s->idct_selector[b]); | |
| 462 | 480 | } |
| 463 | 481 | break; |
| 464 | 482 | } |
| @@ -105,6 +105,7 @@ typedef struct VP56Macroblock { · 104 unmodified lines | ||
| 105 | 105 | typedef struct VP56Model { |
| 106 | 106 | uint8_t coeff_reorder[64]; /* used in vp6 only */ |
| 107 | 107 | uint8_t coeff_index_to_pos[64]; /* used in vp6 only */ |
| 108 | + uint8_t coeff_index_to_idct_selector[64]; /* used in vp6 only */ | |
| 108 | 109 | uint8_t vector_sig[2]; /* delta sign */ |
| 109 | 110 | uint8_t vector_dct[2]; /* delta coding types */ |
| 110 | 111 | uint8_t vector_pdi[2][2]; /* predefined delta init */ |
| @@ -157,6 +158,7 @@ struct vp56_context { · 46 unmodified lines | ||
| 157 | 158 | VP56mb mb_type; |
| 158 | 159 | VP56Macroblock *macroblocks; |
| 159 | 160 | DECLARE_ALIGNED(16, int16_t, block_coeff)[6][64]; |
| 161 | + int idct_selector[6]; | |
| 160 | 162 | |
| 161 | 163 | /* motion vectors */ |
| 162 | 164 | VP56mv mv[6]; /* vectors for each block in MB */ |
| @@ -194,6 +194,18 @@ static void vp6_coeff_order_table_init(VP56Context *s) · 193 unmodified lines | ||
| 194 | 194 | for (pos=1; pos<64; pos++) |
| 195 | 195 | if (s->modelp->coeff_reorder[pos] == i) |
| 196 | 196 | s->modelp->coeff_index_to_pos[idx++] = pos; |
| 197 | + | |
| 198 | + for (idx = 0; idx < 64; idx++) { | |
| 199 | + int max = 0; | |
| 200 | + for (i = 0; i <= idx; i++) { | |
| 201 | + int v = s->modelp->coeff_index_to_pos[i]; | |
| 202 | + if (v > max) | |
| 203 | + max = v; | |
| 204 | + } | |
| 205 | + if (s->sub_version > 6) | |
| 206 | + max++; | |
| 207 | + s->modelp->coeff_index_to_idct_selector[idx] = max; | |
| 208 | + } | |
| 197 | 209 | } |
| 198 | 210 | |
| 199 | 211 | static void vp6_default_models_init(VP56Context *s) |
| @@ -446,6 +458,7 @@ static int vp6_parse_coeff_huffman(VP56Context *s) · 246 unmodified lines | ||
| 446 | 458 | cg = FFMIN(vp6_coeff_groups[coeff_idx], 3); |
| 447 | 459 | vlc_coeff = &s->ract_vlc[pt][ct][cg]; |
| 448 | 460 | } |
| 461 | + s->idct_selector[b] = model->coeff_index_to_idct_selector[FFMIN(coeff_idx, 63)]; | |
| 449 | 462 | } |
| 450 | 463 | return 0; |
| 451 | 464 | } |
| @@ -527,6 +540,7 @@ static int vp6_parse_coeff(VP56Context *s) · 75 unmodified lines | ||
| 527 | 540 | |
| 528 | 541 | s->left_block[ff_vp56_b6to4[b]].not_null_dc = |
| 529 | 542 | s->above_blocks[s->above_block_idx[b]].not_null_dc = !!s->block_coeff[b][0]; |
| 543 | + s->idct_selector[b] = model->coeff_index_to_idct_selector[FFMIN(coeff_idx, 63)]; | |
| 530 | 544 | } |
| 531 | 545 | return 0; |
| 532 | 546 | } |
| @@ -4,95 +4,95 @@ · 3 unmodified lines | ||
| 4 | 4 | #dimensions 0: 300x180 |
| 5 | 5 | #sar 0: 0/1 |
| 6 | 6 | 0, 0, 0, 1, 135000, 0x9dceed6d |
| 7 | −0, 1, 1, 1, 135000, 0x47e5778d | |
| 8 | −0, 2, 2, 1, 135000, 0x5de36599 | |
| 9 | −0, 3, 3, 1, 135000, 0x540d8079 | |
| 10 | −0, 4, 4, 1, 135000, 0xba9ea534 | |
| 11 | −0, 5, 5, 1, 135000, 0xa75088f8 | |
| 12 | −0, 6, 6, 1, 135000, 0x7d867559 | |
| 13 | −0, 7, 7, 1, 135000, 0xcc678fee | |
| 14 | −0, 8, 8, 1, 135000, 0x79c590b9 | |
| 15 | −0, 9, 9, 1, 135000, 0x87789918 | |
| 16 | −0, 10, 10, 1, 135000, 0xaa939213 | |
| 17 | −0, 11, 11, 1, 135000, 0x3912916d | |
| 18 | −0, 12, 12, 1, 135000, 0x41305d0b | |
| 19 | −0, 13, 13, 1, 135000, 0x2686b5dd | |
| 20 | −0, 14, 14, 1, 135000, 0xa69ae422 | |
| 21 | −0, 15, 15, 1, 135000, 0x998a3478 | |
| 22 | −0, 16, 16, 1, 135000, 0x5842768d | |
| 23 | −0, 17, 17, 1, 135000, 0xf6a85b16 | |
| 24 | −0, 18, 18, 1, 135000, 0x7a5b2708 | |
| 25 | −0, 19, 19, 1, 135000, 0x8b2abb63 | |
| 26 | −0, 20, 20, 1, 135000, 0x7dc8468b | |
| 27 | −0, 21, 21, 1, 135000, 0x04d85001 | |
| 28 | −0, 22, 22, 1, 135000, 0x83e3c647 | |
| 29 | −0, 23, 23, 1, 135000, 0xcddd687e | |
| 30 | −0, 24, 24, 1, 135000, 0x818e785e | |
| 31 | −0, 25, 25, 1, 135000, 0x3a915080 | |
| 32 | −0, 26, 26, 1, 135000, 0x953d603d | |
| 33 | −0, 27, 27, 1, 135000, 0x79005ebf | |
| 34 | −0, 28, 28, 1, 135000, 0x80afec75 | |
| 35 | −0, 29, 29, 1, 135000, 0xfc8e376b | |
| 36 | −0, 30, 30, 1, 135000, 0xf957b7ef | |
| 37 | −0, 31, 31, 1, 135000, 0xe878da44 | |
| 38 | −0, 32, 32, 1, 135000, 0xe68ecca3 | |
| 39 | −0, 33, 33, 1, 135000, 0x1a2cc7d3 | |
| 40 | −0, 34, 34, 1, 135000, 0x4f346a69 | |
| 41 | −0, 35, 35, 1, 135000, 0x7a0cf4ac | |
| 42 | −0, 36, 36, 1, 135000, 0x6d4eee7a | |
| 43 | −0, 37, 37, 1, 135000, 0xf0688cbd | |
| 44 | −0, 38, 38, 1, 135000, 0xca4abbbc | |
| 45 | −0, 39, 39, 1, 135000, 0x87669519 | |
| 46 | −0, 40, 40, 1, 135000, 0xd090e9d7 | |
| 47 | −0, 41, 41, 1, 135000, 0xd7f536c1 | |
| 48 | −0, 42, 42, 1, 135000, 0x353ede54 | |
| 49 | −0, 43, 43, 1, 135000, 0xbc8f5358 | |
| 50 | −0, 44, 44, 1, 135000, 0xb52cd59a | |
| 51 | −0, 45, 45, 1, 135000, 0x0b882eba | |
| 52 | −0, 46, 46, 1, 135000, 0xc544cd54 | |
| 53 | −0, 47, 47, 1, 135000, 0x31ca7e73 | |
| 7 | +0, 1, 1, 1, 135000, 0x1fc377a4 | |
| 8 | +0, 2, 2, 1, 135000, 0x0b4465d4 | |
| 9 | +0, 3, 3, 1, 135000, 0x136b8062 | |
| 10 | +0, 4, 4, 1, 135000, 0x4691a55c | |
| 11 | +0, 5, 5, 1, 135000, 0x55bb8a19 | |
| 12 | +0, 6, 6, 1, 135000, 0xdbf67651 | |
| 13 | +0, 7, 7, 1, 135000, 0x6fb19113 | |
| 14 | +0, 8, 8, 1, 135000, 0x3edc9227 | |
| 15 | +0, 9, 9, 1, 135000, 0x53b39aff | |
| 16 | +0, 10, 10, 1, 135000, 0x699e94b0 | |
| 17 | +0, 11, 11, 1, 135000, 0xeedd9388 | |
| 18 | +0, 12, 12, 1, 135000, 0x14055f96 | |
| 19 | +0, 13, 13, 1, 135000, 0x71fbb5fd | |
| 20 | +0, 14, 14, 1, 135000, 0x6fb4e491 | |
| 21 | +0, 15, 15, 1, 135000, 0x35ca3482 | |
| 22 | +0, 16, 16, 1, 135000, 0x0c2a7530 | |
| 23 | +0, 17, 17, 1, 135000, 0x422c5581 | |
| 24 | +0, 18, 18, 1, 135000, 0x19eb2155 | |
| 25 | +0, 19, 19, 1, 135000, 0x07e1b114 | |
| 26 | +0, 20, 20, 1, 135000, 0xa10f3f81 | |
| 27 | +0, 21, 21, 1, 135000, 0x75684dcd | |
| 28 | +0, 22, 22, 1, 135000, 0x1721c337 | |
| 29 | +0, 23, 23, 1, 135000, 0x3897667d | |
| 30 | +0, 24, 24, 1, 135000, 0x1232769e | |
| 31 | +0, 25, 25, 1, 135000, 0xec975059 | |
| 32 | +0, 26, 26, 1, 135000, 0xb2a46123 | |
| 33 | +0, 27, 27, 1, 135000, 0x052c5f72 | |
| 34 | +0, 28, 28, 1, 135000, 0x3087eb2f | |
| 35 | +0, 29, 29, 1, 135000, 0xd1e0373a | |
| 36 | +0, 30, 30, 1, 135000, 0x64dab704 | |
| 37 | +0, 31, 31, 1, 135000, 0xa44dd89e | |
| 38 | +0, 32, 32, 1, 135000, 0x380ecae9 | |
| 39 | +0, 33, 33, 1, 135000, 0x8c6fc4ab | |
| 40 | +0, 34, 34, 1, 135000, 0x02096903 | |
| 41 | +0, 35, 35, 1, 135000, 0x11edf432 | |
| 42 | +0, 36, 36, 1, 135000, 0x3585ee5f | |
| 43 | +0, 37, 37, 1, 135000, 0xe1338c40 | |
| 44 | +0, 38, 38, 1, 135000, 0x5edfbd0c | |
| 45 | +0, 39, 39, 1, 135000, 0x9420965c | |
| 46 | +0, 40, 40, 1, 135000, 0x0caceb17 | |
| 47 | +0, 41, 41, 1, 135000, 0x3fdc36c3 | |
| 48 | +0, 42, 42, 1, 135000, 0x8a24df14 | |
| 49 | +0, 43, 43, 1, 135000, 0x5dc057b0 | |
| 50 | +0, 44, 44, 1, 135000, 0xdc5eda65 | |
| 51 | +0, 45, 45, 1, 135000, 0x60433612 | |
| 52 | +0, 46, 46, 1, 135000, 0x6a91d6c9 | |
| 53 | +0, 47, 47, 1, 135000, 0x53598734 | |
| 54 | 54 | 0, 48, 48, 1, 135000, 0xb1569ce9 |
| 55 | −0, 49, 49, 1, 135000, 0x8bf4394f | |
| 56 | −0, 50, 50, 1, 135000, 0xf413812a | |
| 57 | −0, 51, 51, 1, 135000, 0xf2fa90ab | |
| 58 | −0, 52, 52, 1, 135000, 0xdcd8b265 | |
| 59 | −0, 53, 53, 1, 135000, 0xa89cdba1 | |
| 60 | −0, 54, 54, 1, 135000, 0x212b59a5 | |
| 61 | −0, 55, 55, 1, 135000, 0x10c589c3 | |
| 62 | −0, 56, 56, 1, 135000, 0x432ab5b4 | |
| 55 | +0, 49, 49, 1, 135000, 0xf5e83a33 | |
| 56 | +0, 50, 50, 1, 135000, 0xebe18275 | |
| 57 | +0, 51, 51, 1, 135000, 0x98af9447 | |
| 58 | +0, 52, 52, 1, 135000, 0x3f03b765 | |
| 59 | +0, 53, 53, 1, 135000, 0x7423e0b8 | |
| 60 | +0, 54, 54, 1, 135000, 0x6c1b5faa | |
| 61 | +0, 55, 55, 1, 135000, 0xebf98d52 | |
| 62 | +0, 56, 56, 1, 135000, 0xf3dfb8b6 | |
| 63 | 63 | 0, 57, 57, 1, 135000, 0x85a9634a |
| 64 | −0, 58, 58, 1, 135000, 0x10db5b87 | |
| 65 | −0, 59, 59, 1, 135000, 0x583145d9 | |
| 66 | −0, 60, 60, 1, 135000, 0x7d3a33bd | |
| 67 | −0, 61, 61, 1, 135000, 0xcf592423 | |
| 68 | −0, 62, 62, 1, 135000, 0xb59728e5 | |
| 69 | −0, 63, 63, 1, 135000, 0x1eeca660 | |
| 70 | −0, 64, 64, 1, 135000, 0xff7bcc34 | |
| 71 | −0, 65, 65, 1, 135000, 0x0ef8f271 | |
| 72 | −0, 66, 66, 1, 135000, 0x8c9ca8ee | |
| 73 | −0, 67, 67, 1, 135000, 0x8a7ece34 | |
| 74 | −0, 68, 68, 1, 135000, 0x7d4c3b5d | |
| 75 | −0, 69, 69, 1, 135000, 0x99118f21 | |
| 76 | −0, 70, 70, 1, 135000, 0xd97fe7e2 | |
| 77 | −0, 71, 71, 1, 135000, 0xf93842f1 | |
| 78 | −0, 72, 72, 1, 135000, 0x35c912e8 | |
| 79 | −0, 73, 73, 1, 135000, 0x14e59e97 | |
| 64 | +0, 58, 58, 1, 135000, 0x4d425bb5 | |
| 65 | +0, 59, 59, 1, 135000, 0xfb7945ee | |
| 66 | +0, 60, 60, 1, 135000, 0x593534c1 | |
| 67 | +0, 61, 61, 1, 135000, 0xe3fa2517 | |
| 68 | +0, 62, 62, 1, 135000, 0x893629e3 | |
| 69 | +0, 63, 63, 1, 135000, 0xdc3ca6ad | |
| 70 | +0, 64, 64, 1, 135000, 0x16b1ce27 | |
| 71 | +0, 65, 65, 1, 135000, 0x8296f478 | |
| 72 | +0, 66, 66, 1, 135000, 0x9e9baaa3 | |
| 73 | +0, 67, 67, 1, 135000, 0x994ecd4a | |
| 74 | +0, 68, 68, 1, 135000, 0x40f83b3c | |
| 75 | +0, 69, 69, 1, 135000, 0x0de38f90 | |
| 76 | +0, 70, 70, 1, 135000, 0x5455ea6c | |
| 77 | +0, 71, 71, 1, 135000, 0x053e41e8 | |
| 78 | +0, 72, 72, 1, 135000, 0x0fee1281 | |
| 79 | +0, 73, 73, 1, 135000, 0xa0c9a434 | |
| 80 | 80 | 0, 74, 74, 1, 135000, 0x8e4c19aa |
| 81 | −0, 75, 75, 1, 135000, 0x4adfbc53 | |
| 82 | −0, 76, 76, 1, 135000, 0x0613adde | |
| 83 | −0, 77, 77, 1, 135000, 0x8db264ab | |
| 84 | −0, 78, 78, 1, 135000, 0x3948b619 | |
| 85 | −0, 79, 79, 1, 135000, 0x843d7c02 | |
| 86 | −0, 80, 80, 1, 135000, 0x534fea34 | |
| 81 | +0, 75, 75, 1, 135000, 0x34bebc00 | |
| 82 | +0, 76, 76, 1, 135000, 0x6670ad6f | |
| 83 | +0, 77, 77, 1, 135000, 0xdbba63fc | |
| 84 | +0, 78, 78, 1, 135000, 0xe34fb839 | |
| 85 | +0, 79, 79, 1, 135000, 0xa3ce7eb1 | |
| 86 | +0, 80, 80, 1, 135000, 0xdec7ed7d | |
| 87 | 87 | 0, 81, 81, 1, 135000, 0xdb7041bf |
| 88 | −0, 82, 82, 1, 135000, 0xd0ce1cce | |
| 89 | −0, 83, 83, 1, 135000, 0x3c008335 | |
| 90 | −0, 84, 84, 1, 135000, 0xb699208f | |
| 91 | −0, 85, 85, 1, 135000, 0xe07da3ca | |
| 92 | −0, 86, 86, 1, 135000, 0x26331f41 | |
| 93 | −0, 87, 87, 1, 135000, 0x4e19fe83 | |
| 94 | −0, 88, 88, 1, 135000, 0xaa9a9e45 | |
| 95 | −0, 89, 89, 1, 135000, 0x336b7ed0 | |
| 96 | −0, 90, 90, 1, 135000, 0xc9bf7611 | |
| 88 | +0, 82, 82, 1, 135000, 0x2b1d1dc1 | |
| 89 | +0, 83, 83, 1, 135000, 0xaaa384c1 | |
| 90 | +0, 84, 84, 1, 135000, 0x37f42217 | |
| 91 | +0, 85, 85, 1, 135000, 0x928ba4da | |
| 92 | +0, 86, 86, 1, 135000, 0x2b681f41 | |
| 93 | +0, 87, 87, 1, 135000, 0xcbe1ff84 | |
| 94 | +0, 88, 88, 1, 135000, 0x47949f24 | |
| 95 | +0, 89, 89, 1, 135000, 0x368b7fe5 | |
| 96 | +0, 90, 90, 1, 135000, 0x1cf4773b | |
| 97 | 97 | 0, 91, 91, 1, 135000, 0x14c33a35 |
| 98 | 98 | 0, 92, 92, 1, 135000, 0xdc08470e |
| @@ -4,95 +4,95 @@ · 3 unmodified lines | ||
| 4 | 4 | #dimensions 0: 300x180 |
| 5 | 5 | #sar 0: 0/1 |
| 6 | 6 | 0, 0, 0, 1, 81000, 0xcb92962d |
| 7 | −0, 1, 1, 1, 81000, 0xae381904 | |
| 8 | −0, 2, 2, 1, 81000, 0x1fcc0c75 | |
| 9 | −0, 3, 3, 1, 81000, 0x023f0c21 | |
| 10 | −0, 4, 4, 1, 81000, 0xad691402 | |
| 11 | −0, 5, 5, 1, 81000, 0x42390be0 | |
| 12 | −0, 6, 6, 1, 81000, 0xc1c10a4e | |
| 13 | −0, 7, 7, 1, 81000, 0x9c0315ac | |
| 14 | −0, 8, 8, 1, 81000, 0xc2a315a7 | |
| 15 | −0, 9, 9, 1, 81000, 0x3a631392 | |
| 16 | −0, 10, 10, 1, 81000, 0x11591414 | |
| 17 | −0, 11, 11, 1, 81000, 0x1a551125 | |
| 18 | −0, 12, 12, 1, 81000, 0x2e1efa4f | |
| 19 | −0, 13, 13, 1, 81000, 0x4aa3f016 | |
| 20 | −0, 14, 14, 1, 81000, 0x74c029d8 | |
| 21 | −0, 15, 15, 1, 81000, 0xdee9a98b | |
| 22 | −0, 16, 16, 1, 81000, 0xdf3502d5 | |
| 23 | −0, 17, 17, 1, 81000, 0x4653536b | |
| 24 | −0, 18, 18, 1, 81000, 0x7f658c75 | |
| 25 | −0, 19, 19, 1, 81000, 0xab18ff13 | |
| 26 | −0, 20, 20, 1, 81000, 0xac2b8f3b | |
| 27 | −0, 21, 21, 1, 81000, 0xd61ff094 | |
| 28 | −0, 22, 22, 1, 81000, 0x425bfc2b | |
| 29 | −0, 23, 23, 1, 81000, 0x6be7ecd3 | |
| 30 | −0, 24, 24, 1, 81000, 0x0b0ee65b | |
| 31 | −0, 25, 25, 1, 81000, 0x3c6f146b | |
| 32 | −0, 26, 26, 1, 81000, 0x27c4e9c8 | |
| 33 | −0, 27, 27, 1, 81000, 0x174022c4 | |
| 34 | −0, 28, 28, 1, 81000, 0x3320fe81 | |
| 35 | −0, 29, 29, 1, 81000, 0x7a3c342e | |
| 36 | −0, 30, 30, 1, 81000, 0x448b4346 | |
| 37 | −0, 31, 31, 1, 81000, 0xd285b23d | |
| 38 | −0, 32, 32, 1, 81000, 0x852ed590 | |
| 39 | −0, 33, 33, 1, 81000, 0xc9d3df17 | |
| 40 | −0, 34, 34, 1, 81000, 0x4d23727b | |
| 41 | −0, 35, 35, 1, 81000, 0x1fae66cd | |
| 42 | −0, 36, 36, 1, 81000, 0x384d54ab | |
| 43 | −0, 37, 37, 1, 81000, 0x2fee6ba3 | |
| 44 | −0, 38, 38, 1, 81000, 0xd7ad6f59 | |
| 45 | −0, 39, 39, 1, 81000, 0xaf5e3e76 | |
| 46 | −0, 40, 40, 1, 81000, 0x10fceda4 | |
| 47 | −0, 41, 41, 1, 81000, 0xb26df92b | |
| 48 | −0, 42, 42, 1, 81000, 0xd6676e08 | |
| 49 | −0, 43, 43, 1, 81000, 0xff6b1b95 | |
| 50 | −0, 44, 44, 1, 81000, 0x6196d598 | |
| 51 | −0, 45, 45, 1, 81000, 0x833ebf1b | |
| 52 | −0, 46, 46, 1, 81000, 0x7b085af1 | |
| 53 | −0, 47, 47, 1, 81000, 0xe8f583b4 | |
| 7 | +0, 1, 1, 1, 81000, 0x8fef1925 | |
| 8 | +0, 2, 2, 1, 81000, 0xf0350cb6 | |
| 9 | +0, 3, 3, 1, 81000, 0xa70a0c52 | |
| 10 | +0, 4, 4, 1, 81000, 0x21ef1490 | |
| 11 | +0, 5, 5, 1, 81000, 0x98bc0c96 | |
| 12 | +0, 6, 6, 1, 81000, 0x92380b27 | |
| 13 | +0, 7, 7, 1, 81000, 0xbba216cd | |
| 14 | +0, 8, 8, 1, 81000, 0x92a8172b | |
| 15 | +0, 9, 9, 1, 81000, 0xfbc21592 | |
| 16 | +0, 10, 10, 1, 81000, 0xdad416a1 | |
| 17 | +0, 11, 11, 1, 81000, 0xec4d13aa | |
| 18 | +0, 12, 12, 1, 81000, 0xaf36fcff | |
| 19 | +0, 13, 13, 1, 81000, 0xb4fcf056 | |
| 20 | +0, 14, 14, 1, 81000, 0xe3782a3f | |
| 21 | +0, 15, 15, 1, 81000, 0x714daa0b | |
| 22 | +0, 16, 16, 1, 81000, 0xe2770382 | |
| 23 | +0, 17, 17, 1, 81000, 0x553253ff | |
| 24 | +0, 18, 18, 1, 81000, 0x928d8c46 | |
| 25 | +0, 19, 19, 1, 81000, 0x06c8fe82 | |
| 26 | +0, 20, 20, 1, 81000, 0xb8198f5a | |
| 27 | +0, 21, 21, 1, 81000, 0x0029f118 | |
| 28 | +0, 22, 22, 1, 81000, 0x6fe7fc6f | |
| 29 | +0, 23, 23, 1, 81000, 0x9165edde | |
| 30 | +0, 24, 24, 1, 81000, 0xe76ae791 | |
| 31 | +0, 25, 25, 1, 81000, 0xa4dd145a | |
| 32 | +0, 26, 26, 1, 81000, 0x2d7de9d8 | |
| 33 | +0, 27, 27, 1, 81000, 0xe102228b | |
| 34 | +0, 28, 28, 1, 81000, 0xc57ffe0e | |
| 35 | +0, 29, 29, 1, 81000, 0x324434cb | |
| 36 | +0, 30, 30, 1, 81000, 0xedc0433e | |
| 37 | +0, 31, 31, 1, 81000, 0xd42bb18a | |
| 38 | +0, 32, 32, 1, 81000, 0xedb3d561 | |
| 39 | +0, 33, 33, 1, 81000, 0x5244de92 | |
| 40 | +0, 34, 34, 1, 81000, 0x0bb27280 | |
| 41 | +0, 35, 35, 1, 81000, 0xc6116736 | |
| 42 | +0, 36, 36, 1, 81000, 0x42f154e2 | |
| 43 | +0, 37, 37, 1, 81000, 0xffbd6bf9 | |
| 44 | +0, 38, 38, 1, 81000, 0x813170d0 | |
| 45 | +0, 39, 39, 1, 81000, 0x430c4040 | |
| 46 | +0, 40, 40, 1, 81000, 0x56d1eecb | |
| 47 | +0, 41, 41, 1, 81000, 0xaa4afa12 | |
| 48 | +0, 42, 42, 1, 81000, 0x2c3d6fb8 | |
| 49 | +0, 43, 43, 1, 81000, 0xfedf1e3e | |
| 50 | +0, 44, 44, 1, 81000, 0xf538d893 | |
| 51 | +0, 45, 45, 1, 81000, 0xcc81c3b5 | |
| 52 | +0, 46, 46, 1, 81000, 0x59b95fbc | |
| 53 | +0, 47, 47, 1, 81000, 0xb4da87a0 | |
| 54 | 54 | 0, 48, 48, 1, 81000, 0x3426d5e4 |
| 55 | −0, 49, 49, 1, 81000, 0x214069ed | |
| 56 | −0, 50, 50, 1, 81000, 0x7dbdfd3f | |
| 57 | −0, 51, 51, 1, 81000, 0xf19b3f45 | |
| 58 | −0, 52, 52, 1, 81000, 0x0f05c7e2 | |
| 59 | −0, 53, 53, 1, 81000, 0xba94e323 | |
| 60 | −0, 54, 54, 1, 81000, 0x0de7b0c2 | |
| 61 | −0, 55, 55, 1, 81000, 0xfcf93c55 | |
| 62 | −0, 56, 56, 1, 81000, 0x8a8dbd55 | |
| 55 | +0, 49, 49, 1, 81000, 0x8d066aae | |
| 56 | +0, 50, 50, 1, 81000, 0x09effe79 | |
| 57 | +0, 51, 51, 1, 81000, 0xecc540ae | |
| 58 | +0, 52, 52, 1, 81000, 0x845dc90c | |
| 59 | +0, 53, 53, 1, 81000, 0x9c2fe4d2 | |
| 60 | +0, 54, 54, 1, 81000, 0x8887b277 | |
| 61 | +0, 55, 55, 1, 81000, 0x3bdc3ca9 | |
| 62 | +0, 56, 56, 1, 81000, 0x094fbe27 | |
| 63 | 63 | 0, 57, 57, 1, 81000, 0xddf22b97 |
| 64 | −0, 58, 58, 1, 81000, 0x49a830ff | |
| 65 | −0, 59, 59, 1, 81000, 0x82ab2a4b | |
| 66 | −0, 60, 60, 1, 81000, 0xd23420e5 | |
| 67 | −0, 61, 61, 1, 81000, 0x7c1017d1 | |
| 68 | −0, 62, 62, 1, 81000, 0x9aa61b38 | |
| 69 | −0, 63, 63, 1, 81000, 0x2a724a18 | |
| 70 | −0, 64, 64, 1, 81000, 0xc18055f2 | |
| 71 | −0, 65, 65, 1, 81000, 0xecba3855 | |
| 72 | −0, 66, 66, 1, 81000, 0x0eed6b0f | |
| 73 | −0, 67, 67, 1, 81000, 0x4be73816 | |
| 74 | −0, 68, 68, 1, 81000, 0xa681214e | |
| 75 | −0, 69, 69, 1, 81000, 0x4958f83d | |
| 76 | −0, 70, 70, 1, 81000, 0xca0f0d61 | |
| 77 | −0, 71, 71, 1, 81000, 0x3c453de1 | |
| 78 | −0, 72, 72, 1, 81000, 0xff60360a | |
| 79 | −0, 73, 73, 1, 81000, 0xdcef0949 | |
| 64 | +0, 58, 58, 1, 81000, 0x31b23156 | |
| 65 | +0, 59, 59, 1, 81000, 0xf5bf2ad8 | |
| 66 | +0, 60, 60, 1, 81000, 0x4a9321c4 | |
| 67 | +0, 61, 61, 1, 81000, 0xdd1b18ca | |
| 68 | +0, 62, 62, 1, 81000, 0x4ece1cdd | |
| 69 | +0, 63, 63, 1, 81000, 0x6a9a4b53 | |
| 70 | +0, 64, 64, 1, 81000, 0x6624578b | |
| 71 | +0, 65, 65, 1, 81000, 0x89273a0f | |
| 72 | +0, 66, 66, 1, 81000, 0x9eb56c4c | |
| 73 | +0, 67, 67, 1, 81000, 0xe60238f5 | |
| 74 | +0, 68, 68, 1, 81000, 0xbc4c228a | |
| 75 | +0, 69, 69, 1, 81000, 0x3feefa08 | |
| 76 | +0, 70, 70, 1, 81000, 0x0d620f37 | |
| 77 | +0, 71, 71, 1, 81000, 0x93693fc8 | |
| 78 | +0, 72, 72, 1, 81000, 0xfc4b3848 | |
| 79 | +0, 73, 73, 1, 81000, 0xd9950bfb | |
| 80 | 80 | 0, 74, 74, 1, 81000, 0xe5e3732d |
| 81 | −0, 75, 75, 1, 81000, 0x39747fd4 | |
| 82 | −0, 76, 76, 1, 81000, 0x6bec70e6 | |
| 83 | −0, 77, 77, 1, 81000, 0x7026a8c0 | |
| 84 | −0, 78, 78, 1, 81000, 0x92de5b61 | |
| 85 | −0, 79, 79, 1, 81000, 0x3f00507f | |
| 86 | −0, 80, 80, 1, 81000, 0x5620c377 | |
| 81 | +0, 75, 75, 1, 81000, 0x53517fd2 | |
| 82 | +0, 76, 76, 1, 81000, 0xb57c70b0 | |
| 83 | +0, 77, 77, 1, 81000, 0x378ea87c | |
| 84 | +0, 78, 78, 1, 81000, 0xfd2b5b58 | |
| 85 | +0, 79, 79, 1, 81000, 0x66d45077 | |
| 86 | +0, 80, 80, 1, 81000, 0x6e07c3f8 | |
| 87 | 87 | 0, 81, 81, 1, 81000, 0x39f5ed38 |
| 88 | −0, 82, 82, 1, 81000, 0x6ee35d67 | |
| 89 | −0, 83, 83, 1, 81000, 0x4f99a409 | |
| 90 | −0, 84, 84, 1, 81000, 0x0a05b6ea | |
| 91 | −0, 85, 85, 1, 81000, 0xd6c442d9 | |
| 92 | −0, 86, 86, 1, 81000, 0x0bb3d2f0 | |
| 93 | −0, 87, 87, 1, 81000, 0x6891c5b1 | |
| 94 | −0, 88, 88, 1, 81000, 0xf16ba9be | |
| 95 | −0, 89, 89, 1, 81000, 0xba53528e | |
| 96 | −0, 90, 90, 1, 81000, 0xc847de49 | |
| 88 | +0, 82, 82, 1, 81000, 0x55b05da7 | |
| 89 | +0, 83, 83, 1, 81000, 0x7f78a42c | |
| 90 | +0, 84, 84, 1, 81000, 0x5139b79c | |
| 91 | +0, 85, 85, 1, 81000, 0x4054437d | |
| 92 | +0, 86, 86, 1, 81000, 0x0f9dd327 | |
| 93 | +0, 87, 87, 1, 81000, 0xa885c60e | |
| 94 | +0, 88, 88, 1, 81000, 0x37abaa72 | |
| 95 | +0, 89, 89, 1, 81000, 0xdab25345 | |
| 96 | +0, 90, 90, 1, 81000, 0xbdf4df9d | |
| 97 | 97 | 0, 91, 91, 1, 81000, 0xc5b2e2b0 |
| 98 | 98 | 0, 92, 92, 1, 81000, 0xb0b497ff |