Merge "Enable chessboard inter prediction filter type search"
This commit is contained in:
@@ -2040,7 +2040,18 @@ static int64_t handle_inter_mode(VP9_COMP *cpi, MACROBLOCK *x,
|
|||||||
uint8_t *orig_dst[MAX_MB_PLANE];
|
uint8_t *orig_dst[MAX_MB_PLANE];
|
||||||
int orig_dst_stride[MAX_MB_PLANE];
|
int orig_dst_stride[MAX_MB_PLANE];
|
||||||
int rs = 0;
|
int rs = 0;
|
||||||
INTERP_FILTER best_filter = cm->interp_filter;
|
INTERP_FILTER best_filter = SWITCHABLE;
|
||||||
|
|
||||||
|
int bsl = mi_width_log2_lookup[bsize];
|
||||||
|
int pred_filter_search = cpi->sf.cb_pred_filter_search ?
|
||||||
|
(((mi_row + mi_col) >> bsl)) & 0x01 : 0;
|
||||||
|
|
||||||
|
if (pred_filter_search && this_mode != NEWMV) {
|
||||||
|
if (xd->up_available)
|
||||||
|
best_filter = xd->mi[-xd->mi_stride]->mbmi.interp_filter;
|
||||||
|
else if (xd->left_available)
|
||||||
|
best_filter = xd->mi[-1]->mbmi.interp_filter;
|
||||||
|
}
|
||||||
|
|
||||||
if (is_comp_pred) {
|
if (is_comp_pred) {
|
||||||
if (frame_mv[refs[0]].as_int == INVALID_MV ||
|
if (frame_mv[refs[0]].as_int == INVALID_MV ||
|
||||||
@@ -2124,10 +2135,9 @@ static int64_t handle_inter_mode(VP9_COMP *cpi, MACROBLOCK *x,
|
|||||||
rd_opt->filter_cache[i] = INT64_MAX;
|
rd_opt->filter_cache[i] = INT64_MAX;
|
||||||
|
|
||||||
if (cm->interp_filter != BILINEAR) {
|
if (cm->interp_filter != BILINEAR) {
|
||||||
best_filter = EIGHTTAP;
|
|
||||||
if (x->source_variance < cpi->sf.disable_filter_search_var_thresh) {
|
if (x->source_variance < cpi->sf.disable_filter_search_var_thresh) {
|
||||||
best_filter = EIGHTTAP;
|
best_filter = EIGHTTAP;
|
||||||
} else {
|
} else if (best_filter == SWITCHABLE) {
|
||||||
int newbest;
|
int newbest;
|
||||||
int tmp_rate_sum = 0;
|
int tmp_rate_sum = 0;
|
||||||
int64_t tmp_dist_sum = 0;
|
int64_t tmp_dist_sum = 0;
|
||||||
|
@@ -116,6 +116,7 @@ static void set_good_speed_feature(VP9_COMP *cpi, VP9_COMMON *cm,
|
|||||||
sf->disable_split_mask = DISABLE_ALL_INTER_SPLIT;
|
sf->disable_split_mask = DISABLE_ALL_INTER_SPLIT;
|
||||||
|
|
||||||
sf->adaptive_pred_interp_filter = 0;
|
sf->adaptive_pred_interp_filter = 0;
|
||||||
|
sf->cb_pred_filter_search = 1;
|
||||||
|
|
||||||
sf->lf_motion_threshold = LOW_MOTION_THRESHOLD;
|
sf->lf_motion_threshold = LOW_MOTION_THRESHOLD;
|
||||||
sf->last_partitioning_redo_frequency = 3;
|
sf->last_partitioning_redo_frequency = 3;
|
||||||
@@ -332,6 +333,7 @@ void vp9_set_speed_features(VP9_COMP *cpi) {
|
|||||||
sf->use_lp32x32fdct = 0;
|
sf->use_lp32x32fdct = 0;
|
||||||
sf->adaptive_motion_search = 0;
|
sf->adaptive_motion_search = 0;
|
||||||
sf->adaptive_pred_interp_filter = 0;
|
sf->adaptive_pred_interp_filter = 0;
|
||||||
|
sf->cb_pred_filter_search = 0;
|
||||||
sf->use_quant_fp = 0;
|
sf->use_quant_fp = 0;
|
||||||
sf->reference_masking = 0;
|
sf->reference_masking = 0;
|
||||||
sf->partition_search_type = SEARCH_PARTITION;
|
sf->partition_search_type = SEARCH_PARTITION;
|
||||||
|
@@ -283,6 +283,9 @@ typedef struct SPEED_FEATURES {
|
|||||||
// was selected, and 2 means we use 8 tap if no 8x8 filter mode was selected.
|
// was selected, and 2 means we use 8 tap if no 8x8 filter mode was selected.
|
||||||
int adaptive_pred_interp_filter;
|
int adaptive_pred_interp_filter;
|
||||||
|
|
||||||
|
// Chessboard pattern prediction filter type search
|
||||||
|
int cb_pred_filter_search;
|
||||||
|
|
||||||
// Fast quantization process path
|
// Fast quantization process path
|
||||||
int use_quant_fp;
|
int use_quant_fp;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user