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