Remove speed features in vp10
Take out speed features that affect the compression performance to simplify the coding route. This commit removes the motion field mode search used in speed 3. Change-Id: Ifdf6862cb1ece8261125a56d9d89bcef60758c00
This commit is contained in:
Родитель
2ff108aac6
Коммит
4fa8e73249
|
@ -2919,7 +2919,6 @@ void vp10_rd_pick_inter_mode_sb(VP10_COMP *cpi,
|
||||||
PICK_MODE_CONTEXT *ctx,
|
PICK_MODE_CONTEXT *ctx,
|
||||||
int64_t best_rd_so_far) {
|
int64_t best_rd_so_far) {
|
||||||
VP10_COMMON *const cm = &cpi->common;
|
VP10_COMMON *const cm = &cpi->common;
|
||||||
TileInfo *const tile_info = &tile_data->tile_info;
|
|
||||||
RD_OPT *const rd_opt = &cpi->rd;
|
RD_OPT *const rd_opt = &cpi->rd;
|
||||||
SPEED_FEATURES *const sf = &cpi->sf;
|
SPEED_FEATURES *const sf = &cpi->sf;
|
||||||
MACROBLOCKD *const xd = &x->e_mbd;
|
MACROBLOCKD *const xd = &x->e_mbd;
|
||||||
|
@ -3152,55 +3151,6 @@ void vp10_rd_pick_inter_mode_sb(VP10_COMP *cpi,
|
||||||
if (best_rd < mode_threshold[mode_index])
|
if (best_rd < mode_threshold[mode_index])
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (sf->motion_field_mode_search) {
|
|
||||||
const int mi_width = VPXMIN(num_8x8_blocks_wide_lookup[bsize],
|
|
||||||
tile_info->mi_col_end - mi_col);
|
|
||||||
const int mi_height = VPXMIN(num_8x8_blocks_high_lookup[bsize],
|
|
||||||
tile_info->mi_row_end - mi_row);
|
|
||||||
const int bsl = mi_width_log2_lookup[bsize];
|
|
||||||
int cb_partition_search_ctrl = (((mi_row + mi_col) >> bsl)
|
|
||||||
+ get_chessboard_index(cm->current_video_frame)) & 0x1;
|
|
||||||
MB_MODE_INFO *ref_mbmi;
|
|
||||||
int const_motion = 1;
|
|
||||||
int skip_ref_frame = !cb_partition_search_ctrl;
|
|
||||||
MV_REFERENCE_FRAME rf = NONE;
|
|
||||||
int_mv ref_mv;
|
|
||||||
ref_mv.as_int = INVALID_MV;
|
|
||||||
|
|
||||||
if ((mi_row - 1) >= tile_info->mi_row_start) {
|
|
||||||
ref_mv = xd->mi[-xd->mi_stride]->mbmi.mv[0];
|
|
||||||
rf = xd->mi[-xd->mi_stride]->mbmi.ref_frame[0];
|
|
||||||
for (i = 0; i < mi_width; ++i) {
|
|
||||||
ref_mbmi = &xd->mi[-xd->mi_stride + i]->mbmi;
|
|
||||||
const_motion &= (ref_mv.as_int == ref_mbmi->mv[0].as_int) &&
|
|
||||||
(ref_frame == ref_mbmi->ref_frame[0]);
|
|
||||||
skip_ref_frame &= (rf == ref_mbmi->ref_frame[0]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((mi_col - 1) >= tile_info->mi_col_start) {
|
|
||||||
if (ref_mv.as_int == INVALID_MV)
|
|
||||||
ref_mv = xd->mi[-1]->mbmi.mv[0];
|
|
||||||
if (rf == NONE)
|
|
||||||
rf = xd->mi[-1]->mbmi.ref_frame[0];
|
|
||||||
for (i = 0; i < mi_height; ++i) {
|
|
||||||
ref_mbmi = &xd->mi[i * xd->mi_stride - 1]->mbmi;
|
|
||||||
const_motion &= (ref_mv.as_int == ref_mbmi->mv[0].as_int) &&
|
|
||||||
(ref_frame == ref_mbmi->ref_frame[0]);
|
|
||||||
skip_ref_frame &= (rf == ref_mbmi->ref_frame[0]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (skip_ref_frame && this_mode != NEARESTMV && this_mode != NEWMV)
|
|
||||||
if (rf > INTRA_FRAME)
|
|
||||||
if (ref_frame != rf)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (const_motion)
|
|
||||||
if (this_mode == NEARMV || this_mode == ZEROMV)
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
comp_pred = second_ref_frame > INTRA_FRAME;
|
comp_pred = second_ref_frame > INTRA_FRAME;
|
||||||
if (comp_pred) {
|
if (comp_pred) {
|
||||||
if (!cpi->allow_comp_inter_inter)
|
if (!cpi->allow_comp_inter_inter)
|
||||||
|
|
|
@ -192,7 +192,6 @@ static void set_good_speed_feature(VP10_COMP *cpi, VP10_COMMON *cm,
|
||||||
sf->use_lp32x32fdct = 1;
|
sf->use_lp32x32fdct = 1;
|
||||||
sf->use_fast_coef_updates = ONE_LOOP_REDUCED;
|
sf->use_fast_coef_updates = ONE_LOOP_REDUCED;
|
||||||
sf->use_fast_coef_costing = 1;
|
sf->use_fast_coef_costing = 1;
|
||||||
sf->motion_field_mode_search = !boosted;
|
|
||||||
sf->partition_search_breakout_rate_thr = 300;
|
sf->partition_search_breakout_rate_thr = 300;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -457,7 +456,6 @@ void vp10_set_speed_features_framesize_independent(VP10_COMP *cpi) {
|
||||||
sf->adaptive_mode_search = 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->alt_ref_search_fp = 0;
|
sf->alt_ref_search_fp = 0;
|
||||||
sf->use_quant_fp = 0;
|
sf->use_quant_fp = 0;
|
||||||
sf->reference_masking = 0;
|
sf->reference_masking = 0;
|
||||||
|
|
|
@ -314,8 +314,6 @@ typedef struct SPEED_FEATURES {
|
||||||
|
|
||||||
int cb_partition_search;
|
int cb_partition_search;
|
||||||
|
|
||||||
int motion_field_mode_search;
|
|
||||||
|
|
||||||
int alt_ref_search_fp;
|
int alt_ref_search_fp;
|
||||||
|
|
||||||
// Fast quantization process path
|
// Fast quantization process path
|
||||||
|
|
Загрузка…
Ссылка в новой задаче