Add 4 way vert and horz split
This gives about 0.1% gain, bringing up the experiment gains
to 0.55%.
Change-Id: I88a9f9705f71677b72e33c1b2958a2770d8fa8af
diff --git a/av1/common/common_data.h b/av1/common/common_data.h
index f5c70d6..9809e97 100644
--- a/av1/common/common_data.h
+++ b/av1/common/common_data.h
@@ -247,16 +247,16 @@
TX_4X4, // TX_8X4
TX_4X4, // TX_8X16
TX_4X4, // TX_16X8
- TX_8X8, // TX_16X32
- TX_8X8, // TX_32X16
- TX_16X16, // TX_32X64
- TX_16X16, // TX_64X32
+ TX_4X8, // TX_16X32
+ TX_8X4, // TX_32X16
+ TX_8X16, // TX_32X64
+ TX_16X8, // TX_64X32
TX_4X4, // TX_4X16
TX_4X4, // TX_16X4
- TX_4X8, // TX_8X32 //
+ TX_4X8, // TX_8X32
TX_8X4, // TX_32X8
- TX_8X16, // TX_16X64
- TX_16X8, // TX_64X16
+ TX_4X16, // TX_16X64
+ TX_16X4, // TX_64X16
#if CONFIG_FLEX_PARTITION
TX_4X8, // TX_4X32
TX_8X4, // TX_32X4
diff --git a/av1/common/entropymode.c b/av1/common/entropymode.c
index a96b29f..d1478d7 100644
--- a/av1/common/entropymode.c
+++ b/av1/common/entropymode.c
@@ -1065,31 +1065,51 @@
TX_PARTITION_TYPES)] = {
{
// Square
- { AOM_CDF4(28581, 29581, 29681) }, { AOM_CDF4(23846, 24846, 24946) },
- { AOM_CDF4(20847, 21847, 21947) }, { AOM_CDF4(24315, 25315, 25415) },
- { AOM_CDF4(18196, 19196, 19296) }, { AOM_CDF4(12133, 13133, 13233) },
- { AOM_CDF4(18791, 19791, 19891) }, { AOM_CDF4(10887, 11887, 11987) },
- { AOM_CDF4(11005, 12005, 12105) }, { AOM_CDF4(27179, 28179, 28279) },
- { AOM_CDF4(20004, 21004, 21104) }, { AOM_CDF4(11281, 12281, 12381) },
- { AOM_CDF4(26549, 27549, 27649) }, { AOM_CDF4(19308, 20308, 20408) },
- { AOM_CDF4(14224, 15224, 15324) }, { AOM_CDF4(28015, 29015, 29115) },
- { AOM_CDF4(21546, 22546, 22646) }, { AOM_CDF4(14400, 15400, 15500) },
- { AOM_CDF4(28165, 29165, 29265) }, { AOM_CDF4(22401, 23401, 23501) },
- { AOM_CDF4(16088, 17088, 17188) },
+ { AOM_CDF6(28581, 29581, 29681, 29881, 29981) },
+ { AOM_CDF6(23846, 24846, 24946, 25046, 25146) },
+ { AOM_CDF6(20847, 21847, 21947, 22047, 22147) },
+ { AOM_CDF6(24315, 25315, 25415, 25515, 25615) },
+ { AOM_CDF6(18196, 19196, 19296, 19396, 19496) },
+ { AOM_CDF6(12133, 13133, 13233, 13333, 13433) },
+ { AOM_CDF6(18791, 19791, 19891, 19991, 20091) },
+ { AOM_CDF6(10887, 11887, 11987, 12087, 12187) },
+ { AOM_CDF6(11005, 12005, 12105, 12205, 12305) },
+ { AOM_CDF6(27179, 28179, 28279, 28379, 28479) },
+ { AOM_CDF6(20004, 21004, 21104, 21204, 21304) },
+ { AOM_CDF6(11281, 12281, 12381, 12481, 12581) },
+ { AOM_CDF6(26549, 27549, 27649, 27749, 27849) },
+ { AOM_CDF6(19308, 20308, 20408, 20508, 20608) },
+ { AOM_CDF6(14224, 15224, 15324, 15424, 15524) },
+ { AOM_CDF6(28015, 29015, 29115, 29215, 29315) },
+ { AOM_CDF6(21546, 22546, 22646, 22746, 22846) },
+ { AOM_CDF6(14400, 15400, 15500, 15600, 15700) },
+ { AOM_CDF6(28165, 29165, 29265, 29365, 29465) },
+ { AOM_CDF6(22401, 23401, 23501, 23601, 23701) },
+ { AOM_CDF6(16088, 17088, 17188, 17288, 17388) },
},
{
// Rectangular
- { AOM_CDF4(28581, 29581, 29681) }, { AOM_CDF4(23846, 24846, 24946) },
- { AOM_CDF4(20847, 21847, 21947) }, { AOM_CDF4(24315, 25315, 25415) },
- { AOM_CDF4(18196, 19196, 19296) }, { AOM_CDF4(12133, 13133, 13233) },
- { AOM_CDF4(18791, 19791, 19891) }, { AOM_CDF4(10887, 11887, 11987) },
- { AOM_CDF4(11005, 12005, 12105) }, { AOM_CDF4(27179, 28179, 28279) },
- { AOM_CDF4(20004, 21004, 21104) }, { AOM_CDF4(11281, 12281, 12381) },
- { AOM_CDF4(26549, 27549, 27649) }, { AOM_CDF4(19308, 20308, 20408) },
- { AOM_CDF4(14224, 15224, 15324) }, { AOM_CDF4(28015, 29015, 29115) },
- { AOM_CDF4(21546, 22546, 22646) }, { AOM_CDF4(14400, 15400, 15500) },
- { AOM_CDF4(28165, 29165, 29265) }, { AOM_CDF4(22401, 23401, 23501) },
- { AOM_CDF4(16088, 17088, 17188) },
+ { AOM_CDF6(28581, 29581, 29681, 29881, 29981) },
+ { AOM_CDF6(23846, 24846, 24946, 25046, 25146) },
+ { AOM_CDF6(20847, 21847, 21947, 22047, 22147) },
+ { AOM_CDF6(24315, 25315, 25415, 25515, 25615) },
+ { AOM_CDF6(18196, 19196, 19296, 19396, 19496) },
+ { AOM_CDF6(12133, 13133, 13233, 13333, 13433) },
+ { AOM_CDF6(18791, 19791, 19891, 19991, 20091) },
+ { AOM_CDF6(10887, 11887, 11987, 12087, 12187) },
+ { AOM_CDF6(11005, 12005, 12105, 12205, 12305) },
+ { AOM_CDF6(27179, 28179, 28279, 28379, 28479) },
+ { AOM_CDF6(20004, 21004, 21104, 21204, 21304) },
+ { AOM_CDF6(11281, 12281, 12381, 12481, 12581) },
+ { AOM_CDF6(26549, 27549, 27649, 27749, 27849) },
+ { AOM_CDF6(19308, 20308, 20408, 20508, 20608) },
+ { AOM_CDF6(14224, 15224, 15324, 15424, 15524) },
+ { AOM_CDF6(28015, 29015, 29115, 29215, 29315) },
+ { AOM_CDF6(21546, 22546, 22646, 22746, 22846) },
+ { AOM_CDF6(14400, 15400, 15500, 15600, 15700) },
+ { AOM_CDF6(28165, 29165, 29265, 29365, 29465) },
+ { AOM_CDF6(22401, 23401, 23501, 23601, 23701) },
+ { AOM_CDF6(16088, 17088, 17188, 17288, 17388) },
}
};
#else
diff --git a/av1/common/enums.h b/av1/common/enums.h
index 2820d31..feec832 100644
--- a/av1/common/enums.h
+++ b/av1/common/enums.h
@@ -262,12 +262,21 @@
// +-------+ | | |
// | | | | |
// +-------+ +---+---+
+//
+// HORZ4 VERT4
+// +-------+ +-+-+-+-+
+// +-------+ | | | | |
+// +-------+ | | | | |
+// +-------+ | | | | |
+// +-------+ +-+-+-+-+
enum {
TX_PARTITION_NONE,
TX_PARTITION_SPLIT,
#if CONFIG_NEW_TX_PARTITION_EXT
TX_PARTITION_HORZ,
TX_PARTITION_VERT,
+ TX_PARTITION_HORZ4,
+ TX_PARTITION_VERT4,
#endif // CONFIG_NEW_TX_PARTITION_EXT
TX_PARTITION_TYPES,
} UENUM1BYTE(TX_PARTITION_TYPE);
diff --git a/av1/common/onyxc_int.h b/av1/common/onyxc_int.h
index 840554e..7318c72 100644
--- a/av1/common/onyxc_int.h
+++ b/av1/common/onyxc_int.h
@@ -1284,25 +1284,25 @@
#if CONFIG_NEW_TX_PARTITION
#if CONFIG_NEW_TX_PARTITION_EXT
static const int new_tx_partition_used[TX_SIZES_ALL][TX_PARTITION_TYPES] = {
- { 1, 0, 0, 0 }, // 4x4 transform
- { 1, 1, 1, 1 }, // 8x8 transform
- { 1, 1, 1, 1 }, // 16x16 transform
- { 1, 1, 1, 1 }, // 32x32 transform
- { 1, 1, 1, 1 }, // 64x64 transform
- { 1, 0, 1, 0 }, // 4x8 transform
- { 1, 0, 0, 1 }, // 8x4 transform
- { 1, 1, 1, 1 }, // 8x16 transform
- { 1, 1, 1, 1 }, // 16x8 transform
- { 1, 1, 1, 1 }, // 16x32 transform
- { 1, 1, 1, 1 }, // 32x16 transform
- { 1, 1, 1, 1 }, // 32x64 transform
- { 1, 1, 1, 1 }, // 64x32 transform
- { 1, 0, 1, 0 }, // 4x16 transform
- { 1, 0, 0, 1 }, // 16x4 transform
- { 1, 1, 1, 0 }, // 8x32 transform
- { 1, 1, 0, 1 }, // 32x8 transform
- { 1, 1, 1, 0 }, // 16x64 transform
- { 1, 1, 0, 1 }, // 64x16 transform
+ { 1, 0, 0, 0, 0, 0 }, // 4x4 transform
+ { 1, 1, 1, 1, 0, 0 }, // 8x8 transform
+ { 1, 1, 1, 1, 1, 1 }, // 16x16 transform
+ { 1, 1, 1, 1, 1, 1 }, // 32x32 transform
+ { 1, 1, 1, 1, 1, 1 }, // 64x64 transform
+ { 1, 0, 1, 0, 0, 0 }, // 4x8 transform
+ { 1, 0, 0, 1, 0, 0 }, // 8x4 transform
+ { 1, 1, 1, 1, 1, 0 }, // 8x16 transform
+ { 1, 1, 1, 1, 0, 1 }, // 16x8 transform
+ { 1, 1, 1, 1, 1, 0 }, // 16x32 transform
+ { 1, 1, 1, 1, 0, 1 }, // 32x16 transform
+ { 1, 1, 1, 1, 1, 0 }, // 32x64 transform
+ { 1, 1, 1, 1, 0, 1 }, // 64x32 transform
+ { 1, 0, 1, 0, 1, 0 }, // 4x16 transform
+ { 1, 0, 0, 1, 0, 1 }, // 16x4 transform
+ { 1, 1, 1, 0, 1, 0 }, // 8x32 transform
+ { 1, 1, 0, 1, 0, 1 }, // 32x8 transform
+ { 1, 1, 1, 0, 1, 0 }, // 16x64 transform
+ { 1, 1, 0, 1, 0, 1 }, // 64x16 transform
};
#else
static const int new_tx_partition_used[TX_SIZES_ALL][TX_PARTITION_TYPES] = {
@@ -1346,9 +1346,11 @@
{ { 0 }, { 0 }, 1 }, // TX_PARTITION_NONE
{ { 1, 1, 1, 1 }, { 1, 1, 1, 1 }, 4 }, // TX_PARTITION_SPLIT
#if CONFIG_NEW_TX_PARTITION_EXT
- { { 1, 1 }, { 0, 0 }, 2 }, // TX_PARTITION_HORZ
- { { 0, 0 }, { 1, 1 }, 2 }, // TX_PARTITION_VERT
-#endif // CONFIG_NEW_TX_PARTITION_EXT
+ { { 1, 1 }, { 0, 0 }, 2 }, // TX_PARTITION_HORZ
+ { { 0, 0 }, { 1, 1 }, 2 }, // TX_PARTITION_VERT
+ { { 2, 2, 2, 2 }, { 0, 0, 0, 0 }, 4 }, // TX_PARTITION_HORZ4
+ { { 0, 0, 0, 0 }, { 2, 2, 2, 2 }, 4 }, // TX_PARTITION_VERT4
+#endif // CONFIG_NEW_TX_PARTITION_EXT
},
// Rectangular
{
@@ -1357,6 +1359,8 @@
{ { 1, 1, 1, 1 }, { 1, 1, 1, 1 }, 4 }, // TX_PARTITION_SPLIT
{ { 1, 1 }, { 0, 0 }, 2 }, // TX_PARTITION_HORZ
{ { 0, 0 }, { 1, 1 }, 2 }, // TX_PARTITION_VERT
+ { { 2, 2, 2, 2 }, { 0, 0, 0, 0 }, 4 }, // TX_PARTITION_HORZ4
+ { { 0, 0, 0, 0 }, { 2, 2, 2, 2 }, 4 }, // TX_PARTITION_VERT4
#else
{ { 0, 0 }, { 1, 1 }, 2 }, // TX_PARTITION_SPLIT
diff --git a/av1/encoder/block.h b/av1/encoder/block.h
index 9fe1e45e..6f13fa3 100644
--- a/av1/encoder/block.h
+++ b/av1/encoder/block.h
@@ -474,8 +474,8 @@
1, // BLOCK_32X64
1, // BLOCK_64X32
1, // BLOCK_64X64
- 0, // BLOCK_64X128
- 0, // BLOCK_128X64
+ 1, // BLOCK_64X128
+ 1, // BLOCK_128X64
1, // BLOCK_128X128
1, // BLOCK_4X16
1, // BLOCK_16X4