Fix mishandled rd_stats merge for MOTION_VAR Bring rd_stats back to proper starting point for the second mode. Bug introduced during code refactoring preparing for RD_DEBUG: https://aomedia-review.googlesource.com/#/c/5689/ Change-Id: I9ad10144ae3cc395a6efa700d047741c7734470c
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c index a7234ba..9bc9dd1 100644 --- a/av1/encoder/rdopt.c +++ b/av1/encoder/rdopt.c
@@ -7813,10 +7813,12 @@ #endif // CONFIG_WARPED_MOTION x->skip = 0; + rd_stats->dist = 0; + rd_stats->sse = 0; + rd_stats->skip = 1; rd_stats->rate = tmp_rate2; if (allow_motvar) rd_stats->rate += cpi->motion_mode_cost[bsize][mbmi->motion_mode]; - rd_stats->dist = 0; #endif // CONFIG_MOTION_VAR || CONFIG_WARPED_MOTION if (!skip_txfm_sb) { int64_t rdcosty = INT64_MAX; @@ -7931,6 +7933,10 @@ rd_stats_uv->rate = 0; rd_stats->skip = 1; } +#if CONFIG_MOTION_VAR || CONFIG_WARPED_MOTION + if (!is_comp_pred && mbmi->motion_mode == SIMPLE_TRANSLATION) + single_skippable[this_mode][refs[0]] = rd_stats->skip; +#endif // CONFIG_MOTION_VAR || CONFIG_WARPED_MOTION #if CONFIG_GLOBAL_MOTION if (this_mode == ZEROMV) { rd_stats->rate += GLOBAL_MOTION_RATE(mbmi->ref_frame[0]); @@ -7995,9 +8001,9 @@ *disable_skip = best_disable_skip; #endif // CONFIG_MOTION_VAR || CONFIG_WARPED_MOTION +#if !(CONFIG_MOTION_VAR || CONFIG_WARPED_MOTION) if (!is_comp_pred) single_skippable[this_mode][refs[0]] = rd_stats->skip; -#if !(CONFIG_MOTION_VAR || CONFIG_WARPED_MOTION) #if CONFIG_AOM_HIGHBITDEPTH if (xd->cur_buf->flags & YV12_FLAG_HIGHBITDEPTH) { x->recon_variance = av1_high_get_sby_perpixel_variance(