AV1 RT: Use legacy RD Model for Interpolation and Intra searches On Speed6 Lowres The speed up is 7-10% and BDRate degradation overall of 0.09% (max 0.2%). Change-Id: I0c1701d5f15738a53ba8854b18a97f46fbfe5859
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c index 9b24f40..eb9fae7 100644 --- a/av1/encoder/rdopt.c +++ b/av1/encoder/rdopt.c
@@ -3175,7 +3175,6 @@ const double sse_norm = (double)sse / num_samples; const double qstepsqr = (double)qstep * qstep; const double xqr = log2(sse_norm / qstepsqr); - double rate_f, dist_by_sse_norm_f; av1_model_rd_curvfit(plane_bsize, sse_norm, xqr, &rate_f, &dist_by_sse_norm_f); @@ -4474,7 +4473,8 @@ } } // RD estimation. - model_rd_sb_fn[MODELRD_TYPE_INTRA]( + model_rd_sb_fn[cpi->sf.use_simple_rd_model ? MODELRD_LEGACY + : MODELRD_TYPE_INTRA]( cpi, bsize, x, xd, 0, 0, &this_rd_stats.rate, &this_rd_stats.dist, &this_rd_stats.skip, &temp_sse, NULL, NULL, NULL); if (av1_is_directional_mode(mbmi->mode) && av1_use_angle_delta(bsize)) { @@ -8892,7 +8892,8 @@ plane_from, plane_to); } - model_rd_sb_fn[MODELRD_TYPE_INTERP_FILTER]( + model_rd_sb_fn[cpi->sf.use_simple_rd_model ? MODELRD_LEGACY + : MODELRD_TYPE_INTERP_FILTER]( cpi, bsize, x, xd, plane_from, plane_to, &tmp_rd_stats.rate, &tmp_rd_stats.dist, &tmp_rd_stats.skip, &tmp_rd_stats.sse, NULL, NULL, NULL);
diff --git a/av1/encoder/speed_features.c b/av1/encoder/speed_features.c index 51d8393..e4df066 100644 --- a/av1/encoder/speed_features.c +++ b/av1/encoder/speed_features.c
@@ -692,6 +692,7 @@ sf->adaptive_mode_search = 2; sf->force_tx_search_off = 1; sf->num_inter_modes_for_tx_search = 5; + sf->use_simple_rd_model = 1; } if (speed >= 7) { sf->lpf_pick = LPF_PICK_FROM_Q; @@ -866,6 +867,7 @@ sf->motion_mode_for_winner_cand = 0; sf->num_inter_modes_for_tx_search = INT_MAX; sf->prune_palette_search_level = 0; + sf->use_simple_rd_model = 0; for (i = 0; i < TX_SIZES; i++) { sf->intra_y_mode_mask[i] = INTRA_ALL;
diff --git a/av1/encoder/speed_features.h b/av1/encoder/speed_features.h index 7a77d35..622090e 100644 --- a/av1/encoder/speed_features.h +++ b/av1/encoder/speed_features.h
@@ -869,6 +869,9 @@ // Use interpolation filter search in non-RD mode decision. int use_nonrd_filter_search; + // Use simplified RD model for interpolation search and Intra + int use_simple_rd_model; + // If set forces interpolation filter to EIGHTTAP_REGULAR int skip_interp_filter_search;