Use interp_rd_facade for full interp filter Use find_best_interp_rd_facade() in full interpolation search of dual filter Change-Id: Ia47b238a54bc3c38031989f72ffea29bac9de6e4
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c index a2b51c1..5a8f601 100644 --- a/av1/encoder/rdopt.c +++ b/av1/encoder/rdopt.c
@@ -8385,6 +8385,8 @@ const int bh = block_size_high[bsize]; int best_dual_mode = 0; int skip_pred = bw <= 4 ? cpi->default_interp_skip_flags : skip_hor; + // TODO(any): Make use of find_best_interp_rd_facade() + // if speed impact is negligible for (int i = (SWITCHABLE_FILTERS - 1); i >= 1; --i) { if (interpolation_filter_rd(x, cpi, tile_data, bsize, mi_row, mi_col, orig_dst, rd, rd_stats_y, rd_stats, @@ -8721,7 +8723,6 @@ MB_MODE_INFO *const mbmi = xd->mi[0]; const int need_search = av1_is_interp_needed(xd) && av1_is_interp_search_needed(xd); - int i; const int ref_frame = xd->mi[0]->ref_frame[0]; RD_STATS rd_stats_luma, rd_stats; @@ -8820,14 +8821,14 @@ skip_hor, skip_ver); } else { // Use full interpolation filter search + uint16_t allowed_interp_mask = ALLOW_ALL_INTERP_FILT_MASK; // REG_REG filter type is evaluated beforehand, so loop is repeated over // REG_SMOOTH to SHARP_SHARP for full interpolation filter search - for (i = filter_set_size; i > REG_REG; --i) { - interpolation_filter_rd(x, cpi, tile_data, bsize, mi_row, mi_col, - orig_dst, rd, &rd_stats_luma, &rd_stats, - switchable_rate, dst_bufs, i, switchable_ctx, - (skip_hor & skip_ver)); - } + reset_interp_filter_allowed_mask(&allowed_interp_mask, REG_REG); + find_best_interp_rd_facade(x, cpi, tile_data, bsize, mi_row, mi_col, + orig_dst, rd, &rd_stats_luma, &rd_stats, + switchable_rate, dst_bufs, switchable_ctx, + (skip_hor & skip_ver), allowed_interp_mask, 0); } } else { // Evaluate non-dual interp filters