Clean ups and bug-fixes for filter_intra
Clean up: clean up unused entropy related arrays
Bug-fixes: resolve compiling errors when it is enabled with
entropy_stats and ext_skip
Change-Id: I2893e1b5c09e847fb4677f6e62709464208b76f8
diff --git a/av1/common/entropymode.c b/av1/common/entropymode.c
index 8187497..4c664d2 100644
--- a/av1/common/entropymode.c
+++ b/av1/common/entropymode.c
@@ -1485,9 +1485,8 @@
#endif // CONFIG_JNT_COMP
#if CONFIG_FILTER_INTRA
-static const aom_cdf_prob default_filter_intra_mode_cdf[2][CDF_SIZE(
- FILTER_INTRA_MODES)] = { { AOM_CDF5(14259, 17304, 20463, 29377) },
- { AOM_CDF5(32768, 32768, 32768, 32768) } };
+static const aom_cdf_prob default_filter_intra_mode_cdf[CDF_SIZE(
+ FILTER_INTRA_MODES)] = { AOM_CDF5(14259, 17304, 20463, 29377) };
static const aom_cdf_prob default_filter_intra_cdfs[TX_SIZES_ALL][CDF_SIZE(2)] =
{
diff --git a/av1/common/entropymode.h b/av1/common/entropymode.h
index 2e24061..7665883 100644
--- a/av1/common/entropymode.h
+++ b/av1/common/entropymode.h
@@ -195,7 +195,7 @@
struct segmentation_probs seg;
#if CONFIG_FILTER_INTRA
aom_cdf_prob filter_intra_cdfs[TX_SIZES_ALL][CDF_SIZE(2)];
- aom_cdf_prob filter_intra_mode_cdf[PLANE_TYPES][CDF_SIZE(FILTER_INTRA_MODES)];
+ aom_cdf_prob filter_intra_mode_cdf[CDF_SIZE(FILTER_INTRA_MODES)];
#endif // CONFIG_FILTER_INTRA
#if CONFIG_LOOP_RESTORATION
aom_cdf_prob switchable_restore_cdf[CDF_SIZE(RESTORE_SWITCHABLE_TYPES)];
@@ -346,10 +346,8 @@
#endif // CONFIG_ENTROPY_STATS
struct seg_counts seg;
#if CONFIG_FILTER_INTRA
- unsigned int filter_intra_mode[PLANE_TYPES][FILTER_INTRA_MODES];
+ unsigned int filter_intra_mode[FILTER_INTRA_MODES];
unsigned int filter_intra_tx[TX_SIZES_ALL][2];
- unsigned int filter_intra_mode_ctx[KF_MODE_CONTEXTS][KF_MODE_CONTEXTS]
- [FILTER_INTRA_MODES];
#endif // CONFIG_FILTER_INTRA
} FRAME_COUNTS;
diff --git a/av1/common/reconintra.c b/av1/common/reconintra.c
index ed62bb4..796fced 100644
--- a/av1/common/reconintra.c
+++ b/av1/common/reconintra.c
@@ -1270,6 +1270,10 @@
assert(bw <= 32 && bh <= 32);
+ // The initialization is just for silencing Jenkins static analysis warnings
+ for (r = 0; r < bh + 1; ++r)
+ memset(buffer[r], 0, (bw + 1) * sizeof(buffer[0][0]));
+
for (r = 0; r < bh; ++r) buffer[r + 1][0] = (int)left[r];
for (c = 0; c < bw + 1; ++c) buffer[0][c] = (int)above[c - 1];
@@ -1370,6 +1374,10 @@
assert(bw <= 32 && bh <= 32);
+ // The initialization is just for silencing Jenkins static analysis warnings
+ for (r = 0; r < bh + 1; ++r)
+ memset(buffer[r], 0, (bw + 1) * sizeof(buffer[0][0]));
+
for (r = 0; r < bh; ++r) buffer[r + 1][0] = (int)left[r];
for (c = 0; c < bw + 1; ++c) buffer[0][c] = (int)above[c - 1];
diff --git a/av1/decoder/decodemv.c b/av1/decoder/decodemv.c
index b8707a8..3121e9c 100644
--- a/av1/decoder/decodemv.c
+++ b/av1/decoder/decodemv.c
@@ -875,9 +875,8 @@
filter_intra_mode_info->use_filter_intra = aom_read_symbol(
r, xd->tile_ctx->filter_intra_cdfs[mbmi->tx_size], 2, ACCT_STR);
if (filter_intra_mode_info->use_filter_intra) {
- filter_intra_mode_info->filter_intra_mode =
- aom_read_symbol(r, xd->tile_ctx->filter_intra_mode_cdf[0],
- FILTER_INTRA_MODES, ACCT_STR);
+ filter_intra_mode_info->filter_intra_mode = aom_read_symbol(
+ r, xd->tile_ctx->filter_intra_mode_cdf, FILTER_INTRA_MODES, ACCT_STR);
}
}
}
diff --git a/av1/encoder/bitstream.c b/av1/encoder/bitstream.c
index 4bae6af..880cedb 100644
--- a/av1/encoder/bitstream.c
+++ b/av1/encoder/bitstream.c
@@ -818,7 +818,7 @@
if (mbmi->filter_intra_mode_info.use_filter_intra) {
const FILTER_INTRA_MODE mode =
mbmi->filter_intra_mode_info.filter_intra_mode;
- aom_write_symbol(w, mode, xd->tile_ctx->filter_intra_mode_cdf[0],
+ aom_write_symbol(w, mode, xd->tile_ctx->filter_intra_mode_cdf,
FILTER_INTRA_MODES);
}
}
diff --git a/av1/encoder/block.h b/av1/encoder/block.h
index 5126eb9..f02b9e0 100644
--- a/av1/encoder/block.h
+++ b/av1/encoder/block.h
@@ -297,7 +297,7 @@
int y_mode_costs[INTRA_MODES][INTRA_MODES][INTRA_MODES];
#if CONFIG_FILTER_INTRA
int filter_intra_cost[TX_SIZES_ALL][2];
- int filter_intra_mode_cost[PLANE_TYPES][FILTER_INTRA_MODES];
+ int filter_intra_mode_cost[FILTER_INTRA_MODES];
#endif
int switchable_interp_costs[SWITCHABLE_FILTER_CONTEXTS][SWITCHABLE_FILTERS];
#if CONFIG_EXT_PARTITION_TYPES
diff --git a/av1/encoder/encodeframe.c b/av1/encoder/encodeframe.c
index 208f99e..635a992 100644
--- a/av1/encoder/encodeframe.c
+++ b/av1/encoder/encodeframe.c
@@ -4156,24 +4156,15 @@
const int use_filter_intra_mode =
mbmi->filter_intra_mode_info.use_filter_intra;
#if CONFIG_ENTROPY_STATS
- if (use_filter_intra_mode) {
- const PREDICTION_MODE above = av1_above_block_mode(above_mi);
- const PREDICTION_MODE left = av1_left_block_mode(left_mi);
-#if CONFIG_KF_CTX
- int above_ctx = intra_mode_context[above];
- int left_ctx = intra_mode_context[left];
-#endif
- ++counts->filter_intra_mode[0][mbmi->filter_intra_mode_info
- .filter_intra_mode[0]];
- ++counts->filter_intra_mode_ctx[above_ctx][left_ctx]
- [mbmi->filter_intra_mode_info
- .filter_intra_mode[0]];
- }
++counts->filter_intra_tx[mbmi->tx_size][use_filter_intra_mode];
+ if (use_filter_intra_mode) {
+ ++counts
+ ->filter_intra_mode[mbmi->filter_intra_mode_info.filter_intra_mode];
+ }
#endif // CONFIG_ENTROPY_STATS
if (allow_update_cdf) {
if (use_filter_intra_mode)
- update_cdf(fc->filter_intra_mode_cdf[0],
+ update_cdf(fc->filter_intra_mode_cdf,
mbmi->filter_intra_mode_info.filter_intra_mode,
FILTER_INTRA_MODES);
update_cdf(fc->filter_intra_cdfs[mbmi->tx_size], use_filter_intra_mode,
diff --git a/av1/encoder/rd.c b/av1/encoder/rd.c
index e88794e..710df4f 100644
--- a/av1/encoder/rd.c
+++ b/av1/encoder/rd.c
@@ -119,8 +119,8 @@
NULL);
#if CONFIG_FILTER_INTRA
- av1_cost_tokens_from_cdf(x->filter_intra_mode_cost[0],
- fc->filter_intra_mode_cdf[0], NULL);
+ av1_cost_tokens_from_cdf(x->filter_intra_mode_cost, fc->filter_intra_mode_cdf,
+ NULL);
for (i = 0; i < TX_SIZES_ALL; ++i)
av1_cost_tokens_from_cdf(x->filter_intra_cost[i], fc->filter_intra_cdfs[i],
NULL);
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c
index fa8c6b9..2f63807 100644
--- a/av1/encoder/rdopt.c
+++ b/av1/encoder/rdopt.c
@@ -2759,7 +2759,7 @@
if (mbmi->filter_intra_mode_info.use_filter_intra) {
const int mode = mbmi->filter_intra_mode_info.filter_intra_mode;
mode_cost += x->filter_intra_cost[mbmi->tx_size][1] +
- x->filter_intra_mode_cost[0][mode];
+ x->filter_intra_mode_cost[mode];
} else {
mode_cost += x->filter_intra_cost[mbmi->tx_size][0];
}
@@ -3071,7 +3071,7 @@
if (tokenonly_rd_stats.rate == INT_MAX) continue;
this_rate = tokenonly_rd_stats.rate +
x->filter_intra_cost[mbmi->tx_size][1] +
- x->filter_intra_mode_cost[0][mode] + mode_cost;
+ x->filter_intra_mode_cost[mode] + mode_cost;
this_rd = RDCOST(x->rdmult, this_rate, tokenonly_rd_stats.dist);
if (this_rd < *best_rd) {
@@ -9169,8 +9169,7 @@
}
#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;
+ mbmi->filter_intra_mode_info.use_filter_intra = 0;
#endif // CONFIG_FILTER_INTRA
mbmi->interintra_mode = (INTERINTRA_MODE)(II_DC_PRED - 1);
#if CONFIG_JNT_COMP
@@ -9848,10 +9847,9 @@
super_block_yrd(cpi, x, &rd_stats_y_fi, bsize, best_rd);
if (rd_stats_y_fi.rate == INT_MAX) continue;
- this_rate_tmp = rd_stats_y_fi.rate +
- x->filter_intra_cost[mbmi->tx_size][1] +
- x->filter_intra_mode_cost[0][fi_mode] +
- intra_mode_cost[mbmi->mode];
+ this_rate_tmp =
+ rd_stats_y_fi.rate + x->filter_intra_cost[mbmi->tx_size][1] +
+ x->filter_intra_mode_cost[fi_mode] + intra_mode_cost[mbmi->mode];
this_rd_tmp = RDCOST(x->rdmult, this_rate_tmp, rd_stats_y_fi.dist);
if (this_rd_tmp < best_rd_tmp) {
@@ -9953,8 +9951,8 @@
x->filter_intra_cost[mbmi->tx_size]
[mbmi->filter_intra_mode_info.use_filter_intra];
if (mbmi->filter_intra_mode_info.use_filter_intra) {
- rate2 += x->filter_intra_mode_cost[0][mbmi->filter_intra_mode_info
- .filter_intra_mode];
+ rate2 += x->filter_intra_mode_cost[mbmi->filter_intra_mode_info
+ .filter_intra_mode];
}
}
#endif // CONFIG_FILTER_INTRA
@@ -10714,8 +10712,7 @@
best_mbmode.interintra_mode = (INTERINTRA_MODE)(II_DC_PRED - 1);
#if CONFIG_FILTER_INTRA
- best_mbmode.filter_intra_mode_info.use_filter_intra_mode[0] = 0;
- best_mbmode.filter_intra_mode_info.use_filter_intra_mode[1] = 0;
+ best_mbmode.filter_intra_mode_info.use_filter_intra = 0;
#endif // CONFIG_FILTER_INTRA
set_default_interp_filters(&best_mbmode, cm->interp_filter);