Support filter-intra in cb4x4 mode
This commit resolves an enc/dec mismatch issue when both filter-intra
and cb4x4 modes are enabled.
BUG=aomedia:253
Change-Id: I4026d93c00a819f2ce69aedba9d34a774319acbf
diff --git a/av1/common/reconintra.c b/av1/common/reconintra.c
index 727668c..4411639 100644
--- a/av1/common/reconintra.c
+++ b/av1/common/reconintra.c
@@ -1168,6 +1168,20 @@
#if CONFIG_FILTER_INTRA
int av1_filter_intra_taps_4[TX_SIZES][INTRA_MODES][4] = {
+#if CONFIG_CB4X4
+ {
+ { 735, 881, -537, -54 },
+ { 1005, 519, -488, -11 },
+ { 383, 990, -343, -6 },
+ { 442, 805, -542, 319 },
+ { 658, 616, -133, -116 },
+ { 875, 442, -141, -151 },
+ { 386, 741, -23, -80 },
+ { 390, 1027, -446, 51 },
+ { 679, 606, -523, 262 },
+ { 903, 922, -778, -23 },
+ },
+#endif
{
{ 735, 881, -537, -54 },
{ 1005, 519, -488, -11 },
diff --git a/av1/decoder/decodemv.c b/av1/decoder/decodemv.c
index 85fd4ca..254f9c6 100644
--- a/av1/decoder/decodemv.c
+++ b/av1/decoder/decodemv.c
@@ -908,7 +908,8 @@
#if CONFIG_FILTER_INTRA
mbmi->filter_intra_mode_info.use_filter_intra_mode[0] = 0;
mbmi->filter_intra_mode_info.use_filter_intra_mode[1] = 0;
- if (bsize >= BLOCK_8X8) read_filter_intra_mode_info(cm, xd, r);
+ if (bsize >= BLOCK_8X8 || CONFIG_CB4X4)
+ read_filter_intra_mode_info(cm, xd, r);
#endif // CONFIG_FILTER_INTRA
read_tx_type(cm, xd, mbmi,
@@ -1209,7 +1210,8 @@
#if CONFIG_FILTER_INTRA
mbmi->filter_intra_mode_info.use_filter_intra_mode[0] = 0;
mbmi->filter_intra_mode_info.use_filter_intra_mode[1] = 0;
- if (bsize >= BLOCK_8X8) read_filter_intra_mode_info(cm, xd, r);
+ if (bsize >= BLOCK_8X8 || CONFIG_CB4X4)
+ read_filter_intra_mode_info(cm, xd, r);
#endif // CONFIG_FILTER_INTRA
}
diff --git a/av1/encoder/bitstream.c b/av1/encoder/bitstream.c
index ca43152..4553cef 100644
--- a/av1/encoder/bitstream.c
+++ b/av1/encoder/bitstream.c
@@ -1410,7 +1410,8 @@
write_palette_mode_info(cm, xd, mi, w);
#endif // CONFIG_PALETTE
#if CONFIG_FILTER_INTRA
- if (bsize >= BLOCK_8X8) write_filter_intra_mode_info(cm, mbmi, w);
+ if (bsize >= BLOCK_8X8 || unify_bsize)
+ write_filter_intra_mode_info(cm, mbmi, w);
#endif // CONFIG_FILTER_INTRA
} else {
int16_t mode_ctx;
@@ -1755,7 +1756,8 @@
write_palette_mode_info(cm, xd, mi, w);
#endif // CONFIG_PALETTE
#if CONFIG_FILTER_INTRA
- if (bsize >= BLOCK_8X8) write_filter_intra_mode_info(cm, mbmi, w);
+ if (bsize >= BLOCK_8X8 || unify_bsize)
+ write_filter_intra_mode_info(cm, mbmi, w);
#endif // CONFIG_FILTER_INTRA
write_tx_type(cm, xd, mbmi,