]> granicus.if.org Git - libvpx/commitdiff
Hooks to use 32x32 masked transforms for ext-tx
authorDebargha Mukherjee <debargha@google.com>
Sat, 13 Feb 2016 00:44:33 +0000 (16:44 -0800)
committerDebargha Mukherjee <debargha@google.com>
Wed, 24 Feb 2016 21:08:37 +0000 (13:08 -0800)
Adds hooks to use 32x32 ext-tx. Also adds scan orders for the masked
transforms for 32x32.
Make macro USE_MSKTX_FOR_32X32 1 in blockd.h to support 32x32 masked
transforms for ext-tx.

Change-Id: Ie6564830266651fcafae2d536c274dafd664ce17

vp10/common/blockd.h
vp10/common/entropymode.c
vp10/common/enums.h
vp10/common/scan.c
vp10/encoder/hybrid_fwd_txfm.c
vp10/encoder/rdopt.c

index 4d7f9214ef40041f354c3191be591174ab27c43b..8849ed77bd8c785d5e1c353302370a7deb76c542 100644 (file)
@@ -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
index abdb7dba466683ce41d4c7716c32211e6c668d0e..8c755ae6a59dbc44ae08917ad259a9d0cdf8d58d 100644 (file)
@@ -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,
index e1f316855094bdf0a6105789b27fff0dc0bcb570..512241a88b7373bd0b82d0ac584e2a0ab1e53a54 100644 (file)
@@ -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 {
index 23a7b98dc54f9842cb7d0574cb7712846cd6896f..672ac1d2adf56f7fa5280897a54d9eaab071400a 100644 (file)
@@ -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},
   }
index 6507f98f3559907fba03007b26050af51f22800c..6e9c6a1b43a15a80bfcc3b1449b73ca5874ef39a 100644 (file)
@@ -181,15 +181,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 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);
+    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
     default:
       assert(0);
       break;
@@ -335,15 +347,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 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);
+    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
     default:
       assert(0);
       break;
index 131bfb8422a2ddbc933274c17c9174746e547620..3976d3e89093090cc92b110e393e68ed39486f09 100644 (file)
@@ -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