diff --git a/vp10/common/blockd.h b/vp10/common/blockd.h index 4d7f9214e..8849ed77b 100644 --- a/vp10/common/blockd.h +++ b/vp10/common/blockd.h @@ -351,7 +351,9 @@ static INLINE int supertx_enabled(const MB_MODE_INFO *mbmi) { #endif // CONFIG_SUPERTX #if CONFIG_EXT_TX -#define ALLOW_INTRA_EXT_TX 1 +#define ALLOW_INTRA_EXT_TX 1 +// whether masked transforms are used for 32X32 +#define USE_MSKTX_FOR_32X32 1 static const int num_ext_tx_set_inter[EXT_TX_SETS_INTER] = { 1, 17, 10, 2 @@ -360,25 +362,38 @@ static const int num_ext_tx_set_intra[EXT_TX_SETS_INTRA] = { 1, 17, 10 }; -#define USE_IDTX_FOR_32X32 0 +#if EXT_TX_SIZES == 4 +static INLINE int get_ext_tx_set(TX_SIZE tx_size, BLOCK_SIZE bs, + int is_inter) { + if (tx_size > TX_32X32 || bs < BLOCK_8X8) return 0; + if (tx_size == TX_32X32) + return is_inter ? 3 - 2 * USE_MSKTX_FOR_32X32 : 0; + return ((is_inter || tx_size < TX_16X16) ? 1 : 2); +} + +static const int use_intra_ext_tx_for_txsize[EXT_TX_SETS_INTRA][TX_SIZES] = { + { 0, 0, 0, 0, }, // unused + { 1, 1, 0, 0, }, + { 0, 0, 1, 0, }, +}; + +static const int use_inter_ext_tx_for_txsize[EXT_TX_SETS_INTER][TX_SIZES] = { + { 0, 0, 0, 0, }, // unused + { 1, 1, 1, USE_MSKTX_FOR_32X32, }, + { 0, 0, 0, 0, }, + { 0, 0, 0, (!USE_MSKTX_FOR_32X32), }, +}; + +#else // EXT_TX_SIZES == 4 + static INLINE int get_ext_tx_set(TX_SIZE tx_size, BLOCK_SIZE bs, int is_inter) { (void) is_inter; if (tx_size > TX_32X32 || bs < BLOCK_8X8) return 0; -#if USE_IDTX_FOR_32X32 - if (tx_size == TX_32X32) return is_inter ? 3 : 0; -#else if (tx_size == TX_32X32) return 0; -#endif return tx_size == TX_16X16 ? 2 : 1; } -static INLINE int get_ext_tx_types(TX_SIZE tx_size, BLOCK_SIZE bs, - int is_inter) { - const int set = get_ext_tx_set(tx_size, bs, is_inter); - return is_inter ? num_ext_tx_set_inter[set] : num_ext_tx_set_intra[set]; -} - static const int use_intra_ext_tx_for_txsize[EXT_TX_SETS_INTRA][TX_SIZES] = { { 0, 0, 0, 0, }, // unused { 1, 1, 0, 0, }, @@ -389,8 +404,9 @@ static const int use_inter_ext_tx_for_txsize[EXT_TX_SETS_INTER][TX_SIZES] = { { 0, 0, 0, 0, }, // unused { 1, 1, 0, 0, }, { 0, 0, 1, 0, }, - { 0, 0, 0, USE_IDTX_FOR_32X32, }, + { 0, 0, 0, 0, }, }; +#endif // EXT_TX_SIZES == 4 // Transform types used in each intra set static const int ext_tx_used_intra[EXT_TX_SETS_INTRA][TX_TYPES] = { @@ -406,6 +422,12 @@ static const int ext_tx_used_inter[EXT_TX_SETS_INTER][TX_TYPES] = { { 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, }, { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, }, }; + +static INLINE int get_ext_tx_types(TX_SIZE tx_size, BLOCK_SIZE bs, + int is_inter) { + const int set = get_ext_tx_set(tx_size, bs, is_inter); + return is_inter ? num_ext_tx_set_inter[set] : num_ext_tx_set_intra[set]; +} #endif // CONFIG_EXT_TX #if CONFIG_EXT_INTRA @@ -504,7 +526,7 @@ static INLINE TX_TYPE get_tx_type(PLANE_TYPE plane_type, #endif // CONFIG_EXT_INTRA #if CONFIG_EXT_TX -#if USE_IDTX_FOR_32X32 +#if EXT_TX_SIZES == 4 if (xd->lossless[mbmi->segment_id] || tx_size > TX_32X32 || (tx_size >= TX_32X32 && !is_inter_block(mbmi))) #else diff --git a/vp10/common/entropymode.c b/vp10/common/entropymode.c index abdb7dba4..8c755ae6a 100644 --- a/vp10/common/entropymode.c +++ b/vp10/common/entropymode.c @@ -951,7 +951,7 @@ default_inter_ext_tx_prob[EXT_TX_SETS_INTER][EXT_TX_SIZES][TX_TYPES - 1] = { { 12, 112, 16, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 }, #if EXT_TX_SIZES == 4 - { 12, 112, 16, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, + { 12, 160, 16, 144, 160, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 }, #endif }, { @@ -959,7 +959,7 @@ default_inter_ext_tx_prob[EXT_TX_SETS_INTER][EXT_TX_SIZES][TX_TYPES - 1] = { { 12, 112, 128, 128, 128, 128, 128, 128, 128 }, { 12, 112, 128, 128, 128, 128, 128, 128, 128 }, #if EXT_TX_SIZES == 4 - { 12, 112, 128, 128, 128, 128, 128, 128, 128 }, + { 12, 160, 128, 128, 128, 128, 128, 128, 128 }, #endif }, { { 12, }, @@ -1240,7 +1240,9 @@ default_intra_ext_tx_prob[EXT_TX_SETS_INTRA][EXT_TX_SIZES] }, }, }; + #else + const vpx_tree_index vp10_ext_tx_tree[TREE_SIZE(TX_TYPES)] = { -DCT_DCT, 2, -ADST_ADST, 4, diff --git a/vp10/common/enums.h b/vp10/common/enums.h index 6d7d08c7f..2233649b0 100644 --- a/vp10/common/enums.h +++ b/vp10/common/enums.h @@ -112,11 +112,13 @@ typedef enum { TX_TYPES, } TX_TYPE; -#define EXT_TX_SIZES 3 // number of sizes that use extended transforms #if CONFIG_EXT_TX +#define EXT_TX_SIZES 4 // number of sizes that use extended transforms #define EXT_TX_SETS_INTER 4 // Sets of transform selections for INTER #define EXT_TX_SETS_INTRA 3 // Sets of transform selections for INTRA +#else +#define EXT_TX_SIZES 3 // number of sizes that use extended transforms #endif // CONFIG_EXT_TX typedef enum { diff --git a/vp10/common/scan.c b/vp10/common/scan.c index 23a7b98dc..672ac1d2a 100644 --- a/vp10/common/scan.c +++ b/vp10/common/scan.c @@ -229,6 +229,278 @@ DECLARE_ALIGNED(16, static const int16_t, default_scan_32x32[1024]) = { 990, 959, 1022, 991, 1023, }; +#if CONFIG_EXT_TX +// Scan over two rectangular vertical partitions one after the other +DECLARE_ALIGNED(16, static const int16_t, v2_scan_32x32[1024]) = { + 0, 1, 32, 33, 2, 64, 34, 65, 66, 3, 96, 35, + 97, 67, 98, 4, 128, 36, 129, 99, 68, 130, 5, 100, + 131, 160, 37, 161, 69, 162, 132, 101, 163, 6, 192, 38, + 193, 70, 194, 133, 164, 102, 195, 7, 224, 39, 165, 225, + 134, 196, 71, 226, 103, 227, 166, 197, 8, 256, 40, 135, + 228, 257, 72, 258, 198, 104, 259, 167, 229, 136, 260, 9, + 288, 41, 289, 73, 199, 230, 290, 168, 261, 105, 291, 137, + 292, 231, 10, 200, 262, 320, 42, 321, 74, 322, 169, 293, + 106, 323, 232, 263, 138, 324, 201, 294, 11, 352, 43, 353, + 75, 170, 325, 354, 264, 107, 233, 295, 355, 202, 326, 139, + 356, 12, 384, 44, 265, 296, 385, 171, 357, 76, 386, 234, + 327, 108, 387, 203, 358, 140, 388, 297, 266, 328, 13, 172, + 389, 416, 45, 235, 359, 417, 77, 418, 109, 419, 204, 390, + 298, 329, 141, 267, 360, 420, 236, 391, 173, 421, 14, 448, + 46, 449, 78, 330, 450, 299, 361, 110, 205, 422, 451, 268, + 392, 142, 452, 237, 423, 174, 331, 362, 453, 15, 300, 393, + 480, 47, 481, 79, 482, 206, 454, 269, 424, 111, 483, 143, + 484, 363, 332, 394, 238, 455, 175, 301, 425, 485, 512, 513, + 270, 456, 514, 207, 486, 364, 395, 515, 333, 426, 516, 239, + 487, 302, 457, 517, 396, 271, 488, 544, 365, 427, 545, 518, + 546, 334, 458, 547, 519, 548, 303, 489, 397, 428, 549, 366, + 459, 520, 576, 335, 490, 550, 577, 578, 579, 521, 429, 551, + 398, 460, 580, 367, 491, 581, 552, 522, 582, 608, 609, 430, + 461, 610, 399, 492, 553, 611, 583, 523, 612, 613, 584, 554, + 462, 431, 493, 614, 524, 640, 641, 642, 585, 643, 555, 615, + 644, 463, 494, 586, 525, 616, 645, 556, 646, 672, 617, 673, + 587, 674, 647, 495, 675, 526, 676, 557, 618, 648, 677, 588, + 678, 527, 649, 619, 704, 558, 705, 706, 679, 589, 707, 650, + 708, 620, 680, 709, 559, 590, 710, 651, 681, 736, 621, 737, + 711, 738, 739, 682, 652, 740, 712, 591, 741, 622, 683, 713, + 742, 653, 768, 769, 743, 770, 714, 684, 771, 623, 772, 744, + 654, 773, 715, 685, 745, 774, 655, 775, 800, 801, 716, 746, + 802, 803, 686, 776, 804, 747, 805, 717, 777, 806, 687, 748, + 807, 778, 832, 833, 718, 834, 835, 808, 836, 779, 749, 837, + 809, 719, 838, 780, 750, 810, 839, 864, 865, 866, 867, 840, + 781, 868, 811, 751, 869, 841, 870, 812, 782, 842, 871, 896, + 897, 898, 872, 899, 813, 843, 900, 783, 901, 873, 844, 902, + 814, 874, 903, 928, 929, 845, 930, 904, 815, 875, 931, 932, + 905, 933, 846, 876, 934, 906, 935, 877, 960, 847, 961, 962, + 907, 936, 963, 964, 937, 878, 965, 908, 966, 938, 967, 909, + 879, 992, 939, 993, 968, 994, 995, 996, 910, 969, 940, 997, + 998, 970, 911, 941, 999, 971, 1000, 942, 1001, 972, 1002, 943, + 973, 1003, 974, 1004, 975, 1005, 1006, 1007, 16, 48, 80, 112, + 144, 176, 17, 49, 208, 81, 113, 145, 240, 177, 272, 18, + 50, 209, 82, 114, 304, 241, 146, 178, 273, 336, 210, 19, + 51, 83, 115, 305, 242, 147, 368, 179, 274, 337, 211, 20, + 400, 52, 84, 306, 116, 243, 369, 148, 338, 180, 275, 432, + 401, 212, 21, 53, 307, 85, 370, 244, 117, 464, 149, 433, + 339, 276, 181, 402, 213, 308, 496, 371, 22, 54, 465, 86, + 245, 118, 434, 150, 340, 277, 403, 182, 528, 497, 214, 466, + 372, 309, 23, 55, 435, 87, 246, 119, 341, 404, 151, 529, + 560, 278, 498, 183, 467, 373, 215, 310, 436, 24, 56, 247, + 561, 88, 530, 592, 342, 120, 405, 499, 152, 279, 468, 184, + 374, 311, 437, 216, 562, 593, 531, 624, 25, 248, 500, 57, + 406, 89, 343, 121, 469, 280, 153, 594, 185, 375, 563, 625, + 438, 532, 656, 312, 217, 501, 407, 249, 26, 344, 58, 90, + 470, 122, 595, 626, 281, 564, 657, 154, 376, 533, 688, 439, + 186, 313, 502, 218, 408, 627, 596, 658, 250, 345, 471, 27, + 59, 565, 689, 91, 123, 282, 534, 720, 155, 440, 377, 187, + 503, 314, 628, 659, 219, 597, 690, 409, 472, 566, 721, 346, + 251, 28, 60, 535, 752, 92, 124, 283, 441, 378, 156, 660, + 504, 629, 691, 598, 722, 188, 315, 567, 753, 220, 410, 473, + 347, 536, 784, 252, 29, 661, 692, 61, 93, 442, 630, 723, + 284, 125, 379, 505, 599, 754, 157, 316, 568, 785, 189, 474, + 411, 221, 537, 816, 693, 348, 662, 724, 253, 631, 755, 443, + 30, 600, 786, 62, 506, 94, 285, 380, 126, 569, 817, 158, + 317, 190, 475, 694, 725, 412, 663, 756, 538, 848, 222, 632, + 787, 349, 254, 601, 818, 444, 507, 31, 63, 381, 286, 95, + 570, 849, 726, 127, 695, 757, 664, 788, 159, 476, 318, 413, + 539, 880, 191, 633, 819, 223, 350, 602, 850, 508, 255, 445, + 727, 758, 696, 789, 571, 881, 382, 287, 665, 820, 477, 634, + 851, 540, 912, 319, 414, 603, 882, 759, 728, 790, 351, 509, + 697, 821, 446, 572, 913, 666, 852, 383, 635, 883, 478, 541, + 944, 415, 760, 791, 604, 914, 729, 822, 698, 853, 510, 667, + 884, 447, 573, 945, 636, 915, 792, 761, 823, 542, 976, 479, + 730, 854, 605, 946, 699, 885, 668, 916, 511, 574, 977, 793, + 824, 637, 947, 762, 855, 731, 886, 543, 1008, 606, 978, 700, + 917, 669, 948, 575, 825, 1009, 794, 856, 763, 887, 638, 979, + 732, 918, 701, 949, 607, 1010, 670, 980, 826, 857, 795, 888, + 764, 919, 639, 1011, 733, 950, 702, 981, 858, 827, 889, 796, + 920, 671, 1012, 765, 951, 734, 982, 703, 1013, 859, 890, 828, + 921, 797, 952, 766, 983, 735, 1014, 891, 860, 922, 829, 953, + 798, 984, 767, 1015, 892, 923, 861, 954, 830, 985, 799, 1016, + 924, 893, 955, 862, 986, 831, 1017, 925, 956, 894, 987, 863, + 1018, 957, 926, 988, 895, 1019, 958, 989, 927, 1020, 990, 959, + 1021, 991, 1022, 1023, +}; + +// Scan over two rectangular horizontal partitions one after the other +DECLARE_ALIGNED(16, static const int16_t, h2_scan_32x32[1024]) = { + 0, 1, 32, 33, 2, 64, 34, 65, 66, 3, 96, 35, + 97, 67, 98, 4, 128, 36, 129, 99, 68, 130, 5, 100, + 131, 160, 37, 161, 69, 162, 132, 101, 163, 6, 192, 38, + 193, 70, 194, 133, 164, 102, 195, 7, 224, 39, 165, 225, + 134, 196, 71, 226, 103, 227, 166, 197, 8, 256, 40, 135, + 228, 257, 72, 258, 198, 104, 259, 167, 229, 136, 260, 9, + 288, 41, 289, 73, 199, 230, 290, 168, 261, 105, 291, 137, + 292, 231, 10, 200, 262, 320, 42, 321, 74, 322, 169, 293, + 106, 323, 232, 263, 138, 324, 201, 294, 11, 352, 43, 353, + 75, 170, 325, 354, 264, 107, 233, 295, 355, 202, 326, 139, + 356, 12, 384, 44, 265, 296, 385, 171, 357, 76, 386, 234, + 327, 108, 387, 203, 358, 140, 388, 297, 266, 328, 13, 172, + 389, 416, 45, 235, 359, 417, 77, 418, 109, 419, 204, 390, + 298, 329, 141, 267, 360, 420, 236, 391, 173, 421, 14, 448, + 46, 449, 78, 330, 450, 299, 361, 110, 205, 422, 451, 268, + 392, 142, 452, 237, 423, 174, 331, 362, 453, 15, 300, 393, + 480, 47, 481, 79, 482, 206, 454, 269, 424, 111, 483, 143, + 484, 363, 332, 394, 238, 455, 175, 301, 425, 485, 16, 48, + 80, 270, 456, 207, 486, 112, 364, 395, 333, 426, 144, 239, + 487, 302, 457, 176, 396, 17, 271, 488, 49, 365, 427, 208, + 81, 334, 458, 113, 145, 240, 303, 489, 397, 428, 177, 366, + 459, 272, 18, 50, 209, 335, 490, 82, 114, 304, 241, 429, + 146, 398, 460, 367, 491, 178, 273, 336, 210, 19, 51, 83, + 430, 461, 399, 492, 115, 305, 242, 147, 368, 179, 274, 337, + 462, 431, 493, 211, 20, 400, 52, 84, 306, 116, 243, 369, + 148, 463, 494, 338, 180, 275, 432, 401, 212, 21, 53, 307, + 85, 370, 244, 117, 495, 464, 149, 433, 339, 276, 181, 402, + 213, 308, 496, 371, 22, 54, 465, 86, 245, 118, 434, 150, + 340, 277, 403, 182, 497, 214, 466, 372, 309, 23, 55, 435, + 87, 246, 119, 341, 404, 151, 278, 498, 183, 467, 373, 215, + 310, 436, 24, 56, 247, 88, 342, 120, 405, 499, 152, 279, + 468, 184, 374, 311, 437, 216, 25, 248, 500, 57, 406, 89, + 343, 121, 469, 280, 153, 185, 375, 438, 312, 217, 501, 407, + 249, 26, 344, 58, 90, 470, 122, 281, 154, 376, 439, 186, + 313, 502, 218, 408, 250, 345, 471, 27, 59, 91, 123, 282, + 155, 440, 377, 187, 503, 314, 219, 409, 472, 346, 251, 28, + 60, 92, 124, 283, 441, 378, 156, 504, 188, 315, 220, 410, + 473, 347, 252, 29, 61, 93, 442, 284, 125, 379, 505, 157, + 316, 189, 474, 411, 221, 348, 253, 443, 30, 62, 506, 94, + 285, 380, 126, 158, 317, 190, 475, 412, 222, 349, 254, 444, + 507, 31, 63, 381, 286, 95, 127, 159, 476, 318, 413, 191, + 223, 350, 508, 255, 445, 382, 287, 477, 319, 414, 351, 509, + 446, 383, 478, 415, 510, 447, 479, 511, 512, 513, 514, 515, + 516, 517, 544, 545, 518, 546, 547, 519, 548, 549, 520, 576, + 550, 577, 578, 579, 521, 551, 580, 581, 552, 522, 582, 608, + 609, 610, 553, 611, 583, 523, 612, 613, 584, 554, 614, 524, + 640, 641, 642, 585, 643, 555, 615, 644, 586, 525, 616, 645, + 556, 646, 672, 617, 673, 587, 674, 647, 675, 526, 676, 557, + 618, 648, 677, 588, 678, 527, 649, 619, 704, 558, 705, 706, + 679, 589, 707, 650, 708, 620, 680, 709, 528, 559, 590, 710, + 651, 681, 736, 621, 737, 711, 738, 739, 682, 652, 529, 560, + 740, 712, 591, 741, 622, 683, 713, 742, 653, 768, 769, 561, + 743, 530, 592, 770, 714, 684, 771, 623, 772, 744, 654, 773, + 715, 685, 745, 774, 562, 593, 531, 624, 655, 775, 800, 801, + 716, 746, 802, 803, 686, 776, 804, 594, 563, 625, 747, 805, + 717, 532, 656, 777, 806, 687, 748, 807, 778, 832, 833, 718, + 834, 595, 626, 835, 564, 657, 808, 836, 533, 688, 779, 749, + 837, 809, 719, 838, 780, 627, 596, 658, 750, 810, 839, 864, + 565, 689, 865, 866, 867, 534, 720, 840, 781, 868, 811, 751, + 869, 841, 628, 659, 597, 690, 870, 812, 782, 566, 721, 842, + 871, 896, 535, 752, 897, 898, 872, 899, 813, 843, 660, 900, + 783, 629, 691, 598, 722, 901, 873, 567, 753, 844, 902, 814, + 874, 536, 784, 903, 661, 692, 928, 929, 630, 723, 845, 930, + 904, 815, 875, 931, 599, 754, 932, 568, 785, 905, 933, 846, + 876, 934, 537, 816, 693, 662, 724, 906, 631, 755, 935, 877, + 600, 786, 960, 847, 961, 962, 907, 936, 963, 569, 817, 964, + 937, 694, 725, 878, 965, 908, 663, 756, 538, 848, 966, 632, + 787, 938, 601, 818, 967, 909, 879, 992, 939, 993, 968, 570, + 849, 994, 726, 695, 757, 995, 664, 788, 996, 910, 969, 539, + 880, 940, 633, 819, 997, 998, 602, 850, 970, 911, 941, 999, + 727, 758, 696, 789, 571, 881, 971, 665, 820, 1000, 634, 851, + 942, 540, 912, 1001, 972, 603, 882, 759, 728, 790, 1002, 697, + 821, 943, 973, 572, 913, 666, 852, 1003, 635, 883, 974, 541, + 944, 760, 791, 1004, 604, 914, 729, 822, 698, 853, 975, 667, + 884, 573, 945, 1005, 636, 915, 792, 761, 823, 542, 976, 1006, + 730, 854, 605, 946, 699, 885, 668, 916, 1007, 574, 977, 793, + 824, 637, 947, 762, 855, 731, 886, 543, 1008, 606, 978, 700, + 917, 669, 948, 575, 825, 1009, 794, 856, 763, 887, 638, 979, + 732, 918, 701, 949, 607, 1010, 670, 980, 826, 857, 795, 888, + 764, 919, 639, 1011, 733, 950, 702, 981, 858, 827, 889, 796, + 920, 671, 1012, 765, 951, 734, 982, 703, 1013, 859, 890, 828, + 921, 797, 952, 766, 983, 735, 1014, 891, 860, 922, 829, 953, + 798, 984, 767, 1015, 892, 923, 861, 954, 830, 985, 799, 1016, + 924, 893, 955, 862, 986, 831, 1017, 925, 956, 894, 987, 863, + 1018, 957, 926, 988, 895, 1019, 958, 989, 927, 1020, 990, 959, + 1021, 991, 1022, 1023, +}; + +// Scan where the top left quarter is scanned first +DECLARE_ALIGNED(16, static const int16_t, qtr_scan_32x32[1024]) = { + 0, 1, 32, 33, 2, 64, 34, 65, 66, 3, 96, 35, + 97, 67, 98, 4, 128, 36, 129, 99, 68, 130, 5, 100, + 131, 160, 37, 161, 69, 162, 132, 101, 163, 6, 192, 38, + 193, 70, 194, 133, 164, 102, 195, 7, 224, 39, 165, 225, + 134, 196, 71, 226, 103, 227, 166, 197, 8, 256, 40, 135, + 228, 257, 72, 258, 198, 104, 259, 167, 229, 136, 260, 9, + 288, 41, 289, 73, 199, 230, 290, 168, 261, 105, 291, 137, + 292, 231, 10, 200, 262, 320, 42, 321, 74, 322, 169, 293, + 106, 323, 232, 263, 138, 324, 201, 294, 11, 352, 43, 353, + 75, 170, 325, 354, 264, 107, 233, 295, 355, 202, 326, 139, + 356, 12, 384, 44, 265, 296, 385, 171, 357, 76, 386, 234, + 327, 108, 387, 203, 358, 140, 388, 297, 266, 328, 13, 172, + 389, 416, 45, 235, 359, 417, 77, 418, 109, 419, 204, 390, + 298, 329, 141, 267, 360, 420, 236, 391, 173, 421, 14, 448, + 46, 449, 78, 330, 450, 299, 361, 110, 205, 422, 451, 268, + 392, 142, 452, 237, 423, 174, 331, 362, 453, 15, 300, 393, + 480, 47, 481, 79, 482, 206, 454, 269, 424, 111, 483, 143, + 484, 363, 332, 394, 238, 455, 175, 301, 425, 485, 270, 456, + 207, 486, 364, 395, 333, 426, 239, 487, 302, 457, 396, 271, + 488, 365, 427, 334, 458, 303, 489, 397, 428, 366, 459, 335, + 490, 429, 398, 460, 367, 491, 430, 461, 399, 492, 462, 431, + 493, 463, 494, 495, 16, 512, 48, 513, 80, 514, 112, 515, + 144, 516, 176, 517, 17, 544, 49, 545, 208, 518, 81, 546, + 113, 547, 145, 240, 519, 548, 177, 549, 272, 520, 18, 576, + 50, 209, 550, 577, 82, 578, 114, 579, 304, 521, 241, 551, + 146, 580, 178, 581, 273, 552, 336, 522, 210, 582, 19, 608, + 51, 609, 83, 610, 115, 305, 553, 611, 242, 583, 147, 368, + 523, 612, 179, 613, 274, 584, 337, 554, 211, 614, 20, 400, + 524, 640, 52, 641, 84, 642, 306, 585, 116, 643, 243, 369, + 555, 615, 148, 644, 338, 586, 180, 275, 432, 525, 616, 645, + 401, 556, 212, 646, 21, 672, 53, 307, 617, 673, 85, 370, + 587, 674, 244, 647, 117, 675, 464, 526, 149, 676, 433, 557, + 339, 618, 276, 648, 181, 677, 402, 588, 213, 678, 308, 496, + 527, 649, 371, 619, 22, 704, 54, 465, 558, 705, 86, 706, + 245, 679, 118, 434, 589, 707, 150, 340, 650, 708, 277, 403, + 620, 680, 182, 709, 528, 497, 559, 214, 466, 590, 710, 372, + 651, 309, 681, 23, 736, 55, 435, 621, 737, 87, 246, 711, + 738, 119, 739, 341, 682, 404, 652, 151, 529, 560, 740, 278, + 712, 498, 591, 183, 741, 467, 622, 373, 683, 215, 310, 713, + 742, 436, 653, 24, 768, 56, 769, 247, 561, 743, 88, 530, + 592, 770, 342, 714, 120, 405, 684, 771, 499, 623, 152, 772, + 279, 744, 468, 654, 184, 773, 374, 715, 311, 437, 685, 745, + 216, 774, 562, 593, 531, 624, 25, 248, 500, 655, 775, 800, + 57, 801, 406, 716, 89, 343, 746, 802, 121, 803, 469, 686, + 280, 776, 153, 804, 594, 185, 375, 563, 625, 747, 805, 438, + 717, 532, 656, 312, 777, 217, 806, 501, 687, 407, 748, 249, + 807, 26, 344, 778, 832, 58, 833, 90, 470, 718, 834, 122, + 595, 626, 835, 281, 564, 657, 808, 154, 836, 376, 533, 688, + 779, 439, 749, 186, 837, 313, 809, 502, 719, 218, 838, 408, + 780, 627, 596, 658, 250, 345, 471, 750, 810, 839, 27, 864, + 59, 565, 689, 865, 91, 866, 123, 867, 282, 534, 720, 840, + 155, 440, 781, 868, 377, 811, 187, 503, 751, 869, 314, 841, + 628, 659, 219, 597, 690, 870, 409, 812, 472, 782, 566, 721, + 346, 842, 251, 871, 28, 896, 60, 535, 752, 897, 92, 898, + 124, 283, 872, 899, 441, 813, 378, 843, 156, 660, 900, 504, + 783, 629, 691, 598, 722, 188, 901, 315, 873, 567, 753, 220, + 410, 844, 902, 473, 814, 347, 874, 536, 784, 252, 903, 29, + 661, 692, 928, 61, 929, 93, 442, 630, 723, 845, 930, 284, + 904, 125, 379, 505, 815, 875, 931, 599, 754, 157, 932, 316, + 568, 785, 905, 189, 933, 474, 846, 411, 876, 221, 934, 537, + 816, 693, 348, 662, 724, 906, 253, 631, 755, 935, 443, 877, + 30, 600, 786, 960, 62, 506, 847, 961, 94, 962, 285, 380, + 907, 936, 126, 963, 569, 817, 158, 964, 317, 937, 190, 475, + 694, 725, 878, 965, 412, 908, 663, 756, 538, 848, 222, 966, + 632, 787, 349, 938, 254, 601, 818, 967, 444, 909, 507, 879, + 31, 992, 63, 381, 939, 993, 286, 968, 95, 570, 849, 994, + 726, 127, 695, 757, 995, 664, 788, 159, 996, 476, 910, 318, + 969, 413, 539, 880, 940, 191, 633, 819, 997, 223, 998, 350, + 602, 850, 970, 508, 911, 255, 445, 941, 999, 727, 758, 696, + 789, 571, 881, 382, 971, 287, 665, 820, 1000, 477, 634, 851, + 942, 540, 912, 319, 1001, 414, 972, 603, 882, 759, 728, 790, + 351, 1002, 509, 697, 821, 943, 446, 973, 572, 913, 666, 852, + 383, 1003, 635, 883, 478, 974, 541, 944, 415, 760, 791, 1004, + 604, 914, 729, 822, 698, 853, 510, 975, 667, 884, 447, 573, + 945, 1005, 636, 915, 792, 761, 823, 542, 976, 479, 1006, 730, + 854, 605, 946, 699, 885, 668, 916, 511, 1007, 574, 977, 793, + 824, 637, 947, 762, 855, 731, 886, 543, 1008, 606, 978, 700, + 917, 669, 948, 575, 825, 1009, 794, 856, 763, 887, 638, 979, + 732, 918, 701, 949, 607, 1010, 670, 980, 826, 857, 795, 888, + 764, 919, 639, 1011, 733, 950, 702, 981, 858, 827, 889, 796, + 920, 671, 1012, 765, 951, 734, 982, 703, 1013, 859, 890, 828, + 921, 797, 952, 766, 983, 735, 1014, 891, 860, 922, 829, 953, + 798, 984, 767, 1015, 892, 923, 861, 954, 830, 985, 799, 1016, + 924, 893, 955, 862, 986, 831, 1017, 925, 956, 894, 987, 863, + 1018, 957, 926, 988, 895, 1019, 958, 989, 927, 1020, 990, 959, + 1021, 991, 1022, 1023, +}; +#endif // CONFIG_EXT_TX + // Neighborhood 5-tuples for various scans and blocksizes, // in {top, left, topleft, topright, bottomleft} order // for each position in raster scan order. @@ -532,6 +804,533 @@ DECLARE_ALIGNED(16, static const int16_t, 895, 926, 989, 1020, 958, 989, 927, 958, 990, 1021, 959, 990, 991, 1022, 0, 0, }; +#if CONFIG_EXT_TX +DECLARE_ALIGNED(16, static const int16_t, + v2_scan_32x32_neighbors[1025 * MAX_NEIGHBORS]) = { + 0, 0, 0, 0, 0, 0, 1, 32, 1, 1, 32, 32, + 2, 33, 33, 64, 34, 65, 2, 2, 64, 64, 3, 34, + 65, 96, 35, 66, 66, 97, 3, 3, 96, 96, 4, 35, + 97, 128, 67, 98, 36, 67, 98, 129, 4, 4, 68, 99, + 99, 130, 128, 128, 5, 36, 129, 160, 37, 68, 130, 161, + 100, 131, 69, 100, 131, 162, 5, 5, 160, 160, 6, 37, + 161, 192, 38, 69, 162, 193, 101, 132, 132, 163, 70, 101, + 163, 194, 6, 6, 192, 192, 7, 38, 133, 164, 193, 224, + 102, 133, 164, 195, 39, 70, 194, 225, 71, 102, 195, 226, + 134, 165, 165, 196, 7, 7, 224, 224, 8, 39, 103, 134, + 196, 227, 225, 256, 40, 71, 226, 257, 166, 197, 72, 103, + 227, 258, 135, 166, 197, 228, 104, 135, 228, 259, 8, 8, + 256, 256, 9, 40, 257, 288, 41, 72, 167, 198, 198, 229, + 258, 289, 136, 167, 229, 260, 73, 104, 259, 290, 105, 136, + 260, 291, 199, 230, 9, 9, 168, 199, 230, 261, 288, 288, + 10, 41, 289, 320, 42, 73, 290, 321, 137, 168, 261, 292, + 74, 105, 291, 322, 200, 231, 231, 262, 106, 137, 292, 323, + 169, 200, 262, 293, 10, 10, 320, 320, 11, 42, 321, 352, + 43, 74, 138, 169, 293, 324, 322, 353, 232, 263, 75, 106, + 201, 232, 263, 294, 323, 354, 170, 201, 294, 325, 107, 138, + 324, 355, 11, 11, 352, 352, 12, 43, 233, 264, 264, 295, + 353, 384, 139, 170, 325, 356, 44, 75, 354, 385, 202, 233, + 295, 326, 76, 107, 355, 386, 171, 202, 326, 357, 108, 139, + 356, 387, 265, 296, 234, 265, 296, 327, 12, 12, 140, 171, + 357, 388, 384, 384, 13, 44, 203, 234, 327, 358, 385, 416, + 45, 76, 386, 417, 77, 108, 387, 418, 172, 203, 358, 389, + 266, 297, 297, 328, 109, 140, 235, 266, 328, 359, 388, 419, + 204, 235, 359, 390, 141, 172, 389, 420, 13, 13, 416, 416, + 14, 45, 417, 448, 46, 77, 298, 329, 418, 449, 267, 298, + 329, 360, 78, 109, 173, 204, 390, 421, 419, 450, 236, 267, + 360, 391, 110, 141, 420, 451, 205, 236, 391, 422, 142, 173, + 299, 330, 330, 361, 421, 452, 14, 14, 268, 299, 361, 392, + 448, 448, 15, 46, 449, 480, 47, 78, 450, 481, 174, 205, + 422, 453, 237, 268, 392, 423, 79, 110, 451, 482, 111, 142, + 452, 483, 331, 362, 300, 331, 362, 393, 206, 237, 423, 454, + 143, 174, 269, 300, 393, 424, 453, 484, 480, 480, 481, 512, + 238, 269, 424, 455, 482, 513, 175, 206, 454, 485, 332, 363, + 363, 394, 483, 514, 301, 332, 394, 425, 484, 515, 207, 238, + 455, 486, 270, 301, 425, 456, 485, 516, 364, 395, 239, 270, + 456, 487, 512, 512, 333, 364, 395, 426, 513, 544, 486, 517, + 514, 545, 302, 333, 426, 457, 515, 546, 487, 518, 516, 547, + 271, 302, 457, 488, 365, 396, 396, 427, 517, 548, 334, 365, + 427, 458, 488, 519, 544, 544, 303, 334, 458, 489, 518, 549, + 545, 576, 546, 577, 547, 578, 489, 520, 397, 428, 519, 550, + 366, 397, 428, 459, 548, 579, 335, 366, 459, 490, 549, 580, + 520, 551, 490, 521, 550, 581, 576, 576, 577, 608, 398, 429, + 429, 460, 578, 609, 367, 398, 460, 491, 521, 552, 579, 610, + 551, 582, 491, 522, 580, 611, 581, 612, 552, 583, 522, 553, + 430, 461, 399, 430, 461, 492, 582, 613, 492, 523, 608, 608, + 609, 640, 610, 641, 553, 584, 611, 642, 523, 554, 583, 614, + 612, 643, 431, 462, 462, 493, 554, 585, 493, 524, 584, 615, + 613, 644, 524, 555, 614, 645, 640, 640, 585, 616, 641, 672, + 555, 586, 642, 673, 615, 646, 463, 494, 643, 674, 494, 525, + 644, 675, 525, 556, 586, 617, 616, 647, 645, 676, 556, 587, + 646, 677, 495, 526, 617, 648, 587, 618, 672, 672, 526, 557, + 673, 704, 674, 705, 647, 678, 557, 588, 675, 706, 618, 649, + 676, 707, 588, 619, 648, 679, 677, 708, 527, 558, 558, 589, + 678, 709, 619, 650, 649, 680, 704, 704, 589, 620, 705, 736, + 679, 710, 706, 737, 707, 738, 650, 681, 620, 651, 708, 739, + 680, 711, 559, 590, 709, 740, 590, 621, 651, 682, 681, 712, + 710, 741, 621, 652, 736, 736, 737, 768, 711, 742, 738, 769, + 682, 713, 652, 683, 739, 770, 591, 622, 740, 771, 712, 743, + 622, 653, 741, 772, 683, 714, 653, 684, 713, 744, 742, 773, + 623, 654, 743, 774, 768, 768, 769, 800, 684, 715, 714, 745, + 770, 801, 771, 802, 654, 685, 744, 775, 772, 803, 715, 746, + 773, 804, 685, 716, 745, 776, 774, 805, 655, 686, 716, 747, + 775, 806, 746, 777, 800, 800, 801, 832, 686, 717, 802, 833, + 803, 834, 776, 807, 804, 835, 747, 778, 717, 748, 805, 836, + 777, 808, 687, 718, 806, 837, 748, 779, 718, 749, 778, 809, + 807, 838, 832, 832, 833, 864, 834, 865, 835, 866, 808, 839, + 749, 780, 836, 867, 779, 810, 719, 750, 837, 868, 809, 840, + 838, 869, 780, 811, 750, 781, 810, 841, 839, 870, 864, 864, + 865, 896, 866, 897, 840, 871, 867, 898, 781, 812, 811, 842, + 868, 899, 751, 782, 869, 900, 841, 872, 812, 843, 870, 901, + 782, 813, 842, 873, 871, 902, 896, 896, 897, 928, 813, 844, + 898, 929, 872, 903, 783, 814, 843, 874, 899, 930, 900, 931, + 873, 904, 901, 932, 814, 845, 844, 875, 902, 933, 874, 905, + 903, 934, 845, 876, 928, 928, 815, 846, 929, 960, 930, 961, + 875, 906, 904, 935, 931, 962, 932, 963, 905, 936, 846, 877, + 933, 964, 876, 907, 934, 965, 906, 937, 935, 966, 877, 908, + 847, 878, 960, 960, 907, 938, 961, 992, 936, 967, 962, 993, + 963, 994, 964, 995, 878, 909, 937, 968, 908, 939, 965, 996, + 966, 997, 938, 969, 879, 910, 909, 940, 967, 998, 939, 970, + 968, 999, 910, 941, 969, 1000, 940, 971, 970, 1001, 911, 942, + 941, 972, 971, 1002, 942, 973, 972, 1003, 943, 974, 973, 1004, + 974, 1005, 975, 1006, 15, 15, 16, 47, 48, 79, 80, 111, + 112, 143, 144, 175, 16, 16, 17, 48, 176, 207, 49, 80, + 81, 112, 113, 144, 208, 239, 145, 176, 240, 271, 17, 17, + 18, 49, 177, 208, 50, 81, 82, 113, 272, 303, 209, 240, + 114, 145, 146, 177, 241, 272, 304, 335, 178, 209, 18, 18, + 19, 50, 51, 82, 83, 114, 273, 304, 210, 241, 115, 146, + 336, 367, 147, 178, 242, 273, 305, 336, 179, 210, 19, 19, + 368, 399, 20, 51, 52, 83, 274, 305, 84, 115, 211, 242, + 337, 368, 116, 147, 306, 337, 148, 179, 243, 274, 400, 431, + 369, 400, 180, 211, 20, 20, 21, 52, 275, 306, 53, 84, + 338, 369, 212, 243, 85, 116, 432, 463, 117, 148, 401, 432, + 307, 338, 244, 275, 149, 180, 370, 401, 181, 212, 276, 307, + 464, 495, 339, 370, 21, 21, 22, 53, 433, 464, 54, 85, + 213, 244, 86, 117, 402, 433, 118, 149, 308, 339, 245, 276, + 371, 402, 150, 181, 496, 527, 465, 496, 182, 213, 434, 465, + 340, 371, 277, 308, 22, 22, 23, 54, 403, 434, 55, 86, + 214, 245, 87, 118, 309, 340, 372, 403, 119, 150, 497, 528, + 528, 559, 246, 277, 466, 497, 151, 182, 435, 466, 341, 372, + 183, 214, 278, 309, 404, 435, 23, 23, 24, 55, 215, 246, + 529, 560, 56, 87, 498, 529, 560, 591, 310, 341, 88, 119, + 373, 404, 467, 498, 120, 151, 247, 278, 436, 467, 152, 183, + 342, 373, 279, 310, 405, 436, 184, 215, 530, 561, 561, 592, + 499, 530, 592, 623, 24, 24, 216, 247, 468, 499, 25, 56, + 374, 405, 57, 88, 311, 342, 89, 120, 437, 468, 248, 279, + 121, 152, 562, 593, 153, 184, 343, 374, 531, 562, 593, 624, + 406, 437, 500, 531, 624, 655, 280, 311, 185, 216, 469, 500, + 375, 406, 217, 248, 25, 25, 312, 343, 26, 57, 58, 89, + 438, 469, 90, 121, 563, 594, 594, 625, 249, 280, 532, 563, + 625, 656, 122, 153, 344, 375, 501, 532, 656, 687, 407, 438, + 154, 185, 281, 312, 470, 501, 186, 217, 376, 407, 595, 626, + 564, 595, 626, 657, 218, 249, 313, 344, 439, 470, 26, 26, + 27, 58, 533, 564, 657, 688, 59, 90, 91, 122, 250, 281, + 502, 533, 688, 719, 123, 154, 408, 439, 345, 376, 155, 186, + 471, 502, 282, 313, 596, 627, 627, 658, 187, 218, 565, 596, + 658, 689, 377, 408, 440, 471, 534, 565, 689, 720, 314, 345, + 219, 250, 27, 27, 28, 59, 503, 534, 720, 751, 60, 91, + 92, 123, 251, 282, 409, 440, 346, 377, 124, 155, 628, 659, + 472, 503, 597, 628, 659, 690, 566, 597, 690, 721, 156, 187, + 283, 314, 535, 566, 721, 752, 188, 219, 378, 409, 441, 472, + 315, 346, 504, 535, 752, 783, 220, 251, 28, 28, 629, 660, + 660, 691, 29, 60, 61, 92, 410, 441, 598, 629, 691, 722, + 252, 283, 93, 124, 347, 378, 473, 504, 567, 598, 722, 753, + 125, 156, 284, 315, 536, 567, 753, 784, 157, 188, 442, 473, + 379, 410, 189, 220, 505, 536, 784, 815, 661, 692, 316, 347, + 630, 661, 692, 723, 221, 252, 599, 630, 723, 754, 411, 442, + 29, 29, 568, 599, 754, 785, 30, 61, 474, 505, 62, 93, + 253, 284, 348, 379, 94, 125, 537, 568, 785, 816, 126, 157, + 285, 316, 158, 189, 443, 474, 662, 693, 693, 724, 380, 411, + 631, 662, 724, 755, 506, 537, 816, 847, 190, 221, 600, 631, + 755, 786, 317, 348, 222, 253, 569, 600, 786, 817, 412, 443, + 475, 506, 30, 30, 31, 62, 349, 380, 254, 285, 63, 94, + 538, 569, 817, 848, 694, 725, 95, 126, 663, 694, 725, 756, + 632, 663, 756, 787, 127, 158, 444, 475, 286, 317, 381, 412, + 507, 538, 848, 879, 159, 190, 601, 632, 787, 818, 191, 222, + 318, 349, 570, 601, 818, 849, 476, 507, 223, 254, 413, 444, + 695, 726, 726, 757, 664, 695, 757, 788, 539, 570, 849, 880, + 350, 381, 255, 286, 633, 664, 788, 819, 445, 476, 602, 633, + 819, 850, 508, 539, 880, 911, 287, 318, 382, 413, 571, 602, + 850, 881, 727, 758, 696, 727, 758, 789, 319, 350, 477, 508, + 665, 696, 789, 820, 414, 445, 540, 571, 881, 912, 634, 665, + 820, 851, 351, 382, 603, 634, 851, 882, 446, 477, 509, 540, + 912, 943, 383, 414, 728, 759, 759, 790, 572, 603, 882, 913, + 697, 728, 790, 821, 666, 697, 821, 852, 478, 509, 635, 666, + 852, 883, 415, 446, 541, 572, 913, 944, 604, 635, 883, 914, + 760, 791, 729, 760, 791, 822, 510, 541, 944, 975, 447, 478, + 698, 729, 822, 853, 573, 604, 914, 945, 667, 698, 853, 884, + 636, 667, 884, 915, 479, 510, 542, 573, 945, 976, 761, 792, + 792, 823, 605, 636, 915, 946, 730, 761, 823, 854, 699, 730, + 854, 885, 511, 542, 976, 1007, 574, 605, 946, 977, 668, 699, + 885, 916, 637, 668, 916, 947, 543, 574, 793, 824, 977, 1008, + 762, 793, 824, 855, 731, 762, 855, 886, 606, 637, 947, 978, + 700, 731, 886, 917, 669, 700, 917, 948, 575, 606, 978, 1009, + 638, 669, 948, 979, 794, 825, 825, 856, 763, 794, 856, 887, + 732, 763, 887, 918, 607, 638, 979, 1010, 701, 732, 918, 949, + 670, 701, 949, 980, 826, 857, 795, 826, 857, 888, 764, 795, + 888, 919, 639, 670, 980, 1011, 733, 764, 919, 950, 702, 733, + 950, 981, 671, 702, 981, 1012, 827, 858, 858, 889, 796, 827, + 889, 920, 765, 796, 920, 951, 734, 765, 951, 982, 703, 734, + 982, 1013, 859, 890, 828, 859, 890, 921, 797, 828, 921, 952, + 766, 797, 952, 983, 735, 766, 983, 1014, 860, 891, 891, 922, + 829, 860, 922, 953, 798, 829, 953, 984, 767, 798, 984, 1015, + 892, 923, 861, 892, 923, 954, 830, 861, 954, 985, 799, 830, + 985, 1016, 893, 924, 924, 955, 862, 893, 955, 986, 831, 862, + 986, 1017, 925, 956, 894, 925, 956, 987, 863, 894, 987, 1018, + 926, 957, 957, 988, 895, 926, 988, 1019, 958, 989, 927, 958, + 989, 1020, 959, 990, 990, 1021, 991, 1022, 0, 0, +}; + +DECLARE_ALIGNED(16, static const int16_t, + h2_scan_32x32_neighbors[1025 * MAX_NEIGHBORS]) = { + 0, 0, 0, 0, 0, 0, 1, 32, 1, 1, 32, 32, + 2, 33, 33, 64, 34, 65, 2, 2, 64, 64, 3, 34, + 65, 96, 35, 66, 66, 97, 3, 3, 96, 96, 4, 35, + 97, 128, 67, 98, 36, 67, 98, 129, 4, 4, 68, 99, + 99, 130, 128, 128, 5, 36, 129, 160, 37, 68, 130, 161, + 100, 131, 69, 100, 131, 162, 5, 5, 160, 160, 6, 37, + 161, 192, 38, 69, 162, 193, 101, 132, 132, 163, 70, 101, + 163, 194, 6, 6, 192, 192, 7, 38, 133, 164, 193, 224, + 102, 133, 164, 195, 39, 70, 194, 225, 71, 102, 195, 226, + 134, 165, 165, 196, 7, 7, 224, 224, 8, 39, 103, 134, + 196, 227, 225, 256, 40, 71, 226, 257, 166, 197, 72, 103, + 227, 258, 135, 166, 197, 228, 104, 135, 228, 259, 8, 8, + 256, 256, 9, 40, 257, 288, 41, 72, 167, 198, 198, 229, + 258, 289, 136, 167, 229, 260, 73, 104, 259, 290, 105, 136, + 260, 291, 199, 230, 9, 9, 168, 199, 230, 261, 288, 288, + 10, 41, 289, 320, 42, 73, 290, 321, 137, 168, 261, 292, + 74, 105, 291, 322, 200, 231, 231, 262, 106, 137, 292, 323, + 169, 200, 262, 293, 10, 10, 320, 320, 11, 42, 321, 352, + 43, 74, 138, 169, 293, 324, 322, 353, 232, 263, 75, 106, + 201, 232, 263, 294, 323, 354, 170, 201, 294, 325, 107, 138, + 324, 355, 11, 11, 352, 352, 12, 43, 233, 264, 264, 295, + 353, 384, 139, 170, 325, 356, 44, 75, 354, 385, 202, 233, + 295, 326, 76, 107, 355, 386, 171, 202, 326, 357, 108, 139, + 356, 387, 265, 296, 234, 265, 296, 327, 12, 12, 140, 171, + 357, 388, 384, 384, 13, 44, 203, 234, 327, 358, 385, 416, + 45, 76, 386, 417, 77, 108, 387, 418, 172, 203, 358, 389, + 266, 297, 297, 328, 109, 140, 235, 266, 328, 359, 388, 419, + 204, 235, 359, 390, 141, 172, 389, 420, 13, 13, 416, 416, + 14, 45, 417, 448, 46, 77, 298, 329, 418, 449, 267, 298, + 329, 360, 78, 109, 173, 204, 390, 421, 419, 450, 236, 267, + 360, 391, 110, 141, 420, 451, 205, 236, 391, 422, 142, 173, + 299, 330, 330, 361, 421, 452, 14, 14, 268, 299, 361, 392, + 448, 448, 15, 46, 449, 480, 47, 78, 450, 481, 174, 205, + 422, 453, 237, 268, 392, 423, 79, 110, 451, 482, 111, 142, + 452, 483, 331, 362, 300, 331, 362, 393, 206, 237, 423, 454, + 143, 174, 269, 300, 393, 424, 453, 484, 15, 15, 16, 47, + 48, 79, 238, 269, 424, 455, 175, 206, 454, 485, 80, 111, + 332, 363, 363, 394, 301, 332, 394, 425, 112, 143, 207, 238, + 455, 486, 270, 301, 425, 456, 144, 175, 364, 395, 16, 16, + 239, 270, 456, 487, 17, 48, 333, 364, 395, 426, 176, 207, + 49, 80, 302, 333, 426, 457, 81, 112, 113, 144, 208, 239, + 271, 302, 457, 488, 365, 396, 396, 427, 145, 176, 334, 365, + 427, 458, 240, 271, 17, 17, 18, 49, 177, 208, 303, 334, + 458, 489, 50, 81, 82, 113, 272, 303, 209, 240, 397, 428, + 114, 145, 366, 397, 428, 459, 335, 366, 459, 490, 146, 177, + 241, 272, 304, 335, 178, 209, 18, 18, 19, 50, 51, 82, + 398, 429, 429, 460, 367, 398, 460, 491, 83, 114, 273, 304, + 210, 241, 115, 146, 336, 367, 147, 178, 242, 273, 305, 336, + 430, 461, 399, 430, 461, 492, 179, 210, 19, 19, 368, 399, + 20, 51, 52, 83, 274, 305, 84, 115, 211, 242, 337, 368, + 116, 147, 431, 462, 462, 493, 306, 337, 148, 179, 243, 274, + 400, 431, 369, 400, 180, 211, 20, 20, 21, 52, 275, 306, + 53, 84, 338, 369, 212, 243, 85, 116, 463, 494, 432, 463, + 117, 148, 401, 432, 307, 338, 244, 275, 149, 180, 370, 401, + 181, 212, 276, 307, 464, 495, 339, 370, 21, 21, 22, 53, + 433, 464, 54, 85, 213, 244, 86, 117, 402, 433, 118, 149, + 308, 339, 245, 276, 371, 402, 150, 181, 465, 496, 182, 213, + 434, 465, 340, 371, 277, 308, 22, 22, 23, 54, 403, 434, + 55, 86, 214, 245, 87, 118, 309, 340, 372, 403, 119, 150, + 246, 277, 466, 497, 151, 182, 435, 466, 341, 372, 183, 214, + 278, 309, 404, 435, 23, 23, 24, 55, 215, 246, 56, 87, + 310, 341, 88, 119, 373, 404, 467, 498, 120, 151, 247, 278, + 436, 467, 152, 183, 342, 373, 279, 310, 405, 436, 184, 215, + 24, 24, 216, 247, 468, 499, 25, 56, 374, 405, 57, 88, + 311, 342, 89, 120, 437, 468, 248, 279, 121, 152, 153, 184, + 343, 374, 406, 437, 280, 311, 185, 216, 469, 500, 375, 406, + 217, 248, 25, 25, 312, 343, 26, 57, 58, 89, 438, 469, + 90, 121, 249, 280, 122, 153, 344, 375, 407, 438, 154, 185, + 281, 312, 470, 501, 186, 217, 376, 407, 218, 249, 313, 344, + 439, 470, 26, 26, 27, 58, 59, 90, 91, 122, 250, 281, + 123, 154, 408, 439, 345, 376, 155, 186, 471, 502, 282, 313, + 187, 218, 377, 408, 440, 471, 314, 345, 219, 250, 27, 27, + 28, 59, 60, 91, 92, 123, 251, 282, 409, 440, 346, 377, + 124, 155, 472, 503, 156, 187, 283, 314, 188, 219, 378, 409, + 441, 472, 315, 346, 220, 251, 28, 28, 29, 60, 61, 92, + 410, 441, 252, 283, 93, 124, 347, 378, 473, 504, 125, 156, + 284, 315, 157, 188, 442, 473, 379, 410, 189, 220, 316, 347, + 221, 252, 411, 442, 29, 29, 30, 61, 474, 505, 62, 93, + 253, 284, 348, 379, 94, 125, 126, 157, 285, 316, 158, 189, + 443, 474, 380, 411, 190, 221, 317, 348, 222, 253, 412, 443, + 475, 506, 30, 30, 31, 62, 349, 380, 254, 285, 63, 94, + 95, 126, 127, 158, 444, 475, 286, 317, 381, 412, 159, 190, + 191, 222, 318, 349, 476, 507, 223, 254, 413, 444, 350, 381, + 255, 286, 445, 476, 287, 318, 382, 413, 319, 350, 477, 508, + 414, 445, 351, 382, 446, 477, 383, 414, 478, 509, 415, 446, + 447, 478, 479, 510, 480, 480, 481, 512, 482, 513, 483, 514, + 484, 515, 485, 516, 512, 512, 513, 544, 486, 517, 514, 545, + 515, 546, 487, 518, 516, 547, 517, 548, 488, 519, 544, 544, + 518, 549, 545, 576, 546, 577, 547, 578, 489, 520, 519, 550, + 548, 579, 549, 580, 520, 551, 490, 521, 550, 581, 576, 576, + 577, 608, 578, 609, 521, 552, 579, 610, 551, 582, 491, 522, + 580, 611, 581, 612, 552, 583, 522, 553, 582, 613, 492, 523, + 608, 608, 609, 640, 610, 641, 553, 584, 611, 642, 523, 554, + 583, 614, 612, 643, 554, 585, 493, 524, 584, 615, 613, 644, + 524, 555, 614, 645, 640, 640, 585, 616, 641, 672, 555, 586, + 642, 673, 615, 646, 643, 674, 494, 525, 644, 675, 525, 556, + 586, 617, 616, 647, 645, 676, 556, 587, 646, 677, 495, 526, + 617, 648, 587, 618, 672, 672, 526, 557, 673, 704, 674, 705, + 647, 678, 557, 588, 675, 706, 618, 649, 676, 707, 588, 619, + 648, 679, 677, 708, 496, 527, 527, 558, 558, 589, 678, 709, + 619, 650, 649, 680, 704, 704, 589, 620, 705, 736, 679, 710, + 706, 737, 707, 738, 650, 681, 620, 651, 497, 528, 528, 559, + 708, 739, 680, 711, 559, 590, 709, 740, 590, 621, 651, 682, + 681, 712, 710, 741, 621, 652, 736, 736, 737, 768, 529, 560, + 711, 742, 498, 529, 560, 591, 738, 769, 682, 713, 652, 683, + 739, 770, 591, 622, 740, 771, 712, 743, 622, 653, 741, 772, + 683, 714, 653, 684, 713, 744, 742, 773, 530, 561, 561, 592, + 499, 530, 592, 623, 623, 654, 743, 774, 768, 768, 769, 800, + 684, 715, 714, 745, 770, 801, 771, 802, 654, 685, 744, 775, + 772, 803, 562, 593, 531, 562, 593, 624, 715, 746, 773, 804, + 685, 716, 500, 531, 624, 655, 745, 776, 774, 805, 655, 686, + 716, 747, 775, 806, 746, 777, 800, 800, 801, 832, 686, 717, + 802, 833, 563, 594, 594, 625, 803, 834, 532, 563, 625, 656, + 776, 807, 804, 835, 501, 532, 656, 687, 747, 778, 717, 748, + 805, 836, 777, 808, 687, 718, 806, 837, 748, 779, 595, 626, + 564, 595, 626, 657, 718, 749, 778, 809, 807, 838, 832, 832, + 533, 564, 657, 688, 833, 864, 834, 865, 835, 866, 502, 533, + 688, 719, 808, 839, 749, 780, 836, 867, 779, 810, 719, 750, + 837, 868, 809, 840, 596, 627, 627, 658, 565, 596, 658, 689, + 838, 869, 780, 811, 750, 781, 534, 565, 689, 720, 810, 841, + 839, 870, 864, 864, 503, 534, 720, 751, 865, 896, 866, 897, + 840, 871, 867, 898, 781, 812, 811, 842, 628, 659, 868, 899, + 751, 782, 597, 628, 659, 690, 566, 597, 690, 721, 869, 900, + 841, 872, 535, 566, 721, 752, 812, 843, 870, 901, 782, 813, + 842, 873, 504, 535, 752, 783, 871, 902, 629, 660, 660, 691, + 896, 896, 897, 928, 598, 629, 691, 722, 813, 844, 898, 929, + 872, 903, 783, 814, 843, 874, 899, 930, 567, 598, 722, 753, + 900, 931, 536, 567, 753, 784, 873, 904, 901, 932, 814, 845, + 844, 875, 902, 933, 505, 536, 784, 815, 661, 692, 630, 661, + 692, 723, 874, 905, 599, 630, 723, 754, 903, 934, 845, 876, + 568, 599, 754, 785, 928, 928, 815, 846, 929, 960, 930, 961, + 875, 906, 904, 935, 931, 962, 537, 568, 785, 816, 932, 963, + 905, 936, 662, 693, 693, 724, 846, 877, 933, 964, 876, 907, + 631, 662, 724, 755, 506, 537, 816, 847, 934, 965, 600, 631, + 755, 786, 906, 937, 569, 600, 786, 817, 935, 966, 877, 908, + 847, 878, 960, 960, 907, 938, 961, 992, 936, 967, 538, 569, + 817, 848, 962, 993, 694, 725, 663, 694, 725, 756, 963, 994, + 632, 663, 756, 787, 964, 995, 878, 909, 937, 968, 507, 538, + 848, 879, 908, 939, 601, 632, 787, 818, 965, 996, 966, 997, + 570, 601, 818, 849, 938, 969, 879, 910, 909, 940, 967, 998, + 695, 726, 726, 757, 664, 695, 757, 788, 539, 570, 849, 880, + 939, 970, 633, 664, 788, 819, 968, 999, 602, 633, 819, 850, + 910, 941, 508, 539, 880, 911, 969, 1000, 940, 971, 571, 602, + 850, 881, 727, 758, 696, 727, 758, 789, 970, 1001, 665, 696, + 789, 820, 911, 942, 941, 972, 540, 571, 881, 912, 634, 665, + 820, 851, 971, 1002, 603, 634, 851, 882, 942, 973, 509, 540, + 912, 943, 728, 759, 759, 790, 972, 1003, 572, 603, 882, 913, + 697, 728, 790, 821, 666, 697, 821, 852, 943, 974, 635, 666, + 852, 883, 541, 572, 913, 944, 973, 1004, 604, 635, 883, 914, + 760, 791, 729, 760, 791, 822, 510, 541, 944, 975, 974, 1005, + 698, 729, 822, 853, 573, 604, 914, 945, 667, 698, 853, 884, + 636, 667, 884, 915, 975, 1006, 542, 573, 945, 976, 761, 792, + 792, 823, 605, 636, 915, 946, 730, 761, 823, 854, 699, 730, + 854, 885, 511, 542, 976, 1007, 574, 605, 946, 977, 668, 699, + 885, 916, 637, 668, 916, 947, 543, 574, 793, 824, 977, 1008, + 762, 793, 824, 855, 731, 762, 855, 886, 606, 637, 947, 978, + 700, 731, 886, 917, 669, 700, 917, 948, 575, 606, 978, 1009, + 638, 669, 948, 979, 794, 825, 825, 856, 763, 794, 856, 887, + 732, 763, 887, 918, 607, 638, 979, 1010, 701, 732, 918, 949, + 670, 701, 949, 980, 826, 857, 795, 826, 857, 888, 764, 795, + 888, 919, 639, 670, 980, 1011, 733, 764, 919, 950, 702, 733, + 950, 981, 671, 702, 981, 1012, 827, 858, 858, 889, 796, 827, + 889, 920, 765, 796, 920, 951, 734, 765, 951, 982, 703, 734, + 982, 1013, 859, 890, 828, 859, 890, 921, 797, 828, 921, 952, + 766, 797, 952, 983, 735, 766, 983, 1014, 860, 891, 891, 922, + 829, 860, 922, 953, 798, 829, 953, 984, 767, 798, 984, 1015, + 892, 923, 861, 892, 923, 954, 830, 861, 954, 985, 799, 830, + 985, 1016, 893, 924, 924, 955, 862, 893, 955, 986, 831, 862, + 986, 1017, 925, 956, 894, 925, 956, 987, 863, 894, 987, 1018, + 926, 957, 957, 988, 895, 926, 988, 1019, 958, 989, 927, 958, + 989, 1020, 959, 990, 990, 1021, 991, 1022, 0, 0 +}; + +DECLARE_ALIGNED(16, static const int16_t, + qtr_scan_32x32_neighbors[1025 * MAX_NEIGHBORS]) = { + 0, 0, 0, 0, 0, 0, 1, 32, 1, 1, 32, 32, + 2, 33, 33, 64, 34, 65, 2, 2, 64, 64, 3, 34, + 65, 96, 35, 66, 66, 97, 3, 3, 96, 96, 4, 35, + 97, 128, 67, 98, 36, 67, 98, 129, 4, 4, 68, 99, + 99, 130, 128, 128, 5, 36, 129, 160, 37, 68, 130, 161, + 100, 131, 69, 100, 131, 162, 5, 5, 160, 160, 6, 37, + 161, 192, 38, 69, 162, 193, 101, 132, 132, 163, 70, 101, + 163, 194, 6, 6, 192, 192, 7, 38, 133, 164, 193, 224, + 102, 133, 164, 195, 39, 70, 194, 225, 71, 102, 195, 226, + 134, 165, 165, 196, 7, 7, 224, 224, 8, 39, 103, 134, + 196, 227, 225, 256, 40, 71, 226, 257, 166, 197, 72, 103, + 227, 258, 135, 166, 197, 228, 104, 135, 228, 259, 8, 8, + 256, 256, 9, 40, 257, 288, 41, 72, 167, 198, 198, 229, + 258, 289, 136, 167, 229, 260, 73, 104, 259, 290, 105, 136, + 260, 291, 199, 230, 9, 9, 168, 199, 230, 261, 288, 288, + 10, 41, 289, 320, 42, 73, 290, 321, 137, 168, 261, 292, + 74, 105, 291, 322, 200, 231, 231, 262, 106, 137, 292, 323, + 169, 200, 262, 293, 10, 10, 320, 320, 11, 42, 321, 352, + 43, 74, 138, 169, 293, 324, 322, 353, 232, 263, 75, 106, + 201, 232, 263, 294, 323, 354, 170, 201, 294, 325, 107, 138, + 324, 355, 11, 11, 352, 352, 12, 43, 233, 264, 264, 295, + 353, 384, 139, 170, 325, 356, 44, 75, 354, 385, 202, 233, + 295, 326, 76, 107, 355, 386, 171, 202, 326, 357, 108, 139, + 356, 387, 265, 296, 234, 265, 296, 327, 12, 12, 140, 171, + 357, 388, 384, 384, 13, 44, 203, 234, 327, 358, 385, 416, + 45, 76, 386, 417, 77, 108, 387, 418, 172, 203, 358, 389, + 266, 297, 297, 328, 109, 140, 235, 266, 328, 359, 388, 419, + 204, 235, 359, 390, 141, 172, 389, 420, 13, 13, 416, 416, + 14, 45, 417, 448, 46, 77, 298, 329, 418, 449, 267, 298, + 329, 360, 78, 109, 173, 204, 390, 421, 419, 450, 236, 267, + 360, 391, 110, 141, 420, 451, 205, 236, 391, 422, 142, 173, + 299, 330, 330, 361, 421, 452, 14, 14, 268, 299, 361, 392, + 448, 448, 15, 46, 449, 480, 47, 78, 450, 481, 174, 205, + 422, 453, 237, 268, 392, 423, 79, 110, 451, 482, 111, 142, + 452, 483, 331, 362, 300, 331, 362, 393, 206, 237, 423, 454, + 143, 174, 269, 300, 393, 424, 453, 484, 238, 269, 424, 455, + 175, 206, 454, 485, 332, 363, 363, 394, 301, 332, 394, 425, + 207, 238, 455, 486, 270, 301, 425, 456, 364, 395, 239, 270, + 456, 487, 333, 364, 395, 426, 302, 333, 426, 457, 271, 302, + 457, 488, 365, 396, 396, 427, 334, 365, 427, 458, 303, 334, + 458, 489, 397, 428, 366, 397, 428, 459, 335, 366, 459, 490, + 398, 429, 429, 460, 367, 398, 460, 491, 430, 461, 399, 430, + 461, 492, 431, 462, 462, 493, 463, 494, 15, 15, 480, 480, + 16, 47, 481, 512, 48, 79, 482, 513, 80, 111, 483, 514, + 112, 143, 484, 515, 144, 175, 485, 516, 16, 16, 512, 512, + 17, 48, 513, 544, 176, 207, 486, 517, 49, 80, 514, 545, + 81, 112, 515, 546, 113, 144, 208, 239, 487, 518, 516, 547, + 145, 176, 517, 548, 240, 271, 488, 519, 17, 17, 544, 544, + 18, 49, 177, 208, 518, 549, 545, 576, 50, 81, 546, 577, + 82, 113, 547, 578, 272, 303, 489, 520, 209, 240, 519, 550, + 114, 145, 548, 579, 146, 177, 549, 580, 241, 272, 520, 551, + 304, 335, 490, 521, 178, 209, 550, 581, 18, 18, 576, 576, + 19, 50, 577, 608, 51, 82, 578, 609, 83, 114, 273, 304, + 521, 552, 579, 610, 210, 241, 551, 582, 115, 146, 336, 367, + 491, 522, 580, 611, 147, 178, 581, 612, 242, 273, 552, 583, + 305, 336, 522, 553, 179, 210, 582, 613, 19, 19, 368, 399, + 492, 523, 608, 608, 20, 51, 609, 640, 52, 83, 610, 641, + 274, 305, 553, 584, 84, 115, 611, 642, 211, 242, 337, 368, + 523, 554, 583, 614, 116, 147, 612, 643, 306, 337, 554, 585, + 148, 179, 243, 274, 400, 431, 493, 524, 584, 615, 613, 644, + 369, 400, 524, 555, 180, 211, 614, 645, 20, 20, 640, 640, + 21, 52, 275, 306, 585, 616, 641, 672, 53, 84, 338, 369, + 555, 586, 642, 673, 212, 243, 615, 646, 85, 116, 643, 674, + 432, 463, 494, 525, 117, 148, 644, 675, 401, 432, 525, 556, + 307, 338, 586, 617, 244, 275, 616, 647, 149, 180, 645, 676, + 370, 401, 556, 587, 181, 212, 646, 677, 276, 307, 464, 495, + 495, 526, 617, 648, 339, 370, 587, 618, 21, 21, 672, 672, + 22, 53, 433, 464, 526, 557, 673, 704, 54, 85, 674, 705, + 213, 244, 647, 678, 86, 117, 402, 433, 557, 588, 675, 706, + 118, 149, 308, 339, 618, 649, 676, 707, 245, 276, 371, 402, + 588, 619, 648, 679, 150, 181, 677, 708, 496, 527, 465, 496, + 527, 558, 182, 213, 434, 465, 558, 589, 678, 709, 340, 371, + 619, 650, 277, 308, 649, 680, 22, 22, 704, 704, 23, 54, + 403, 434, 589, 620, 705, 736, 55, 86, 214, 245, 679, 710, + 706, 737, 87, 118, 707, 738, 309, 340, 650, 681, 372, 403, + 620, 651, 119, 150, 497, 528, 528, 559, 708, 739, 246, 277, + 680, 711, 466, 497, 559, 590, 151, 182, 709, 740, 435, 466, + 590, 621, 341, 372, 651, 682, 183, 214, 278, 309, 681, 712, + 710, 741, 404, 435, 621, 652, 23, 23, 736, 736, 24, 55, + 737, 768, 215, 246, 529, 560, 711, 742, 56, 87, 498, 529, + 560, 591, 738, 769, 310, 341, 682, 713, 88, 119, 373, 404, + 652, 683, 739, 770, 467, 498, 591, 622, 120, 151, 740, 771, + 247, 278, 712, 743, 436, 467, 622, 653, 152, 183, 741, 772, + 342, 373, 683, 714, 279, 310, 405, 436, 653, 684, 713, 744, + 184, 215, 742, 773, 530, 561, 561, 592, 499, 530, 592, 623, + 24, 24, 216, 247, 468, 499, 623, 654, 743, 774, 768, 768, + 25, 56, 769, 800, 374, 405, 684, 715, 57, 88, 311, 342, + 714, 745, 770, 801, 89, 120, 771, 802, 437, 468, 654, 685, + 248, 279, 744, 775, 121, 152, 772, 803, 562, 593, 153, 184, + 343, 374, 531, 562, 593, 624, 715, 746, 773, 804, 406, 437, + 685, 716, 500, 531, 624, 655, 280, 311, 745, 776, 185, 216, + 774, 805, 469, 500, 655, 686, 375, 406, 716, 747, 217, 248, + 775, 806, 25, 25, 312, 343, 746, 777, 800, 800, 26, 57, + 801, 832, 58, 89, 438, 469, 686, 717, 802, 833, 90, 121, + 563, 594, 594, 625, 803, 834, 249, 280, 532, 563, 625, 656, + 776, 807, 122, 153, 804, 835, 344, 375, 501, 532, 656, 687, + 747, 778, 407, 438, 717, 748, 154, 185, 805, 836, 281, 312, + 777, 808, 470, 501, 687, 718, 186, 217, 806, 837, 376, 407, + 748, 779, 595, 626, 564, 595, 626, 657, 218, 249, 313, 344, + 439, 470, 718, 749, 778, 809, 807, 838, 26, 26, 832, 832, + 27, 58, 533, 564, 657, 688, 833, 864, 59, 90, 834, 865, + 91, 122, 835, 866, 250, 281, 502, 533, 688, 719, 808, 839, + 123, 154, 408, 439, 749, 780, 836, 867, 345, 376, 779, 810, + 155, 186, 471, 502, 719, 750, 837, 868, 282, 313, 809, 840, + 596, 627, 627, 658, 187, 218, 565, 596, 658, 689, 838, 869, + 377, 408, 780, 811, 440, 471, 750, 781, 534, 565, 689, 720, + 314, 345, 810, 841, 219, 250, 839, 870, 27, 27, 864, 864, + 28, 59, 503, 534, 720, 751, 865, 896, 60, 91, 866, 897, + 92, 123, 251, 282, 840, 871, 867, 898, 409, 440, 781, 812, + 346, 377, 811, 842, 124, 155, 628, 659, 868, 899, 472, 503, + 751, 782, 597, 628, 659, 690, 566, 597, 690, 721, 156, 187, + 869, 900, 283, 314, 841, 872, 535, 566, 721, 752, 188, 219, + 378, 409, 812, 843, 870, 901, 441, 472, 782, 813, 315, 346, + 842, 873, 504, 535, 752, 783, 220, 251, 871, 902, 28, 28, + 629, 660, 660, 691, 896, 896, 29, 60, 897, 928, 61, 92, + 410, 441, 598, 629, 691, 722, 813, 844, 898, 929, 252, 283, + 872, 903, 93, 124, 347, 378, 473, 504, 783, 814, 843, 874, + 899, 930, 567, 598, 722, 753, 125, 156, 900, 931, 284, 315, + 536, 567, 753, 784, 873, 904, 157, 188, 901, 932, 442, 473, + 814, 845, 379, 410, 844, 875, 189, 220, 902, 933, 505, 536, + 784, 815, 661, 692, 316, 347, 630, 661, 692, 723, 874, 905, + 221, 252, 599, 630, 723, 754, 903, 934, 411, 442, 845, 876, + 29, 29, 568, 599, 754, 785, 928, 928, 30, 61, 474, 505, + 815, 846, 929, 960, 62, 93, 930, 961, 253, 284, 348, 379, + 875, 906, 904, 935, 94, 125, 931, 962, 537, 568, 785, 816, + 126, 157, 932, 963, 285, 316, 905, 936, 158, 189, 443, 474, + 662, 693, 693, 724, 846, 877, 933, 964, 380, 411, 876, 907, + 631, 662, 724, 755, 506, 537, 816, 847, 190, 221, 934, 965, + 600, 631, 755, 786, 317, 348, 906, 937, 222, 253, 569, 600, + 786, 817, 935, 966, 412, 443, 877, 908, 475, 506, 847, 878, + 30, 30, 960, 960, 31, 62, 349, 380, 907, 938, 961, 992, + 254, 285, 936, 967, 63, 94, 538, 569, 817, 848, 962, 993, + 694, 725, 95, 126, 663, 694, 725, 756, 963, 994, 632, 663, + 756, 787, 127, 158, 964, 995, 444, 475, 878, 909, 286, 317, + 937, 968, 381, 412, 507, 538, 848, 879, 908, 939, 159, 190, + 601, 632, 787, 818, 965, 996, 191, 222, 966, 997, 318, 349, + 570, 601, 818, 849, 938, 969, 476, 507, 879, 910, 223, 254, + 413, 444, 909, 940, 967, 998, 695, 726, 726, 757, 664, 695, + 757, 788, 539, 570, 849, 880, 350, 381, 939, 970, 255, 286, + 633, 664, 788, 819, 968, 999, 445, 476, 602, 633, 819, 850, + 910, 941, 508, 539, 880, 911, 287, 318, 969, 1000, 382, 413, + 940, 971, 571, 602, 850, 881, 727, 758, 696, 727, 758, 789, + 319, 350, 970, 1001, 477, 508, 665, 696, 789, 820, 911, 942, + 414, 445, 941, 972, 540, 571, 881, 912, 634, 665, 820, 851, + 351, 382, 971, 1002, 603, 634, 851, 882, 446, 477, 942, 973, + 509, 540, 912, 943, 383, 414, 728, 759, 759, 790, 972, 1003, + 572, 603, 882, 913, 697, 728, 790, 821, 666, 697, 821, 852, + 478, 509, 943, 974, 635, 666, 852, 883, 415, 446, 541, 572, + 913, 944, 973, 1004, 604, 635, 883, 914, 760, 791, 729, 760, + 791, 822, 510, 541, 944, 975, 447, 478, 974, 1005, 698, 729, + 822, 853, 573, 604, 914, 945, 667, 698, 853, 884, 636, 667, + 884, 915, 479, 510, 975, 1006, 542, 573, 945, 976, 761, 792, + 792, 823, 605, 636, 915, 946, 730, 761, 823, 854, 699, 730, + 854, 885, 511, 542, 976, 1007, 574, 605, 946, 977, 668, 699, + 885, 916, 637, 668, 916, 947, 543, 574, 793, 824, 977, 1008, + 762, 793, 824, 855, 731, 762, 855, 886, 606, 637, 947, 978, + 700, 731, 886, 917, 669, 700, 917, 948, 575, 606, 978, 1009, + 638, 669, 948, 979, 794, 825, 825, 856, 763, 794, 856, 887, + 732, 763, 887, 918, 607, 638, 979, 1010, 701, 732, 918, 949, + 670, 701, 949, 980, 826, 857, 795, 826, 857, 888, 764, 795, + 888, 919, 639, 670, 980, 1011, 733, 764, 919, 950, 702, 733, + 950, 981, 671, 702, 981, 1012, 827, 858, 858, 889, 796, 827, + 889, 920, 765, 796, 920, 951, 734, 765, 951, 982, 703, 734, + 982, 1013, 859, 890, 828, 859, 890, 921, 797, 828, 921, 952, + 766, 797, 952, 983, 735, 766, 983, 1014, 860, 891, 891, 922, + 829, 860, 922, 953, 798, 829, 953, 984, 767, 798, 984, 1015, + 892, 923, 861, 892, 923, 954, 830, 861, 954, 985, 799, 830, + 985, 1016, 893, 924, 924, 955, 862, 893, 955, 986, 831, 862, + 986, 1017, 925, 956, 894, 925, 956, 987, 863, 894, 987, 1018, + 926, 957, 957, 988, 895, 926, 988, 1019, 958, 989, 927, 958, + 989, 1020, 959, 990, 990, 1021, 991, 1022, 0, 0 +}; +#endif // CONFIG_EXT_TX + DECLARE_ALIGNED(16, static const int16_t, vp10_default_iscan_4x4[16]) = { 0, 2, 5, 8, 1, 3, 9, 12, 4, 7, 11, 14, 6, 10, 13, 15, }; @@ -695,6 +1494,275 @@ DECLARE_ALIGNED(16, static const int16_t, vp10_default_iscan_32x32[1024]) = { 1023, }; +#if CONFIG_EXT_TX +DECLARE_ALIGNED(16, static const int16_t, vp10_v2_iscan_32x32[1024]) = { + 0, 1, 4, 9, 15, 22, 33, 43, 56, 71, 86, 104, + 121, 142, 166, 189, 512, 518, 527, 539, 551, 566, 584, 602, + 621, 644, 668, 695, 721, 748, 780, 811, 2, 3, 6, 11, + 17, 26, 35, 45, 58, 73, 90, 106, 123, 146, 168, 193, + 513, 519, 528, 540, 553, 567, 585, 603, 622, 647, 670, 696, + 722, 751, 783, 812, 5, 7, 8, 13, 20, 28, 37, 50, + 62, 75, 92, 108, 129, 150, 170, 195, 514, 521, 530, 541, + 554, 569, 587, 605, 625, 649, 671, 699, 725, 752, 785, 815, + 10, 12, 14, 19, 23, 31, 41, 52, 65, 81, 96, 113, + 133, 152, 175, 201, 515, 522, 531, 542, 556, 572, 589, 607, + 629, 651, 673, 700, 726, 757, 788, 819, 16, 18, 21, 24, + 30, 39, 48, 59, 69, 83, 100, 119, 137, 158, 181, 203, + 516, 523, 534, 545, 559, 574, 591, 610, 632, 654, 679, 704, + 730, 762, 791, 824, 25, 27, 29, 32, 40, 46, 54, 67, + 79, 94, 109, 127, 143, 164, 185, 210, 517, 525, 535, 547, + 561, 578, 595, 615, 635, 656, 684, 707, 737, 766, 793, 830, + 34, 36, 38, 42, 49, 55, 64, 76, 87, 102, 117, 135, + 154, 176, 197, 219, 520, 529, 538, 550, 565, 580, 598, 618, + 639, 664, 687, 712, 741, 769, 802, 833, 44, 47, 51, 53, + 60, 68, 77, 85, 98, 114, 131, 147, 162, 183, 208, 227, + 524, 533, 544, 557, 571, 588, 606, 623, 645, 667, 692, 720, + 747, 776, 806, 838, 57, 61, 63, 66, 70, 80, 88, 99, + 112, 124, 140, 159, 179, 199, 216, 233, 526, 536, 548, 562, + 577, 593, 613, 633, 653, 676, 701, 727, 756, 786, 814, 847, + 72, 74, 78, 82, 84, 95, 103, 115, 125, 139, 156, 173, + 190, 211, 229, 246, 532, 543, 555, 568, 581, 601, 619, 637, + 663, 685, 709, 738, 763, 792, 826, 855, 89, 91, 93, 97, + 101, 110, 118, 132, 141, 157, 171, 186, 206, 224, 241, 255, + 537, 549, 560, 576, 592, 608, 628, 650, 669, 693, 719, 744, + 773, 805, 834, 862, 105, 107, 111, 116, 120, 128, 136, 148, + 160, 174, 187, 205, 221, 236, 251, 267, 546, 558, 570, 583, + 600, 617, 636, 657, 680, 706, 729, 758, 787, 813, 846, 871, + 122, 126, 130, 134, 138, 144, 155, 163, 180, 191, 207, 222, + 232, 248, 264, 278, 552, 564, 579, 594, 609, 630, 648, 666, + 688, 715, 742, 768, 797, 827, 856, 877, 145, 149, 151, 153, + 161, 165, 177, 184, 200, 212, 225, 237, 249, 262, 275, 289, + 563, 575, 590, 604, 620, 638, 660, 683, 705, 728, 753, 779, + 809, 839, 866, 889, 167, 169, 172, 178, 182, 188, 198, 209, + 217, 230, 242, 252, 265, 276, 288, 301, 573, 586, 599, 616, + 634, 652, 672, 694, 716, 743, 767, 794, 825, 850, 874, 899, + 192, 194, 196, 202, 204, 213, 220, 228, 234, 247, 256, 268, + 279, 290, 302, 315, 582, 597, 614, 631, 646, 665, 686, 708, + 732, 759, 784, 810, 837, 863, 886, 908, 214, 215, 218, 223, + 226, 231, 239, 244, 253, 261, 271, 283, 292, 304, 317, 325, + 596, 611, 626, 642, 661, 681, 702, 723, 745, 770, 800, 828, + 853, 875, 897, 919, 235, 238, 240, 243, 245, 250, 257, 263, + 270, 280, 287, 298, 307, 319, 329, 340, 612, 624, 640, 658, + 677, 697, 717, 739, 764, 789, 816, 844, 867, 890, 909, 927, + 254, 258, 259, 260, 266, 269, 272, 282, 286, 296, 303, 312, + 323, 333, 341, 355, 627, 641, 655, 674, 690, 713, 735, 760, + 781, 807, 835, 857, 880, 902, 921, 940, 273, 274, 277, 281, + 284, 285, 291, 299, 305, 310, 320, 327, 337, 346, 357, 369, + 643, 659, 675, 689, 710, 733, 754, 777, 803, 831, 851, 872, + 892, 913, 934, 950, 293, 294, 295, 297, 300, 306, 308, 314, + 321, 326, 335, 343, 352, 361, 372, 378, 662, 678, 691, 711, + 731, 749, 774, 798, 822, 848, 869, 887, 906, 925, 942, 961, + 309, 311, 313, 316, 318, 322, 324, 332, 338, 344, 351, 358, + 367, 375, 386, 394, 682, 698, 714, 734, 750, 772, 795, 820, + 842, 864, 884, 904, 923, 938, 954, 967, 328, 330, 331, 334, + 336, 339, 342, 348, 354, 359, 366, 374, 382, 391, 400, 409, + 703, 718, 736, 755, 775, 796, 818, 840, 860, 882, 900, 917, + 936, 952, 965, 977, 345, 347, 349, 350, 353, 356, 360, 364, + 371, 376, 383, 389, 395, 406, 412, 423, 724, 740, 761, 778, + 799, 821, 841, 859, 878, 895, 915, 932, 948, 963, 975, 986, + 362, 363, 365, 368, 370, 373, 377, 379, 387, 392, 397, 405, + 411, 420, 428, 439, 746, 765, 782, 804, 823, 843, 861, 879, + 894, 911, 930, 946, 959, 973, 984, 994, 380, 381, 384, 385, + 388, 390, 393, 396, 403, 408, 413, 422, 427, 436, 444, 452, + 771, 790, 808, 832, 849, 865, 883, 896, 912, 928, 944, 957, + 971, 982, 992, 1001, 398, 399, 401, 402, 404, 407, 410, 414, + 419, 425, 429, 437, 442, 449, 458, 465, 801, 817, 836, 852, + 870, 885, 901, 916, 931, 945, 956, 969, 980, 990, 999, 1007, + 415, 416, 417, 418, 421, 424, 426, 430, 434, 441, 445, 453, + 459, 463, 473, 480, 829, 845, 858, 873, 888, 905, 918, 933, + 947, 958, 970, 979, 988, 997, 1005, 1012, 431, 432, 433, 435, + 438, 440, 443, 446, 451, 456, 461, 468, 475, 479, 488, 494, + 854, 868, 881, 893, 907, 924, 937, 949, 960, 972, 981, 989, + 996, 1003, 1010, 1016, 447, 448, 450, 454, 455, 457, 460, 462, + 469, 472, 477, 482, 490, 495, 499, 503, 876, 891, 903, 914, + 926, 939, 953, 964, 974, 983, 991, 998, 1004, 1009, 1014, 1019, + 464, 466, 467, 470, 471, 474, 476, 478, 484, 489, 493, 497, + 501, 504, 506, 508, 898, 910, 922, 935, 943, 955, 966, 976, + 985, 993, 1000, 1006, 1011, 1015, 1018, 1021, 481, 483, 485, 486, + 487, 491, 492, 496, 498, 500, 502, 505, 507, 509, 510, 511, + 920, 929, 941, 951, 962, 968, 978, 987, 995, 1002, 1008, 1013, + 1017, 1020, 1022, 1023, +}; + +DECLARE_ALIGNED(16, static const int16_t, vp10_h2_iscan_32x32[1024]) = { + 0, 1, 4, 9, 15, 22, 33, 43, 56, 71, 86, 104, + 121, 142, 166, 189, 214, 233, 254, 273, 292, 309, 328, 345, + 362, 378, 397, 415, 431, 447, 464, 481, 2, 3, 6, 11, + 17, 26, 35, 45, 58, 73, 90, 106, 123, 146, 168, 193, + 215, 236, 255, 274, 294, 310, 329, 346, 363, 381, 399, 416, + 432, 448, 465, 482, 5, 7, 8, 13, 20, 28, 37, 50, + 62, 75, 92, 108, 129, 150, 170, 195, 216, 240, 259, 275, + 295, 312, 331, 348, 365, 383, 400, 417, 433, 449, 467, 485, + 10, 12, 14, 19, 23, 31, 41, 52, 65, 81, 96, 113, + 133, 152, 175, 201, 221, 243, 260, 280, 297, 315, 333, 350, + 367, 385, 402, 418, 434, 452, 470, 486, 16, 18, 21, 24, + 30, 39, 48, 59, 69, 83, 100, 119, 137, 158, 181, 203, + 226, 244, 264, 283, 300, 318, 335, 353, 370, 388, 404, 420, + 438, 455, 471, 487, 25, 27, 29, 32, 40, 46, 54, 67, + 79, 94, 109, 127, 143, 164, 185, 210, 231, 250, 269, 285, + 304, 322, 339, 356, 373, 389, 407, 423, 440, 457, 473, 491, + 34, 36, 38, 42, 49, 55, 64, 76, 87, 102, 117, 135, + 154, 176, 197, 219, 239, 256, 272, 291, 308, 324, 341, 359, + 377, 393, 410, 426, 442, 460, 476, 492, 44, 47, 51, 53, + 60, 68, 77, 85, 98, 114, 131, 147, 162, 183, 208, 227, + 245, 262, 282, 298, 314, 332, 349, 364, 379, 396, 412, 430, + 446, 462, 478, 495, 57, 61, 63, 66, 70, 80, 88, 99, + 112, 124, 140, 159, 179, 199, 217, 234, 253, 270, 286, 305, + 321, 337, 354, 371, 387, 403, 419, 435, 451, 468, 484, 498, + 72, 74, 78, 82, 84, 95, 103, 115, 125, 139, 156, 173, + 190, 211, 229, 246, 261, 281, 296, 311, 325, 344, 360, 375, + 392, 408, 425, 441, 456, 472, 489, 500, 89, 91, 93, 97, + 101, 110, 118, 132, 141, 157, 171, 186, 206, 224, 241, 257, + 271, 287, 303, 320, 336, 351, 366, 384, 398, 413, 429, 445, + 461, 477, 493, 502, 105, 107, 111, 116, 120, 128, 136, 148, + 160, 174, 187, 205, 222, 237, 251, 267, 284, 299, 313, 327, + 343, 358, 374, 390, 405, 422, 437, 453, 469, 483, 497, 505, + 122, 126, 130, 134, 138, 144, 155, 163, 180, 191, 207, 223, + 232, 248, 265, 278, 293, 307, 323, 338, 352, 368, 382, 395, + 411, 427, 443, 459, 475, 490, 501, 507, 145, 149, 151, 153, + 161, 165, 177, 184, 200, 212, 225, 238, 249, 263, 276, 289, + 306, 319, 334, 347, 361, 376, 391, 406, 421, 436, 450, 463, + 479, 496, 504, 509, 167, 169, 172, 178, 182, 188, 198, 209, + 218, 230, 242, 252, 266, 277, 288, 301, 317, 330, 342, 357, + 372, 386, 401, 414, 428, 444, 458, 474, 488, 499, 506, 510, + 192, 194, 196, 202, 204, 213, 220, 228, 235, 247, 258, 268, + 279, 290, 302, 316, 326, 340, 355, 369, 380, 394, 409, 424, + 439, 454, 466, 480, 494, 503, 508, 511, 512, 513, 514, 515, + 516, 517, 520, 523, 526, 532, 537, 545, 551, 561, 573, 581, + 596, 610, 625, 642, 661, 680, 701, 722, 745, 770, 800, 827, + 853, 875, 897, 919, 518, 519, 521, 522, 524, 525, 528, 533, + 536, 542, 549, 557, 564, 575, 585, 597, 611, 623, 640, 656, + 676, 696, 717, 739, 763, 789, 815, 844, 867, 889, 909, 927, + 527, 529, 530, 531, 534, 535, 538, 544, 548, 555, 560, 569, + 579, 589, 598, 614, 626, 641, 655, 673, 690, 712, 735, 760, + 780, 806, 834, 857, 880, 902, 921, 940, 539, 540, 541, 543, + 546, 547, 550, 558, 562, 567, 576, 583, 593, 603, 616, 631, + 643, 657, 674, 689, 710, 733, 752, 776, 803, 830, 850, 872, + 892, 913, 934, 950, 552, 553, 554, 556, 559, 563, 565, 571, + 577, 582, 591, 600, 609, 620, 634, 644, 662, 677, 691, 711, + 730, 748, 773, 798, 822, 847, 869, 887, 906, 925, 942, 961, + 566, 568, 570, 572, 574, 578, 580, 588, 594, 601, 608, 617, + 629, 637, 652, 665, 681, 697, 713, 734, 749, 772, 793, 819, + 842, 863, 884, 904, 923, 938, 954, 967, 584, 586, 587, 590, + 592, 595, 599, 605, 613, 618, 628, 636, 648, 660, 671, 686, + 702, 718, 736, 753, 774, 794, 818, 840, 860, 882, 900, 917, + 936, 952, 965, 977, 602, 604, 606, 607, 612, 615, 619, 624, + 633, 638, 649, 658, 666, 683, 692, 707, 723, 740, 761, 777, + 799, 820, 841, 859, 877, 895, 915, 932, 948, 963, 975, 986, + 621, 622, 627, 630, 632, 635, 639, 645, 653, 663, 668, 682, + 688, 704, 716, 732, 746, 764, 781, 804, 823, 843, 861, 878, + 894, 911, 930, 946, 959, 973, 984, 994, 646, 647, 650, 651, + 654, 659, 664, 667, 678, 685, 693, 706, 715, 728, 743, 757, + 771, 790, 807, 831, 848, 864, 883, 896, 912, 928, 944, 957, + 971, 982, 992, 1001, 669, 670, 672, 675, 679, 684, 687, 694, + 703, 709, 719, 729, 741, 754, 767, 783, 801, 816, 835, 851, + 870, 885, 901, 916, 931, 945, 956, 969, 980, 990, 999, 1007, + 695, 698, 699, 700, 705, 708, 714, 720, 726, 738, 744, 758, + 768, 779, 795, 810, 828, 845, 858, 873, 888, 905, 918, 933, + 947, 958, 970, 979, 988, 997, 1005, 1012, 721, 724, 725, 727, + 731, 737, 742, 747, 756, 765, 775, 786, 797, 809, 825, 837, + 854, 868, 881, 893, 907, 924, 937, 949, 960, 972, 981, 989, + 996, 1003, 1010, 1016, 750, 751, 755, 759, 762, 766, 769, 778, + 787, 792, 805, 812, 829, 838, 852, 865, 876, 890, 903, 914, + 926, 939, 953, 964, 974, 983, 991, 998, 1004, 1009, 1014, 1019, + 782, 784, 785, 788, 791, 796, 802, 808, 814, 826, 836, 846, + 856, 866, 874, 886, 898, 910, 922, 935, 943, 955, 966, 976, + 985, 993, 1000, 1006, 1011, 1015, 1018, 1021, 811, 813, 817, 821, + 824, 832, 833, 839, 849, 855, 862, 871, 879, 891, 899, 908, + 920, 929, 941, 951, 962, 968, 978, 987, 995, 1002, 1008, 1013, + 1017, 1020, 1022, 1023, +}; + +DECLARE_ALIGNED(16, static const int16_t, vp10_qtr_iscan_32x32[1024]) = { + 0, 1, 4, 9, 15, 22, 33, 43, 56, 71, 86, 104, + 121, 142, 166, 189, 256, 268, 286, 310, 334, 364, 400, 435, + 471, 510, 553, 598, 640, 683, 732, 780, 2, 3, 6, 11, + 17, 26, 35, 45, 58, 73, 90, 106, 123, 146, 168, 193, + 258, 270, 288, 312, 338, 366, 402, 437, 473, 516, 557, 600, + 642, 687, 736, 782, 5, 7, 8, 13, 20, 28, 37, 50, + 62, 75, 92, 108, 129, 150, 170, 195, 260, 274, 292, 314, + 340, 370, 406, 441, 478, 520, 559, 604, 646, 689, 740, 788, + 10, 12, 14, 19, 23, 31, 41, 52, 65, 81, 96, 113, + 133, 152, 175, 201, 262, 276, 294, 316, 344, 376, 410, 445, + 484, 524, 563, 606, 648, 697, 746, 793, 16, 18, 21, 24, + 30, 39, 48, 59, 69, 83, 100, 119, 137, 158, 181, 203, + 264, 278, 300, 322, 350, 380, 414, 451, 490, 530, 571, 612, + 656, 705, 750, 799, 25, 27, 29, 32, 40, 46, 54, 67, + 79, 94, 109, 127, 143, 164, 185, 210, 266, 282, 302, 326, + 354, 388, 422, 459, 496, 533, 579, 618, 665, 711, 754, 809, + 34, 36, 38, 42, 49, 55, 64, 76, 87, 102, 117, 135, + 154, 176, 197, 216, 272, 289, 308, 332, 362, 392, 427, 465, + 504, 545, 585, 626, 671, 717, 766, 813, 44, 47, 51, 53, + 60, 68, 77, 85, 98, 114, 131, 147, 162, 183, 208, 222, + 279, 298, 320, 346, 374, 408, 442, 475, 511, 551, 592, 638, + 681, 726, 772, 821, 57, 61, 63, 66, 70, 80, 88, 99, + 112, 124, 140, 159, 179, 199, 214, 227, 284, 304, 328, 355, + 386, 418, 455, 492, 528, 567, 608, 649, 695, 742, 786, 833, + 72, 74, 78, 82, 84, 95, 103, 115, 125, 139, 156, 173, + 190, 211, 224, 233, 296, 317, 342, 367, 394, 433, 466, 500, + 543, 581, 622, 667, 707, 752, 803, 843, 89, 91, 93, 97, + 101, 110, 118, 132, 141, 157, 171, 186, 206, 220, 231, 239, + 306, 330, 352, 384, 415, 447, 482, 521, 554, 593, 636, 677, + 722, 770, 815, 852, 105, 107, 111, 116, 120, 128, 136, 148, + 160, 174, 187, 205, 218, 229, 237, 244, 323, 347, 371, 398, + 431, 463, 498, 534, 573, 616, 654, 698, 743, 783, 831, 864, + 122, 126, 130, 134, 138, 144, 155, 163, 180, 191, 207, 219, + 226, 235, 242, 248, 335, 360, 390, 419, 449, 485, 518, 549, + 587, 630, 672, 715, 760, 805, 845, 872, 145, 149, 151, 153, + 161, 165, 177, 184, 200, 212, 221, 230, 236, 241, 246, 251, + 356, 382, 411, 438, 469, 501, 539, 577, 613, 652, 690, 730, + 776, 822, 858, 886, 167, 169, 172, 178, 182, 188, 198, 209, + 215, 225, 232, 238, 243, 247, 250, 253, 378, 403, 428, 461, + 494, 526, 560, 594, 632, 675, 713, 755, 801, 837, 868, 897, + 192, 194, 196, 202, 204, 213, 217, 223, 228, 234, 240, 245, + 249, 252, 254, 255, 395, 425, 457, 488, 512, 547, 583, 619, + 659, 699, 737, 778, 819, 854, 882, 907, 257, 259, 261, 263, + 265, 267, 273, 280, 285, 297, 307, 324, 336, 357, 379, 396, + 424, 452, 479, 508, 541, 574, 609, 643, 679, 719, 764, 806, + 841, 870, 895, 919, 269, 271, 275, 277, 281, 283, 290, 299, + 305, 318, 331, 348, 361, 383, 404, 426, 453, 476, 506, 535, + 568, 601, 634, 669, 708, 748, 789, 829, 860, 887, 909, 927, + 287, 291, 293, 295, 301, 303, 309, 321, 329, 343, 353, 372, + 391, 412, 429, 458, 480, 507, 532, 564, 590, 627, 663, 703, + 733, 773, 816, 847, 876, 901, 921, 940, 311, 313, 315, 319, + 325, 327, 333, 349, 358, 368, 385, 399, 420, 439, 462, 489, + 509, 536, 565, 589, 624, 661, 691, 727, 768, 810, 838, 866, + 890, 913, 934, 950, 337, 339, 341, 345, 351, 359, 363, 375, + 387, 397, 416, 432, 450, 470, 495, 513, 542, 569, 591, 625, + 657, 684, 723, 762, 797, 834, 862, 884, 905, 925, 942, 961, + 365, 369, 373, 377, 381, 389, 393, 409, 421, 434, 448, 464, + 486, 502, 527, 548, 575, 602, 628, 662, 685, 721, 756, 794, + 827, 855, 880, 903, 923, 938, 954, 967, 401, 405, 407, 413, + 417, 423, 430, 443, 456, 467, 483, 499, 519, 540, 561, 584, + 610, 635, 664, 692, 724, 757, 792, 825, 850, 878, 899, 917, + 936, 952, 965, 977, 436, 440, 444, 446, 454, 460, 468, 477, + 493, 503, 522, 537, 550, 578, 595, 620, 644, 670, 704, 728, + 763, 795, 826, 849, 873, 893, 915, 932, 948, 963, 975, 986, + 472, 474, 481, 487, 491, 497, 505, 514, 529, 544, 555, 576, + 588, 614, 633, 660, 680, 709, 734, 769, 798, 828, 851, 874, + 892, 911, 930, 946, 959, 973, 984, 994, 515, 517, 523, 525, + 531, 538, 546, 552, 570, 582, 596, 617, 631, 653, 676, 700, + 720, 749, 774, 811, 835, 856, 879, 894, 912, 928, 944, 957, + 971, 982, 992, 1001, 556, 558, 562, 566, 572, 580, 586, 597, + 611, 623, 637, 655, 673, 693, 714, 738, 765, 790, 817, 839, + 863, 881, 900, 916, 931, 945, 956, 969, 980, 990, 999, 1007, + 599, 603, 605, 607, 615, 621, 629, 639, 650, 668, 678, 701, + 716, 731, 758, 779, 807, 830, 848, 867, 885, 904, 918, 933, + 947, 958, 970, 979, 988, 997, 1005, 1012, 641, 645, 647, 651, + 658, 666, 674, 682, 696, 710, 725, 744, 761, 777, 802, 820, + 842, 861, 877, 891, 906, 924, 937, 949, 960, 972, 981, 989, + 996, 1003, 1010, 1016, 686, 688, 694, 702, 706, 712, 718, 729, + 745, 753, 771, 784, 808, 823, 840, 857, 871, 888, 902, 914, + 926, 939, 953, 964, 974, 983, 991, 998, 1004, 1009, 1014, 1019, + 735, 739, 741, 747, 751, 759, 767, 775, 787, 804, 818, 832, + 846, 859, 869, 883, 896, 910, 922, 935, 943, 955, 966, 976, + 985, 993, 1000, 1006, 1011, 1015, 1018, 1021, 781, 785, 791, 796, + 800, 812, 814, 824, 836, 844, 853, 865, 875, 889, 898, 908, + 920, 929, 941, 951, 962, 968, 978, 987, 995, 1002, 1008, 1013, + 1017, 1020, 1022, 1023, +}; +#endif // CONFIG_EXT_TX + const scan_order vp10_default_scan_orders[TX_SIZES] = { {default_scan_4x4, vp10_default_iscan_4x4, default_scan_4x4_neighbors}, {default_scan_8x8, vp10_default_iscan_8x8, default_scan_8x8_neighbors}, @@ -776,36 +1844,36 @@ const scan_order vp10_intra_scan_orders[TX_SIZES][TX_TYPES] = { }, { // TX_32X32 {default_scan_32x32, vp10_default_iscan_32x32, default_scan_32x32_neighbors}, - {default_scan_32x32, vp10_default_iscan_32x32, - default_scan_32x32_neighbors}, - {default_scan_32x32, vp10_default_iscan_32x32, - default_scan_32x32_neighbors}, - {default_scan_32x32, vp10_default_iscan_32x32, - default_scan_32x32_neighbors}, - {default_scan_32x32, vp10_default_iscan_32x32, - default_scan_32x32_neighbors}, - {default_scan_32x32, vp10_default_iscan_32x32, - default_scan_32x32_neighbors}, - {default_scan_32x32, vp10_default_iscan_32x32, - default_scan_32x32_neighbors}, - {default_scan_32x32, vp10_default_iscan_32x32, - default_scan_32x32_neighbors}, - {default_scan_32x32, vp10_default_iscan_32x32, - default_scan_32x32_neighbors}, - {default_scan_32x32, vp10_default_iscan_32x32, - default_scan_32x32_neighbors}, - {default_scan_32x32, vp10_default_iscan_32x32, - default_scan_32x32_neighbors}, - {default_scan_32x32, vp10_default_iscan_32x32, - default_scan_32x32_neighbors}, - {default_scan_32x32, vp10_default_iscan_32x32, - default_scan_32x32_neighbors}, - {default_scan_32x32, vp10_default_iscan_32x32, - default_scan_32x32_neighbors}, - {default_scan_32x32, vp10_default_iscan_32x32, - default_scan_32x32_neighbors}, - {default_scan_32x32, vp10_default_iscan_32x32, - default_scan_32x32_neighbors}, + {h2_scan_32x32, vp10_h2_iscan_32x32, + h2_scan_32x32_neighbors}, + {v2_scan_32x32, vp10_v2_iscan_32x32, + v2_scan_32x32_neighbors}, + {qtr_scan_32x32, vp10_qtr_iscan_32x32, + qtr_scan_32x32_neighbors}, + {h2_scan_32x32, vp10_h2_iscan_32x32, + h2_scan_32x32_neighbors}, + {v2_scan_32x32, vp10_v2_iscan_32x32, + v2_scan_32x32_neighbors}, + {qtr_scan_32x32, vp10_qtr_iscan_32x32, + qtr_scan_32x32_neighbors}, + {qtr_scan_32x32, vp10_qtr_iscan_32x32, + qtr_scan_32x32_neighbors}, + {qtr_scan_32x32, vp10_qtr_iscan_32x32, + qtr_scan_32x32_neighbors}, + {h2_scan_32x32, vp10_h2_iscan_32x32, + h2_scan_32x32_neighbors}, + {v2_scan_32x32, vp10_v2_iscan_32x32, + v2_scan_32x32_neighbors}, + {qtr_scan_32x32, vp10_qtr_iscan_32x32, + qtr_scan_32x32_neighbors}, + {qtr_scan_32x32, vp10_qtr_iscan_32x32, + qtr_scan_32x32_neighbors}, + {qtr_scan_32x32, vp10_qtr_iscan_32x32, + qtr_scan_32x32_neighbors}, + {qtr_scan_32x32, vp10_qtr_iscan_32x32, + qtr_scan_32x32_neighbors}, + {qtr_scan_32x32, vp10_qtr_iscan_32x32, + qtr_scan_32x32_neighbors}, {default_scan_32x32, vp10_default_iscan_32x32, default_scan_32x32_neighbors}, } @@ -886,36 +1954,36 @@ const scan_order vp10_inter_scan_orders[TX_SIZES][TX_TYPES] = { }, { // TX_32X32 {default_scan_32x32, vp10_default_iscan_32x32, default_scan_32x32_neighbors}, - {default_scan_32x32, vp10_default_iscan_32x32, - default_scan_32x32_neighbors}, - {default_scan_32x32, vp10_default_iscan_32x32, - default_scan_32x32_neighbors}, - {default_scan_32x32, vp10_default_iscan_32x32, - default_scan_32x32_neighbors}, - {default_scan_32x32, vp10_default_iscan_32x32, - default_scan_32x32_neighbors}, - {default_scan_32x32, vp10_default_iscan_32x32, - default_scan_32x32_neighbors}, - {default_scan_32x32, vp10_default_iscan_32x32, - default_scan_32x32_neighbors}, - {default_scan_32x32, vp10_default_iscan_32x32, - default_scan_32x32_neighbors}, - {default_scan_32x32, vp10_default_iscan_32x32, - default_scan_32x32_neighbors}, - {default_scan_32x32, vp10_default_iscan_32x32, - default_scan_32x32_neighbors}, - {default_scan_32x32, vp10_default_iscan_32x32, - default_scan_32x32_neighbors}, - {default_scan_32x32, vp10_default_iscan_32x32, - default_scan_32x32_neighbors}, - {default_scan_32x32, vp10_default_iscan_32x32, - default_scan_32x32_neighbors}, - {default_scan_32x32, vp10_default_iscan_32x32, - default_scan_32x32_neighbors}, - {default_scan_32x32, vp10_default_iscan_32x32, - default_scan_32x32_neighbors}, - {default_scan_32x32, vp10_default_iscan_32x32, - default_scan_32x32_neighbors}, + {h2_scan_32x32, vp10_h2_iscan_32x32, + h2_scan_32x32_neighbors}, + {v2_scan_32x32, vp10_v2_iscan_32x32, + v2_scan_32x32_neighbors}, + {qtr_scan_32x32, vp10_qtr_iscan_32x32, + qtr_scan_32x32_neighbors}, + {h2_scan_32x32, vp10_h2_iscan_32x32, + h2_scan_32x32_neighbors}, + {v2_scan_32x32, vp10_v2_iscan_32x32, + v2_scan_32x32_neighbors}, + {qtr_scan_32x32, vp10_qtr_iscan_32x32, + qtr_scan_32x32_neighbors}, + {qtr_scan_32x32, vp10_qtr_iscan_32x32, + qtr_scan_32x32_neighbors}, + {qtr_scan_32x32, vp10_qtr_iscan_32x32, + qtr_scan_32x32_neighbors}, + {h2_scan_32x32, vp10_h2_iscan_32x32, + h2_scan_32x32_neighbors}, + {v2_scan_32x32, vp10_v2_iscan_32x32, + v2_scan_32x32_neighbors}, + {qtr_scan_32x32, vp10_qtr_iscan_32x32, + qtr_scan_32x32_neighbors}, + {qtr_scan_32x32, vp10_qtr_iscan_32x32, + qtr_scan_32x32_neighbors}, + {qtr_scan_32x32, vp10_qtr_iscan_32x32, + qtr_scan_32x32_neighbors}, + {qtr_scan_32x32, vp10_qtr_iscan_32x32, + qtr_scan_32x32_neighbors}, + {qtr_scan_32x32, vp10_qtr_iscan_32x32, + qtr_scan_32x32_neighbors}, {default_scan_32x32, vp10_default_iscan_32x32, default_scan_32x32_neighbors}, } diff --git a/vp10/encoder/hybrid_fwd_txfm.c b/vp10/encoder/hybrid_fwd_txfm.c index 83b5df4d6..03d9c6dc2 100644 --- a/vp10/encoder/hybrid_fwd_txfm.c +++ b/vp10/encoder/hybrid_fwd_txfm.c @@ -178,15 +178,27 @@ static void fwd_txfm_32x32(int rd_transform, const int16_t *src_diff, vpx_fdct32x32_1(src_diff, coeff, diff_stride); break; #if CONFIG_EXT_TX + case ADST_DCT: + case DCT_ADST: + case ADST_ADST: + case FLIPADST_DCT: + case DCT_FLIPADST: + case FLIPADST_FLIPADST: + case ADST_FLIPADST: + case FLIPADST_ADST: + case DST_DST: + case DCT_DST: + case DST_DCT: + case DST_ADST: + case ADST_DST: + case DST_FLIPADST: + case FLIPADST_DST: + vp10_fht32x32_c(src_diff, coeff, diff_stride, tx_type); + break; case IDTX: fwd_idtx_c(src_diff, coeff, diff_stride, 32); break; #endif // CONFIG_EXT_TX - case ADST_DCT: - case DCT_ADST: - case ADST_ADST: - assert(0); - break; default: assert(0); break; @@ -332,15 +344,27 @@ static void highbd_fwd_txfm_32x32(int rd_transform, const int16_t *src_diff, vpx_highbd_fdct32x32_1(src_diff, coeff, diff_stride); break; #if CONFIG_EXT_TX + case ADST_DCT: + case DCT_ADST: + case ADST_ADST: + case FLIPADST_DCT: + case DCT_FLIPADST: + case FLIPADST_FLIPADST: + case ADST_FLIPADST: + case FLIPADST_ADST: + case DST_DST: + case DCT_DST: + case DST_DCT: + case DST_ADST: + case ADST_DST: + case DST_FLIPADST: + case FLIPADST_DST: + vp10_highbd_fht32x32_c(src_diff, coeff, diff_stride, tx_type); + break; case IDTX: fwd_idtx_c(src_diff, coeff, diff_stride, 32); break; #endif // CONFIG_EXT_TX - case ADST_DCT: - case DCT_ADST: - case ADST_ADST: - assert(0); - break; default: assert(0); break; diff --git a/vp10/encoder/rdopt.c b/vp10/encoder/rdopt.c index 8be078fd4..416c11c43 100644 --- a/vp10/encoder/rdopt.c +++ b/vp10/encoder/rdopt.c @@ -82,7 +82,7 @@ #define NEW_MV_DISCOUNT_FACTOR 8 #if CONFIG_EXT_TX -const double ext_tx_th = 0.98; +const double ext_tx_th = 0.99; #else const double ext_tx_th = 0.99; #endif