Fix for context derivation of morph_pred STATS_CHANGED Fixes https://gitlab.com/AOMediaCodec/avm/-/issues/440
diff --git a/av1/common/pred_common.h b/av1/common/pred_common.h index ced085b..13d7eef 100644 --- a/av1/common/pred_common.h +++ b/av1/common/pred_common.h
@@ -366,7 +366,8 @@ for (int i = 0; i < MAX_NUM_NEIGHBORS; ++i) { const MB_MODE_INFO *const neighbor = xd->neighbors[i]; if (neighbor != NULL) { - ctx += neighbor->morph_pred; + ctx += + (is_intrabc_block(neighbor, xd->tree_type) && neighbor->morph_pred); } } return ctx;
diff --git a/av1/common/reconinter.c b/av1/common/reconinter.c index c5677f5..88437be 100644 --- a/av1/common/reconinter.c +++ b/av1/common/reconinter.c
@@ -4840,6 +4840,9 @@ #if CONFIG_AFFINE_REFINEMENT mbmi.comp_refine_type = COMP_REFINE_SUBBLK2P; #endif +#if CONFIG_MORPH_PRED + mbmi.morph_pred = 0; +#endif // CONFIG_MORPH_PRED InterPredParams params0, params1; av1_opfl_build_inter_predictor(cm, xd, plane, &mbmi, bw, bh, mi_x, mi_y,
diff --git a/av1/common/tip.c b/av1/common/tip.c index 0afd6c2..e243a5f 100644 --- a/av1/common/tip.c +++ b/av1/common/tip.c
@@ -1113,6 +1113,9 @@ mbmi->interinter_comp.type = COMPOUND_AVERAGE; mbmi->max_mv_precision = MV_PRECISION_ONE_EIGHTH_PEL; mbmi->pb_mv_precision = MV_PRECISION_ONE_EIGHTH_PEL; +#if CONFIG_MORPH_PRED + mbmi->morph_pred = 0; +#endif // CONFIG_MORPH_PRED #if CONFIG_AFFINE_REFINEMENT mbmi->comp_refine_type = COMP_REFINE_SUBBLK2P; @@ -1354,6 +1357,9 @@ mbmi->interp_fltr = EIGHTTAP_REGULAR; mbmi->use_intrabc[xd->tree_type == CHROMA_PART] = 0; mbmi->use_intrabc[0] = 0; +#if CONFIG_MORPH_PRED + mbmi->morph_pred = 0; +#endif // CONFIG_MORPH_PRED mbmi->motion_mode = SIMPLE_TRANSLATION; mbmi->sb_type[PLANE_TYPE_Y] = BLOCK_8X8; mbmi->interinter_comp.type = COMPOUND_AVERAGE;
diff --git a/av1/decoder/decodemv.c b/av1/decoder/decodemv.c index 2c85c45..1e062ed 100644 --- a/av1/decoder/decodemv.c +++ b/av1/decoder/decodemv.c
@@ -2009,6 +2009,9 @@ #if CONFIG_NEW_CONTEXT_MODELING mbmi->use_intrabc[0] = 0; mbmi->use_intrabc[1] = 0; +#if CONFIG_MORPH_PRED + mbmi->morph_pred = 0; +#endif // CONFIG_MORPH_PRED const int intrabc_ctx = get_intrabc_ctx(xd); mbmi->use_intrabc[xd->tree_type == CHROMA_PART] = aom_read_symbol(r, ec_ctx->intrabc_cdf[intrabc_ctx], 2, @@ -3602,6 +3605,9 @@ mbmi->use_intrabc[0] = 0; mbmi->use_intrabc[1] = 0; #endif // CONFIG_NEW_CONTEXT_MODELING +#if CONFIG_MORPH_PRED + mbmi->morph_pred = 0; +#endif // CONFIG_MORPH_PRED set_default_max_mv_precision(mbmi, sbi->sb_mv_precision); set_mv_precision(mbmi, mbmi->max_mv_precision); // initialize to max @@ -4517,6 +4523,9 @@ #if CONFIG_NEW_CONTEXT_MODELING mbmi->use_intrabc[0] = 0; mbmi->use_intrabc[1] = 0; +#if CONFIG_MORPH_PRED + mbmi->morph_pred = 0; +#endif // CONFIG_MORPH_PRED const int intrabc_ctx = get_intrabc_ctx(xd); mbmi->use_intrabc[xd->tree_type == CHROMA_PART] = aom_read_symbol(r, xd->tile_ctx->intrabc_cdf[intrabc_ctx], 2,
diff --git a/av1/encoder/intra_mode_search.c b/av1/encoder/intra_mode_search.c index c0745aa..92ca0d0 100644 --- a/av1/encoder/intra_mode_search.c +++ b/av1/encoder/intra_mode_search.c
@@ -67,6 +67,9 @@ mbmi->joint_y_mode_delta_angle = DC_PRED; mbmi->y_mode_idx = DC_PRED; #endif // CONFIG_AIMC +#if CONFIG_MORPH_PRED + mbmi->morph_pred = 0; +#endif // CONFIG_MORPH_PRED mbmi->angle_delta[PLANE_TYPE_Y] = 0; mbmi->angle_delta[PLANE_TYPE_UV] = 0; @@ -142,6 +145,9 @@ mbmi->use_intrabc[0] = 0; mbmi->use_intrabc[1] = 0; #endif // CONFIG_NEW_CONTEXT_MODELING +#if CONFIG_MORPH_PRED + mbmi->morph_pred = 0; +#endif // CONFIG_MORPH_PRED return 1; } else { return 0; @@ -1039,6 +1045,9 @@ #if CONFIG_REFINEMV mbmi->refinemv_flag = 0; #endif // CONFIG_REFINEMV +#if CONFIG_MORPH_PRED + mbmi->morph_pred = 0; +#endif // CONFIG_MORPH_PRED #if CONFIG_EXTENDED_WARP_PREDICTION mbmi->motion_mode = SIMPLE_TRANSLATION;
diff --git a/av1/encoder/motion_search_facade.c b/av1/encoder/motion_search_facade.c index 3be9c24..4a0bbca 100644 --- a/av1/encoder/motion_search_facade.c +++ b/av1/encoder/motion_search_facade.c
@@ -1410,6 +1410,9 @@ mbmi->use_intrabc[0] = 0; mbmi->use_intrabc[1] = 0; #endif // CONFIG_IBC_SR_EXT +#if CONFIG_MORPH_PRED + mbmi->morph_pred = 0; +#endif // CONFIG_MORPH_PRED mbmi->cwp_idx = CWP_EQUAL;