INTERINTRA : adapt interintra_mode as cdf.
Use CDFs to code intrainter_mode instead of deprecated
tree coding.
AWCY, objective-1-fast, High Latency :
-0.02% all metrics, standard configuration
Change-Id: I839eec7cae9783e28d2018511989b7b56dc948a5
diff --git a/av1/decoder/decodeframe.c b/av1/decoder/decodeframe.c
index 1546401..0b61a90 100644
--- a/av1/decoder/decodeframe.c
+++ b/av1/decoder/decodeframe.c
@@ -5117,10 +5117,12 @@
av1_diff_update_prob(&r, &fc->interintra_prob[i], ACCT_STR);
}
}
+#if !CONFIG_EC_ADAPT
for (i = 0; i < BLOCK_SIZE_GROUPS; i++) {
for (j = 0; j < INTERINTRA_MODES - 1; j++)
av1_diff_update_prob(&r, &fc->interintra_mode_prob[i][j], ACCT_STR);
}
+#endif
#if CONFIG_WEDGE
for (i = 0; i < BLOCK_SIZES; i++) {
if (is_interintra_allowed_bsize(i) && is_interintra_wedge_used(i)) {
diff --git a/av1/decoder/decodemv.c b/av1/decoder/decodemv.c
index c457e2d..a37b940 100644
--- a/av1/decoder/decodemv.c
+++ b/av1/decoder/decodemv.c
@@ -192,9 +192,16 @@
#if CONFIG_EXT_INTER && CONFIG_INTERINTRA
static INTERINTRA_MODE read_interintra_mode(AV1_COMMON *cm, MACROBLOCKD *xd,
aom_reader *r, int size_group) {
+#if CONFIG_EC_ADAPT
+ (void)cm;
+ const INTERINTRA_MODE ii_mode = (INTERINTRA_MODE)aom_read_symbol(
+ r, xd->tile_ctx->interintra_mode_cdf[size_group], INTERINTRA_MODES,
+ ACCT_STR);
+#else
const INTERINTRA_MODE ii_mode = (INTERINTRA_MODE)aom_read_tree(
r, av1_interintra_mode_tree, cm->fc->interintra_mode_prob[size_group],
ACCT_STR);
+#endif
FRAME_COUNTS *counts = xd->counts;
if (counts) ++counts->interintra_mode[size_group][ii_mode];
return ii_mode;