Remove probability model for comp_ref_type
Change-Id: Ib4b83335ba9c61435f774136bc57638d8b88e963
diff --git a/av1/encoder/block.h b/av1/encoder/block.h
index 017ed1e..7bbc201 100644
--- a/av1/encoder/block.h
+++ b/av1/encoder/block.h
@@ -285,6 +285,10 @@
int comp_inter_cost[COMP_INTER_CONTEXTS][2];
int single_ref_cost[REF_CONTEXTS][SINGLE_REFS - 1][2];
+#if CONFIG_EXT_COMP_REFS
+ int comp_ref_type_cost[COMP_REF_TYPE_CONTEXTS]
+ [CDF_SIZE(COMP_REFERENCE_TYPES)];
+#endif // CONFIG_EXT_COMP_REFS
int inter_compound_mode_cost[INTER_MODE_CONTEXTS][INTER_COMPOUND_MODES];
#if CONFIG_JNT_COMP
int compound_type_cost[BLOCK_SIZES_ALL][COMPOUND_TYPES - 1];
diff --git a/av1/encoder/encodeframe.c b/av1/encoder/encodeframe.c
index e4b2b62..169d7cd 100644
--- a/av1/encoder/encodeframe.c
+++ b/av1/encoder/encodeframe.c
@@ -901,8 +901,14 @@
const COMP_REFERENCE_TYPE comp_ref_type = has_uni_comp_refs(mbmi)
? UNIDIR_COMP_REFERENCE
: BIDIR_COMP_REFERENCE;
+ if (allow_update_cdf) {
+ update_cdf(av1_get_comp_reference_type_cdf(xd), comp_ref_type,
+ COMP_REFERENCE_TYPES);
+ }
+#if CONFIG_ENTROPY_STATS
counts->comp_ref_type[av1_get_comp_reference_type_context(xd)]
[comp_ref_type]++;
+#endif // CONFIG_ENTROPY_STATS
if (comp_ref_type == UNIDIR_COMP_REFERENCE) {
const int bit = (ref0 == BWDREF_FRAME);
diff --git a/av1/encoder/rd.c b/av1/encoder/rd.c
index 2213991..59d2d47 100644
--- a/av1/encoder/rd.c
+++ b/av1/encoder/rd.c
@@ -238,6 +238,13 @@
}
}
+#if CONFIG_EXT_COMP_REFS
+ for (i = 0; i < REF_CONTEXTS; ++i) {
+ av1_cost_tokens_from_cdf(x->comp_ref_type_cost[i],
+ fc->comp_ref_type_cdf[i], NULL);
+ }
+#endif // CONFIG_EXT_COMP_REFS
+
for (i = 0; i < INTRA_INTER_CONTEXTS; ++i) {
av1_cost_tokens_from_cdf(x->intra_inter_cost[i], fc->intra_inter_cdf[i],
NULL);
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c
index 6cd32e2..d3e321f 100644
--- a/av1/encoder/rdopt.c
+++ b/av1/encoder/rdopt.c
@@ -5892,12 +5892,12 @@
aom_prob bwdref_comp_p1 = av1_get_pred_prob_comp_bwdref_p1(cm, xd);
#if CONFIG_EXT_COMP_REFS
- aom_prob comp_ref_type_p = av1_get_comp_reference_type_prob(cm, xd);
+ const int comp_ref_type_ctx = av1_get_comp_reference_type_context(xd);
unsigned int ref_bicomp_costs[TOTAL_REFS_PER_FRAME] = { 0 };
ref_bicomp_costs[LAST_FRAME] = ref_bicomp_costs[LAST2_FRAME] =
ref_bicomp_costs[LAST3_FRAME] = ref_bicomp_costs[GOLDEN_FRAME] =
- base_cost + av1_cost_bit(comp_ref_type_p, 1);
+ base_cost + x->comp_ref_type_cost[comp_ref_type_ctx][1];
ref_bicomp_costs[BWDREF_FRAME] = ref_bicomp_costs[ALTREF2_FRAME] = 0;
ref_bicomp_costs[ALTREF_FRAME] = 0;
@@ -5932,19 +5932,18 @@
aom_prob uni_comp_ref_p2 = av1_get_pred_prob_uni_comp_ref_p2(cm, xd);
ref_costs_comp[LAST_FRAME][LAST2_FRAME] =
- base_cost + av1_cost_bit(comp_ref_type_p, 0) +
+ base_cost + x->comp_ref_type_cost[comp_ref_type_ctx][0] +
av1_cost_bit(uni_comp_ref_p, 0) + av1_cost_bit(uni_comp_ref_p1, 0);
ref_costs_comp[LAST_FRAME][LAST3_FRAME] =
- base_cost + av1_cost_bit(comp_ref_type_p, 0) +
+ base_cost + x->comp_ref_type_cost[comp_ref_type_ctx][0] +
av1_cost_bit(uni_comp_ref_p, 0) + av1_cost_bit(uni_comp_ref_p1, 1) +
av1_cost_bit(uni_comp_ref_p2, 0);
ref_costs_comp[LAST_FRAME][GOLDEN_FRAME] =
- base_cost + av1_cost_bit(comp_ref_type_p, 0) +
+ base_cost + x->comp_ref_type_cost[comp_ref_type_ctx][0] +
av1_cost_bit(uni_comp_ref_p, 0) + av1_cost_bit(uni_comp_ref_p1, 1) +
av1_cost_bit(uni_comp_ref_p2, 1);
-
ref_costs_comp[BWDREF_FRAME][ALTREF_FRAME] =
- base_cost + av1_cost_bit(comp_ref_type_p, 0) +
+ base_cost + x->comp_ref_type_cost[comp_ref_type_ctx][0] +
av1_cost_bit(uni_comp_ref_p, 1);
#else // !CONFIG_EXT_COMP_REFS