Key frame non-RD mode decision process

This commit makes a non-RD coding mode decision process for key
frame coding. It can be optionally turned on in speed -6 and above.

Change-Id: I0847258b392877a0210b4768bef88ebc9ad009b5
This commit is contained in:
Jingning Han
2014-11-20 11:28:00 -08:00
parent 681d5e9024
commit 2fbdfd2c66
4 changed files with 62 additions and 3 deletions

View File

@@ -2601,7 +2601,9 @@ static void nonrd_pick_sb_modes(VP9_COMP *cpi,
if (mbmi->segment_id)
x->rdmult = vp9_cyclic_refresh_get_rdmult(cpi->cyclic_refresh);
if (vp9_segfeature_active(&cm->seg, mbmi->segment_id, SEG_LVL_SKIP))
if (cm->frame_type == KEY_FRAME)
vp9_pick_intra_mode(cpi, x, rd_cost, bsize, ctx);
else if (vp9_segfeature_active(&cm->seg, mbmi->segment_id, SEG_LVL_SKIP))
set_mode_info_seg_skip(x, cm->tx_mode, rd_cost, bsize);
else
vp9_pick_inter_mode(cpi, x, tile_data, mi_row, mi_col,
@@ -3456,7 +3458,7 @@ static void encode_tiles(VP9_COMP *cpi) {
for (mi_row = tile_info->mi_row_start; mi_row < tile_info->mi_row_end;
mi_row += MI_BLOCK_SIZE) {
if (cpi->sf.use_nonrd_pick_mode && !frame_is_intra_only(cm))
if (cpi->sf.use_nonrd_pick_mode)
encode_nonrd_sb_row(cpi, this_tile, mi_row, &tok[tile_row][tile_col]);
else
encode_rd_sb_row(cpi, this_tile, mi_row, &tok[tile_row][tile_col]);