Simplify search_method selection
This CL simplify how search_method selection is done in temporal filter.
Performance on hdres:
SPDSET | AVG_PSNR | OVR_PSNR | SSIM | SPD
6 | -0.071% | -0.072% | -0.162% | -0.5%
5 | -0.076% | -0.078% | -0.096% | -0.7%
4 | -0.014% | -0.015% | -0.020% | -0.3%
STATS_CHANGED
Change-Id: I15ad944d7155a82f900ddfdc53d75e37b95acf81
diff --git a/av1/encoder/mcomp.c b/av1/encoder/mcomp.c
index 8dff9e7..4225b00 100644
--- a/av1/encoder/mcomp.c
+++ b/av1/encoder/mcomp.c
@@ -55,19 +55,6 @@
ms_buffers->obmc_mask = x->obmc_buffer.mask;
}
-// Array to inform which all search methods are having
-// same candidates and different in number of search steps.
-const SEARCH_METHODS search_method_lookup[NUM_SEARCH_METHODS] = {
- DIAMOND, // DIAMOND
- NSTEP, // NSTEP
- HEX, // HEX
- BIGDIA, // BIGDIA
- SQUARE, // SQUARE
- HEX, // FAST_HEX
- BIGDIA, // FAST_DIAMOND
- BIGDIA // FAST_BIGDIA
-};
-
static AOM_INLINE SEARCH_METHODS
get_faster_search_method(SEARCH_METHODS search_method) {
// Note on search method's accuracy:
@@ -93,7 +80,7 @@
FULLPEL_MOTION_SEARCH_PARAMS *ms_params, const struct AV1_COMP *cpi,
const MACROBLOCK *x, BLOCK_SIZE bsize, const MV *ref_mv,
const search_site_config search_sites[NUM_SEARCH_METHODS],
- int fine_search_interval, SEARCH_METHODS search_method) {
+ int fine_search_interval) {
const MV_SPEED_FEATURES *mv_sf = &cpi->sf.mv_sf;
// High level params
@@ -102,16 +89,15 @@
init_ms_buffers(&ms_params->ms_buffers, x);
- ms_params->search_method = search_method;
+ SEARCH_METHODS search_method = mv_sf->search_method;
if (mv_sf->use_bsize_dependent_search_method) {
const int min_dim = AOMMIN(block_size_wide[bsize], block_size_high[bsize]);
if (min_dim >= 32) {
- ms_params->search_method =
- get_faster_search_method(ms_params->search_method);
+ search_method = get_faster_search_method(search_method);
}
}
- ms_params->search_sites =
- &search_sites[search_method_lookup[ms_params->search_method]];
+
+ av1_set_mv_search_method(ms_params, search_sites, search_method);
ms_params->mesh_patterns[0] = mv_sf->mesh_patterns;
ms_params->mesh_patterns[1] = mv_sf->intrabc_mesh_patterns;