Merge "Skip intra mode tests depending on inter residuals"

This commit is contained in:
Jingning Han 2014-09-02 08:32:52 -07:00 committed by Gerrit Code Review
commit bac0268716
3 changed files with 11 additions and 0 deletions

View File

@ -2794,6 +2794,10 @@ int64_t vp9_rd_pick_inter_mode_sb(VP9_COMP *cpi, MACROBLOCK *x,
} }
if (ref_frame == INTRA_FRAME) { if (ref_frame == INTRA_FRAME) {
if (cpi->sf.adaptive_mode_search)
if ((x->source_variance << num_pels_log2_lookup[bsize]) > best_intra_rd)
continue;
if (!(intra_y_mode_mask & (1 << this_mode))) if (!(intra_y_mode_mask & (1 << this_mode)))
continue; continue;
if (this_mode != DC_PRED) { if (this_mode != DC_PRED) {
@ -2966,6 +2970,8 @@ int64_t vp9_rd_pick_inter_mode_sb(VP9_COMP *cpi, MACROBLOCK *x,
/* required for left and above block mv */ /* required for left and above block mv */
mbmi->mv[0].as_int = 0; mbmi->mv[0].as_int = 0;
max_plane = 1; max_plane = 1;
} else {
best_intra_rd = x->pred_sse[ref_frame];
} }
*returnrate = rate2; *returnrate = rate2;

View File

@ -144,6 +144,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->adaptive_mode_search = 1;
sf->cb_partition_search = !boosted; sf->cb_partition_search = !boosted;
sf->cb_pred_filter_search = 1; sf->cb_pred_filter_search = 1;
sf->alt_ref_search_fp = 1; sf->alt_ref_search_fp = 1;
@ -386,6 +387,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->adaptive_mode_search = 0;
sf->cb_pred_filter_search = 0; sf->cb_pred_filter_search = 0;
sf->cb_partition_search = 0; sf->cb_partition_search = 0;
sf->motion_field_mode_search = 0; sf->motion_field_mode_search = 0;

View File

@ -291,6 +291,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;
// Adaptive prediction mode search
int adaptive_mode_search;
// Chessboard pattern prediction filter type search // Chessboard pattern prediction filter type search
int cb_pred_filter_search; int cb_pred_filter_search;