Merge "Use whole pixel only at speed 8 screen content."

This commit is contained in:
Alex Converse 2016-03-17 16:25:28 +00:00 коммит произвёл Gerrit Code Review
Родитель 54e5ff00a6 55859e8428
Коммит e6aebcdf08
4 изменённых файлов: 56 добавлений и 3 удалений

Просмотреть файл

@ -383,6 +383,51 @@ static void get_cost_surf_min(int *cost_list, int *ir, int *ic,
(cost_list[4] - 2 * cost_list[0] + cost_list[2]));
}
int vp9_skip_sub_pixel_tree(
const MACROBLOCK *x,
MV *bestmv, const MV *ref_mv,
int allow_hp,
int error_per_bit,
const vp9_variance_fn_ptr_t *vfp,
int forced_stop,
int iters_per_step,
int *cost_list,
int *mvjcost, int *mvcost[2],
int *distortion,
unsigned int *sse1,
const uint8_t *second_pred,
int w, int h) {
SETUP_SUBPEL_SEARCH;
besterr = setup_center_error(xd, bestmv, ref_mv, error_per_bit, vfp,
z, src_stride, y, y_stride, second_pred,
w, h, offset, mvjcost, mvcost,
sse1, distortion);
(void) halfiters;
(void) quarteriters;
(void) eighthiters;
(void) whichdir;
(void) allow_hp;
(void) forced_stop;
(void) hstep;
(void) rr;
(void) rc;
(void) minr;
(void) minc;
(void) maxr;
(void) maxc;
(void) tr;
(void) tc;
(void) sse;
(void) thismse;
(void) cost_list;
if ((abs(bestmv->col - ref_mv->col) > (MAX_FULL_PEL_VAL << 3)) ||
(abs(bestmv->row - ref_mv->row) > (MAX_FULL_PEL_VAL << 3)))
return INT_MAX;
return besterr;
}
int vp9_find_best_sub_pixel_tree_pruned_evenmore(
const MACROBLOCK *x,
MV *bestmv, const MV *ref_mv,

Просмотреть файл

@ -92,6 +92,7 @@ extern fractional_mv_step_fp vp9_find_best_sub_pixel_tree;
extern fractional_mv_step_fp vp9_find_best_sub_pixel_tree_pruned;
extern fractional_mv_step_fp vp9_find_best_sub_pixel_tree_pruned_more;
extern fractional_mv_step_fp vp9_find_best_sub_pixel_tree_pruned_evenmore;
extern fractional_mv_step_fp vp9_skip_sub_pixel_tree;
typedef int (*vp9_full_search_fn_t)(const MACROBLOCK *x,
const MV *ref_mv, int sad_per_bit,

Просмотреть файл

@ -441,7 +441,7 @@ static void set_rt_speed_feature(VP9_COMP *cpi, SPEED_FEATURES *sf,
}
if (speed >= 8) {
sf->adaptive_rd_thresh = 4;
sf->mv.subpel_force_stop = 2;
sf->mv.subpel_force_stop = (content == VP9E_CONTENT_SCREEN) ? 3 : 2;
sf->lpf_pick = LPF_PICK_MINIMAL_LPF;
}
}
@ -607,7 +607,10 @@ void vp9_set_speed_features_framesize_independent(VP9_COMP *cpi) {
sf->optimize_coefficients = 0;
}
if (sf->mv.subpel_search_method == SUBPEL_TREE) {
if (sf->mv.subpel_force_stop == 3) {
// Whole pel only
cpi->find_fractional_mv_step = vp9_skip_sub_pixel_tree;
} else if (sf->mv.subpel_search_method == SUBPEL_TREE) {
cpi->find_fractional_mv_step = vp9_find_best_sub_pixel_tree;
} else if (sf->mv.subpel_search_method == SUBPEL_TREE_PRUNED) {
cpi->find_fractional_mv_step = vp9_find_best_sub_pixel_tree_pruned;

Просмотреть файл

@ -188,7 +188,11 @@ typedef struct MV_SPEED_FEATURES {
// Maximum number of steps in logarithmic subpel search before giving up.
int subpel_iters_per_step;
// Control when to stop subpel search
// Control when to stop subpel search:
// 0: Full subpel search.
// 1: Stop at quarter pixel.
// 2: Stop at half pixel.
// 3: Stop at full pixel.
int subpel_force_stop;
// This variable sets the step_param used in full pel motion search.