Remove schedule_mode_search/mode_skip_start The effect of this speed feature is not clear for now. Will add it back after refactoring the code in av1_rd_pick_inter_mode_sb Change-Id: I6cefc7ac011fc08fa36f3c3f8970d29a347e648d
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c index 934b35f..f9608b5 100644 --- a/av1/encoder/rdopt.c +++ b/av1/encoder/rdopt.c
@@ -8527,8 +8527,7 @@ uint32_t mode_skip_mask[REF_FRAMES], unsigned int ref_costs_single[REF_FRAMES], unsigned int ref_costs_comp[REF_FRAMES][REF_FRAMES], - struct buf_2d yv12_mb[REF_FRAMES][MAX_MB_PLANE], - int64_t mode_threshold[MAX_MODES], int *mode_map) { + struct buf_2d yv12_mb[REF_FRAMES][MAX_MB_PLANE]) { const AV1_COMMON *const cm = &cpi->common; const int num_planes = av1_num_planes(cm); MACROBLOCKD *const xd = &x->e_mbd; @@ -8537,7 +8536,6 @@ const struct segmentation *const seg = &cm->seg; const SPEED_FEATURES *const sf = &cpi->sf; unsigned char segment_id = mbmi->segment_id; - const int mode_skip_start = sf->mode_skip_start + 1; static const int flag_list[REF_FRAMES] = { 0, AOM_LAST_FLAG, AOM_LAST2_FLAG, @@ -8722,20 +8720,6 @@ mode_skip_mask[INTRA_FRAME] |= ~(sf->intra_y_mode_mask[max_txsize_lookup[bsize]]); - int midx = sf->schedule_mode_search ? mode_skip_start : 0; - while (midx > 4) { - uint8_t end_pos = 0; - for (int i = 5; i < midx; ++i) { - if (mode_threshold[mode_map[i - 1]] > mode_threshold[mode_map[i]]) { - uint8_t tmp = mode_map[i]; - mode_map[i] = mode_map[i - 1]; - mode_map[i - 1] = tmp; - end_pos = i; - } - } - midx = end_pos; - } - if (cpi->sf.tx_type_search.fast_intra_tx_type_search) x->use_default_intra_tx_type = 1; else @@ -8886,7 +8870,6 @@ const int intra_cost_penalty = av1_get_intra_cost_penalty( cm->base_qindex, cm->y_dc_delta_q, cm->bit_depth); const int *const intra_mode_cost = x->mbmode_cost[size_group_lookup[bsize]]; - const int mode_skip_start = sf->mode_skip_start + 1; int *mode_map = tile_data->mode_map[bsize]; const int rows = block_size_high[bsize]; const int cols = block_size_wide[bsize]; @@ -8910,8 +8893,7 @@ set_params_rd_pick_inter_mode( cpi, x, &args, bsize, mi_row, mi_col, search_state.frame_mv, search_state.ref_frame_skip_mask, search_state.mode_skip_mask, - ref_costs_single, ref_costs_comp, yv12_mb, search_state.mode_threshold, - mode_map); + ref_costs_single, ref_costs_comp, yv12_mb); for (int midx = 0; midx < MAX_MODES; ++midx) { int mode_index; @@ -8964,44 +8946,6 @@ .as_int; } - // 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 (midx == mode_skip_start && search_state.best_mode_index >= 0) { - switch (search_state.best_mbmode.ref_frame[0]) { - case INTRA_FRAME: break; - case LAST_FRAME: - search_state.ref_frame_skip_mask[0] |= LAST_FRAME_MODE_MASK; - search_state.ref_frame_skip_mask[1] |= SECOND_REF_FRAME_MASK; - break; - case LAST2_FRAME: - search_state.ref_frame_skip_mask[0] |= LAST2_FRAME_MODE_MASK; - search_state.ref_frame_skip_mask[1] |= SECOND_REF_FRAME_MASK; - break; - case LAST3_FRAME: - search_state.ref_frame_skip_mask[0] |= LAST3_FRAME_MODE_MASK; - search_state.ref_frame_skip_mask[1] |= SECOND_REF_FRAME_MASK; - break; - case GOLDEN_FRAME: - search_state.ref_frame_skip_mask[0] |= GOLDEN_FRAME_MODE_MASK; - search_state.ref_frame_skip_mask[1] |= SECOND_REF_FRAME_MASK; - break; - case BWDREF_FRAME: - search_state.ref_frame_skip_mask[0] |= BWDREF_FRAME_MODE_MASK; - search_state.ref_frame_skip_mask[1] |= SECOND_REF_FRAME_MASK; - break; - case ALTREF2_FRAME: - search_state.ref_frame_skip_mask[0] |= ALTREF2_FRAME_MODE_MASK; - search_state.ref_frame_skip_mask[1] |= SECOND_REF_FRAME_MASK; - break; - case ALTREF_FRAME: - search_state.ref_frame_skip_mask[0] |= ALTREF_FRAME_MODE_MASK; - search_state.ref_frame_skip_mask[1] |= SECOND_REF_FRAME_MASK; - break; - case NONE_FRAME: - case REF_FRAMES: assert(0 && "Invalid Reference frame"); break; - } - } - if ((search_state.ref_frame_skip_mask[0] & (1 << ref_frame)) && (search_state.ref_frame_skip_mask[1] & (1 << AOMMAX(0, second_ref_frame)))) @@ -9009,10 +8953,6 @@ if (search_state.mode_skip_mask[ref_frame] & (1 << this_mode)) continue; - // Test best rd so far against threshold for trying this mode. - if (search_state.best_mode_skippable && sf->schedule_mode_search) - search_state.mode_threshold[mode_index] <<= 1; - if (search_state.best_rd < search_state.mode_threshold[mode_index]) continue;