Merge "Deringing line buffer no longer depends on holding OD_DERING_VERY_LARGE" into nextgenv2
diff --git a/av1/common/common_data.h b/av1/common/common_data.h
index 4f799db..a9efb1b 100644
--- a/av1/common/common_data.h
+++ b/av1/common/common_data.h
@@ -317,7 +317,6 @@
#endif // CONFIG_EXT_PARTITION
};
-#if CONFIG_EXT_TX
static const TX_SIZE max_txsize_rect_lookup[BLOCK_SIZES] = {
// 4X4
TX_4X4,
@@ -334,7 +333,6 @@
TX_32X32, TX_32X32, TX_32X32,
#endif // CONFIG_EXT_PARTITION
};
-#endif // CONFIG_EXT_TX
// Same as "max_txsize_lookup[bsize] - TX_8X8", invalid for bsize < 8X8
static const int32_t intra_tx_size_cat_lookup[BLOCK_SIZES] = {
@@ -380,6 +378,22 @@
/* clang-format on */
+static const TX_SIZE sub_tx_size_map[TX_SIZES_ALL] = {
+#if CONFIG_CB4X4
+ TX_2X2, // TX_2X2
+#endif
+ TX_4X4, // TX_4X4
+ TX_4X4, // TX_8X8
+ TX_8X8, // TX_16X16
+ TX_16X16, // TX_32X32
+ TX_4X4, // TX_4X8
+ TX_4X4, // TX_8X4
+ TX_8X8, // TX_8X16
+ TX_8X8, // TX_16X8
+ TX_16X16, // TX_16X32
+ TX_16X16 // TX_32X16
+};
+
static const TX_SIZE txsize_horz_map[TX_SIZES_ALL] = {
#if CONFIG_CB4X4
TX_2X2, // TX_2X2
@@ -388,14 +402,12 @@
TX_8X8, // TX_8X8
TX_16X16, // TX_16X16
TX_32X32, // TX_32X32
-#if CONFIG_EXT_TX
TX_4X4, // TX_4X8
TX_8X8, // TX_8X4
TX_8X8, // TX_8X16
TX_16X16, // TX_16X8
TX_16X16, // TX_16X32
TX_32X32 // TX_32X16
-#endif // CONFIG_EXT_TX
};
static const TX_SIZE txsize_vert_map[TX_SIZES_ALL] = {
@@ -406,14 +418,12 @@
TX_8X8, // TX_8X8
TX_16X16, // TX_16X16
TX_32X32, // TX_32X32
-#if CONFIG_EXT_TX
TX_8X8, // TX_4X8
TX_4X4, // TX_8X4
TX_16X16, // TX_8X16
TX_8X8, // TX_16X8
TX_32X32, // TX_16X32
TX_16X16 // TX_32X16
-#endif // CONFIG_EXT_TX
};
// Transform block width in pixels
@@ -421,10 +431,7 @@
#if CONFIG_CB4X4
2,
#endif
- 4, 8, 16, 32,
-#if CONFIG_EXT_TX
- 4, 8, 8, 16, 16, 32,
-#endif
+ 4, 8, 16, 32, 4, 8, 8, 16, 16, 32,
};
// Transform block height in pixels
@@ -432,10 +439,7 @@
#if CONFIG_CB4X4
2,
#endif
- 4, 8, 16, 32,
-#if CONFIG_EXT_TX
- 8, 4, 16, 8, 32, 16,
-#endif
+ 4, 8, 16, 32, 8, 4, 16, 8, 32, 16,
};
// Transform block width in unit
@@ -443,10 +447,7 @@
#if CONFIG_CB4X4
1,
#endif
- 1, 2, 4, 8,
-#if CONFIG_EXT_TX
- 1, 2, 2, 4, 4, 8,
-#endif
+ 1, 2, 4, 8, 1, 2, 2, 4, 4, 8,
};
// Transform block height in unit
@@ -454,10 +455,7 @@
#if CONFIG_CB4X4
1,
#endif
- 1, 2, 4, 8,
-#if CONFIG_EXT_TX
- 2, 1, 4, 2, 8, 4,
-#endif
+ 1, 2, 4, 8, 2, 1, 4, 2, 8, 4,
};
// Transform block width in log2
@@ -465,10 +463,7 @@
#if CONFIG_CB4X4
2,
#endif
- 2, 3, 4, 5,
-#if CONFIG_EXT_TX
- 2, 3, 3, 4, 4, 5,
-#endif
+ 2, 3, 4, 5, 2, 3, 3, 4, 4, 5,
};
// Transform block height in log2
@@ -476,20 +471,14 @@
#if CONFIG_CB4X4
2,
#endif
- 2, 3, 4, 5,
-#if CONFIG_EXT_TX
- 3, 2, 4, 3, 5, 4,
-#endif
+ 2, 3, 4, 5, 3, 2, 4, 3, 5, 4,
};
static const int tx_size_2d[TX_SIZES_ALL] = {
#if CONFIG_CB4X4
4,
#endif
- 16, 64, 256, 1024,
-#if CONFIG_EXT_TX
- 32, 32, 128, 128, 512, 512,
-#endif
+ 16, 64, 256, 1024, 32, 32, 128, 128, 512, 512,
};
static const uint8_t tx_size_1d_log2[TX_SIZES] = { 2, 3, 4, 5 };
@@ -505,14 +494,12 @@
BLOCK_8X8, // TX_8X8
BLOCK_16X16, // TX_16X16
BLOCK_32X32, // TX_32X32
-#if CONFIG_EXT_TX
BLOCK_4X8, // TX_4X8
BLOCK_8X4, // TX_8X4
BLOCK_8X16, // TX_8X16
BLOCK_16X8, // TX_16X8
BLOCK_16X32, // TX_16X32
BLOCK_32X16, // TX_32X16
-#endif // CONFIG_EXT_TX
};
static const TX_SIZE txsize_sqr_map[TX_SIZES_ALL] = {
@@ -523,14 +510,12 @@
TX_8X8, // TX_8X8
TX_16X16, // TX_16X16
TX_32X32, // TX_32X32
-#if CONFIG_EXT_TX
TX_4X4, // TX_4X8
TX_4X4, // TX_8X4
TX_8X8, // TX_8X16
TX_8X8, // TX_16X8
TX_16X16, // TX_16X32
TX_16X16, // TX_32X16
-#endif // CONFIG_EXT_TX
};
static const TX_SIZE txsize_sqr_up_map[TX_SIZES_ALL] = {
@@ -541,14 +526,12 @@
TX_8X8, // TX_8X8
TX_16X16, // TX_16X16
TX_32X32, // TX_32X32
-#if CONFIG_EXT_TX
TX_8X8, // TX_4X8
TX_8X8, // TX_8X4
TX_16X16, // TX_8X16
TX_16X16, // TX_16X8
TX_32X32, // TX_16X32
TX_32X32, // TX_32X16
-#endif // CONFIG_EXT_TX
};
static const TX_SIZE tx_mode_to_biggest_tx_size[TX_MODES] = {
@@ -595,14 +578,12 @@
{ { 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_EXT_TX
{ { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
{ { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
{ { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
{ { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
{ { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
{ { TX_4X4, TX_4X4 }, { TX_4X4, TX_4X4 } },
-#endif // CONFIG_EXT_TX
},
{
// BLOCK_4X8
@@ -613,7 +594,6 @@
{ { 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_EXT_TX
#if CONFIG_RECT_TX && USE_UV_RECT_TX
{ { TX_4X8, TX_4X4 }, { TX_4X4, TX_4X4 } }, // used
#else
@@ -624,7 +604,6 @@
{ { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
{ { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
{ { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
-#endif // CONFIG_EXT_TX
},
{
// BLOCK_8X4
@@ -635,7 +614,6 @@
{ { 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_EXT_TX
{ { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
#if CONFIG_RECT_TX && USE_UV_RECT_TX
{ { TX_8X4, TX_4X4 }, { TX_4X4, TX_4X4 } }, // used
@@ -646,7 +624,6 @@
{ { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
{ { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
{ { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
-#endif // CONFIG_EXT_TX
},
{
// BLOCK_8X8
@@ -657,14 +634,12 @@
{ { TX_8X8, TX_4X4 }, { TX_4X4, TX_4X4 } },
{ { TX_8X8, TX_8X8 }, { TX_4X4, TX_4X4 } },
{ { TX_8X8, TX_8X8 }, { TX_4X4, TX_4X4 } },
-#if CONFIG_EXT_TX
{ { TX_4X8, TX_4X4 }, { TX_4X8, TX_4X4 } },
{ { TX_8X4, TX_8X4 }, { TX_4X4, TX_4X4 } },
{ { TX_8X8, TX_8X4 }, { TX_4X8, TX_4X4 } },
{ { TX_8X8, TX_8X4 }, { TX_4X8, TX_4X4 } },
{ { TX_8X8, TX_8X4 }, { TX_4X8, TX_4X4 } },
{ { TX_8X8, TX_8X4 }, { TX_4X8, TX_4X4 } },
-#endif // CONFIG_EXT_TX
},
{
// BLOCK_8X16
@@ -675,7 +650,6 @@
{ { TX_8X8, TX_8X8 }, { TX_4X4, TX_4X4 } },
{ { TX_8X8, TX_8X8 }, { TX_4X4, TX_4X4 } },
{ { TX_8X8, TX_8X8 }, { TX_4X4, TX_4X4 } },
-#if CONFIG_EXT_TX
{ { TX_4X8, TX_4X8 }, { TX_4X8, TX_4X8 } },
{ { TX_8X4, TX_8X4 }, { TX_4X4, TX_4X4 } },
#if CONFIG_RECT_TX && USE_UV_RECT_TX
@@ -686,7 +660,6 @@
{ { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
{ { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
{ { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
-#endif // CONFIG_EXT_TX
},
{
// BLOCK_16X8
@@ -697,7 +670,6 @@
{ { TX_8X8, TX_4X4 }, { TX_8X8, TX_4X4 } },
{ { TX_8X8, TX_4X4 }, { TX_8X8, TX_8X8 } },
{ { TX_8X8, TX_4X4 }, { TX_8X8, TX_8X8 } },
-#if CONFIG_EXT_TX
{ { TX_4X8, TX_4X4 }, { TX_4X8, TX_4X4 } },
{ { TX_8X4, TX_8X4 }, { TX_8X4, TX_8X4 } },
{ { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
@@ -708,7 +680,6 @@
#endif // CONFIG_RECT_TX && USE_UV_RECT_TX
{ { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
{ { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
-#endif // CONFIG_EXT_TX
},
{
// BLOCK_16X16
@@ -719,14 +690,12 @@
{ { TX_8X8, TX_8X8 }, { TX_8X8, TX_8X8 } },
{ { TX_16X16, TX_8X8 }, { TX_8X8, TX_8X8 } },
{ { TX_16X16, TX_8X8 }, { TX_8X8, TX_8X8 } },
-#if CONFIG_EXT_TX
{ { TX_4X8, TX_4X8 }, { TX_4X8, TX_4X8 } },
{ { TX_8X4, TX_8X4 }, { TX_8X4, TX_8X4 } },
{ { TX_8X16, TX_8X8 }, { TX_8X16, TX_8X8 } },
{ { TX_16X8, TX_16X8 }, { TX_8X8, TX_8X8 } },
{ { TX_16X16, TX_16X8 }, { TX_8X16, TX_8X8 } },
{ { TX_16X16, TX_16X8 }, { TX_8X16, TX_8X8 } },
-#endif // CONFIG_EXT_TX
},
{
// BLOCK_16X32
@@ -737,7 +706,6 @@
{ { TX_8X8, TX_8X8 }, { TX_8X8, TX_8X8 } },
{ { TX_16X16, TX_16X16 }, { TX_8X8, TX_8X8 } },
{ { TX_16X16, TX_16X16 }, { TX_8X8, TX_8X8 } },
-#if CONFIG_EXT_TX
{ { TX_4X8, TX_4X8 }, { TX_4X8, TX_4X8 } },
{ { TX_8X4, TX_8X4 }, { TX_8X4, TX_8X4 } },
{ { TX_8X16, TX_8X16 }, { TX_8X16, TX_8X16 } },
@@ -748,7 +716,6 @@
{ { TX_16X16, TX_16X16 }, { TX_8X8, TX_8X8 } }, // used
#endif // CONFIG_RECT_TX && USE_UV_RECT_TX
{ { TX_INVALID, TX_INVALID }, { TX_INVALID, TX_INVALID } },
-#endif // CONFIG_EXT_TX
},
{
// BLOCK_32X16
@@ -759,7 +726,6 @@
{ { TX_8X8, TX_8X8 }, { TX_8X8, TX_8X8 } },
{ { TX_16X16, TX_8X8 }, { TX_16X16, TX_8X8 } },
{ { TX_16X16, TX_8X8 }, { TX_16X16, TX_8X8 } },
-#if CONFIG_EXT_TX
{ { TX_4X8, TX_4X8 }, { TX_4X8, TX_4X8 } },
{ { TX_8X4, TX_8X4 }, { TX_8X4, TX_8X4 } },
{ { TX_8X16, TX_8X8 }, { TX_8X16, TX_8X8 } },
@@ -770,7 +736,6 @@
#else
{ { TX_16X16, TX_8X8 }, { TX_16X16, TX_8X8 } }, // used
#endif // CONFIG_RECT_TX && USE_UV_RECT_TX
-#endif // CONFIG_EXT_TX
},
{
// BLOCK_32X32
@@ -781,14 +746,12 @@
{ { TX_8X8, TX_8X8 }, { TX_8X8, TX_8X8 } },
{ { TX_16X16, TX_16X16 }, { TX_16X16, TX_16X16 } },
{ { TX_32X32, TX_16X16 }, { TX_16X16, TX_16X16 } },
-#if CONFIG_EXT_TX
{ { TX_4X8, TX_4X8 }, { TX_4X8, TX_4X8 } },
{ { TX_8X4, TX_8X4 }, { TX_8X4, TX_8X4 } },
{ { TX_8X16, TX_8X16 }, { TX_8X16, TX_8X16 } },
{ { TX_16X8, TX_16X8 }, { TX_16X8, TX_16X8 } },
{ { TX_16X32, TX_16X16 }, { TX_16X32, TX_16X16 } },
{ { TX_32X16, TX_32X16 }, { TX_16X16, TX_16X16 } },
-#endif // CONFIG_EXT_TX
},
{
// BLOCK_32X64
@@ -799,14 +762,12 @@
{ { TX_8X8, TX_8X8 }, { TX_8X8, TX_8X8 } },
{ { TX_16X16, TX_16X16 }, { TX_16X16, TX_16X16 } },
{ { TX_32X32, TX_32X32 }, { TX_16X16, TX_16X16 } },
-#if CONFIG_EXT_TX
{ { TX_4X8, TX_4X8 }, { TX_4X8, TX_4X8 } },
{ { TX_8X4, TX_8X4 }, { TX_8X4, TX_8X4 } },
{ { TX_8X16, TX_8X16 }, { TX_8X16, TX_8X16 } },
{ { TX_16X8, TX_16X8 }, { TX_16X8, TX_16X8 } },
{ { TX_16X32, TX_16X32 }, { TX_16X16, TX_16X16 } },
{ { TX_32X16, TX_32X16 }, { TX_16X16, TX_16X16 } },
-#endif // CONFIG_EXT_TX
},
{
// BLOCK_64X32
@@ -817,14 +778,12 @@
{ { TX_8X8, TX_8X8 }, { TX_8X8, TX_8X8 } },
{ { TX_16X16, TX_16X16 }, { TX_16X16, TX_16X16 } },
{ { TX_32X32, TX_16X16 }, { TX_32X32, TX_16X16 } },
-#if CONFIG_EXT_TX
{ { TX_4X8, TX_4X8 }, { TX_4X8, TX_4X8 } },
{ { TX_8X4, TX_8X4 }, { TX_8X4, TX_8X4 } },
{ { TX_8X16, TX_8X16 }, { TX_8X16, TX_8X16 } },
{ { TX_16X8, TX_16X8 }, { TX_16X8, TX_16X8 } },
{ { TX_16X32, TX_16X16 }, { TX_16X32, TX_16X16 } },
{ { TX_32X16, TX_16X16 }, { TX_32X16, TX_16X16 } },
-#endif // CONFIG_EXT_TX
},
{
// BLOCK_64X64
@@ -846,14 +805,12 @@
{ { TX_8X8, TX_8X8 }, { TX_8X8, TX_8X8 } },
{ { TX_16X16, TX_16X16 }, { TX_16X16, TX_16X16 } },
{ { TX_32X32, TX_32X32 }, { TX_32X32, TX_32X32 } },
-#if CONFIG_EXT_TX
{ { TX_4X8, TX_4X8 }, { TX_4X8, TX_4X8 } },
{ { TX_8X4, TX_8X4 }, { TX_8X4, TX_8X4 } },
{ { TX_8X16, TX_8X16 }, { TX_8X16, TX_8X16 } },
{ { TX_16X8, TX_16X8 }, { TX_16X8, TX_16X8 } },
{ { TX_16X32, TX_16X32 }, { TX_16X32, TX_16X32 } },
{ { TX_32X16, TX_32X16 }, { TX_32X16, TX_32X16 } },
-#endif // CONFIG_EXT_TX
},
{
// BLOCK_128X64
@@ -864,14 +821,12 @@
{ { TX_8X8, TX_8X8 }, { TX_8X8, TX_8X8 } },
{ { TX_16X16, TX_16X16 }, { TX_16X16, TX_16X16 } },
{ { TX_32X32, TX_32X32 }, { TX_32X32, TX_32X32 } },
-#if CONFIG_EXT_TX
{ { TX_4X8, TX_4X8 }, { TX_4X8, TX_4X8 } },
{ { TX_8X4, TX_8X4 }, { TX_8X4, TX_8X4 } },
{ { TX_8X16, TX_8X16 }, { TX_8X16, TX_8X16 } },
{ { TX_16X8, TX_16X8 }, { TX_16X8, TX_16X8 } },
{ { TX_16X32, TX_16X32 }, { TX_16X32, TX_16X32 } },
{ { TX_32X16, TX_32X16 }, { TX_32X16, TX_32X16 } },
-#endif // CONFIG_EXT_TX
},
{
// BLOCK_128X128
@@ -882,14 +837,12 @@
{ { TX_8X8, TX_8X8 }, { TX_8X8, TX_8X8 } },
{ { TX_16X16, TX_16X16 }, { TX_16X16, TX_16X16 } },
{ { TX_32X32, TX_32X32 }, { TX_32X32, TX_32X32 } },
-#if CONFIG_EXT_TX
{ { TX_4X8, TX_4X8 }, { TX_4X8, TX_4X8 } },
{ { TX_8X4, TX_8X4 }, { TX_8X4, TX_8X4 } },
{ { TX_8X16, TX_8X16 }, { TX_8X16, TX_8X16 } },
{ { TX_16X8, TX_16X8 }, { TX_16X8, TX_16X8 } },
{ { TX_16X32, TX_16X32 }, { TX_16X32, TX_16X32 } },
{ { TX_32X16, TX_32X16 }, { TX_32X16, TX_32X16 } },
-#endif // CONFIG_EXT_TX
#endif // CONFIG_EXT_PARTITION
},
};
diff --git a/av1/common/entropy.c b/av1/common/entropy.c
index 7e66e93..80eaccc 100644
--- a/av1/common/entropy.c
+++ b/av1/common/entropy.c
@@ -64,11 +64,9 @@
#endif
{ 1, 2, 3, 4, 3, 16 - 13, 0 }, { 1, 2, 3, 4, 11, 64 - 21, 0 },
{ 1, 2, 3, 4, 11, 256 - 21, 0 }, { 1, 2, 3, 4, 11, 1024 - 21, 0 },
-#if CONFIG_EXT_TX
{ 1, 2, 3, 4, 8, 32 - 18, 0 }, { 1, 2, 3, 4, 8, 32 - 18, 0 },
{ 1, 2, 3, 4, 11, 128 - 21, 0 }, { 1, 2, 3, 4, 11, 128 - 21, 0 },
{ 1, 2, 3, 4, 11, 512 - 21, 0 }, { 1, 2, 3, 4, 11, 512 - 21, 0 },
-#endif // CONFIG_EXT_TX
};
const uint16_t band_cum_count_table[TX_SIZES_ALL][8] = {
@@ -77,11 +75,9 @@
#endif
{ 0, 1, 3, 6, 10, 13, 16, 0 }, { 0, 1, 3, 6, 10, 21, 64, 0 },
{ 0, 1, 3, 6, 10, 21, 256, 0 }, { 0, 1, 3, 6, 10, 21, 1024, 0 },
-#if CONFIG_EXT_TX
{ 0, 1, 3, 6, 10, 18, 32, 0 }, { 0, 1, 3, 6, 10, 18, 32, 0 },
{ 0, 1, 3, 6, 10, 21, 128, 0 }, { 0, 1, 3, 6, 10, 21, 128, 0 },
{ 0, 1, 3, 6, 10, 21, 512, 0 }, { 0, 1, 3, 6, 10, 21, 512, 0 },
-#endif // CONFIG_EXT_TX
};
const uint8_t av1_coefband_trans_8x8plus[1024] = {
diff --git a/av1/common/entropy.h b/av1/common/entropy.h
index 423b35c..55ed8d4 100644
--- a/av1/common/entropy.h
+++ b/av1/common/entropy.h
@@ -222,7 +222,6 @@
above_ec = a[0] != 0;
left_ec = l[0] != 0;
break;
-#if CONFIG_EXT_TX
case TX_4X8:
above_ec = a[0] != 0;
left_ec = !!*(const uint16_t *)l;
@@ -247,7 +246,6 @@
above_ec = !!*(const uint64_t *)a;
left_ec = !!*(const uint32_t *)l;
break;
-#endif // CONFIG_EXT_TX
case TX_8X8:
above_ec = !!*(const uint16_t *)a;
left_ec = !!*(const uint16_t *)l;
diff --git a/av1/common/reconinter.c b/av1/common/reconinter.c
index 66b6bfd..3837809 100644
--- a/av1/common/reconinter.c
+++ b/av1/common/reconinter.c
@@ -567,7 +567,7 @@
// TODO(sarahparker) enable the use of DUAL_FILTER in warped motion functions
// in order to allow GLOBAL_MOTION and DUAL_FILTER to work together
-#if CONFIG_DUAL_FILTER
+#if CONFIG_SUB8X8_MC
#if CONFIG_MOTION_VAR
if (mi->mbmi.sb_type < BLOCK_8X8 && plane > 0 && !build_for_obmc) {
#else
@@ -652,91 +652,6 @@
}
#endif
-#if CONFIG_SUB8X8_MC
-#if CONFIG_MOTION_VAR
- if (mi->mbmi.sb_type < BLOCK_8X8 && plane > 0 && !build_for_obmc) {
-#else
- if (mi->mbmi.sb_type < BLOCK_8X8 && plane > 0) {
-#endif // CONFIG_MOTION_VAR
- // block size in log2
- const int b4_wl = b_width_log2_lookup[mi->mbmi.sb_type];
- const int b4_hl = b_height_log2_lookup[mi->mbmi.sb_type];
- const int b8_sl = b_width_log2_lookup[BLOCK_8X8];
-
- // block size
- const int b4_w = 1 << b4_wl;
- const int b4_h = 1 << b4_hl;
- const int b8_s = 1 << b8_sl;
- int idx, idy;
-
- const int x_base = x;
- const int y_base = y;
-
- // processing unit size
- const int x_step = w >> (b8_sl - b4_wl);
- const int y_step = h >> (b8_sl - b4_hl);
-
- for (idy = 0; idy < b8_s; idy += b4_h) {
- for (idx = 0; idx < b8_s; idx += b4_w) {
- const int chr_idx = (idy * 2) + idx;
- for (ref = 0; ref < 1 + is_compound; ++ref) {
- const struct scale_factors *const sf = &xd->block_refs[ref]->sf;
- struct buf_2d *const pre_buf = &pd->pre[ref];
- struct buf_2d *const dst_buf = &pd->dst;
- uint8_t *dst = dst_buf->buf;
- const MV mv = mi->bmi[chr_idx].as_mv[ref].as_mv;
- const MV mv_q4 = clamp_mv_to_umv_border_sb(
- xd, &mv, bw, bh, pd->subsampling_x, pd->subsampling_y);
- uint8_t *pre;
- MV32 scaled_mv;
- int xs, ys, subpel_x, subpel_y;
- const int is_scaled = av1_is_scaled(sf);
-
- x = x_base + idx * x_step;
- y = y_base + idy * y_step;
-
- dst += dst_buf->stride * y + x;
-
- if (is_scaled) {
- pre =
- pre_buf->buf + scaled_buffer_offset(x, y, pre_buf->stride, sf);
- scaled_mv = av1_scale_mv(&mv_q4, mi_x + x, mi_y + y, sf);
- xs = sf->x_step_q4;
- ys = sf->y_step_q4;
- } else {
- pre = pre_buf->buf + y * pre_buf->stride + x;
- scaled_mv.row = mv_q4.row;
- scaled_mv.col = mv_q4.col;
- xs = ys = 16;
- }
-
- subpel_x = scaled_mv.col & SUBPEL_MASK;
- subpel_y = scaled_mv.row & SUBPEL_MASK;
- pre += (scaled_mv.row >> SUBPEL_BITS) * pre_buf->stride +
- (scaled_mv.col >> SUBPEL_BITS);
-
-#if CONFIG_AOM_HIGHBITDEPTH
- if (xd->cur_buf->flags & YV12_FLAG_HIGHBITDEPTH) {
- high_inter_predictor(pre, pre_buf->stride, dst, dst_buf->stride,
- subpel_x, subpel_y, sf, x_step, y_step, ref,
- mi->mbmi.interp_filter, xs, ys, xd->bd);
- } else {
- inter_predictor(pre, pre_buf->stride, dst, dst_buf->stride,
- subpel_x, subpel_y, sf, x_step, y_step, ref,
- mi->mbmi.interp_filter, xs, ys);
- }
-#else
- inter_predictor(pre, pre_buf->stride, dst, dst_buf->stride, subpel_x,
- subpel_y, sf, x_step, y_step, ref,
- mi->mbmi.interp_filter, xs, ys);
-#endif
- }
- }
- }
- return;
- }
-#endif
-
for (ref = 0; ref < 1 + is_compound; ++ref) {
const struct scale_factors *const sf = &xd->block_refs[ref]->sf;
struct buf_2d *const pre_buf = &pd->pre[ref];
diff --git a/av1/common/scan.h b/av1/common/scan.h
index 2078e99..01f37b6 100644
--- a/av1/common/scan.h
+++ b/av1/common/scan.h
@@ -67,20 +67,6 @@
1;
}
-static INLINE const SCAN_ORDER *get_intra_scan(TX_SIZE tx_size,
- TX_TYPE tx_type) {
- return &av1_intra_scan_orders[tx_size][tx_type];
-}
-
-#if CONFIG_EXT_TX
-extern const SCAN_ORDER av1_inter_scan_orders[TX_SIZES_ALL][TX_TYPES];
-
-static INLINE const SCAN_ORDER *get_inter_scan(TX_SIZE tx_size,
- TX_TYPE tx_type) {
- return &av1_inter_scan_orders[tx_size][tx_type];
-}
-#endif // CONFIG_EXT_TX
-
static INLINE const SCAN_ORDER *get_scan(const AV1_COMMON *cm, TX_SIZE tx_size,
TX_TYPE tx_type, int is_inter) {
#if CONFIG_ADAPT_SCAN
diff --git a/av1/encoder/encodeframe.c b/av1/encoder/encodeframe.c
index d1d6ecc..b844594 100644
--- a/av1/encoder/encodeframe.c
+++ b/av1/encoder/encodeframe.c
@@ -5007,9 +5007,10 @@
txfm_partition_update(xd->above_txfm_context + tx_col,
xd->left_txfm_context + tx_row, tx_size);
} else {
- BLOCK_SIZE bsize = txsize_to_bsize[tx_size];
- int bh = num_4x4_blocks_high_lookup[bsize];
+ const TX_SIZE sub_txs = sub_tx_size_map[tx_size];
+ const int bs = tx_size_wide_unit[sub_txs];
int i;
+
++counts->txfm_partition[ctx][1];
++x->txb_split_count;
@@ -5022,10 +5023,10 @@
}
for (i = 0; i < 4; ++i) {
- int offsetr = (i >> 1) * bh / 2;
- int offsetc = (i & 0x01) * bh / 2;
- update_txfm_count(x, xd, counts, tx_size - 1, depth + 1,
- blk_row + offsetr, blk_col + offsetc);
+ int offsetr = (i >> 1) * bs;
+ int offsetc = (i & 0x01) * bs;
+ update_txfm_count(x, xd, counts, sub_txs, depth + 1, blk_row + offsetr,
+ blk_col + offsetc);
}
}
}
@@ -5037,8 +5038,8 @@
const int mi_width = num_4x4_blocks_wide_lookup[plane_bsize];
const int mi_height = num_4x4_blocks_high_lookup[plane_bsize];
TX_SIZE max_tx_size = max_txsize_lookup[plane_bsize];
- BLOCK_SIZE txb_size = txsize_to_bsize[max_tx_size];
- int bh = num_4x4_blocks_wide_lookup[txb_size];
+ const int bh = tx_size_high_unit[max_tx_size];
+ const int bw = tx_size_wide_unit[max_tx_size];
int idx, idy;
xd->above_txfm_context = cm->above_txfm_context + mi_col;
@@ -5046,7 +5047,7 @@
xd->left_txfm_context_buffer + (mi_row & MAX_MIB_MASK);
for (idy = 0; idy < mi_height; idy += bh)
- for (idx = 0; idx < mi_width; idx += bh)
+ for (idx = 0; idx < mi_width; idx += bw)
update_txfm_count(x, xd, td_counts, max_tx_size, mi_width != mi_height,
idy, idx);
}
@@ -5068,8 +5069,8 @@
xd->left_txfm_context + tx_row, tx_size);
} else {
- BLOCK_SIZE bsize = txsize_to_bsize[tx_size];
- int bsl = b_width_log2_lookup[bsize];
+ const TX_SIZE sub_txs = sub_tx_size_map[tx_size];
+ const int bsl = tx_size_wide_unit[sub_txs];
int i;
if (tx_size == TX_8X8) {
@@ -5081,11 +5082,10 @@
}
assert(bsl > 0);
- --bsl;
for (i = 0; i < 4; ++i) {
- int offsetr = (i >> 1) << bsl;
- int offsetc = (i & 0x01) << bsl;
- set_txfm_context(xd, tx_size - 1, blk_row + offsetr, blk_col + offsetc);
+ int offsetr = (i >> 1) * bsl;
+ int offsetc = (i & 0x01) * bsl;
+ set_txfm_context(xd, sub_txs, blk_row + offsetr, blk_col + offsetc);
}
}
}
@@ -5096,8 +5096,8 @@
const int mi_width = num_4x4_blocks_wide_lookup[plane_bsize];
const int mi_height = num_4x4_blocks_high_lookup[plane_bsize];
TX_SIZE max_tx_size = max_txsize_lookup[plane_bsize];
- BLOCK_SIZE txb_size = txsize_to_bsize[max_tx_size];
- int bh = num_4x4_blocks_wide_lookup[txb_size];
+ const int bh = tx_size_high_unit[max_tx_size];
+ const int bw = tx_size_wide_unit[max_tx_size];
int idx, idy;
xd->above_txfm_context = cm->above_txfm_context + mi_col;
@@ -5105,7 +5105,7 @@
xd->left_txfm_context_buffer + (mi_row & MAX_MIB_MASK);
for (idy = 0; idy < mi_height; idy += bh)
- for (idx = 0; idx < mi_width; idx += bh)
+ for (idx = 0; idx < mi_width; idx += bw)
set_txfm_context(xd, max_tx_size, idy, idx);
}
#endif
diff --git a/av1/encoder/encodemb.c b/av1/encoder/encodemb.c
index 3a33f35..8b62a22 100644
--- a/av1/encoder/encodemb.c
+++ b/av1/encoder/encodemb.c
@@ -875,7 +875,9 @@
if (tx_size == plane_tx_size) {
encode_block(plane, block, blk_row, blk_col, plane_bsize, tx_size, arg);
} else {
- int bsl = block_size_wide[bsize] >> (tx_size_wide_log2[0] + 1);
+ const TX_SIZE sub_txs = sub_tx_size_map[tx_size];
+ // This is the square transform block partition entry point.
+ int bsl = tx_size_wide_unit[sub_txs];
int i;
assert(bsl > 0);
#if CONFIG_EXT_TX
@@ -885,7 +887,6 @@
for (i = 0; i < 4; ++i) {
const int offsetr = blk_row + ((i >> 1) * bsl);
const int offsetc = blk_col + ((i & 0x01) * bsl);
- const TX_SIZE sub_txs = tx_size - 1;
int step = tx_size_wide_unit[sub_txs] * tx_size_high_unit[sub_txs];
if (offsetr >= max_blocks_high || offsetc >= max_blocks_wide) continue;
diff --git a/av1/encoder/rd.c b/av1/encoder/rd.c
index f5af485..fe6c720 100644
--- a/av1/encoder/rd.c
+++ b/av1/encoder/rd.c
@@ -571,7 +571,6 @@
for (i = 0; i < num_4x4_h; i += 8)
t_left[i] = !!*(const uint64_t *)&left[i];
break;
-#if CONFIG_EXT_TX && CONFIG_RECT_TX
case TX_4X8:
memcpy(t_above, above, sizeof(ENTROPY_CONTEXT) * num_4x4_w);
for (i = 0; i < num_4x4_h; i += 2)
@@ -606,7 +605,6 @@
for (i = 0; i < num_4x4_h; i += 4)
t_left[i] = !!*(const uint32_t *)&left[i];
break;
-#endif // CONFIG_EXT_TX && CONFIG_RECT_TX
default: assert(0 && "Invalid transform size."); break;
}
}
diff --git a/av1/encoder/tokenize.c b/av1/encoder/tokenize.c
index d79763e..82cf39a 100644
--- a/av1/encoder/tokenize.c
+++ b/av1/encoder/tokenize.c
@@ -572,22 +572,12 @@
const BLOCK_SIZE bsize = txsize_to_bsize[tx_size];
const int tx_row = blk_row >> (1 - pd->subsampling_y);
const int tx_col = blk_col >> (1 - pd->subsampling_x);
+ const int max_blocks_high = max_block_high(xd, plane_bsize, plane);
+ const int max_blocks_wide = max_block_wide(xd, plane_bsize, plane);
TX_SIZE plane_tx_size;
- int max_blocks_high = block_size_high[plane_bsize];
- int max_blocks_wide = block_size_wide[plane_bsize];
-
assert(tx_size < TX_SIZES);
- if (xd->mb_to_bottom_edge < 0)
- max_blocks_high += xd->mb_to_bottom_edge >> (3 + pd->subsampling_y);
- if (xd->mb_to_right_edge < 0)
- max_blocks_wide += xd->mb_to_right_edge >> (3 + pd->subsampling_x);
-
- // Scale to the transform block unit.
- max_blocks_high >>= tx_size_wide_log2[0];
- max_blocks_wide >>= tx_size_wide_log2[0];
-
if (blk_row >= max_blocks_high || blk_col >= max_blocks_wide) return;
plane_tx_size =
@@ -605,7 +595,8 @@
cost_coeffs_b(plane, block, blk_row, blk_col, plane_bsize, tx_size, arg);
} else {
// Half the block size in transform block unit.
- int bsl = block_size_wide[bsize] >> (tx_size_wide_log2[0] + 1);
+ const TX_SIZE sub_txs = sub_tx_size_map[tx_size];
+ const int bsl = tx_size_wide_unit[sub_txs];
int i;
assert(bsl > 0);
@@ -614,8 +605,6 @@
const int offsetr = blk_row + ((i >> 1) * bsl);
const int offsetc = blk_col + ((i & 0x01) * bsl);
- // TODO(jingning): Fix this tx_size transition.
- const TX_SIZE sub_txs = tx_size - 1;
int step = tx_size_wide_unit[sub_txs] * tx_size_high_unit[sub_txs];
if (offsetr >= max_blocks_high || offsetc >= max_blocks_wide) continue;