NEW_MULTISYMBOL: Adapt intra_inter binary symbol.
Adapt the intra_inter binary syntax element symbol-by-symbol
and remove updates from the compressed header.
Change-Id: I9abfd91d4521202f27854ce3e01b670ce15846e9
diff --git a/av1/encoder/bitstream.c b/av1/encoder/bitstream.c
index d51e783..5bc6be6 100644
--- a/av1/encoder/bitstream.c
+++ b/av1/encoder/bitstream.c
@@ -559,6 +559,19 @@
}
}
+static void write_is_inter(const AV1_COMMON *cm, const MACROBLOCKD *xd,
+ int segment_id, aom_writer *w, const int is_inter) {
+ if (!segfeature_active(&cm->seg, segment_id, SEG_LVL_REF_FRAME)) {
+#if CONFIG_NEW_MULTISYMBOL
+ FRAME_CONTEXT *ec_ctx = xd->tile_ctx;
+ const int ctx = av1_get_intra_inter_context(xd);
+ aom_write_symbol(w, is_inter, ec_ctx->intra_inter_cdf[ctx], 2);
+#else
+ aom_write(w, is_inter, av1_get_intra_inter_prob(cm, xd));
+#endif
+ }
+}
+
#if CONFIG_MOTION_VAR || CONFIG_WARPED_MOTION
static void write_motion_mode(const AV1_COMMON *cm, const MODE_INFO *mi,
aom_writer *w) {
@@ -1862,8 +1875,7 @@
#if CONFIG_SUPERTX
if (!supertx_enabled)
#endif // CONFIG_SUPERTX
- if (!segfeature_active(seg, segment_id, SEG_LVL_REF_FRAME))
- aom_write(w, is_inter, av1_get_intra_inter_prob(cm, xd));
+ write_is_inter(cm, xd, mbmi->segment_id, w, is_inter);
if (cm->tx_mode == TX_MODE_SELECT &&
#if CONFIG_CB4X4 && (CONFIG_VAR_TX || CONFIG_RECT_TX)
@@ -4984,9 +4996,11 @@
update_switchable_interp_probs(cm, header_bc, counts);
#endif
+#if !CONFIG_NEW_MULTISYMBOL
for (i = 0; i < INTRA_INTER_CONTEXTS; i++)
av1_cond_prob_diff_update(header_bc, &fc->intra_inter_prob[i],
counts->intra_inter[i], probwt);
+#endif
if (cpi->allow_comp_inter_inter) {
const int use_hybrid_pred = cm->reference_mode == REFERENCE_MODE_SELECT;