NEW_MULTISYMBOL: adapt obmc syntax. Change-Id: Iea00482779cd3fdc7f354d5c39684dd0752d0849
diff --git a/av1/common/entropy.c b/av1/common/entropy.c index 69966a7..1978424 100644 --- a/av1/common/entropy.c +++ b/av1/common/entropy.c
@@ -5703,9 +5703,10 @@ AVERAGE_TILE_CDFS(drl_cdf) #endif -// FIXME: cdfs not defined for motion_mode_prob, obmc_prob +// FIXME: cdfs not defined for motion_mode_prob // FIXME: cdfs not defined for super_tx + #if CONFIG_EXT_INTER AVERAGE_TILE_CDFS(inter_compound_mode_cdf) @@ -5731,6 +5732,9 @@ } #if CONFIG_NEW_MULTISYMBOL AVERAGE_TILE_CDFS(intra_inter_cdf) +#if CONFIG_MOTION_VAR && CONFIG_WARPED_MOTION + AVERAGE_TILE_CDFS(obmc_cdf) +#endif #endif }
diff --git a/av1/common/entropymode.c b/av1/common/entropymode.c index 2a39922..6d6bc88 100644 --- a/av1/common/entropymode.c +++ b/av1/common/entropymode.c
@@ -1390,6 +1390,34 @@ 252, 252, 252, #endif // CONFIG_EXT_PARTITION }; + +#if CONFIG_NEW_MULTISYMBOL +static const aom_cdf_prob default_obmc_cdf[BLOCK_SIZES][CDF_SIZE(2)] = { +#if CONFIG_CHROMA_2X2 || CONFIG_CHROMA_SUB8X8 + { AOM_ICDF(255 * 128), AOM_ICDF(32768), 0 }, + { AOM_ICDF(255 * 128), AOM_ICDF(32768), 0 }, + { AOM_ICDF(255 * 128), AOM_ICDF(32768), 0 }, +#endif + { AOM_ICDF(255 * 128), AOM_ICDF(32768), 0 }, + { AOM_ICDF(255 * 128), AOM_ICDF(32768), 0 }, + { AOM_ICDF(255 * 128), AOM_ICDF(32768), 0 }, + { AOM_ICDF(151 * 128), AOM_ICDF(32768), 0 }, + { AOM_ICDF(153 * 128), AOM_ICDF(32768), 0 }, + { AOM_ICDF(144 * 128), AOM_ICDF(32768), 0 }, + { AOM_ICDF(178 * 128), AOM_ICDF(32768), 0 }, + { AOM_ICDF(165 * 128), AOM_ICDF(32768), 0 }, + { AOM_ICDF(160 * 128), AOM_ICDF(32768), 0 }, + { AOM_ICDF(207 * 128), AOM_ICDF(32768), 0 }, + { AOM_ICDF(195 * 128), AOM_ICDF(32768), 0 }, + { AOM_ICDF(168 * 128), AOM_ICDF(32768), 0 }, + { AOM_ICDF(244 * 128), AOM_ICDF(32768), 0 }, +#if CONFIG_EXT_PARTITION + { AOM_ICDF(252 * 128), AOM_ICDF(32768), 0 }, + { AOM_ICDF(252 * 128), AOM_ICDF(32768), 0 }, + { AOM_ICDF(252 * 128), AOM_ICDF(32768), 0 }, +#endif // CONFIG_EXT_PARTITION +}; +#endif // CONFIG_NEW_MULTISYMBOL #endif #if CONFIG_DELTA_Q @@ -4905,6 +4933,9 @@ #endif #if CONFIG_MOTION_VAR && CONFIG_WARPED_MOTION av1_copy(fc->obmc_prob, default_obmc_prob); +#if CONFIG_NEW_MULTISYMBOL + av1_copy(fc->obmc_cdf, default_obmc_cdf); +#endif #endif // CONFIG_MOTION_VAR && CONFIG_WARPED_MOTION #endif // CONFIG_MOTION_VAR || CONFIG_WARPED_MOTION #if CONFIG_EXT_INTER
diff --git a/av1/common/entropymode.h b/av1/common/entropymode.h index c8a1a3c..eb509bf 100644 --- a/av1/common/entropymode.h +++ b/av1/common/entropymode.h
@@ -230,6 +230,9 @@ #if CONFIG_MOTION_VAR && CONFIG_WARPED_MOTION aom_prob obmc_prob[BLOCK_SIZES]; +#if CONFIG_NEW_MULTISYMBOL + aom_cdf_prob obmc_cdf[BLOCK_SIZES][CDF_SIZE(2)]; +#endif // CONFIG_NEW_MULTISYMBOL #endif // CONFIG_MOTION_VAR && CONFIG_WARPED_MOTION #endif // CONFIG_MOTION_VAR || CONFIG_WARPED_MOTION aom_prob intra_inter_prob[INTRA_INTER_CONTEXTS];
diff --git a/av1/decoder/decodemv.c b/av1/decoder/decodemv.c index 5f3e83d..79dd298 100644 --- a/av1/decoder/decodemv.c +++ b/av1/decoder/decodemv.c
@@ -342,7 +342,12 @@ if (last_motion_mode_allowed == SIMPLE_TRANSLATION) return SIMPLE_TRANSLATION; #if CONFIG_MOTION_VAR && CONFIG_WARPED_MOTION if (last_motion_mode_allowed == OBMC_CAUSAL) { +#if CONFIG_NEW_MULTISYMBOL + motion_mode = + aom_read_symbol(r, xd->tile_ctx->obmc_cdf[mbmi->sb_type], 2, ACCT_STR); +#else motion_mode = aom_read(r, cm->fc->obmc_prob[mbmi->sb_type], ACCT_STR); +#endif if (counts) ++counts->obmc[mbmi->sb_type][motion_mode]; return (MOTION_MODE)(SIMPLE_TRANSLATION + motion_mode); } else {
diff --git a/av1/encoder/bitstream.c b/av1/encoder/bitstream.c index 0fca4ca..cf209f3 100644 --- a/av1/encoder/bitstream.c +++ b/av1/encoder/bitstream.c
@@ -609,9 +609,13 @@ } #if CONFIG_MOTION_VAR || CONFIG_WARPED_MOTION -static void write_motion_mode(const AV1_COMMON *cm, const MODE_INFO *mi, - aom_writer *w) { +static void write_motion_mode(const AV1_COMMON *cm, MACROBLOCKD *xd, + const MODE_INFO *mi, aom_writer *w) { const MB_MODE_INFO *mbmi = &mi->mbmi; +#if !CONFIG_NEW_MULTISYMBOL + (void)xd; +#endif + #if CONFIG_NCOBMC_ADAPT_WEIGHT MOTION_MODE last_motion_mode_allowed = motion_mode_allowed_wrapper(0, @@ -629,8 +633,13 @@ if (last_motion_mode_allowed == SIMPLE_TRANSLATION) return; #if CONFIG_MOTION_VAR && CONFIG_WARPED_MOTION if (last_motion_mode_allowed == OBMC_CAUSAL) { +#if CONFIG_NEW_MULTISYMBOL + aom_write_symbol(w, mbmi->motion_mode == OBMC_CAUSAL, + xd->tile_ctx->obmc_cdf[mbmi->sb_type], 2); +#else aom_write(w, mbmi->motion_mode == OBMC_CAUSAL, cm->fc->obmc_prob[mbmi->sb_type]); +#endif } else { #endif // CONFIG_MOTION_VAR && CONFIG_WARPED_MOTION av1_write_token(w, av1_motion_mode_tree, @@ -2281,7 +2290,7 @@ #if CONFIG_EXT_INTER if (mbmi->ref_frame[1] != INTRA_FRAME) #endif // CONFIG_EXT_INTER - write_motion_mode(cm, mi, w); + write_motion_mode(cm, xd, mi, w); #if CONFIG_NCOBMC_ADAPT_WEIGHT write_ncobmc_mode(cm, mi, w); #endif