Support 64x16 / 16x64 transform tables

Adds various tables, scan patterns etc. for 16x64 and 64x16
transforms.
Also adds scan tables for previously missing 4:1 transforms
for intra.
Also adds missing CDFs for filterintra with tx64x64.

Change-Id: I8b16e749741f503f13319e7b7b9685128b723956
diff --git a/av1/common/av1_loopfilter.c b/av1/common/av1_loopfilter.c
index f5b9e4a..7aa97e8 100644
--- a/av1/common/av1_loopfilter.c
+++ b/av1/common/av1_loopfilter.c
@@ -2044,7 +2044,11 @@
       4 - 1,   // TX_4X16
       16 - 1,  // TX_16X4
       8 - 1,   // TX_8X32
-      32 - 1   // TX_32X8
+      32 - 1,  // TX_32X8
+#if CONFIG_TX64X64
+      16 - 1,  // TX_16X64
+      64 - 1,  // TX_64X16
+#endif         // CONFIG_TX64X64
   },
   {
       4 - 1,   // TX_4X4
@@ -2067,7 +2071,11 @@
       16 - 1,  // TX_4X16
       4 - 1,   // TX_16X4
       32 - 1,  // TX_8X32
-      8 - 1    // TX_32X8
+      8 - 1,   // TX_32X8
+#if CONFIG_TX64X64
+      64 - 1,  // TX_16X64
+      16 - 1,  // TX_64X16
+#endif         // CONFIG_TX64X64
   }
 };
 
diff --git a/av1/common/av1_txfm.h b/av1/common/av1_txfm.h
index 7072f9f..414c68d 100644
--- a/av1/common/av1_txfm.h
+++ b/av1/common/av1_txfm.h
@@ -197,7 +197,7 @@
     case TX_64X64: return TX_64X64;
     case TX_32X64: return TX_64X32;
     case TX_64X32: return TX_32X64;
-#endif
+#endif  // CONFIG_TX64X64
     case TX_4X8: return TX_8X4;
     case TX_8X4: return TX_4X8;
     case TX_8X16: return TX_16X8;
@@ -208,6 +208,10 @@
     case TX_16X4: return TX_4X16;
     case TX_8X32: return TX_32X8;
     case TX_32X8: return TX_8X32;
+#if CONFIG_TX64X64
+    case TX_16X64: return TX_64X16;
+    case TX_64X16: return TX_16X64;
+#endif  // CONFIG_TX64X64
     default: assert(0); return TX_INVALID;
   }
 }
diff --git a/av1/common/common_data.h b/av1/common/common_data.h
index a06d009..2280fda 100644
--- a/av1/common/common_data.h
+++ b/av1/common/common_data.h
@@ -831,6 +831,10 @@
   TX_4X4,    // TX_16X4
   TX_8X8,    // TX_8X32
   TX_8X8,    // TX_32X8
+#if CONFIG_TX64X64
+  TX_16X16,  // TX_16X64
+  TX_16X16,  // TX_64X16
+#endif       // CONFIG_TX64X64
 };
 
 static const TX_SIZE txsize_horz_map[TX_SIZES_ALL] = {
@@ -855,6 +859,10 @@
   TX_16X16,  // TX_16X4
   TX_8X8,    // TX_8X32
   TX_32X32,  // TX_32X8
+#if CONFIG_TX64X64
+  TX_16X16,  // TX_16X64
+  TX_64X64,  // TX_64X16
+#endif       // CONFIG_TX64X64
 };
 
 static const TX_SIZE txsize_vert_map[TX_SIZES_ALL] = {
@@ -879,90 +887,129 @@
   TX_4X4,    // TX_16X4
   TX_32X32,  // TX_8X32
   TX_8X8,    // TX_32X8
+#if CONFIG_TX64X64
+  TX_64X64,  // TX_16X64
+  TX_16X16,  // TX_64X16
+#endif       // CONFIG_TX64X64
 };
 
 #define TX_SIZE_W_MIN 4
 
 // Transform block width in pixels
-static const int tx_size_wide[TX_SIZES_ALL] = { 4,  8,  16, 32,
+static const int tx_size_wide[TX_SIZES_ALL] = {
+  4,  8,  16, 32,
 #if CONFIG_TX64X64
-                                                64,
+  64,
 #endif  // CONFIG_TX64X64
-                                                4,  8,  8,  16, 16, 32,
+  4,  8,  8,  16, 16, 32,
 #if CONFIG_TX64X64
-                                                32, 64,
+  32, 64,
 #endif  // CONFIG_TX64X64
-                                                4,  16, 8,  32 };
+  4,  16, 8,  32,
+#if CONFIG_TX64X64
+  16, 64,
+#endif  // CONFIG_TX64X64
+};
 
 #define TX_SIZE_H_MIN 4
 
 // Transform block height in pixels
-static const int tx_size_high[TX_SIZES_ALL] = { 4,  8,  16, 32,
+static const int tx_size_high[TX_SIZES_ALL] = {
+  4,  8,  16, 32,
 #if CONFIG_TX64X64
-                                                64,
+  64,
 #endif  // CONFIG_TX64X64
-                                                8,  4,  16, 8,  32, 16,
+  8,  4,  16, 8,  32, 16,
 #if CONFIG_TX64X64
-                                                64, 32,
+  64, 32,
 #endif  // CONFIG_TX64X64
-                                                16, 4,  32, 8 };
+  16, 4,  32, 8,
+#if CONFIG_TX64X64
+  64, 16,
+#endif  // CONFIG_TX64X64
+};
 
 // Transform block width in unit
-static const int tx_size_wide_unit[TX_SIZES_ALL] = { 1,  2,  4, 8,
+static const int tx_size_wide_unit[TX_SIZES_ALL] = {
+  1,  2,  4, 8,
 #if CONFIG_TX64X64
-                                                     16,
+  16,
 #endif  // CONFIG_TX64X64
-                                                     1,  2,  2, 4, 4, 8,
+  1,  2,  2, 4, 4, 8,
 #if CONFIG_TX64X64
-                                                     8,  16,
+  8,  16,
 #endif  // CONFIG_TX64X64
-                                                     1,  4,  2, 8 };
+  1,  4,  2, 8,
+#if CONFIG_TX64X64
+  4,  16,
+#endif  // CONFIG_TX64X64
+};
 
 // Transform block height in unit
-static const int tx_size_high_unit[TX_SIZES_ALL] = { 1,  2, 4, 8,
+static const int tx_size_high_unit[TX_SIZES_ALL] = {
+  1,  2, 4, 8,
 #if CONFIG_TX64X64
-                                                     16,
+  16,
 #endif  // CONFIG_TX64X64
-                                                     2,  1, 4, 2, 8, 4,
+  2,  1, 4, 2, 8, 4,
 #if CONFIG_TX64X64
-                                                     16, 8,
+  16, 8,
 #endif  // CONFIG_TX64X64
-                                                     4,  1, 8, 2 };
+  4,  1, 8, 2,
+#if CONFIG_TX64X64
+  16, 4,
+#endif  // CONFIG_TX64X64
+};
 
 // Transform block width in log2
-static const int tx_size_wide_log2[TX_SIZES_ALL] = { 2, 3, 4, 5,
+static const int tx_size_wide_log2[TX_SIZES_ALL] = {
+  2, 3, 4, 5,
 #if CONFIG_TX64X64
-                                                     6,
+  6,
 #endif  // CONFIG_TX64X64
-                                                     2, 3, 3, 4, 4, 5,
+  2, 3, 3, 4, 4, 5,
 #if CONFIG_TX64X64
-                                                     5, 6,
+  5, 6,
 #endif  // CONFIG_TX64X64
-                                                     2, 4, 3, 5 };
+  2, 4, 3, 5,
+#if CONFIG_TX64X64
+  4, 6,
+#endif  // CONFIG_TX64X64
+};
 
 // Transform block height in log2
-static const int tx_size_high_log2[TX_SIZES_ALL] = { 2, 3, 4, 5,
+static const int tx_size_high_log2[TX_SIZES_ALL] = {
+  2, 3, 4, 5,
 #if CONFIG_TX64X64
-                                                     6,
+  6,
 #endif  // CONFIG_TX64X64
-                                                     3, 2, 4, 3, 5, 4,
+  3, 2, 4, 3, 5, 4,
 #if CONFIG_TX64X64
-                                                     6, 5,
+  6, 5,
 #endif  // CONFIG_TX64X64
-                                                     4, 2, 5, 3 };
+  4, 2, 5, 3,
+#if CONFIG_TX64X64
+  6, 4,
+#endif  // CONFIG_TX64X64
+};
 
 #define TX_UNIT_WIDE_LOG2 (MI_SIZE_LOG2 - tx_size_wide_log2[0])
 #define TX_UNIT_HIGH_LOG2 (MI_SIZE_LOG2 - tx_size_high_log2[0])
 
-static const int tx_size_2d[TX_SIZES_ALL] = { 16,   64,   256, 1024,
+static const int tx_size_2d[TX_SIZES_ALL] = {
+  16,   64,   256, 1024,
 #if CONFIG_TX64X64
-                                              4096,
+  4096,
 #endif  // CONFIG_TX64X64
-                                              32,   32,   128, 128,  512, 512,
+  32,   32,   128, 128,  512, 512,
 #if CONFIG_TX64X64
-                                              2048, 2048,
+  2048, 2048,
 #endif  // CONFIG_TX64X64
-                                              64,   64,   256, 256 };
+  64,   64,   256, 256,
+#if CONFIG_TX64X64
+  1024, 1024,
+#endif  // CONFIG_TX64X64
+};
 
 static const BLOCK_SIZE txsize_to_bsize[TX_SIZES_ALL] = {
   BLOCK_4X4,    // TX_4X4
@@ -986,6 +1033,10 @@
   BLOCK_16X4,   // TX_16X4
   BLOCK_8X32,   // TX_8X32
   BLOCK_32X8,   // TX_32X8
+#if CONFIG_TX64X64
+  BLOCK_16X64,  // TX_16X64
+  BLOCK_64X16,  // TX_64X16
+#endif          // CONFIG_TX64X64
 };
 
 static const TX_SIZE txsize_sqr_map[TX_SIZES_ALL] = {
@@ -1010,6 +1061,10 @@
   TX_4X4,    // TX_16X4
   TX_8X8,    // TX_8X32
   TX_8X8,    // TX_32X8
+#if CONFIG_TX64X64
+  TX_16X16,  // TX_16X64
+  TX_16X16,  // TX_64X16
+#endif       // CONFIG_TX64X64
 };
 
 static const TX_SIZE txsize_sqr_up_map[TX_SIZES_ALL] = {
@@ -1034,6 +1089,10 @@
   TX_16X16,  // TX_16X4
   TX_32X32,  // TX_8X32
   TX_32X32,  // TX_32X8
+#if CONFIG_TX64X64
+  TX_64X64,  // TX_16X64
+  TX_64X64,  // TX_64X16
+#endif       // CONFIG_TX64X64
 };
 
 /* clang-format off */
