Merge "Speed up mode search depending on relative ref frame position"
This commit is contained in:
commit
af2a736953
@ -2632,6 +2632,12 @@ int64_t vp9_rd_pick_inter_mode_sb(VP9_COMP *cpi, MACROBLOCK *x,
|
||||
int64_t total_sse = INT64_MAX;
|
||||
int early_term = 0;
|
||||
|
||||
this_mode = vp9_mode_order[mode_index].mode;
|
||||
ref_frame = vp9_mode_order[mode_index].ref_frame[0];
|
||||
if (ref_frame != INTRA_FRAME && !(inter_mode_mask & (1 << this_mode)))
|
||||
continue;
|
||||
second_ref_frame = vp9_mode_order[mode_index].ref_frame[1];
|
||||
|
||||
// Look at the reference frame of the best mode so far and set the
|
||||
// skip mask to look at a subset of the remaining modes.
|
||||
if (mode_index == mode_skip_start && best_mode_index >= 0) {
|
||||
@ -2653,6 +2659,13 @@ int64_t vp9_rd_pick_inter_mode_sb(VP9_COMP *cpi, MACROBLOCK *x,
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (cpi->sf.alt_ref_search_fp && cpi->rc.is_src_frame_alt_ref) {
|
||||
mode_skip_mask = 0;
|
||||
if (!(ref_frame == ALTREF_FRAME && second_ref_frame == NONE))
|
||||
continue;
|
||||
}
|
||||
|
||||
if (mode_skip_mask & (1 << mode_index))
|
||||
continue;
|
||||
|
||||
@ -2661,12 +2674,6 @@ int64_t vp9_rd_pick_inter_mode_sb(VP9_COMP *cpi, MACROBLOCK *x,
|
||||
rd_thresh_freq_fact[mode_index]))
|
||||
continue;
|
||||
|
||||
this_mode = vp9_mode_order[mode_index].mode;
|
||||
ref_frame = vp9_mode_order[mode_index].ref_frame[0];
|
||||
if (ref_frame != INTRA_FRAME && !(inter_mode_mask & (1 << this_mode)))
|
||||
continue;
|
||||
second_ref_frame = vp9_mode_order[mode_index].ref_frame[1];
|
||||
|
||||
if (cpi->sf.motion_field_mode_search) {
|
||||
const int mi_width = MIN(num_8x8_blocks_wide_lookup[bsize],
|
||||
tile->mi_col_end - mi_col);
|
||||
|
@ -119,6 +119,7 @@ static void set_good_speed_feature(VP9_COMP *cpi, VP9_COMMON *cm,
|
||||
sf->adaptive_pred_interp_filter = 0;
|
||||
sf->cb_partition_search = frame_is_boosted(cpi) ? 0 : 1;
|
||||
sf->cb_pred_filter_search = 1;
|
||||
sf->alt_ref_search_fp = 1;
|
||||
sf->motion_field_mode_search = frame_is_boosted(cpi) ? 0 : 1;
|
||||
sf->lf_motion_threshold = LOW_MOTION_THRESHOLD;
|
||||
sf->last_partitioning_redo_frequency = 3;
|
||||
@ -347,6 +348,7 @@ void vp9_set_speed_features(VP9_COMP *cpi) {
|
||||
sf->cb_pred_filter_search = 0;
|
||||
sf->cb_partition_search = 0;
|
||||
sf->motion_field_mode_search = 0;
|
||||
sf->alt_ref_search_fp = 0;
|
||||
sf->use_quant_fp = 0;
|
||||
sf->reference_masking = 0;
|
||||
sf->partition_search_type = SEARCH_PARTITION;
|
||||
|
@ -291,6 +291,8 @@ typedef struct SPEED_FEATURES {
|
||||
|
||||
int motion_field_mode_search;
|
||||
|
||||
int alt_ref_search_fp;
|
||||
|
||||
// Fast quantization process path
|
||||
int use_quant_fp;
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user