rdopt.c: Create a function to dedupe some code. BUG=aomedia:442 Change-Id: I08b336915a0fd24bc9beb51ec7bbf5cce753ea11
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c index 733230a..f65df2f 100644 --- a/av1/encoder/rdopt.c +++ b/av1/encoder/rdopt.c
@@ -5719,6 +5719,31 @@ } } +#if CONFIG_REF_MV && !CONFIG_EXT_INTER +static void update_mv_search_and_seg_mvs( + int *const run_mv_search, int_mv *const seg_mvs, int has_second_rf, + const MV_REFERENCE_FRAME *const ref_frame, + const SEG_RDSTAT *const ref_rdstat, int_mv *const bsi_ref_mv[2]) { + if (has_second_rf) { + if (seg_mvs[ref_frame[0]].as_int == ref_rdstat->mvs[0].as_int && + ref_rdstat->mvs[0].as_int != INVALID_MV) + if (bsi_ref_mv[0]->as_int == ref_rdstat->pred_mv[0].as_int) + --*run_mv_search; + + if (seg_mvs[ref_frame[1]].as_int == ref_rdstat->mvs[1].as_int && + ref_rdstat->mvs[1].as_int != INVALID_MV) + if (bsi_ref_mv[1]->as_int == ref_rdstat->pred_mv[1].as_int) + --*run_mv_search; + } else { + if (bsi_ref_mv[0]->as_int == ref_rdstat->pred_mv[0].as_int && + ref_rdstat->mvs[0].as_int != INVALID_MV) { + *run_mv_search = 0; + seg_mvs[ref_frame[0]].as_int = ref_rdstat->mvs[0].as_int; + } + } +} +#endif // CONFIG_REF_MV && !CONFIG_EXT_INTER + static int64_t rd_pick_inter_best_sub8x8_mode( const AV1_COMP *const cpi, MACROBLOCK *x, int_mv *best_ref_mv, int_mv *second_best_ref_mv, int64_t best_rd, int *returntotrate, @@ -5928,55 +5953,20 @@ run_mv_search = 2; #if !CONFIG_EXT_INTER if (filter_idx > 0 && this_mode == NEWMV) { - BEST_SEG_INFO *ref_bsi = bsi_buf; - SEG_RDSTAT *ref_rdstat = &ref_bsi->rdstat[index][mode_idx]; + const BEST_SEG_INFO *ref_bsi = bsi_buf; + const SEG_RDSTAT *ref_rdstat = &ref_bsi->rdstat[index][mode_idx]; - if (has_second_rf) { - if (seg_mvs[index][mbmi->ref_frame[0]].as_int == - ref_rdstat->mvs[0].as_int && - ref_rdstat->mvs[0].as_int != INVALID_MV) - if (bsi->ref_mv[0]->as_int == ref_rdstat->pred_mv[0].as_int) - --run_mv_search; - - if (seg_mvs[index][mbmi->ref_frame[1]].as_int == - ref_rdstat->mvs[1].as_int && - ref_rdstat->mvs[1].as_int != INVALID_MV) - if (bsi->ref_mv[1]->as_int == ref_rdstat->pred_mv[1].as_int) - --run_mv_search; - } else { - if (bsi->ref_mv[0]->as_int == ref_rdstat->pred_mv[0].as_int && - ref_rdstat->mvs[0].as_int != INVALID_MV) { - run_mv_search = 0; - seg_mvs[index][mbmi->ref_frame[0]].as_int = - ref_rdstat->mvs[0].as_int; - } - } + update_mv_search_and_seg_mvs(&run_mv_search, seg_mvs[index], + has_second_rf, mbmi->ref_frame, + ref_rdstat, bsi->ref_mv); if (run_mv_search != 0 && filter_idx > 1) { ref_bsi = bsi_buf + 1; ref_rdstat = &ref_bsi->rdstat[index][mode_idx]; run_mv_search = 2; - - if (has_second_rf) { - if (seg_mvs[index][mbmi->ref_frame[0]].as_int == - ref_rdstat->mvs[0].as_int && - ref_rdstat->mvs[0].as_int != INVALID_MV) - if (bsi->ref_mv[0]->as_int == ref_rdstat->pred_mv[0].as_int) - --run_mv_search; - - if (seg_mvs[index][mbmi->ref_frame[1]].as_int == - ref_rdstat->mvs[1].as_int && - ref_rdstat->mvs[1].as_int != INVALID_MV) - if (bsi->ref_mv[1]->as_int == ref_rdstat->pred_mv[1].as_int) - --run_mv_search; - } else { - if (bsi->ref_mv[0]->as_int == ref_rdstat->pred_mv[0].as_int && - ref_rdstat->mvs[0].as_int != INVALID_MV) { - run_mv_search = 0; - seg_mvs[index][mbmi->ref_frame[0]].as_int = - ref_rdstat->mvs[0].as_int; - } - } + update_mv_search_and_seg_mvs(&run_mv_search, seg_mvs[index], + has_second_rf, mbmi->ref_frame, + ref_rdstat, bsi->ref_mv); } } #endif // !CONFIG_EXT_INTER