@@ -1126,6 +1185,10 @@
       { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
       { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
       { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
+#if CONFIG_TX64X64
+      { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
+      { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
+#endif  // CONFIG_TX64X64
   },
   {
       // BLOCK_2X4
@@ -1150,6 +1213,10 @@
       { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
       { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
       { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
+#if CONFIG_TX64X64
+      { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
+      { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
+#endif  // CONFIG_TX64X64
   },
   {
       // BLOCK_4X2
@@ -1174,6 +1241,10 @@
       { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
       { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
       { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
+#if CONFIG_TX64X64
+      { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
+      { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
+#endif  // CONFIG_TX64X64
   },
   {
       // BLOCK_4X4
@@ -1198,6 +1269,10 @@
       { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
       { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
       { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
+#if CONFIG_TX64X64
+      { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
+      { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
+#endif  // CONFIG_TX64X64
   },
   {
       // BLOCK_4X8
@@ -1222,6 +1297,10 @@
       { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
       { { TX_4X8, TX_4X4 }, { TX_4X4, TX_4X4 } },
       { { TX_4X8, TX_4X4 }, { TX_4X4, TX_4X4 } },
+#if CONFIG_TX64X64
+      { { TX_4X8, TX_4X4 }, { TX_4X4, TX_4X4 } },
+      { { TX_4X8, TX_4X4 }, { TX_4X4, TX_4X4 } },
+#endif  // CONFIG_TX64X64
   },
   {
       // BLOCK_8X4
@@ -1246,6 +1325,10 @@
       { { TX_8X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
       { { TX_8X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
       { { TX_8X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
+#if CONFIG_TX64X64
+      { { TX_8X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
+      { { TX_8X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
+#endif  // CONFIG_TX64X64
   },
   {
       // BLOCK_8X8
@@ -1270,6 +1353,10 @@
       { { TX_8X4, TX_8X4 }, { TX_4X4, TX_4X4 } },
       { { TX_8X8, TX_8X4 }, { TX_4X8, TX_4X4 } },
       { { TX_8X8, TX_8X4 }, { TX_4X8, TX_4X4 } },
+#if CONFIG_TX64X64
+      { { TX_8X8, TX_8X4 }, { TX_4X8, TX_4X4 } },
+      { { TX_8X8, TX_8X4 }, { TX_4X8, TX_4X4 } },
+#endif  // CONFIG_TX64X64
   },
   {
       // BLOCK_8X16
@@ -1294,6 +1381,10 @@
       { { TX_8X4, TX_8X4 }, { TX_4X4, TX_4X4 } },
       { { TX_8X16, TX_8X8 }, { TX_4X16, TX_4X8 } },
       { { TX_8X8, TX_8X8 }, { TX_4X8, TX_4X8 } },
+#if CONFIG_TX64X64
+      { { TX_8X16, TX_8X8 }, { TX_4X16, TX_4X8 } },
+      { { TX_8X16, TX_8X8 }, { TX_4X16, TX_4X8 } },
+#endif  // CONFIG_TX64X64
   },
   {
       // BLOCK_16X8
@@ -1311,13 +1402,17 @@
       { { TX_16X8, TX_8X4 }, { TX_8X8, TX_8X4 } },
       { { TX_16X8, TX_8X4 }, { TX_8X8, TX_8X4 } },
 #if CONFIG_TX64X64
-      { { TX_16X8, TX_8X4 }, { TX_8X8, TX_8X4 } },
-      { { TX_16X8, TX_8X4 }, { TX_8X8, TX_8X4 } },
+      { { TX_16X8, TX_16X4 }, { TX_8X8, TX_8X4 } },
+      { { TX_16X8, TX_16X4 }, { TX_8X8, TX_8X4 } },
 #endif  // CONFIG_TX64X64
       { { TX_4X8, TX_4X4 }, { TX_4X8, TX_4X4 } },
       { { TX_16X4, TX_16X4 }, { TX_8X4, TX_8X4 } },
       { { TX_8X8, TX_8X4 }, { TX_8X8, TX_8X4 } },
       { { TX_16X8, TX_16X4 }, { TX_8X8, TX_8X4 } },
+#if CONFIG_TX64X64
+      { { TX_16X8, TX_16X4 }, { TX_8X8, TX_8X4 } },
+      { { TX_16X8, TX_16X4 }, { TX_8X8, TX_8X4 } },
+#endif  // CONFIG_TX64X64
   },
   {
       // BLOCK_16X16
@@ -1342,6 +1437,10 @@
       { { TX_16X4, TX_16X4 }, { TX_8X4, TX_8X4 } },
       { { TX_8X16, TX_8X8 }, { TX_8X16, TX_8X8 } },
       { { TX_16X8, TX_16X8 }, { TX_8X8, TX_8X8 } },
+#if CONFIG_TX64X64
+      { { TX_16X16, TX_16X8 }, { TX_8X16, TX_8X8 } },
+      { { TX_16X16, TX_16X8 }, { TX_8X16, TX_8X8 } },
+#endif  // CONFIG_TX64X64
   },
   {
       // BLOCK_16X32
@@ -1366,6 +1465,10 @@
       { { TX_16X4, TX_16X4 }, { TX_8X4, TX_8X4 } },
       { { TX_8X32, TX_8X16 }, { TX_8X32, TX_8X16 } },
       { { TX_16X8, TX_16X8 }, { TX_8X8, TX_8X8 } },
+#if CONFIG_TX64X64
+      { { TX_16X32, TX_16X16 }, { TX_8X32, TX_8X16 } },
+      { { TX_16X32, TX_16X16 }, { TX_8X32, TX_8X16 } },
+#endif  // CONFIG_TX64X64
   },
   {
       // BLOCK_32X16
@@ -1383,13 +1486,17 @@
       { { TX_32X16, TX_16X8 }, { TX_16X16, TX_16X8 } },
       { { TX_32X16, TX_16X8 }, { TX_16X16, TX_16X8 } },  // used
 #if CONFIG_TX64X64
-      { { TX_32X16, TX_16X8 }, { TX_16X16, TX_16X8 } },
-      { { TX_32X16, TX_16X8 }, { TX_16X16, TX_16X8 } },
+      { { TX_32X16, TX_32X8 }, { TX_16X16, TX_16X8 } },
+      { { TX_32X16, TX_32X8 }, { TX_16X16, TX_16X8 } },
 #endif  // CONFIG_TX64X64
       { { TX_4X16, TX_4X8 }, { TX_4X16, TX_4X8 } },
       { { TX_16X4, TX_16X4 }, { TX_16X4, TX_16X4 } },
       { { TX_8X16, TX_8X8 }, { TX_8X16, TX_8X8 } },
       { { TX_32X8, TX_32X8 }, { TX_16X8, TX_16X8 } },
+#if CONFIG_TX64X64
+      { { TX_32X16, TX_32X8 }, { TX_16X16, TX_16X8 } },
+      { { TX_32X16, TX_32X8 }, { TX_16X16, TX_16X8 } },
+#endif  // CONFIG_TX64X64
   },
   {
       // BLOCK_32X32
@@ -1407,13 +1514,17 @@
       { { TX_16X32, TX_16X16 }, { TX_16X32, TX_16X16 } },
       { { TX_32X16, TX_32X16 }, { TX_16X16, TX_16X16 } },
 #if CONFIG_TX64X64
-      { { TX_32X32, TX_16X16 }, { TX_16X16, TX_16X16 } },
-      { { TX_32X32, TX_16X16 }, { TX_16X16, TX_16X16 } },
+      { { TX_32X32, TX_32X16 }, { TX_16X32, TX_16X16 } },
+      { { TX_32X32, TX_32X16 }, { TX_16X32, TX_16X16 } },
 #endif  // CONFIG_TX64X64
       { { TX_4X16, TX_4X8 }, { TX_4X16, TX_4X8 } },
       { { TX_16X4, TX_16X4 }, { TX_16X4, TX_16X4 } },
       { { TX_8X16, TX_8X8 }, { TX_8X16, TX_8X8 } },
       { { TX_32X8, TX_32X8 }, { TX_16X8, TX_16X8 } },
+#if CONFIG_TX64X64
+      { { TX_32X32, TX_32X16 }, { TX_16X32, TX_16X16 } },
+      { { TX_32X32, TX_32X16 }, { TX_16X32, TX_16X16 } },
+#endif  // CONFIG_TX64X64
   },
   {
       // BLOCK_32X64
@@ -1438,6 +1549,10 @@
       { { TX_16X4, TX_16X4 }, { TX_16X4, TX_16X4 } },
       { { TX_8X16, TX_8X8 }, { TX_8X16, TX_8X8 } },
       { { TX_32X8, TX_32X8 }, { TX_16X8, TX_16X8 } },
+#if CONFIG_TX64X64
+      { { TX_16X64, TX_16X32 }, { TX_8X32, TX_8X32 } },
+      { { TX_32X16, TX_32X8 }, { TX_16X16, TX_16X8 } },
+#endif  // CONFIG_TX64X64
   },
   {
       // BLOCK_64X32
@@ -1462,6 +1577,10 @@
       { { TX_16X4, TX_16X4 }, { TX_16X4, TX_16X4 } },
       { { TX_8X16, TX_8X8 }, { TX_8X16, TX_8X8 } },
       { { TX_32X8, TX_32X8 }, { TX_16X8, TX_16X8 } },
+#if CONFIG_TX64X64
+      { { TX_16X32, TX_16X16 }, { TX_8X32, TX_8X16 } },
+      { { TX_64X16, TX_32X8 }, { TX_32X16, TX_32X8 } },
+#endif  // CONFIG_TX64X64
   },
   {
       // BLOCK_64X64
@@ -1486,6 +1605,10 @@
       { { TX_16X4, TX_16X4 }, { TX_16X4, TX_16X4 } },
       { { TX_8X16, TX_8X8 }, { TX_8X16, TX_8X8 } },
       { { TX_32X8, TX_32X8 }, { TX_16X8, TX_16X8 } },
+#if CONFIG_TX64X64
+      { { TX_16X64, TX_16X32 }, { TX_8X32, TX_8X32 } },
+      { { TX_64X16, TX_32X8 }, { TX_32X16, TX_32X8 } },
+#endif  // CONFIG_TX64X64
   },
 #if CONFIG_EXT_PARTITION
   {
@@ -1507,10 +1630,14 @@
       { { TX_32X64, TX_32X32 }, { TX_16X16, TX_16X16 } },
       { { TX_64X32, TX_16X16 }, { TX_32X32, TX_16X16 } },
 #endif  // CONFIG_TX64X64
-      { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
-      { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
-      { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
-      { { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
+      { { TX_4X16, TX_4X8 }, { TX_4X16, TX_4X8 } },
+      { { TX_16X4, TX_16X4 }, { TX_16X4, TX_16X4 } },
+      { { TX_8X16, TX_8X8 }, { TX_8X16, TX_8X8 } },
+      { { TX_32X8, TX_32X8 }, { TX_16X8, TX_16X8 } },
+#if CONFIG_TX64X64
+      { { TX_16X64, TX_16X32 }, { TX_8X32, TX_8X32 } },
+      { { TX_64X16, TX_32X8 }, { TX_32X16, TX_32X8 } },
+#endif  // CONFIG_TX64X64
   },
   {
       // BLOCK_128X64
@@ -1535,6 +1662,10 @@
       { { TX_16X4, TX_16X4 }, { TX_16X4, TX_16X4 } },
       { { TX_8X16, TX_8X8 }, { TX_8X16, TX_8X8 } },
       { { TX_32X8, TX_32X8 }, { TX_16X8, TX_16X8 } },
+#if CONFIG_TX64X64
+      { { TX_16X64, TX_16X32 }, { TX_8X32, TX_8X32 } },
+      { { TX_64X16, TX_32X8 }, { TX_32X16, TX_32X8 } },
+#endif  // CONFIG_TX64X64
   },
   {
       // BLOCK_128X128
@@ -1559,6 +1690,10 @@
       { { TX_16X4, TX_16X4 }, { TX_16X4, TX_16X4 } },
       { { TX_8X16, TX_8X8 }, { TX_8X16, TX_8X8 } },
       { { TX_32X8, TX_32X8 }, { TX_16X8, TX_16X8 } },
+#if CONFIG_TX64X64
+      { { TX_16X64, TX_16X32 }, { TX_8X32, TX_8X32 } },
+      { { TX_64X16, TX_32X8 }, { TX_32X16, TX_32X8 } },
+#endif  // CONFIG_TX64X64
   },
 #endif  // CONFIG_EXT_PARTITION
   {
@@ -1584,6 +1719,10 @@
       { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
       { { TX_4X16, TX_4X8 }, { TX_4X4, TX_4X4 } },
       { { TX_4X8, TX_4X8 }, { TX_4X4, TX_4X4 } },
+#if CONFIG_TX64X64
+      { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
+      { { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
+#endif  // CONFIG_TX64X64
   },
   {
       // BLOCK_16X4
@@ -1608,6 +1747,10 @@
       { { TX_16X4, TX_4X4 }, { TX_8X4, TX_4X4 } },
       { { TX_8X4, TX_4X4 }, { TX_8X4, TX_4X4 } },
       { { TX_16X4, TX_4X4 }, { TX_8X4, TX_4X4 } },
+#if CONFIG_TX64X64
+      { { TX_16X4, TX_8X4 }, { TX_8X4, TX_8X4 } },
+      { { TX_16X4, TX_8X4 }, { TX_8X4, TX_8X4 } },
+#endif  // CONFIG_TX64X64
   },
   {
       // BLOCK_8X32
@@ -1632,6 +1775,10 @@
       { { TX_8X4, TX_8X4 }, { TX_4X4, TX_4X4 } },
       { { TX_8X32, TX_8X16 }, { TX_4X16, TX_4X16 } },
       { { TX_8X8, TX_8X8 }, { TX_4X8, TX_4X8 } },
+#if CONFIG_TX64X64
+      { { TX_8X32, TX_8X16 }, { TX_4X16, TX_4X16 } },
+      { { TX_8X16, TX_8X8 }, { TX_4X16, TX_4X8 } },
+#endif  // CONFIG_TX64X64
   },
   {
       // BLOCK_32X8
@@ -1656,6 +1803,10 @@
       { { TX_16X4, TX_16X4 }, { TX_16X4, TX_16X4 } },
       { { TX_8X8, TX_8X4 }, { TX_8X8, TX_8X4 } },
       { { TX_32X8, TX_16X4 }, { TX_16X8, TX_16X4 } },
+#if CONFIG_TX64X64
+      { { TX_16X8, TX_16X4 }, { TX_8X8, TX_8X4 } },
+      { { TX_32X8, TX_16X4 }, { TX_16X8, TX_16X4 } },
+#endif  // CONFIG_TX64X64
   },
   {
       // BLOCK_16X64
@@ -1680,6 +1831,10 @@
       { { TX_16X4, TX_16X4 }, { TX_8X4, TX_8X4 } },
       { { TX_8X32, TX_8X32 }, { TX_8X32, TX_8X32 } },
       { { TX_16X8, TX_16X8 }, { TX_8X8, TX_8X8 } },
+#if CONFIG_TX64X64
+      { { TX_16X64, TX_16X32 }, { TX_8X32, TX_8X32 } },
+      { { TX_16X16, TX_16X8 }, { TX_8X16, TX_8X8 } },
+#endif
   },
   {
       // BLOCK_64X16
@@ -1704,6 +1859,10 @@
       { { TX_16X4, TX_16X4 }, { TX_16X4, TX_16X4 } },
       { { TX_8X16, TX_8X8 }, { TX_8X16, TX_8X8 } },
       { { TX_32X8, TX_32X8 }, { TX_32X8, TX_32X8 } },
+#if CONFIG_TX64X64
+      { { TX_16X16, TX_16X8 }, { TX_8X16, TX_8X8 } },
+      { { TX_64X16, TX_32X8 }, { TX_32X16, TX_32X8 } },
+#endif
   },
 #if CONFIG_EXT_PARTITION
   {
@@ -1721,10 +1880,18 @@
       { { TX_16X8, TX_16X8 }, { TX_16X8, TX_16X8 } },
       { { TX_16X32, TX_16X32 }, { TX_16X32, TX_16X32 } },
       { { TX_32X16, TX_32X16 }, { TX_16X16, TX_16X16 } },
+#if CONFIG_TX64X64
+      { { TX_32X64, TX_32X32 }, { TX_16X64, TX_16X32 } },
+      { { TX_32X32, TX_32X16 }, { TX_16X32, TX_16X16 } },
+#endif
       { { TX_4X16, TX_4X16 }, { TX_4X16, TX_4X16 } },
       { { TX_16X4, TX_16X4 }, { TX_16X4, TX_16X4 } },
       { { TX_8X32, TX_8X32 }, { TX_8X32, TX_8X32 } },
       { { TX_32X8, TX_32X8 }, { TX_16X8, TX_16X8 } },
+#if CONFIG_TX64X64
+      { { TX_16X64, TX_16X32 }, { TX_8X32, TX_8X32 } },
+      { { TX_32X16, TX_32X8 }, { TX_16X16, TX_16X8 } },
+#endif  // CONFIG_TX64X64
   },
   {
       // BLOCK_128X32
@@ -1741,10 +1908,18 @@
       { { TX_16X8, TX_16X8 }, { TX_16X8, TX_16X8 } },
       { { TX_16X32, TX_16X16 }, { TX_16X32, TX_16X16 } },
       { { TX_32X16, TX_32X16 }, { TX_32X16, TX_32X16 } },
+#if CONFIG_TX64X64
+      { { TX_32X32, TX_32X16 }, { TX_16X32, TX_16X16 } },
+      { { TX_64X32, TX_64X16 }, { TX_32X32, TX_32X16 } },
+#endif
       { { TX_4X16, TX_4X16 }, { TX_4X16, TX_4X16 } },
       { { TX_16X4, TX_16X4 }, { TX_16X4, TX_16X4 } },
       { { TX_8X32, TX_8X16 }, { TX_8X32, TX_8X16 } },
       { { TX_32X8, TX_32X8 }, { TX_32X8, TX_32X8 } },
+#if CONFIG_TX64X64
+      { { TX_16X32, TX_16X16 }, { TX_8X32, TX_8X16 } },
+      { { TX_64X16, TX_32X8 }, { TX_32X16, TX_32X8 } },
+#endif  // CONFIG_TX64X64
   },
 #endif
 };
diff --git a/av1/common/entropy.c b/av1/common/entropy.c
index ee53866..2756071 100644
--- a/av1/common/entropy.c
+++ b/av1/common/entropy.c
@@ -102,6 +102,9 @@
 #endif  // CONFIG_TX64X64
   { 1, 2, 3, 4, 11, 64 - 21, 0 },   { 1, 2, 3, 4, 11, 64 - 21, 0 },
   { 1, 2, 3, 4, 11, 256 - 21, 0 },  { 1, 2, 3, 4, 11, 256 - 21, 0 },
+#if CONFIG_TX64X64
+  { 1, 2, 3, 4, 11, 1024 - 21, 0 }, { 1, 2, 3, 4, 11, 1024 - 21, 0 },
+#endif  // CONFIG_TX64X64
 };
 
 const uint16_t band_cum_count_table[TX_SIZES_ALL][8] = {
@@ -118,6 +121,9 @@
 #endif  // CONFIG_TX64X64
   { 0, 1, 3, 6, 10, 21, 64, 0 },   { 0, 1, 3, 6, 10, 21, 64, 0 },
   { 0, 1, 3, 6, 10, 21, 256, 0 },  { 0, 1, 3, 6, 10, 21, 256, 0 },
+#if CONFIG_TX64X64
+  { 0, 1, 3, 6, 10, 21, 1024, 0 }, { 0, 1, 3, 6, 10, 21, 1024, 0 },
+#endif  // CONFIG_TX64X64
 };
 
 const uint8_t av1_coefband_trans_8x8plus[MAX_TX_SQUARE] = {
diff --git a/av1/common/entropy.h b/av1/common/entropy.h
index 2e359e7..b465c96 100644
--- a/av1/common/entropy.h
+++ b/av1/common/entropy.h
@@ -349,6 +349,16 @@
       above_ec = !!*(const uint64_t *)a;
       left_ec = !!*(const uint16_t *)l;
       break;
+#if CONFIG_TX64X64
+    case TX_16X64:
+      above_ec = !!*(const uint32_t *)a;
+      left_ec = !!(*(const uint64_t *)l | *(const uint64_t *)(l + 8));
+      break;
+    case TX_64X16:
+      above_ec = !!(*(const uint64_t *)a | *(const uint64_t *)(a + 8));
+      left_ec = !!*(const uint32_t *)l;
+      break;
+#endif  // CONFIG_TX64X64
     default: assert(0 && "Invalid transform size."); break;
   }
   return combine_entropy_contexts(above_ec, left_ec);
diff --git a/av1/common/entropymode.c b/av1/common/entropymode.c
index 59b255d..23417e1 100644
--- a/av1/common/entropymode.c
+++ b/av1/common/entropymode.c
@@ -1484,11 +1484,23 @@
                              { AOM_CDF5(32768, 32768, 32768, 32768) } };
 
 static const aom_cdf_prob default_filter_intra_cdfs[TX_SIZES_ALL][CDF_SIZE(2)] =
-    { { AOM_CDF2(10985) }, { AOM_CDF2(10985) }, { AOM_CDF2(16645) },
-      { AOM_CDF2(27378) }, { AOM_CDF2(10985) }, { AOM_CDF2(10985) },
-      { AOM_CDF2(15723) }, { AOM_CDF2(12373) }, { AOM_CDF2(27199) },
-      { AOM_CDF2(24217) }, { AOM_CDF2(32767) }, { AOM_CDF2(32767) },
-      { AOM_CDF2(32767) }, { AOM_CDF2(32767) } };
+    {
+      { AOM_CDF2(10985) }, { AOM_CDF2(10985) }, { AOM_CDF2(16645) },
+      { AOM_CDF2(27378) },
+#if CONFIG_TX64X64
+      { AOM_CDF2(30378) },
+#endif  // CONFIG_TX64X64
+      { AOM_CDF2(10985) }, { AOM_CDF2(10985) }, { AOM_CDF2(15723) },
+      { AOM_CDF2(12373) }, { AOM_CDF2(27199) }, { AOM_CDF2(24217) },
+#if CONFIG_TX64X64
+      { AOM_CDF2(27378) }, { AOM_CDF2(27378) },
+#endif  // CONFIG_TX64X64
+      { AOM_CDF2(16767) }, { AOM_CDF2(16767) }, { AOM_CDF2(27767) },
+      { AOM_CDF2(27767) },
+#if CONFIG_TX64X64
+      { AOM_CDF2(27378) }, { AOM_CDF2(27378) },
+#endif  // CONFIG_TX64X64
+    };
 #endif  // CONFIG_FILTER_INTRA
 
 // FIXME(someone) need real defaults here
diff --git a/av1/common/enums.h b/av1/common/enums.h
index 4684eb9..ddcb342 100644
--- a/av1/common/enums.h
+++ b/av1/common/enums.h
@@ -227,13 +227,17 @@
   TX_16X32,  // 16x32 transform
   TX_32X16,  // 32x16 transform
 #if CONFIG_TX64X64
-  TX_32X64,           // 32x64 transform
-  TX_64X32,           // 64x32 transform
+  TX_32X64,  // 32x64 transform
+  TX_64X32,  // 64x32 transform
+#endif       // CONFIG_TX64X64
+  TX_4X16,   // 4x16 transform
+  TX_16X4,   // 16x4 transform
+  TX_8X32,   // 8x32 transform
+  TX_32X8,   // 32x8 transform
+#if CONFIG_TX64X64
+  TX_16X64,           // 16x64 transform
+  TX_64X16,           // 64x16 transform
 #endif                // CONFIG_TX64X64
-  TX_4X16,            // 4x16 transform
-  TX_16X4,            // 16x4 transform
-  TX_8X32,            // 8x32 transform
-  TX_32X8,            // 32x8 transform
   TX_SIZES_ALL,       // Includes rectangular transforms
   TX_SIZES = TX_4X8,  // Does NOT include rectangular transforms
   TX_INVALID = 255    // Invalid transform size
diff --git a/av1/common/quant_common.c b/av1/common/quant_common.c
index 8a10d2d..6a0d372 100644
--- a/av1/common/quant_common.c
+++ b/av1/common/quant_common.c
@@ -494,6 +494,9 @@
           cm->gqmatrix[q][c][t] = cm->gqmatrix[q][c][TX_32X32];
           cm->giqmatrix[q][c][t] = cm->giqmatrix[q][c][TX_32X32];
         } else {
+#if CONFIG_TX64X64
+          if (t == TX_16X64 || t == TX_64X16) continue;
+#endif  // CONFIG_TX64X64
           assert(current + size <= QM_TOTAL_SIZE);
           cm->gqmatrix[q][c][t] = &wt_matrix_ref[q][c >= 1][current];
           cm->giqmatrix[q][c][t] = &iwt_matrix_ref[q][c >= 1][current];
diff --git a/av1/common/scan.c b/av1/common/scan.c
index d300bd6..0de19ac 100644
--- a/av1/common/scan.c
+++ b/av1/common/scan.c
@@ -1158,6 +1158,170 @@
 #define default_scan_32x64 default_scan_32x32
 #define default_scan_64x32 default_scan_32x32
 #define default_scan_64x64 default_scan_32x32
+
+DECLARE_ALIGNED(16, static const int16_t, default_scan_16x64[1024]) = {
+  0,    1,    16,   2,    17,  32,   3,    18,   33,   48,   4,   19,   34,
+  49,   64,   5,    20,   35,  50,   65,   80,   6,    21,   36,  51,   66,
+  81,   96,   7,    22,   37,  52,   67,   82,   97,   112,  8,   23,   38,
+  53,   68,   83,   98,   113, 128,  9,    24,   39,   54,   69,  84,   99,
+  114,  129,  144,  10,   25,  40,   55,   70,   85,   100,  115, 130,  145,
+  160,  11,   26,   41,   56,  71,   86,   101,  116,  131,  146, 161,  176,
+  12,   27,   42,   57,   72,  87,   102,  117,  132,  147,  162, 177,  192,
+  13,   28,   43,   58,   73,  88,   103,  118,  133,  148,  163, 178,  193,
+  208,  14,   29,   44,   59,  74,   89,   104,  119,  134,  149, 164,  179,
+  194,  209,  224,  15,   30,  45,   60,   75,   90,   105,  120, 135,  150,
+  165,  180,  195,  210,  225, 240,  31,   46,   61,   76,   91,  106,  121,
+  136,  151,  166,  181,  196, 211,  226,  241,  256,  47,   62,  77,   92,
+  107,  122,  137,  152,  167, 182,  197,  212,  227,  242,  257, 272,  63,
+  78,   93,   108,  123,  138, 153,  168,  183,  198,  213,  228, 243,  258,
+  273,  288,  79,   94,   109, 124,  139,  154,  169,  184,  199, 214,  229,
+  244,  259,  274,  289,  304, 95,   110,  125,  140,  155,  170, 185,  200,
+  215,  230,  245,  260,  275, 290,  305,  320,  111,  126,  141, 156,  171,
+  186,  201,  216,  231,  246, 261,  276,  291,  306,  321,  336, 127,  142,
+  157,  172,  187,  202,  217, 232,  247,  262,  277,  292,  307, 322,  337,
+  352,  143,  158,  173,  188, 203,  218,  233,  248,  263,  278, 293,  308,
+  323,  338,  353,  368,  159, 174,  189,  204,  219,  234,  249, 264,  279,
+  294,  309,  324,  339,  354, 369,  384,  175,  190,  205,  220, 235,  250,
+  265,  280,  295,  310,  325, 340,  355,  370,  385,  400,  191, 206,  221,
+  236,  251,  266,  281,  296, 311,  326,  341,  356,  371,  386, 401,  416,
+  207,  222,  237,  252,  267, 282,  297,  312,  327,  342,  357, 372,  387,
+  402,  417,  432,  223,  238, 253,  268,  283,  298,  313,  328, 343,  358,
+  373,  388,  403,  418,  433, 448,  239,  254,  269,  284,  299, 314,  329,
+  344,  359,  374,  389,  404, 419,  434,  449,  464,  255,  270, 285,  300,
+  315,  330,  345,  360,  375, 390,  405,  420,  435,  450,  465, 480,  271,
+  286,  301,  316,  331,  346, 361,  376,  391,  406,  421,  436, 451,  466,
+  481,  496,  287,  302,  317, 332,  347,  362,  377,  392,  407, 422,  437,
+  452,  467,  482,  497,  512, 303,  318,  333,  348,  363,  378, 393,  408,
+  423,  438,  453,  468,  483, 498,  513,  528,  319,  334,  349, 364,  379,
+  394,  409,  424,  439,  454, 469,  484,  499,  514,  529,  544, 335,  350,
+  365,  380,  395,  410,  425, 440,  455,  470,  485,  500,  515, 530,  545,
+  560,  351,  366,  381,  396, 411,  426,  441,  456,  471,  486, 501,  516,
+  531,  546,  561,  576,  367, 382,  397,  412,  427,  442,  457, 472,  487,
+  502,  517,  532,  547,  562, 577,  592,  383,  398,  413,  428, 443,  458,
+  473,  488,  503,  518,  533, 548,  563,  578,  593,  608,  399, 414,  429,
+  444,  459,  474,  489,  504, 519,  534,  549,  564,  579,  594, 609,  624,
+  415,  430,  445,  460,  475, 490,  505,  520,  535,  550,  565, 580,  595,
+  610,  625,  640,  431,  446, 461,  476,  491,  506,  521,  536, 551,  566,
+  581,  596,  611,  626,  641, 656,  447,  462,  477,  492,  507, 522,  537,
+  552,  567,  582,  597,  612, 627,  642,  657,  672,  463,  478, 493,  508,
+  523,  538,  553,  568,  583, 598,  613,  628,  643,  658,  673, 688,  479,
+  494,  509,  524,  539,  554, 569,  584,  599,  614,  629,  644, 659,  674,
+  689,  704,  495,  510,  525, 540,  555,  570,  585,  600,  615, 630,  645,
+  660,  675,  690,  705,  720, 511,  526,  541,  556,  571,  586, 601,  616,
+  631,  646,  661,  676,  691, 706,  721,  736,  527,  542,  557, 572,  587,
+  602,  617,  632,  647,  662, 677,  692,  707,  722,  737,  752, 543,  558,
+  573,  588,  603,  618,  633, 648,  663,  678,  693,  708,  723, 738,  753,
+  768,  559,  574,  589,  604, 619,  634,  649,  664,  679,  694, 709,  724,
+  739,  754,  769,  784,  575, 590,  605,  620,  635,  650,  665, 680,  695,
+  710,  725,  740,  755,  770, 785,  800,  591,  606,  621,  636, 651,  666,
+  681,  696,  711,  726,  741, 756,  771,  786,  801,  816,  607, 622,  637,
+  652,  667,  682,  697,  712, 727,  742,  757,  772,  787,  802, 817,  832,
+  623,  638,  653,  668,  683, 698,  713,  728,  743,  758,  773, 788,  803,
+  818,  833,  848,  639,  654, 669,  684,  699,  714,  729,  744, 759,  774,
+  789,  804,  819,  834,  849, 864,  655,  670,  685,  700,  715, 730,  745,
+  760,  775,  790,  805,  820, 835,  850,  865,  880,  671,  686, 701,  716,
+  731,  746,  761,  776,  791, 806,  821,  836,  851,  866,  881, 896,  687,
+  702,  717,  732,  747,  762, 777,  792,  807,  822,  837,  852, 867,  882,
+  897,  912,  703,  718,  733, 748,  763,  778,  793,  808,  823, 838,  853,
+  868,  883,  898,  913,  928, 719,  734,  749,  764,  779,  794, 809,  824,
+  839,  854,  869,  884,  899, 914,  929,  944,  735,  750,  765, 780,  795,
+  810,  825,  840,  855,  870, 885,  900,  915,  930,  945,  960, 751,  766,
+  781,  796,  811,  826,  841, 856,  871,  886,  901,  916,  931, 946,  961,
+  976,  767,  782,  797,  812, 827,  842,  857,  872,  887,  902, 917,  932,
+  947,  962,  977,  992,  783, 798,  813,  828,  843,  858,  873, 888,  903,
+  918,  933,  948,  963,  978, 993,  1008, 799,  814,  829,  844, 859,  874,
+  889,  904,  919,  934,  949, 964,  979,  994,  1009, 815,  830, 845,  860,
+  875,  890,  905,  920,  935, 950,  965,  980,  995,  1010, 831, 846,  861,
+  876,  891,  906,  921,  936, 951,  966,  981,  996,  1011, 847, 862,  877,
+  892,  907,  922,  937,  952, 967,  982,  997,  1012, 863,  878, 893,  908,
+  923,  938,  953,  968,  983, 998,  1013, 879,  894,  909,  924, 939,  954,
+  969,  984,  999,  1014, 895, 910,  925,  940,  955,  970,  985, 1000, 1015,
+  911,  926,  941,  956,  971, 986,  1001, 1016, 927,  942,  957, 972,  987,
+  1002, 1017, 943,  958,  973, 988,  1003, 1018, 959,  974,  989, 1004, 1019,
+  975,  990,  1005, 1020, 991, 1006, 1021, 1007, 1022, 1023,
+};
+
+DECLARE_ALIGNED(16, static const int16_t, default_scan_64x16[1024]) = {
+  0,    1,    64,  2,    65,   128, 3,    66,   129,  192,  4,    67,   130,
+  193,  256,  5,   68,   131,  194, 257,  320,  6,    69,   132,  195,  258,
+  321,  384,  7,   70,   133,  196, 259,  322,  385,  448,  8,    71,   134,
+  197,  260,  323, 386,  449,  512, 9,    72,   135,  198,  261,  324,  387,
+  450,  513,  576, 10,   73,   136, 199,  262,  325,  388,  451,  514,  577,
+  640,  11,   74,  137,  200,  263, 326,  389,  452,  515,  578,  641,  704,
+  12,   75,   138, 201,  264,  327, 390,  453,  516,  579,  642,  705,  768,
+  13,   76,   139, 202,  265,  328, 391,  454,  517,  580,  643,  706,  769,
+  832,  14,   77,  140,  203,  266, 329,  392,  455,  518,  581,  644,  707,
+  770,  833,  896, 15,   78,   141, 204,  267,  330,  393,  456,  519,  582,
+  645,  708,  771, 834,  897,  960, 16,   79,   142,  205,  268,  331,  394,
+  457,  520,  583, 646,  709,  772, 835,  898,  961,  17,   80,   143,  206,
+  269,  332,  395, 458,  521,  584, 647,  710,  773,  836,  899,  962,  18,
+  81,   144,  207, 270,  333,  396, 459,  522,  585,  648,  711,  774,  837,
+  900,  963,  19,  82,   145,  208, 271,  334,  397,  460,  523,  586,  649,
+  712,  775,  838, 901,  964,  20,  83,   146,  209,  272,  335,  398,  461,
+  524,  587,  650, 713,  776,  839, 902,  965,  21,   84,   147,  210,  273,
+  336,  399,  462, 525,  588,  651, 714,  777,  840,  903,  966,  22,   85,
+  148,  211,  274, 337,  400,  463, 526,  589,  652,  715,  778,  841,  904,
+  967,  23,   86,  149,  212,  275, 338,  401,  464,  527,  590,  653,  716,
+  779,  842,  905, 968,  24,   87,  150,  213,  276,  339,  402,  465,  528,
+  591,  654,  717, 780,  843,  906, 969,  25,   88,   151,  214,  277,  340,
+  403,  466,  529, 592,  655,  718, 781,  844,  907,  970,  26,   89,   152,
+  215,  278,  341, 404,  467,  530, 593,  656,  719,  782,  845,  908,  971,
+  27,   90,   153, 216,  279,  342, 405,  468,  531,  594,  657,  720,  783,
+  846,  909,  972, 28,   91,   154, 217,  280,  343,  406,  469,  532,  595,
+  658,  721,  784, 847,  910,  973, 29,   92,   155,  218,  281,  344,  407,
+  470,  533,  596, 659,  722,  785, 848,  911,  974,  30,   93,   156,  219,
+  282,  345,  408, 471,  534,  597, 660,  723,  786,  849,  912,  975,  31,
+  94,   157,  220, 283,  346,  409, 472,  535,  598,  661,  724,  787,  850,
+  913,  976,  32,  95,   158,  221, 284,  347,  410,  473,  536,  599,  662,
+  725,  788,  851, 914,  977,  33,  96,   159,  222,  285,  348,  411,  474,
+  537,  600,  663, 726,  789,  852, 915,  978,  34,   97,   160,  223,  286,
+  349,  412,  475, 538,  601,  664, 727,  790,  853,  916,  979,  35,   98,
+  161,  224,  287, 350,  413,  476, 539,  602,  665,  728,  791,  854,  917,
+  980,  36,   99,  162,  225,  288, 351,  414,  477,  540,  603,  666,  729,
+  792,  855,  918, 981,  37,   100, 163,  226,  289,  352,  415,  478,  541,
+  604,  667,  730, 793,  856,  919, 982,  38,   101,  164,  227,  290,  353,
+  416,  479,  542, 605,  668,  731, 794,  857,  920,  983,  39,   102,  165,
+  228,  291,  354, 417,  480,  543, 606,  669,  732,  795,  858,  921,  984,
+  40,   103,  166, 229,  292,  355, 418,  481,  544,  607,  670,  733,  796,
+  859,  922,  985, 41,   104,  167, 230,  293,  356,  419,  482,  545,  608,
+  671,  734,  797, 860,  923,  986, 42,   105,  168,  231,  294,  357,  420,
+  483,  546,  609, 672,  735,  798, 861,  924,  987,  43,   106,  169,  232,
+  295,  358,  421, 484,  547,  610, 673,  736,  799,  862,  925,  988,  44,
+  107,  170,  233, 296,  359,  422, 485,  548,  611,  674,  737,  800,  863,
+  926,  989,  45,  108,  171,  234, 297,  360,  423,  486,  549,  612,  675,
+  738,  801,  864, 927,  990,  46,  109,  172,  235,  298,  361,  424,  487,
+  550,  613,  676, 739,  802,  865, 928,  991,  47,   110,  173,  236,  299,
+  362,  425,  488, 551,  614,  677, 740,  803,  866,  929,  992,  48,   111,
+  174,  237,  300, 363,  426,  489, 552,  615,  678,  741,  804,  867,  930,
+  993,  49,   112, 175,  238,  301, 364,  427,  490,  553,  616,  679,  742,
+  805,  868,  931, 994,  50,   113, 176,  239,  302,  365,  428,  491,  554,
+  617,  680,  743, 806,  869,  932, 995,  51,   114,  177,  240,  303,  366,
+  429,  492,  555, 618,  681,  744, 807,  870,  933,  996,  52,   115,  178,
+  241,  304,  367, 430,  493,  556, 619,  682,  745,  808,  871,  934,  997,
+  53,   116,  179, 242,  305,  368, 431,  494,  557,  620,  683,  746,  809,
+  872,  935,  998, 54,   117,  180, 243,  306,  369,  432,  495,  558,  621,
+  684,  747,  810, 873,  936,  999, 55,   118,  181,  244,  307,  370,  433,
+  496,  559,  622, 685,  748,  811, 874,  937,  1000, 56,   119,  182,  245,
+  308,  371,  434, 497,  560,  623, 686,  749,  812,  875,  938,  1001, 57,
+  120,  183,  246, 309,  372,  435, 498,  561,  624,  687,  750,  813,  876,
+  939,  1002, 58,  121,  184,  247, 310,  373,  436,  499,  562,  625,  688,
+  751,  814,  877, 940,  1003, 59,  122,  185,  248,  311,  374,  437,  500,
+  563,  626,  689, 752,  815,  878, 941,  1004, 60,   123,  186,  249,  312,
+  375,  438,  501, 564,  627,  690, 753,  816,  879,  942,  1005, 61,   124,
+  187,  250,  313, 376,  439,  502, 565,  628,  691,  754,  817,  880,  943,
+  1006, 62,   125, 188,  251,  314, 377,  440,  503,  566,  629,  692,  755,
+  818,  881,  944, 1007, 63,   126, 189,  252,  315,  378,  441,  504,  567,
+  630,  693,  756, 819,  882,  945, 1008, 127,  190,  253,  316,  379,  442,
+  505,  568,  631, 694,  757,  820, 883,  946,  1009, 191,  254,  317,  380,
+  443,  506,  569, 632,  695,  758, 821,  884,  947,  1010, 255,  318,  381,
+  444,  507,  570, 633,  696,  759, 822,  885,  948,  1011, 319,  382,  445,
+  508,  571,  634, 697,  760,  823, 886,  949,  1012, 383,  446,  509,  572,
+  635,  698,  761, 824,  887,  950, 1013, 447,  510,  573,  636,  699,  762,
+  825,  888,  951, 1014, 511,  574, 637,  700,  763,  826,  889,  952,  1015,
+  575,  638,  701, 764,  827,  890, 953,  1016, 639,  702,  765,  828,  891,
+  954,  1017, 703, 766,  829,  892, 955,  1018, 767,  830,  893,  956,  1019,
+  831,  894,  957, 1020, 895,  958, 1021, 959,  1022, 1023,
+};
 #endif  // CONFIG_TX64X64
 
 // Neighborhood 2-tuples for various scans and blocksizes,
@@ -3266,6 +3430,319 @@
 #define default_scan_32x64_neighbors default_scan_32x32_neighbors
 #define default_scan_64x32_neighbors default_scan_32x32_neighbors
 #define default_scan_64x64_neighbors default_scan_32x32_neighbors
+
+DECLARE_ALIGNED(16, static const int16_t,
+                default_scan_16x64_neighbors[1025 * MAX_NEIGHBORS]) = {
+  0,    0,    0,    0,    0,    0,    1,    1,    1,   16,  16,   16,   2,
+  2,    2,    17,   17,   32,   32,   32,   3,    3,   3,   18,   18,   33,
+  33,   48,   48,   48,   4,    4,    4,    19,   19,  34,  34,   49,   49,
+  64,   64,   64,   5,    5,    5,    20,   20,   35,  35,  50,   50,   65,
+  65,   80,   80,   80,   6,    6,    6,    21,   21,  36,  36,   51,   51,
+  66,   66,   81,   81,   96,   96,   96,   7,    7,   7,   22,   22,   37,
+  37,   52,   52,   67,   67,   82,   82,   97,   97,  112, 112,  112,  8,
+  8,    8,    23,   23,   38,   38,   53,   53,   68,  68,  83,   83,   98,
+  98,   113,  113,  128,  128,  128,  9,    9,    9,   24,  24,   39,   39,
+  54,   54,   69,   69,   84,   84,   99,   99,   114, 114, 129,  129,  144,
+  144,  144,  10,   10,   10,   25,   25,   40,   40,  55,  55,   70,   70,
+  85,   85,   100,  100,  115,  115,  130,  130,  145, 145, 160,  160,  160,
+  11,   11,   11,   26,   26,   41,   41,   56,   56,  71,  71,   86,   86,
+  101,  101,  116,  116,  131,  131,  146,  146,  161, 161, 176,  176,  176,
+  12,   12,   12,   27,   27,   42,   42,   57,   57,  72,  72,   87,   87,
+  102,  102,  117,  117,  132,  132,  147,  147,  162, 162, 177,  177,  192,
+  192,  192,  13,   13,   13,   28,   28,   43,   43,  58,  58,   73,   73,
+  88,   88,   103,  103,  118,  118,  133,  133,  148, 148, 163,  163,  178,
+  178,  193,  193,  208,  208,  208,  14,   14,   14,  29,  29,   44,   44,
+  59,   59,   74,   74,   89,   89,   104,  104,  119, 119, 134,  134,  149,
+  149,  164,  164,  179,  179,  194,  194,  209,  209, 224, 224,  224,  15,
+  30,   30,   45,   45,   60,   60,   75,   75,   90,  90,  105,  105,  120,
+  120,  135,  135,  150,  150,  165,  165,  180,  180, 195, 195,  210,  210,
+  225,  225,  240,  240,  240,  31,   46,   46,   61,  61,  76,   76,   91,
+  91,   106,  106,  121,  121,  136,  136,  151,  151, 166, 166,  181,  181,
+  196,  196,  211,  211,  226,  226,  241,  241,  256, 256, 256,  47,   62,
+  62,   77,   77,   92,   92,   107,  107,  122,  122, 137, 137,  152,  152,
+  167,  167,  182,  182,  197,  197,  212,  212,  227, 227, 242,  242,  257,
+  257,  272,  272,  272,  63,   78,   78,   93,   93,  108, 108,  123,  123,
+  138,  138,  153,  153,  168,  168,  183,  183,  198, 198, 213,  213,  228,
+  228,  243,  243,  258,  258,  273,  273,  288,  288, 288, 79,   94,   94,
+  109,  109,  124,  124,  139,  139,  154,  154,  169, 169, 184,  184,  199,
+  199,  214,  214,  229,  229,  244,  244,  259,  259, 274, 274,  289,  289,
+  304,  304,  304,  95,   110,  110,  125,  125,  140, 140, 155,  155,  170,
+  170,  185,  185,  200,  200,  215,  215,  230,  230, 245, 245,  260,  260,
+  275,  275,  290,  290,  305,  305,  320,  320,  320, 111, 126,  126,  141,
+  141,  156,  156,  171,  171,  186,  186,  201,  201, 216, 216,  231,  231,
+  246,  246,  261,  261,  276,  276,  291,  291,  306, 306, 321,  321,  336,
+  336,  336,  127,  142,  142,  157,  157,  172,  172, 187, 187,  202,  202,
+  217,  217,  232,  232,  247,  247,  262,  262,  277, 277, 292,  292,  307,
+  307,  322,  322,  337,  337,  352,  352,  352,  143, 158, 158,  173,  173,
+  188,  188,  203,  203,  218,  218,  233,  233,  248, 248, 263,  263,  278,
+  278,  293,  293,  308,  308,  323,  323,  338,  338, 353, 353,  368,  368,
+  368,  159,  174,  174,  189,  189,  204,  204,  219, 219, 234,  234,  249,
+  249,  264,  264,  279,  279,  294,  294,  309,  309, 324, 324,  339,  339,
+  354,  354,  369,  369,  384,  384,  384,  175,  190, 190, 205,  205,  220,
+  220,  235,  235,  250,  250,  265,  265,  280,  280, 295, 295,  310,  310,
+  325,  325,  340,  340,  355,  355,  370,  370,  385, 385, 400,  400,  400,
+  191,  206,  206,  221,  221,  236,  236,  251,  251, 266, 266,  281,  281,
+  296,  296,  311,  311,  326,  326,  341,  341,  356, 356, 371,  371,  386,
+  386,  401,  401,  416,  416,  416,  207,  222,  222, 237, 237,  252,  252,
+  267,  267,  282,  282,  297,  297,  312,  312,  327, 327, 342,  342,  357,
+  357,  372,  372,  387,  387,  402,  402,  417,  417, 432, 432,  432,  223,
+  238,  238,  253,  253,  268,  268,  283,  283,  298, 298, 313,  313,  328,
+  328,  343,  343,  358,  358,  373,  373,  388,  388, 403, 403,  418,  418,
+  433,  433,  448,  448,  448,  239,  254,  254,  269, 269, 284,  284,  299,
+  299,  314,  314,  329,  329,  344,  344,  359,  359, 374, 374,  389,  389,
+  404,  404,  419,  419,  434,  434,  449,  449,  464, 464, 464,  255,  270,
+  270,  285,  285,  300,  300,  315,  315,  330,  330, 345, 345,  360,  360,
+  375,  375,  390,  390,  405,  405,  420,  420,  435, 435, 450,  450,  465,
+  465,  480,  480,  480,  271,  286,  286,  301,  301, 316, 316,  331,  331,
+  346,  346,  361,  361,  376,  376,  391,  391,  406, 406, 421,  421,  436,
+  436,  451,  451,  466,  466,  481,  481,  496,  496, 496, 287,  302,  302,
+  317,  317,  332,  332,  347,  347,  362,  362,  377, 377, 392,  392,  407,
+  407,  422,  422,  437,  437,  452,  452,  467,  467, 482, 482,  497,  497,
+  512,  512,  512,  303,  318,  318,  333,  333,  348, 348, 363,  363,  378,
+  378,  393,  393,  408,  408,  423,  423,  438,  438, 453, 453,  468,  468,
+  483,  483,  498,  498,  513,  513,  528,  528,  528, 319, 334,  334,  349,
+  349,  364,  364,  379,  379,  394,  394,  409,  409, 424, 424,  439,  439,
+  454,  454,  469,  469,  484,  484,  499,  499,  514, 514, 529,  529,  544,
+  544,  544,  335,  350,  350,  365,  365,  380,  380, 395, 395,  410,  410,
+  425,  425,  440,  440,  455,  455,  470,  470,  485, 485, 500,  500,  515,
+  515,  530,  530,  545,  545,  560,  560,  560,  351, 366, 366,  381,  381,
+  396,  396,  411,  411,  426,  426,  441,  441,  456, 456, 471,  471,  486,
+  486,  501,  501,  516,  516,  531,  531,  546,  546, 561, 561,  576,  576,
+  576,  367,  382,  382,  397,  397,  412,  412,  427, 427, 442,  442,  457,
+  457,  472,  472,  487,  487,  502,  502,  517,  517, 532, 532,  547,  547,
+  562,  562,  577,  577,  592,  592,  592,  383,  398, 398, 413,  413,  428,
+  428,  443,  443,  458,  458,  473,  473,  488,  488, 503, 503,  518,  518,
+  533,  533,  548,  548,  563,  563,  578,  578,  593, 593, 608,  608,  608,
+  399,  414,  414,  429,  429,  444,  444,  459,  459, 474, 474,  489,  489,
+  504,  504,  519,  519,  534,  534,  549,  549,  564, 564, 579,  579,  594,
+  594,  609,  609,  624,  624,  624,  415,  430,  430, 445, 445,  460,  460,
+  475,  475,  490,  490,  505,  505,  520,  520,  535, 535, 550,  550,  565,
+  565,  580,  580,  595,  595,  610,  610,  625,  625, 640, 640,  640,  431,
+  446,  446,  461,  461,  476,  476,  491,  491,  506, 506, 521,  521,  536,
+  536,  551,  551,  566,  566,  581,  581,  596,  596, 611, 611,  626,  626,
+  641,  641,  656,  656,  656,  447,  462,  462,  477, 477, 492,  492,  507,
+  507,  522,  522,  537,  537,  552,  552,  567,  567, 582, 582,  597,  597,
+  612,  612,  627,  627,  642,  642,  657,  657,  672, 672, 672,  463,  478,
+  478,  493,  493,  508,  508,  523,  523,  538,  538, 553, 553,  568,  568,
+  583,  583,  598,  598,  613,  613,  628,  628,  643, 643, 658,  658,  673,
+  673,  688,  688,  688,  479,  494,  494,  509,  509, 524, 524,  539,  539,
+  554,  554,  569,  569,  584,  584,  599,  599,  614, 614, 629,  629,  644,
+  644,  659,  659,  674,  674,  689,  689,  704,  704, 704, 495,  510,  510,
+  525,  525,  540,  540,  555,  555,  570,  570,  585, 585, 600,  600,  615,
+  615,  630,  630,  645,  645,  660,  660,  675,  675, 690, 690,  705,  705,
+  720,  720,  720,  511,  526,  526,  541,  541,  556, 556, 571,  571,  586,
+  586,  601,  601,  616,  616,  631,  631,  646,  646, 661, 661,  676,  676,
+  691,  691,  706,  706,  721,  721,  736,  736,  736, 527, 542,  542,  557,
+  557,  572,  572,  587,  587,  602,  602,  617,  617, 632, 632,  647,  647,
+  662,  662,  677,  677,  692,  692,  707,  707,  722, 722, 737,  737,  752,
+  752,  752,  543,  558,  558,  573,  573,  588,  588, 603, 603,  618,  618,
+  633,  633,  648,  648,  663,  663,  678,  678,  693, 693, 708,  708,  723,
+  723,  738,  738,  753,  753,  768,  768,  768,  559, 574, 574,  589,  589,
+  604,  604,  619,  619,  634,  634,  649,  649,  664, 664, 679,  679,  694,
+  694,  709,  709,  724,  724,  739,  739,  754,  754, 769, 769,  784,  784,
+  784,  575,  590,  590,  605,  605,  620,  620,  635, 635, 650,  650,  665,
+  665,  680,  680,  695,  695,  710,  710,  725,  725, 740, 740,  755,  755,
+  770,  770,  785,  785,  800,  800,  800,  591,  606, 606, 621,  621,  636,
+  636,  651,  651,  666,  666,  681,  681,  696,  696, 711, 711,  726,  726,
+  741,  741,  756,  756,  771,  771,  786,  786,  801, 801, 816,  816,  816,
+  607,  622,  622,  637,  637,  652,  652,  667,  667, 682, 682,  697,  697,
+  712,  712,  727,  727,  742,  742,  757,  757,  772, 772, 787,  787,  802,
+  802,  817,  817,  832,  832,  832,  623,  638,  638, 653, 653,  668,  668,
+  683,  683,  698,  698,  713,  713,  728,  728,  743, 743, 758,  758,  773,
+  773,  788,  788,  803,  803,  818,  818,  833,  833, 848, 848,  848,  639,
+  654,  654,  669,  669,  684,  684,  699,  699,  714, 714, 729,  729,  744,
+  744,  759,  759,  774,  774,  789,  789,  804,  804, 819, 819,  834,  834,
+  849,  849,  864,  864,  864,  655,  670,  670,  685, 685, 700,  700,  715,
+  715,  730,  730,  745,  745,  760,  760,  775,  775, 790, 790,  805,  805,
+  820,  820,  835,  835,  850,  850,  865,  865,  880, 880, 880,  671,  686,
+  686,  701,  701,  716,  716,  731,  731,  746,  746, 761, 761,  776,  776,
+  791,  791,  806,  806,  821,  821,  836,  836,  851, 851, 866,  866,  881,
+  881,  896,  896,  896,  687,  702,  702,  717,  717, 732, 732,  747,  747,
+  762,  762,  777,  777,  792,  792,  807,  807,  822, 822, 837,  837,  852,
+  852,  867,  867,  882,  882,  897,  897,  912,  912, 912, 703,  718,  718,
+  733,  733,  748,  748,  763,  763,  778,  778,  793, 793, 808,  808,  823,
+  823,  838,  838,  853,  853,  868,  868,  883,  883, 898, 898,  913,  913,
+  928,  928,  928,  719,  734,  734,  749,  749,  764, 764, 779,  779,  794,
+  794,  809,  809,  824,  824,  839,  839,  854,  854, 869, 869,  884,  884,
+  899,  899,  914,  914,  929,  929,  944,  944,  944, 735, 750,  750,  765,
+  765,  780,  780,  795,  795,  810,  810,  825,  825, 840, 840,  855,  855,
+  870,  870,  885,  885,  900,  900,  915,  915,  930, 930, 945,  945,  960,
+  960,  960,  751,  766,  766,  781,  781,  796,  796, 811, 811,  826,  826,
+  841,  841,  856,  856,  871,  871,  886,  886,  901, 901, 916,  916,  931,
+  931,  946,  946,  961,  961,  976,  976,  976,  767, 782, 782,  797,  797,
+  812,  812,  827,  827,  842,  842,  857,  857,  872, 872, 887,  887,  902,
+  902,  917,  917,  932,  932,  947,  947,  962,  962, 977, 977,  992,  992,
+  992,  783,  798,  798,  813,  813,  828,  828,  843, 843, 858,  858,  873,
+  873,  888,  888,  903,  903,  918,  918,  933,  933, 948, 948,  963,  963,
+  978,  978,  993,  993,  1008, 799,  814,  814,  829, 829, 844,  844,  859,
+  859,  874,  874,  889,  889,  904,  904,  919,  919, 934, 934,  949,  949,
+  964,  964,  979,  979,  994,  994,  1009, 815,  830, 830, 845,  845,  860,
+  860,  875,  875,  890,  890,  905,  905,  920,  920, 935, 935,  950,  950,
+  965,  965,  980,  980,  995,  995,  1010, 831,  846, 846, 861,  861,  876,
+  876,  891,  891,  906,  906,  921,  921,  936,  936, 951, 951,  966,  966,
+  981,  981,  996,  996,  1011, 847,  862,  862,  877, 877, 892,  892,  907,
+  907,  922,  922,  937,  937,  952,  952,  967,  967, 982, 982,  997,  997,
+  1012, 863,  878,  878,  893,  893,  908,  908,  923, 923, 938,  938,  953,
+  953,  968,  968,  983,  983,  998,  998,  1013, 879, 894, 894,  909,  909,
+  924,  924,  939,  939,  954,  954,  969,  969,  984, 984, 999,  999,  1014,
+  895,  910,  910,  925,  925,  940,  940,  955,  955, 970, 970,  985,  985,
+  1000, 1000, 1015, 911,  926,  926,  941,  941,  956, 956, 971,  971,  986,
+  986,  1001, 1001, 1016, 927,  942,  942,  957,  957, 972, 972,  987,  987,
+  1002, 1002, 1017, 943,  958,  958,  973,  973,  988, 988, 1003, 1003, 1018,
+  959,  974,  974,  989,  989,  1004, 1004, 1019, 975, 990, 990,  1005, 1005,
+  1020, 991,  1006, 1006, 1021, 1007, 1022, 0,    0
+};
+
+DECLARE_ALIGNED(16, static const int16_t,
+                default_scan_64x16_neighbors[1025 * MAX_NEIGHBORS]) = {
+  0,   0,    0,   0,    0,   0,    1,   1,    1,   64,   64,  64,   2,   2,
+  2,   65,   65,  128,  128, 128,  3,   3,    3,   66,   66,  129,  129, 192,
+  192, 192,  4,   4,    4,   67,   67,  130,  130, 193,  193, 256,  256, 256,
+  5,   5,    5,   68,   68,  131,  131, 194,  194, 257,  257, 320,  320, 320,
+  6,   6,    6,   69,   69,  132,  132, 195,  195, 258,  258, 321,  321, 384,
+  384, 384,  7,   7,    7,   70,   70,  133,  133, 196,  196, 259,  259, 322,
+  322, 385,  385, 448,  448, 448,  8,   8,    8,   71,   71,  134,  134, 197,
+  197, 260,  260, 323,  323, 386,  386, 449,  449, 512,  512, 512,  9,   9,
+  9,   72,   72,  135,  135, 198,  198, 261,  261, 324,  324, 387,  387, 450,
+  450, 513,  513, 576,  576, 576,  10,  10,   10,  73,   73,  136,  136, 199,
+  199, 262,  262, 325,  325, 388,  388, 451,  451, 514,  514, 577,  577, 640,
+  640, 640,  11,  11,   11,  74,   74,  137,  137, 200,  200, 263,  263, 326,
+  326, 389,  389, 452,  452, 515,  515, 578,  578, 641,  641, 704,  704, 704,
+  12,  12,   12,  75,   75,  138,  138, 201,  201, 264,  264, 327,  327, 390,
+  390, 453,  453, 516,  516, 579,  579, 642,  642, 705,  705, 768,  768, 768,
+  13,  13,   13,  76,   76,  139,  139, 202,  202, 265,  265, 328,  328, 391,
+  391, 454,  454, 517,  517, 580,  580, 643,  643, 706,  706, 769,  769, 832,
+  832, 832,  14,  14,   14,  77,   77,  140,  140, 203,  203, 266,  266, 329,
+  329, 392,  392, 455,  455, 518,  518, 581,  581, 644,  644, 707,  707, 770,
+  770, 833,  833, 896,  896, 896,  15,  15,   15,  78,   78,  141,  141, 204,
+  204, 267,  267, 330,  330, 393,  393, 456,  456, 519,  519, 582,  582, 645,
+  645, 708,  708, 771,  771, 834,  834, 897,  897, 960,  16,  16,   16,  79,
+  79,  142,  142, 205,  205, 268,  268, 331,  331, 394,  394, 457,  457, 520,
+  520, 583,  583, 646,  646, 709,  709, 772,  772, 835,  835, 898,  898, 961,
+  17,  17,   17,  80,   80,  143,  143, 206,  206, 269,  269, 332,  332, 395,
+  395, 458,  458, 521,  521, 584,  584, 647,  647, 710,  710, 773,  773, 836,
+  836, 899,  899, 962,  18,  18,   18,  81,   81,  144,  144, 207,  207, 270,
+  270, 333,  333, 396,  396, 459,  459, 522,  522, 585,  585, 648,  648, 711,
+  711, 774,  774, 837,  837, 900,  900, 963,  19,  19,   19,  82,   82,  145,
+  145, 208,  208, 271,  271, 334,  334, 397,  397, 460,  460, 523,  523, 586,
+  586, 649,  649, 712,  712, 775,  775, 838,  838, 901,  901, 964,  20,  20,
+  20,  83,   83,  146,  146, 209,  209, 272,  272, 335,  335, 398,  398, 461,
+  461, 524,  524, 587,  587, 650,  650, 713,  713, 776,  776, 839,  839, 902,
+  902, 965,  21,  21,   21,  84,   84,  147,  147, 210,  210, 273,  273, 336,
+  336, 399,  399, 462,  462, 525,  525, 588,  588, 651,  651, 714,  714, 777,
+  777, 840,  840, 903,  903, 966,  22,  22,   22,  85,   85,  148,  148, 211,
+  211, 274,  274, 337,  337, 400,  400, 463,  463, 526,  526, 589,  589, 652,
+  652, 715,  715, 778,  778, 841,  841, 904,  904, 967,  23,  23,   23,  86,
+  86,  149,  149, 212,  212, 275,  275, 338,  338, 401,  401, 464,  464, 527,
+  527, 590,  590, 653,  653, 716,  716, 779,  779, 842,  842, 905,  905, 968,
+  24,  24,   24,  87,   87,  150,  150, 213,  213, 276,  276, 339,  339, 402,
+  402, 465,  465, 528,  528, 591,  591, 654,  654, 717,  717, 780,  780, 843,
+  843, 906,  906, 969,  25,  25,   25,  88,   88,  151,  151, 214,  214, 277,
+  277, 340,  340, 403,  403, 466,  466, 529,  529, 592,  592, 655,  655, 718,
+  718, 781,  781, 844,  844, 907,  907, 970,  26,  26,   26,  89,   89,  152,
+  152, 215,  215, 278,  278, 341,  341, 404,  404, 467,  467, 530,  530, 593,
+  593, 656,  656, 719,  719, 782,  782, 845,  845, 908,  908, 971,  27,  27,
+  27,  90,   90,  153,  153, 216,  216, 279,  279, 342,  342, 405,  405, 468,
+  468, 531,  531, 594,  594, 657,  657, 720,  720, 783,  783, 846,  846, 909,
+  909, 972,  28,  28,   28,  91,   91,  154,  154, 217,  217, 280,  280, 343,
+  343, 406,  406, 469,  469, 532,  532, 595,  595, 658,  658, 721,  721, 784,
+  784, 847,  847, 910,  910, 973,  29,  29,   29,  92,   92,  155,  155, 218,
+  218, 281,  281, 344,  344, 407,  407, 470,  470, 533,  533, 596,  596, 659,
+  659, 722,  722, 785,  785, 848,  848, 911,  911, 974,  30,  30,   30,  93,
+  93,  156,  156, 219,  219, 282,  282, 345,  345, 408,  408, 471,  471, 534,
+  534, 597,  597, 660,  660, 723,  723, 786,  786, 849,  849, 912,  912, 975,
+  31,  31,   31,  94,   94,  157,  157, 220,  220, 283,  283, 346,  346, 409,
+  409, 472,  472, 535,  535, 598,  598, 661,  661, 724,  724, 787,  787, 850,
+  850, 913,  913, 976,  32,  32,   32,  95,   95,  158,  158, 221,  221, 284,
+  284, 347,  347, 410,  410, 473,  473, 536,  536, 599,  599, 662,  662, 725,
+  725, 788,  788, 851,  851, 914,  914, 977,  33,  33,   33,  96,   96,  159,
+  159, 222,  222, 285,  285, 348,  348, 411,  411, 474,  474, 537,  537, 600,
+  600, 663,  663, 726,  726, 789,  789, 852,  852, 915,  915, 978,  34,  34,
+  34,  97,   97,  160,  160, 223,  223, 286,  286, 349,  349, 412,  412, 475,
+  475, 538,  538, 601,  601, 664,  664, 727,  727, 790,  790, 853,  853, 916,
+  916, 979,  35,  35,   35,  98,   98,  161,  161, 224,  224, 287,  287, 350,
+  350, 413,  413, 476,  476, 539,  539, 602,  602, 665,  665, 728,  728, 791,
+  791, 854,  854, 917,  917, 980,  36,  36,   36,  99,   99,  162,  162, 225,
+  225, 288,  288, 351,  351, 414,  414, 477,  477, 540,  540, 603,  603, 666,
+  666, 729,  729, 792,  792, 855,  855, 918,  918, 981,  37,  37,   37,  100,
+  100, 163,  163, 226,  226, 289,  289, 352,  352, 415,  415, 478,  478, 541,
+  541, 604,  604, 667,  667, 730,  730, 793,  793, 856,  856, 919,  919, 982,
+  38,  38,   38,  101,  101, 164,  164, 227,  227, 290,  290, 353,  353, 416,
+  416, 479,  479, 542,  542, 605,  605, 668,  668, 731,  731, 794,  794, 857,
+  857, 920,  920, 983,  39,  39,   39,  102,  102, 165,  165, 228,  228, 291,
+  291, 354,  354, 417,  417, 480,  480, 543,  543, 606,  606, 669,  669, 732,
+  732, 795,  795, 858,  858, 921,  921, 984,  40,  40,   40,  103,  103, 166,
+  166, 229,  229, 292,  292, 355,  355, 418,  418, 481,  481, 544,  544, 607,
+  607, 670,  670, 733,  733, 796,  796, 859,  859, 922,  922, 985,  41,  41,
+  41,  104,  104, 167,  167, 230,  230, 293,  293, 356,  356, 419,  419, 482,
+  482, 545,  545, 608,  608, 671,  671, 734,  734, 797,  797, 860,  860, 923,
+  923, 986,  42,  42,   42,  105,  105, 168,  168, 231,  231, 294,  294, 357,
+  357, 420,  420, 483,  483, 546,  546, 609,  609, 672,  672, 735,  735, 798,
+  798, 861,  861, 924,  924, 987,  43,  43,   43,  106,  106, 169,  169, 232,
+  232, 295,  295, 358,  358, 421,  421, 484,  484, 547,  547, 610,  610, 673,
+  673, 736,  736, 799,  799, 862,  862, 925,  925, 988,  44,  44,   44,  107,
+  107, 170,  170, 233,  233, 296,  296, 359,  359, 422,  422, 485,  485, 548,
+  548, 611,  611, 674,  674, 737,  737, 800,  800, 863,  863, 926,  926, 989,
+  45,  45,   45,  108,  108, 171,  171, 234,  234, 297,  297, 360,  360, 423,
+  423, 486,  486, 549,  549, 612,  612, 675,  675, 738,  738, 801,  801, 864,
+  864, 927,  927, 990,  46,  46,   46,  109,  109, 172,  172, 235,  235, 298,
+  298, 361,  361, 424,  424, 487,  487, 550,  550, 613,  613, 676,  676, 739,
+  739, 802,  802, 865,  865, 928,  928, 991,  47,  47,   47,  110,  110, 173,
+  173, 236,  236, 299,  299, 362,  362, 425,  425, 488,  488, 551,  551, 614,
+  614, 677,  677, 740,  740, 803,  803, 866,  866, 929,  929, 992,  48,  48,
+  48,  111,  111, 174,  174, 237,  237, 300,  300, 363,  363, 426,  426, 489,
+  489, 552,  552, 615,  615, 678,  678, 741,  741, 804,  804, 867,  867, 930,
+  930, 993,  49,  49,   49,  112,  112, 175,  175, 238,  238, 301,  301, 364,
+  364, 427,  427, 490,  490, 553,  553, 616,  616, 679,  679, 742,  742, 805,
+  805, 868,  868, 931,  931, 994,  50,  50,   50,  113,  113, 176,  176, 239,
+  239, 302,  302, 365,  365, 428,  428, 491,  491, 554,  554, 617,  617, 680,
+  680, 743,  743, 806,  806, 869,  869, 932,  932, 995,  51,  51,   51,  114,
+  114, 177,  177, 240,  240, 303,  303, 366,  366, 429,  429, 492,  492, 555,
+  555, 618,  618, 681,  681, 744,  744, 807,  807, 870,  870, 933,  933, 996,
+  52,  52,   52,  115,  115, 178,  178, 241,  241, 304,  304, 367,  367, 430,
+  430, 493,  493, 556,  556, 619,  619, 682,  682, 745,  745, 808,  808, 871,
+  871, 934,  934, 997,  53,  53,   53,  116,  116, 179,  179, 242,  242, 305,
+  305, 368,  368, 431,  431, 494,  494, 557,  557, 620,  620, 683,  683, 746,
+  746, 809,  809, 872,  872, 935,  935, 998,  54,  54,   54,  117,  117, 180,
+  180, 243,  243, 306,  306, 369,  369, 432,  432, 495,  495, 558,  558, 621,
+  621, 684,  684, 747,  747, 810,  810, 873,  873, 936,  936, 999,  55,  55,
+  55,  118,  118, 181,  181, 244,  244, 307,  307, 370,  370, 433,  433, 496,
+  496, 559,  559, 622,  622, 685,  685, 748,  748, 811,  811, 874,  874, 937,
+  937, 1000, 56,  56,   56,  119,  119, 182,  182, 245,  245, 308,  308, 371,
+  371, 434,  434, 497,  497, 560,  560, 623,  623, 686,  686, 749,  749, 812,
+  812, 875,  875, 938,  938, 1001, 57,  57,   57,  120,  120, 183,  183, 246,
+  246, 309,  309, 372,  372, 435,  435, 498,  498, 561,  561, 624,  624, 687,
+  687, 750,  750, 813,  813, 876,  876, 939,  939, 1002, 58,  58,   58,  121,
+  121, 184,  184, 247,  247, 310,  310, 373,  373, 436,  436, 499,  499, 562,
+  562, 625,  625, 688,  688, 751,  751, 814,  814, 877,  877, 940,  940, 1003,
+  59,  59,   59,  122,  122, 185,  185, 248,  248, 311,  311, 374,  374, 437,
+  437, 500,  500, 563,  563, 626,  626, 689,  689, 752,  752, 815,  815, 878,
+  878, 941,  941, 1004, 60,  60,   60,  123,  123, 186,  186, 249,  249, 312,
+  312, 375,  375, 438,  438, 501,  501, 564,  564, 627,  627, 690,  690, 753,
+  753, 816,  816, 879,  879, 942,  942, 1005, 61,  61,   61,  124,  124, 187,
+  187, 250,  250, 313,  313, 376,  376, 439,  439, 502,  502, 565,  565, 628,
+  628, 691,  691, 754,  754, 817,  817, 880,  880, 943,  943, 1006, 62,  62,
+  62,  125,  125, 188,  188, 251,  251, 314,  314, 377,  377, 440,  440, 503,
+  503, 566,  566, 629,  629, 692,  692, 755,  755, 818,  818, 881,  881, 944,
+  944, 1007, 63,  126,  126, 189,  189, 252,  252, 315,  315, 378,  378, 441,
+  441, 504,  504, 567,  567, 630,  630, 693,  693, 756,  756, 819,  819, 882,
+  882, 945,  945, 1008, 127, 190,  190, 253,  253, 316,  316, 379,  379, 442,
+  442, 505,  505, 568,  568, 631,  631, 694,  694, 757,  757, 820,  820, 883,
+  883, 946,  946, 1009, 191, 254,  254, 317,  317, 380,  380, 443,  443, 506,
+  506, 569,  569, 632,  632, 695,  695, 758,  758, 821,  821, 884,  884, 947,
+  947, 1010, 255, 318,  318, 381,  381, 444,  444, 507,  507, 570,  570, 633,
+  633, 696,  696, 759,  759, 822,  822, 885,  885, 948,  948, 1011, 319, 382,
+  382, 445,  445, 508,  508, 571,  571, 634,  634, 697,  697, 760,  760, 823,
+  823, 886,  886, 949,  949, 1012, 383, 446,  446, 509,  509, 572,  572, 635,
+  635, 698,  698, 761,  761, 824,  824, 887,  887, 950,  950, 1013, 447, 510,
+  510, 573,  573, 636,  636, 699,  699, 762,  762, 825,  825, 888,  888, 951,
+  951, 1014, 511, 574,  574, 637,  637, 700,  700, 763,  763, 826,  826, 889,
+  889, 952,  952, 1015, 575, 638,  638, 701,  701, 764,  764, 827,  827, 890,
+  890, 953,  953, 1016, 639, 702,  702, 765,  765, 828,  828, 891,  891, 954,
+  954, 1017, 703, 766,  766, 829,  829, 892,  892, 955,  955, 1018, 767, 830,
+  830, 893,  893, 956,  956, 1019, 831, 894,  894, 957,  957, 1020, 895, 958,
+  958, 1021, 959, 1022, 0,   0
+};
 #endif  // CONFIG_TX64X64
 
 DECLARE_ALIGNED(16, static const int16_t, av1_default_iscan_4x4[16]) = {
@@ -4403,6 +4880,170 @@
 #define av1_default_iscan_32x64 av1_default_iscan_32x32
 #define av1_default_iscan_64x32 av1_default_iscan_32x32
 #define av1_default_iscan_64x64 av1_default_iscan_32x32
+
+DECLARE_ALIGNED(16, static const int16_t, av1_default_iscan_16x64[1024]) = {
+  0,    1,    3,    6,    10,   15,   21,   28,   36,   45,   55,   66,   78,
+  91,   105,  120,  2,    4,    7,    11,   16,   22,   29,   37,   46,   56,
+  67,   79,   92,   106,  121,  136,  5,    8,    12,   17,   23,   30,   38,
+  47,   57,   68,   80,   93,   107,  122,  137,  152,  9,    13,   18,   24,
+  31,   39,   48,   58,   69,   81,   94,   108,  123,  138,  153,  168,  14,
+  19,   25,   32,   40,   49,   59,   70,   82,   95,   109,  124,  139,  154,
+  169,  184,  20,   26,   33,   41,   50,   60,   71,   83,   96,   110,  125,
+  140,  155,  170,  185,  200,  27,   34,   42,   51,   61,   72,   84,   97,
+  111,  126,  141,  156,  171,  186,  201,  216,  35,   43,   52,   62,   73,
+  85,   98,   112,  127,  142,  157,  172,  187,  202,  217,  232,  44,   53,
+  63,   74,   86,   99,   113,  128,  143,  158,  173,  188,  203,  218,  233,
+  248,  54,   64,   75,   87,   100,  114,  129,  144,  159,  174,  189,  204,
+  219,  234,  249,  264,  65,   76,   88,   101,  115,  130,  145,  160,  175,
+  190,  205,  220,  235,  250,  265,  280,  77,   89,   102,  116,  131,  146,
+  161,  176,  191,  206,  221,  236,  251,  266,  281,  296,  90,   103,  117,
+  132,  147,  162,  177,  192,  207,  222,  237,  252,  267,  282,  297,  312,
+  104,  118,  133,  148,  163,  178,  193,  208,  223,  238,  253,  268,  283,
+  298,  313,  328,  119,  134,  149,  164,  179,  194,  209,  224,  239,  254,
+  269,  284,  299,  314,  329,  344,  135,  150,  165,  180,  195,  210,  225,
+  240,  255,  270,  285,  300,  315,  330,  345,  360,  151,  166,  181,  196,
+  211,  226,  241,  256,  271,  286,  301,  316,  331,  346,  361,  376,  167,
+  182,  197,  212,  227,  242,  257,  272,  287,  302,  317,  332,  347,  362,
+  377,  392,  183,  198,  213,  228,  243,  258,  273,  288,  303,  318,  333,
+  348,  363,  378,  393,  408,  199,  214,  229,  244,  259,  274,  289,  304,
+  319,  334,  349,  364,  379,  394,  409,  424,  215,  230,  245,  260,  275,
+  290,  305,  320,  335,  350,  365,  380,  395,  410,  425,  440,  231,  246,
+  261,  276,  291,  306,  321,  336,  351,  366,  381,  396,  411,  426,  441,
+  456,  247,  262,  277,  292,  307,  322,  337,  352,  367,  382,  397,  412,
+  427,  442,  457,  472,  263,  278,  293,  308,  323,  338,  353,  368,  383,
+  398,  413,  428,  443,  458,  473,  488,  279,  294,  309,  324,  339,  354,
+  369,  384,  399,  414,  429,  444,  459,  474,  489,  504,  295,  310,  325,
+  340,  355,  370,  385,  400,  415,  430,  445,  460,  475,  490,  505,  520,
+  311,  326,  341,  356,  371,  386,  401,  416,  431,  446,  461,  476,  491,
+  506,  521,  536,  327,  342,  357,  372,  387,  402,  417,  432,  447,  462,
+  477,  492,  507,  522,  537,  552,  343,  358,  373,  388,  403,  418,  433,
+  448,  463,  478,  493,  508,  523,  538,  553,  568,  359,  374,  389,  404,
+  419,  434,  449,  464,  479,  494,  509,  524,  539,  554,  569,  584,  375,
+  390,  405,  420,  435,  450,  465,  480,  495,  510,  525,  540,  555,  570,
+  585,  600,  391,  406,  421,  436,  451,  466,  481,  496,  511,  526,  541,
+  556,  571,  586,  601,  616,  407,  422,  437,  452,  467,  482,  497,  512,
+  527,  542,  557,  572,  587,  602,  617,  632,  423,  438,  453,  468,  483,
+  498,  513,  528,  543,  558,  573,  588,  603,  618,  633,  648,  439,  454,
+  469,  484,  499,  514,  529,  544,  559,  574,  589,  604,  619,  634,  649,
+  664,  455,  470,  485,  500,  515,  530,  545,  560,  575,  590,  605,  620,
+  635,  650,  665,  680,  471,  486,  501,  516,  531,  546,  561,  576,  591,
+  606,  621,  636,  651,  666,  681,  696,  487,  502,  517,  532,  547,  562,
+  577,  592,  607,  622,  637,  652,  667,  682,  697,  712,  503,  518,  533,
+  548,  563,  578,  593,  608,  623,  638,  653,  668,  683,  698,  713,  728,
+  519,  534,  549,  564,  579,  594,  609,  624,  639,  654,  669,  684,  699,
+  714,  729,  744,  535,  550,  565,  580,  595,  610,  625,  640,  655,  670,
+  685,  700,  715,  730,  745,  760,  551,  566,  581,  596,  611,  626,  641,
+  656,  671,  686,  701,  716,  731,  746,  761,  776,  567,  582,  597,  612,
+  627,  642,  657,  672,  687,  702,  717,  732,  747,  762,  777,  792,  583,
+  598,  613,  628,  643,  658,  673,  688,  703,  718,  733,  748,  763,  778,
+  793,  808,  599,  614,  629,  644,  659,  674,  689,  704,  719,  734,  749,
+  764,  779,  794,  809,  824,  615,  630,  645,  660,  675,  690,  705,  720,
+  735,  750,  765,  780,  795,  810,  825,  840,  631,  646,  661,  676,  691,
+  706,  721,  736,  751,  766,  781,  796,  811,  826,  841,  856,  647,  662,
+  677,  692,  707,  722,  737,  752,  767,  782,  797,  812,  827,  842,  857,
+  872,  663,  678,  693,  708,  723,  738,  753,  768,  783,  798,  813,  828,
+  843,  858,  873,  888,  679,  694,  709,  724,  739,  754,  769,  784,  799,
+  814,  829,  844,  859,  874,  889,  904,  695,  710,  725,  740,  755,  770,
+  785,  800,  815,  830,  845,  860,  875,  890,  905,  919,  711,  726,  741,
+  756,  771,  786,  801,  816,  831,  846,  861,  876,  891,  906,  920,  933,
+  727,  742,  757,  772,  787,  802,  817,  832,  847,  862,  877,  892,  907,
+  921,  934,  946,  743,  758,  773,  788,  803,  818,  833,  848,  863,  878,
+  893,  908,  922,  935,  947,  958,  759,  774,  789,  804,  819,  834,  849,
+  864,  879,  894,  909,  923,  936,  948,  959,  969,  775,  790,  805,  820,
+  835,  850,  865,  880,  895,  910,  924,  937,  949,  960,  970,  979,  791,
+  806,  821,  836,  851,  866,  881,  896,  911,  925,  938,  950,  961,  971,
+  980,  988,  807,  822,  837,  852,  867,  882,  897,  912,  926,  939,  951,
+  962,  972,  981,  989,  996,  823,  838,  853,  868,  883,  898,  913,  927,
+  940,  952,  963,  973,  982,  990,  997,  1003, 839,  854,  869,  884,  899,
+  914,  928,  941,  953,  964,  974,  983,  991,  998,  1004, 1009, 855,  870,
+  885,  900,  915,  929,  942,  954,  965,  975,  984,  992,  999,  1005, 1010,
+  1014, 871,  886,  901,  916,  930,  943,  955,  966,  976,  985,  993,  1000,
+  1006, 1011, 1015, 1018, 887,  902,  917,  931,  944,  956,  967,  977,  986,
+  994,  1001, 1007, 1012, 1016, 1019, 1021, 903,  918,  932,  945,  957,  968,
+  978,  987,  995,  1002, 1008, 1013, 1017, 1020, 1022, 1023,
+};
+
+DECLARE_ALIGNED(16, static const int16_t, av1_default_iscan_64x16[1024]) = {
+  0,    1,    3,   6,    10,   15,   21,   28,   36,   45,   55,   66,   78,
+  91,   105,  120, 136,  152,  168,  184,  200,  216,  232,  248,  264,  280,
+  296,  312,  328, 344,  360,  376,  392,  408,  424,  440,  456,  472,  488,
+  504,  520,  536, 552,  568,  584,  600,  616,  632,  648,  664,  680,  696,
+  712,  728,  744, 760,  776,  792,  808,  824,  840,  856,  872,  888,  2,
+  4,    7,    11,  16,   22,   29,   37,   46,   56,   67,   79,   92,   106,
+  121,  137,  153, 169,  185,  201,  217,  233,  249,  265,  281,  297,  313,
+  329,  345,  361, 377,  393,  409,  425,  441,  457,  473,  489,  505,  521,
+  537,  553,  569, 585,  601,  617,  633,  649,  665,  681,  697,  713,  729,
+  745,  761,  777, 793,  809,  825,  841,  857,  873,  889,  904,  5,    8,
+  12,   17,   23,  30,   38,   47,   57,   68,   80,   93,   107,  122,  138,
+  154,  170,  186, 202,  218,  234,  250,  266,  282,  298,  314,  330,  346,
+  362,  378,  394, 410,  426,  442,  458,  474,  490,  506,  522,  538,  554,
+  570,  586,  602, 618,  634,  650,  666,  682,  698,  714,  730,  746,  762,
+  778,  794,  810, 826,  842,  858,  874,  890,  905,  919,  9,    13,   18,
+  24,   31,   39,  48,   58,   69,   81,   94,   108,  123,  139,  155,  171,
+  187,  203,  219, 235,  251,  267,  283,  299,  315,  331,  347,  363,  379,
+  395,  411,  427, 443,  459,  475,  491,  507,  523,  539,  555,  571,  587,
+  603,  619,  635, 651,  667,  683,  699,  715,  731,  747,  763,  779,  795,
+  811,  827,  843, 859,  875,  891,  906,  920,  933,  14,   19,   25,   32,
+  40,   49,   59,  70,   82,   95,   109,  124,  140,  156,  172,  188,  204,
+  220,  236,  252, 268,  284,  300,  316,  332,  348,  364,  380,  396,  412,
+  428,  444,  460, 476,  492,  508,  524,  540,  556,  572,  588,  604,  620,
+  636,  652,  668, 684,  700,  716,  732,  748,  764,  780,  796,  812,  828,
+  844,  860,  876, 892,  907,  921,  934,  946,  20,   26,   33,   41,   50,
+  60,   71,   83,  96,   110,  125,  141,  157,  173,  189,  205,  221,  237,
+  253,  269,  285, 301,  317,  333,  349,  365,  381,  397,  413,  429,  445,
+  461,  477,  493, 509,  525,  541,  557,  573,  589,  605,  621,  637,  653,
+  669,  685,  701, 717,  733,  749,  765,  781,  797,  813,  829,  845,  861,
+  877,  893,  908, 922,  935,  947,  958,  27,   34,   42,   51,   61,   72,
+  84,   97,   111, 126,  142,  158,  174,  190,  206,  222,  238,  254,  270,
+  286,  302,  318, 334,  350,  366,  382,  398,  414,  430,  446,  462,  478,
+  494,  510,  526, 542,  558,  574,  590,  606,  622,  638,  654,  670,  686,
+  702,  718,  734, 750,  766,  782,  798,  814,  830,  846,  862,  878,  894,
+  909,  923,  936, 948,  959,  969,  35,   43,   52,   62,   73,   85,   98,
+  112,  127,  143, 159,  175,  191,  207,  223,  239,  255,  271,  287,  303,
+  319,  335,  351, 367,  383,  399,  415,  431,  447,  463,  479,  495,  511,
+  527,  543,  559, 575,  591,  607,  623,  639,  655,  671,  687,  703,  719,
+  735,  751,  767, 783,  799,  815,  831,  847,  863,  879,  895,  910,  924,
+  937,  949,  960, 970,  979,  44,   53,   63,   74,   86,   99,   113,  128,
+  144,  160,  176, 192,  208,  224,  240,  256,  272,  288,  304,  320,  336,
+  352,  368,  384, 400,  416,  432,  448,  464,  480,  496,  512,  528,  544,
+  560,  576,  592, 608,  624,  640,  656,  672,  688,  704,  720,  736,  752,
+  768,  784,  800, 816,  832,  848,  864,  880,  896,  911,  925,  938,  950,
+  961,  971,  980, 988,  54,   64,   75,   87,   100,  114,  129,  145,  161,
+  177,  193,  209, 225,  241,  257,  273,  289,  305,  321,  337,  353,  369,
+  385,  401,  417, 433,  449,  465,  481,  497,  513,  529,  545,  561,  577,
+  593,  609,  625, 641,  657,  673,  689,  705,  721,  737,  753,  769,  785,
+  801,  817,  833, 849,  865,  881,  897,  912,  926,  939,  951,  962,  972,
+  981,  989,  996, 65,   76,   88,   101,  115,  130,  146,  162,  178,  194,
+  210,  226,  242, 258,  274,  290,  306,  322,  338,  354,  370,  386,  402,
+  418,  434,  450, 466,  482,  498,  514,  530,  546,  562,  578,  594,  610,
+  626,  642,  658, 674,  690,  706,  722,  738,  754,  770,  786,  802,  818,
+  834,  850,  866, 882,  898,  913,  927,  940,  952,  963,  973,  982,  990,
+  997,  1003, 77,  89,   102,  116,  131,  147,  163,  179,  195,  211,  227,
+  243,  259,  275, 291,  307,  323,  339,  355,  371,  387,  403,  419,  435,
+  451,  467,  483, 499,  515,  531,  547,  563,  579,  595,  611,  627,  643,
+  659,  675,  691, 707,  723,  739,  755,  771,  787,  803,  819,  835,  851,
+  867,  883,  899, 914,  928,  941,  953,  964,  974,  983,  991,  998,  1004,
+  1009, 90,   103, 117,  132,  148,  164,  180,  196,  212,  228,  244,  260,
+  276,  292,  308, 324,  340,  356,  372,  388,  404,  420,  436,  452,  468,
+  484,  500,  516, 532,  548,  564,  580,  596,  612,  628,  644,  660,  676,
+  692,  708,  724, 740,  756,  772,  788,  804,  820,  836,  852,  868,  884,
+  900,  915,  929, 942,  954,  965,  975,  984,  992,  999,  1005, 1010, 1014,
+  104,  118,  133, 149,  165,  181,  197,  213,  229,  245,  261,  277,  293,
+  309,  325,  341, 357,  373,  389,  405,  421,  437,  453,  469,  485,  501,
+  517,  533,  549, 565,  581,  597,  613,  629,  645,  661,  677,  693,  709,
+  725,  741,  757, 773,  789,  805,  821,  837,  853,  869,  885,  901,  916,
+  930,  943,  955, 966,  976,  985,  993,  1000, 1006, 1011, 1015, 1018, 119,
+  134,  150,  166, 182,  198,  214,  230,  246,  262,  278,  294,  310,  326,
+  342,  358,  374, 390,  406,  422,  438,  454,  470,  486,  502,  518,  534,
+  550,  566,  582, 598,  614,  630,  646,  662,  678,  694,  710,  726,  742,
+  758,  774,  790, 806,  822,  838,  854,  870,  886,  902,  917,  931,  944,
+  956,  967,  977, 986,  994,  1001, 1007, 1012, 1016, 1019, 1021, 135,  151,
+  167,  183,  199, 215,  231,  247,  263,  279,  295,  311,  327,  343,  359,
+  375,  391,  407, 423,  439,  455,  471,  487,  503,  519,  535,  551,  567,
+  583,  599,  615, 631,  647,  663,  679,  695,  711,  727,  743,  759,  775,
+  791,  807,  823, 839,  855,  871,  887,  903,  918,  932,  945,  957,  968,
+  978,  987,  995, 1002, 1008, 1013, 1017, 1020, 1022, 1023,
+};
 #endif  // CONFIG_TX64X64
 
 const SCAN_ORDER av1_default_scan_orders[TX_SIZES] = {
@@ -4749,8 +5390,192 @@
         default_scan_64x32_neighbors },
       { default_scan_64x32, av1_default_iscan_64x32,
         default_scan_64x32_neighbors },
-  }
+  },
 #endif  // CONFIG_TX64X64
+  {
+      // TX_4X16
+      { default_scan_4x16, av1_default_iscan_4x16,
+        default_scan_4x16_neighbors },
+      { default_scan_4x16, av1_default_iscan_4x16,
+        default_scan_4x16_neighbors },
+      { default_scan_4x16, av1_default_iscan_4x16,
+        default_scan_4x16_neighbors },
+      { default_scan_4x16, av1_default_iscan_4x16,
+        default_scan_4x16_neighbors },
+      { default_scan_4x16, av1_default_iscan_4x16,
+        default_scan_4x16_neighbors },
+      { default_scan_4x16, av1_default_iscan_4x16,
+        default_scan_4x16_neighbors },
+      { default_scan_4x16, av1_default_iscan_4x16,
+        default_scan_4x16_neighbors },
+      { default_scan_4x16, av1_default_iscan_4x16,
+        default_scan_4x16_neighbors },
+      { default_scan_4x16, av1_default_iscan_4x16,
+        default_scan_4x16_neighbors },
+      { mrow_scan_4x16, av1_mrow_iscan_4x16, mrow_scan_4x16_neighbors },
+      { mrow_scan_4x16, av1_mrow_iscan_4x16, mrow_scan_4x16_neighbors },
+      { mcol_scan_4x16, av1_mcol_iscan_4x16, mcol_scan_4x16_neighbors },
+      { mrow_scan_4x16, av1_mrow_iscan_4x16, mrow_scan_4x16_neighbors },
+      { mcol_scan_4x16, av1_mcol_iscan_4x16, mcol_scan_4x16_neighbors },
+      { mrow_scan_4x16, av1_mrow_iscan_4x16, mrow_scan_4x16_neighbors },
+      { mcol_scan_4x16, av1_mcol_iscan_4x16, mcol_scan_4x16_neighbors },
+  },
+  {
+      // TX_16X4
+      { default_scan_16x4, av1_default_iscan_16x4,
+        default_scan_16x4_neighbors },
+      { default_scan_16x4, av1_default_iscan_16x4,
+        default_scan_16x4_neighbors },
+      { default_scan_16x4, av1_default_iscan_16x4,
+        default_scan_16x4_neighbors },
+      { default_scan_16x4, av1_default_iscan_16x4,
+        default_scan_16x4_neighbors },
+      { default_scan_16x4, av1_default_iscan_16x4,
+        default_scan_16x4_neighbors },
+      { default_scan_16x4, av1_default_iscan_16x4,
+        default_scan_16x4_neighbors },
+      { default_scan_16x4, av1_default_iscan_16x4,
+        default_scan_16x4_neighbors },
+      { default_scan_16x4, av1_default_iscan_16x4,
+        default_scan_16x4_neighbors },
+      { default_scan_16x4, av1_default_iscan_16x4,
+        default_scan_16x4_neighbors },
+      { mrow_scan_16x4, av1_mrow_iscan_16x4, mrow_scan_16x4_neighbors },
+      { mrow_scan_16x4, av1_mrow_iscan_16x4, mrow_scan_16x4_neighbors },
+      { mcol_scan_16x4, av1_mcol_iscan_16x4, mcol_scan_16x4_neighbors },
+      { mrow_scan_16x4, av1_mrow_iscan_16x4, mrow_scan_16x4_neighbors },
+      { mcol_scan_16x4, av1_mcol_iscan_16x4, mcol_scan_16x4_neighbors },
+      { mrow_scan_16x4, av1_mrow_iscan_16x4, mrow_scan_16x4_neighbors },
+      { mcol_scan_16x4, av1_mcol_iscan_16x4, mcol_scan_16x4_neighbors },
+  },
+  {
+      // TX_8X32
+      { default_scan_8x32, av1_default_iscan_8x32,
+        default_scan_8x32_neighbors },
+      { default_scan_8x32, av1_default_iscan_8x32,
+        default_scan_8x32_neighbors },
+      { default_scan_8x32, av1_default_iscan_8x32,
+        default_scan_8x32_neighbors },
+      { default_scan_8x32, av1_default_iscan_8x32,
+        default_scan_8x32_neighbors },
+      { default_scan_8x32, av1_default_iscan_8x32,
+        default_scan_8x32_neighbors },
+      { default_scan_8x32, av1_default_iscan_8x32,
+        default_scan_8x32_neighbors },
+      { default_scan_8x32, av1_default_iscan_8x32,
+        default_scan_8x32_neighbors },
+      { default_scan_8x32, av1_default_iscan_8x32,
+        default_scan_8x32_neighbors },
+      { default_scan_8x32, av1_default_iscan_8x32,
+        default_scan_8x32_neighbors },
+      { mrow_scan_8x32, av1_mrow_iscan_8x32, mrow_scan_8x32_neighbors },
+      { mrow_scan_8x32, av1_mrow_iscan_8x32, mrow_scan_8x32_neighbors },
+      { mcol_scan_8x32, av1_mcol_iscan_8x32, mcol_scan_8x32_neighbors },
+      { mrow_scan_8x32, av1_mrow_iscan_8x32, mrow_scan_8x32_neighbors },
+      { mcol_scan_8x32, av1_mcol_iscan_8x32, mcol_scan_8x32_neighbors },
+      { mrow_scan_8x32, av1_mrow_iscan_8x32, mrow_scan_8x32_neighbors },
+      { mcol_scan_8x32, av1_mcol_iscan_8x32, mcol_scan_8x32_neighbors },
+  },
+  {
+      // TX_32X8
+      { default_scan_32x8, av1_default_iscan_32x8,
+        default_scan_32x8_neighbors },
+      { default_scan_32x8, av1_default_iscan_32x8,
+        default_scan_32x8_neighbors },
+      { default_scan_32x8, av1_default_iscan_32x8,
+        default_scan_32x8_neighbors },
+      { default_scan_32x8, av1_default_iscan_32x8,
+        default_scan_32x8_neighbors },
+      { default_scan_32x8, av1_default_iscan_32x8,
+        default_scan_32x8_neighbors },
+      { default_scan_32x8, av1_default_iscan_32x8,
+        default_scan_32x8_neighbors },
+      { default_scan_32x8, av1_default_iscan_32x8,
+        default_scan_32x8_neighbors },
+      { default_scan_32x8, av1_default_iscan_32x8,
+        default_scan_32x8_neighbors },
+      { default_scan_32x8, av1_default_iscan_32x8,
+        default_scan_32x8_neighbors },
+      { mrow_scan_32x8, av1_mrow_iscan_32x8, mrow_scan_32x8_neighbors },
+      { mrow_scan_32x8, av1_mrow_iscan_32x8, mrow_scan_32x8_neighbors },
+      { mcol_scan_32x8, av1_mcol_iscan_32x8, mcol_scan_32x8_neighbors },
+      { mrow_scan_32x8, av1_mrow_iscan_32x8, mrow_scan_32x8_neighbors },
+      { mcol_scan_32x8, av1_mcol_iscan_32x8, mcol_scan_32x8_neighbors },
+      { mrow_scan_32x8, av1_mrow_iscan_32x8, mrow_scan_32x8_neighbors },
+      { mcol_scan_32x8, av1_mcol_iscan_32x8, mcol_scan_32x8_neighbors },
+  },
+#if CONFIG_TX64X64
+  {
+      // TX_16X64
+      { default_scan_16x64, av1_default_iscan_16x64,
+        default_scan_16x64_neighbors },
+      { default_scan_16x64, av1_default_iscan_16x64,
+        default_scan_16x64_neighbors },
+      { default_scan_16x64, av1_default_iscan_16x64,
+        default_scan_16x64_neighbors },
+      { default_scan_16x64, av1_default_iscan_16x64,
+        default_scan_16x64_neighbors },
+      { default_scan_16x64, av1_default_iscan_16x64,
+        default_scan_16x64_neighbors },
+      { default_scan_16x64, av1_default_iscan_16x64,
+        default_scan_16x64_neighbors },
+      { default_scan_16x64, av1_default_iscan_16x64,
+        default_scan_16x64_neighbors },
+      { default_scan_16x64, av1_default_iscan_16x64,
+        default_scan_16x64_neighbors },
+      { default_scan_16x64, av1_default_iscan_16x64,
+        default_scan_16x64_neighbors },
+      { default_scan_16x64, av1_default_iscan_16x64,
+        default_scan_16x64_neighbors },
+      { default_scan_16x64, av1_default_iscan_16x64,
+        default_scan_16x64_neighbors },
+      { default_scan_16x64, av1_default_iscan_16x64,
+        default_scan_16x64_neighbors },
+      { default_scan_16x64, av1_default_iscan_16x64,
+        default_scan_16x64_neighbors },
+      { default_scan_16x64, av1_default_iscan_16x64,
+        default_scan_16x64_neighbors },
+      { default_scan_16x64, av1_default_iscan_16x64,
+        default_scan_16x64_neighbors },
+      { default_scan_16x64, av1_default_iscan_16x64,
+        default_scan_16x64_neighbors },
+  },
+  {
+      // TX_64X16
+      { default_scan_64x16, av1_default_iscan_64x16,
+        default_scan_64x16_neighbors },
+      { default_scan_64x16, av1_default_iscan_64x16,
+        default_scan_64x16_neighbors },
+      { default_scan_64x16, av1_default_iscan_64x16,
+        default_scan_64x16_neighbors },
+      { default_scan_64x16, av1_default_iscan_64x16,
+        default_scan_64x16_neighbors },
+      { default_scan_64x16, av1_default_iscan_64x16,
+        default_scan_64x16_neighbors },
+      { default_scan_64x16, av1_default_iscan_64x16,
+        default_scan_64x16_neighbors },
+      { default_scan_64x16, av1_default_iscan_64x16,
+        default_scan_64x16_neighbors },
+      { default_scan_64x16, av1_default_iscan_64x16,
+        default_scan_64x16_neighbors },
+      { default_scan_64x16, av1_default_iscan_64x16,
+        default_scan_64x16_neighbors },
+      { default_scan_64x16, av1_default_iscan_64x16,
+        default_scan_64x16_neighbors },
+      { default_scan_64x16, av1_default_iscan_64x16,
+        default_scan_64x16_neighbors },
+      { default_scan_64x16, av1_default_iscan_64x16,
+        default_scan_64x16_neighbors },
+      { default_scan_64x16, av1_default_iscan_64x16,
+        default_scan_64x16_neighbors },
+      { default_scan_64x16, av1_default_iscan_64x16,
+        default_scan_64x16_neighbors },
+      { default_scan_64x16, av1_default_iscan_64x16,
+        default_scan_64x16_neighbors },
+      { default_scan_64x16, av1_default_iscan_64x16,
+        default_scan_64x16_neighbors },
+  },
+#endif  //  CONFIG_TX64X64
 };
 
 const SCAN_ORDER av1_inter_scan_orders[TX_SIZES_ALL][TX_TYPES] = {
@@ -5211,6 +6036,78 @@
       { mrow_scan_32x8, av1_mrow_iscan_32x8, mrow_scan_32x8_neighbors },
       { mcol_scan_32x8, av1_mcol_iscan_32x8, mcol_scan_32x8_neighbors },
   },
+#if CONFIG_TX64X64
+  {
+      // TX_16X64
+      { default_scan_16x64, av1_default_iscan_16x64,
+        default_scan_16x64_neighbors },
+      { default_scan_16x64, av1_default_iscan_16x64,
+        default_scan_16x64_neighbors },
+      { default_scan_16x64, av1_default_iscan_16x64,
+        default_scan_16x64_neighbors },
+      { default_scan_16x64, av1_default_iscan_16x64,
+        default_scan_16x64_neighbors },
+      { default_scan_16x64, av1_default_iscan_16x64,
+        default_scan_16x64_neighbors },
+      { default_scan_16x64, av1_default_iscan_16x64,
+        default_scan_16x64_neighbors },
+      { default_scan_16x64, av1_default_iscan_16x64,
+        default_scan_16x64_neighbors },
+      { default_scan_16x64, av1_default_iscan_16x64,
+        default_scan_16x64_neighbors },
+      { default_scan_16x64, av1_default_iscan_16x64,
+        default_scan_16x64_neighbors },
+      { default_scan_16x64, av1_default_iscan_16x64,
+        default_scan_16x64_neighbors },
+      { default_scan_16x64, av1_default_iscan_16x64,
+        default_scan_16x64_neighbors },
+      { default_scan_16x64, av1_default_iscan_16x64,
+        default_scan_16x64_neighbors },
+      { default_scan_16x64, av1_default_iscan_16x64,
+        default_scan_16x64_neighbors },
+      { default_scan_16x64, av1_default_iscan_16x64,
+        default_scan_16x64_neighbors },
+      { default_scan_16x64, av1_default_iscan_16x64,
+        default_scan_16x64_neighbors },
+      { default_scan_16x64, av1_default_iscan_16x64,
+        default_scan_16x64_neighbors },
+  },
+  {
+      // TX_64X16
+      { default_scan_64x16, av1_default_iscan_64x16,
+        default_scan_64x16_neighbors },
+      { default_scan_64x16, av1_default_iscan_64x16,
+        default_scan_64x16_neighbors },
+      { default_scan_64x16, av1_default_iscan_64x16,
+        default_scan_64x16_neighbors },
+      { default_scan_64x16, av1_default_iscan_64x16,
+        default_scan_64x16_neighbors },
+      { default_scan_64x16, av1_default_iscan_64x16,
+        default_scan_64x16_neighbors },
+      { default_scan_64x16, av1_default_iscan_64x16,
+        default_scan_64x16_neighbors },
+      { default_scan_64x16, av1_default_iscan_64x16,
+        default_scan_64x16_neighbors },
+      { default_scan_64x16, av1_default_iscan_64x16,
+        default_scan_64x16_neighbors },
+      { default_scan_64x16, av1_default_iscan_64x16,
+        default_scan_64x16_neighbors },
+      { default_scan_64x16, av1_default_iscan_64x16,
+        default_scan_64x16_neighbors },
+      { default_scan_64x16, av1_default_iscan_64x16,
+        default_scan_64x16_neighbors },
+      { default_scan_64x16, av1_default_iscan_64x16,
+        default_scan_64x16_neighbors },
+      { default_scan_64x16, av1_default_iscan_64x16,
+        default_scan_64x16_neighbors },
+      { default_scan_64x16, av1_default_iscan_64x16,
+        default_scan_64x16_neighbors },
+      { default_scan_64x16, av1_default_iscan_64x16,
+        default_scan_64x16_neighbors },
+      { default_scan_64x16, av1_default_iscan_64x16,
+        default_scan_64x16_neighbors },
+  },
+#endif  // CONFIG_TX64X64
 };
 
 #if CONFIG_ADAPT_SCAN
diff --git a/av1/encoder/av1_quantize.c b/av1/encoder/av1_quantize.c
index aa03976..dde3011 100644
--- a/av1/encoder/av1_quantize.c
+++ b/av1/encoder/av1_quantize.c
@@ -595,7 +595,6 @@
                                p->dequant_QTX, eob_ptr, sc->scan, sc->iscan,
                                NULL, NULL, qparam->log_scale);
         } else {
-#if CONFIG_RECT_TX_EXT
           if (qparam->tx_size == TX_4X16 || qparam->tx_size == TX_16X4 ||
               qparam->tx_size == TX_8X32 || qparam->tx_size == TX_32X8)
             av1_quantize_fp_c(coeff_ptr, n_coeffs, skip_block, p->zbin_QTX,
@@ -603,7 +602,6 @@
                               p->quant_shift_QTX, qcoeff_ptr, dqcoeff_ptr,
                               p->dequant_QTX, eob_ptr, sc->scan, sc->iscan);
           else
-#endif  // CONFIG_RECT_TX_EXT
             av1_quantize_fp(coeff_ptr, n_coeffs, skip_block, p->zbin_QTX,
                             p->round_fp_QTX, p->quant_fp_QTX,
                             p->quant_shift_QTX, qcoeff_ptr, dqcoeff_ptr,
@@ -611,10 +609,18 @@
         }
         break;
       case 1:
-        av1_quantize_fp_32x32(coeff_ptr, n_coeffs, skip_block, p->zbin_QTX,
-                              p->round_fp_QTX, p->quant_fp_QTX,
-                              p->quant_shift_QTX, qcoeff_ptr, dqcoeff_ptr,
-                              p->dequant_QTX, eob_ptr, sc->scan, sc->iscan);
+#if CONFIG_TX64X64
+        if (qparam->tx_size == TX_16X64 || qparam->tx_size == TX_64X16)
+          av1_quantize_fp_32x32_c(coeff_ptr, n_coeffs, skip_block, p->zbin_QTX,
+                                  p->round_fp_QTX, p->quant_fp_QTX,
+                                  p->quant_shift_QTX, qcoeff_ptr, dqcoeff_ptr,
+                                  p->dequant_QTX, eob_ptr, sc->scan, sc->iscan);
+        else
+#endif  // CONFIG_RECT_TX_EXT && CONFIG_TX64X64
+          av1_quantize_fp_32x32(coeff_ptr, n_coeffs, skip_block, p->zbin_QTX,
+                                p->round_fp_QTX, p->quant_fp_QTX,
+                                p->quant_shift_QTX, qcoeff_ptr, dqcoeff_ptr,
+                                p->dequant_QTX, eob_ptr, sc->scan, sc->iscan);
         break;
 #if CONFIG_TX64X64
       case 2:
diff --git a/av1/encoder/rd.c b/av1/encoder/rd.c
index f1b109b..8abee95 100644
--- a/av1/encoder/rd.c
+++ b/av1/encoder/rd.c
@@ -784,6 +784,20 @@
       for (i = 0; i < num_4x4_h; i += 8)
         t_left[i] = !!*(const uint64_t *)&left[i];
       break;
+    case TX_16X64:
+      for (i = 0; i < num_4x4_w; i += 4)
+        t_above[i] = !!*(const uint32_t *)&above[i];
+      for (i = 0; i < num_4x4_h; i += 16)
+        t_left[i] =
+            !!(*(const uint64_t *)&left[i] | *(const uint64_t *)&left[i + 8]);
+      break;
+    case TX_64X16:
+      for (i = 0; i < num_4x4_w; i += 16)
+        t_above[i] =
+            !!(*(const uint64_t *)&above[i] | *(const uint64_t *)&above[i + 8]);
+      for (i = 0; i < num_4x4_h; i += 4)
+        t_left[i] = !!*(const uint32_t *)&left[i];
+      break;
     case TX_64X64:
       for (i = 0; i < num_4x4_w; i += 16)
         t_above[i] =