filter_intra: stats collection and cdf optimizer
Change-Id: Ic4c5cb2baa661733662cdf932a05dc6de1667b6b
diff --git a/av1/common/entropymode.h b/av1/common/entropymode.h
index 3452241..b1e4377 100644
--- a/av1/common/entropymode.h
+++ b/av1/common/entropymode.h
@@ -568,6 +568,7 @@
#endif // CONFIG_EXT_INTRA
#if CONFIG_FILTER_INTRA
unsigned int filter_intra[PLANE_TYPES][2];
+ unsigned int filter_intra_mode[PLANE_TYPES][10];
#endif // CONFIG_FILTER_INTRA
#if CONFIG_LPF_SB
unsigned int lpf_reuse[LPF_REUSE_CONTEXT][2];
diff --git a/av1/encoder/encodeframe.c b/av1/encoder/encodeframe.c
index 502957d..f5fc720 100644
--- a/av1/encoder/encodeframe.c
+++ b/av1/encoder/encodeframe.c
@@ -5966,6 +5966,8 @@
const int use_filter_intra_mode =
mbmi->filter_intra_mode_info.use_filter_intra_mode[0];
++counts->filter_intra[0][use_filter_intra_mode];
+ ++counts->filter_intra_mode[0][mbmi->filter_intra_mode_info
+ .filter_intra_mode[0]];
}
if (mbmi->uv_mode == UV_DC_PRED
#if CONFIG_CB4X4
@@ -5977,6 +5979,8 @@
const int use_filter_intra_mode =
mbmi->filter_intra_mode_info.use_filter_intra_mode[1];
++counts->filter_intra[1][use_filter_intra_mode];
+ ++counts->filter_intra_mode[1][mbmi->filter_intra_mode_info
+ .filter_intra_mode[1]];
}
#endif // CONFIG_FILTER_INTRA
#if CONFIG_EXT_INTRA && CONFIG_INTRA_INTERP
diff --git a/tools/aom_entropy_optimizer.c b/tools/aom_entropy_optimizer.c
index de69667..2c0c71e 100644
--- a/tools/aom_entropy_optimizer.c
+++ b/tools/aom_entropy_optimizer.c
@@ -791,6 +791,11 @@
optimize_cdf_table(
&fc.filter_intra[0][0], probsfile, 2, cts_each_dim,
"static const aom_cdf_prob default_filter_intra_cdf[2][CDF_SIZE(2)]");
+ cts_each_dim[0] = PLANE_TYPES;
+ cts_each_dim[1] = 10;
+ optimize_cdf_table(&fc.filter_intra_mode[0][0], probsfile, 2, cts_each_dim,
+ "static const aom_cdf_prob "
+ "default_filter_intra_mode_cdf[2][CDF_SIZE(10)]");
#endif
#if CONFIG_LV_MAP