Refactor subpel_search_method setting Change-Id: I35f7aa260a2b4bdf71c69d00aa2a547cd28aea3a
diff --git a/av1/encoder/speed_features.c b/av1/encoder/speed_features.c index 2e9ecfc..95a6060 100644 --- a/av1/encoder/speed_features.c +++ b/av1/encoder/speed_features.c
@@ -2148,23 +2148,22 @@ rt_sf->check_globalmv_on_single_ref = true; } +static fractional_mv_step_fp + *const fractional_mv_search[SUBPEL_SEARCH_METHODS] = { + av1_find_best_sub_pixel_tree, // SUBPEL_TREE = 0 + av1_find_best_sub_pixel_tree_pruned, // SUBPEL_TREE_PRUNED = 1 + av1_find_best_sub_pixel_tree_pruned_more // SUBPEL_TREE_PRUNED_MORE = 2 + }; + // Populate appropriate sub-pel search method based on speed feature and user // specified settings static void set_subpel_search_method( MotionVectorSearchParams *mv_search_params, unsigned int motion_vector_unit_test, - SUBPEL_SEARCH_METHODS subpel_search_method) { - if (subpel_search_method == SUBPEL_TREE) { - mv_search_params->find_fractional_mv_step = av1_find_best_sub_pixel_tree; - } else if (subpel_search_method == SUBPEL_TREE_PRUNED) { - mv_search_params->find_fractional_mv_step = - av1_find_best_sub_pixel_tree_pruned; - } else if (subpel_search_method == SUBPEL_TREE_PRUNED_MORE) { - mv_search_params->find_fractional_mv_step = - av1_find_best_sub_pixel_tree_pruned_more; - } else { - assert(0); - } + SUBPEL_SEARCH_METHOD subpel_search_method) { + assert(subpel_search_method <= SUBPEL_TREE_PRUNED_MORE); + mv_search_params->find_fractional_mv_step = + fractional_mv_search[subpel_search_method]; // This is only used in motion vector unit test. if (motion_vector_unit_test == 1)
diff --git a/av1/encoder/speed_features.h b/av1/encoder/speed_features.h index bef24c1..e2acf52 100644 --- a/av1/encoder/speed_features.h +++ b/av1/encoder/speed_features.h
@@ -134,7 +134,8 @@ SUBPEL_TREE = 0, SUBPEL_TREE_PRUNED = 1, // Prunes 1/2-pel searches SUBPEL_TREE_PRUNED_MORE = 2, // Prunes 1/2-pel searches more aggressively -} UENUM1BYTE(SUBPEL_SEARCH_METHODS); + SUBPEL_SEARCH_METHODS +} UENUM1BYTE(SUBPEL_SEARCH_METHOD); enum { // Try the full image with different values. @@ -762,7 +763,7 @@ // logarithmic search that keeps stepping at 1/2 pixel units until // you stop getting a gain, and then goes on to 1/4 and repeats // the same process. Along the way it skips many diagonals. - SUBPEL_SEARCH_METHODS subpel_search_method; + SUBPEL_SEARCH_METHOD subpel_search_method; // Maximum number of steps in logarithmic subpel search before giving up. int subpel_iters_per_step;