Consolidate best comp type info into functions Consolidated best compound type related info into functions Change-Id: I4b9a8abd77cee0630b843e67ebf71ead21f49740
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c index 9b8ce17..d700a27 100644 --- a/av1/encoder/rdopt.c +++ b/av1/encoder/rdopt.c
@@ -9778,6 +9778,32 @@ mbmi->compound_idx = (cur_type != COMPOUND_DISTWTD); } +// Updates rd cost and relevant compound type data for the best compound type +static INLINE void update_best_info(const MB_MODE_INFO *const mbmi, int64_t *rd, + BEST_COMP_TYPE_STATS *best_type_stats, + int64_t best_rd_cur, + int64_t comp_model_rd_cur, int rs2) { + *rd = best_rd_cur; + best_type_stats->comp_best_model_rd = comp_model_rd_cur; + best_type_stats->best_compound_data = mbmi->interinter_comp; + best_type_stats->best_compmode_interinter_cost = rs2; +} + +// Updates best_mv for masked compound types +static INLINE void update_mask_best_mv(const MB_MODE_INFO *const mbmi, + int_mv *best_mv, int_mv *cur_mv, + const COMPOUND_TYPE cur_type, + int *best_tmp_rate_mv, int tmp_rate_mv) { + if (cur_type == COMPOUND_WEDGE) { + *best_tmp_rate_mv = tmp_rate_mv; + best_mv[0].as_int = mbmi->mv[0].as_int; + best_mv[1].as_int = mbmi->mv[1].as_int; + } else { + best_mv[0].as_int = cur_mv[0].as_int; + best_mv[1].as_int = cur_mv[1].as_int; + } +} + static int compound_type_rd( const AV1_COMP *const cpi, MACROBLOCK *x, BLOCK_SIZE bsize, int mi_col, int mi_row, int_mv *cur_mv, int mode_search_mask, int masked_compound_used, @@ -9993,22 +10019,13 @@ } } if (best_rd_cur < *rd) { - *rd = best_rd_cur; - best_type_stats.comp_best_model_rd = comp_model_rd_cur; - best_type_stats.best_compound_data = mbmi->interinter_comp; + update_best_info(mbmi, rd, &best_type_stats, best_rd_cur, + comp_model_rd_cur, rs2); if (masked_compound_used && cur_type >= COMPOUND_WEDGE) { memcpy(buffers->tmp_best_mask_buf, xd->seg_mask, mask_len); - } - best_type_stats.best_compmode_interinter_cost = rs2; - if (have_newmv_in_inter_mode(this_mode)) { - if (cur_type == COMPOUND_WEDGE) { - best_tmp_rate_mv = tmp_rate_mv; - best_mv[0].as_int = mbmi->mv[0].as_int; - best_mv[1].as_int = mbmi->mv[1].as_int; - } else { - best_mv[0].as_int = cur_mv[0].as_int; - best_mv[1].as_int = cur_mv[1].as_int; - } + if (have_newmv_in_inter_mode(this_mode)) + update_mask_best_mv(mbmi, best_mv, cur_mv, cur_type, + &best_tmp_rate_mv, tmp_rate_mv); } } // reset to original mvs for next iteration