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] =