From ee1fbb91afa485e362885c9f8385f24a753046d6 Mon Sep 17 00:00:00 2001 From: Jingning Han Date: Wed, 19 Dec 2018 12:20:57 -0800 Subject: [PATCH] Add control interface to PSNR_AQ mode Change-Id: I760c69189fb8d8d85b5daffc86064c66913c0220 --- vp9/encoder/vp9_encodeframe.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/vp9/encoder/vp9_encodeframe.c b/vp9/encoder/vp9_encodeframe.c index df555d70c..8558c0239 100644 --- a/vp9/encoder/vp9_encodeframe.c +++ b/vp9/encoder/vp9_encodeframe.c @@ -181,7 +181,7 @@ static BLOCK_SIZE get_rd_var_based_fixed_partition(VP9_COMP *cpi, MACROBLOCK *x, } static void set_segment_index(VP9_COMP *cpi, MACROBLOCK *const x, int mi_row, - int mi_col, BLOCK_SIZE bsize) { + int mi_col, BLOCK_SIZE bsize, int segment_index) { VP9_COMMON *const cm = &cpi->common; const struct segmentation *const seg = &cm->seg; MACROBLOCKD *const xd = &x->e_mbd; @@ -229,6 +229,7 @@ static void set_segment_index(VP9_COMP *cpi, MACROBLOCK *const x, int mi_row, else mi->segment_id = get_segment_id(cm, map, bsize, mi_row, mi_col); break; + case PSNR_AQ: mi->segment_id = segment_index; break; default: // NO_AQ or PSNR_AQ break; @@ -1291,7 +1292,7 @@ static int choose_partitioning(VP9_COMP *cpi, const TileInfo *const tile, } set_offsets(cpi, tile, x, mi_row, mi_col, BLOCK_64X64); - set_segment_index(cpi, x, mi_row, mi_col, BLOCK_64X64); + set_segment_index(cpi, x, mi_row, mi_col, BLOCK_64X64, 0); segment_id = xd->mi[0]->segment_id; if (cpi->oxcf.speed >= 8 || (cpi->use_svc && cpi->svc.non_reference_frame)) @@ -1919,7 +1920,6 @@ static void rd_pick_sb_modes(VP9_COMP *cpi, TileDataEnc *tile_data, x->use_lp32x32fdct = 1; set_offsets(cpi, tile_info, x, mi_row, mi_col, bsize); - set_segment_index(cpi, x, mi_row, mi_col, bsize); mi = xd->mi[0]; mi->sb_type = bsize; @@ -1969,6 +1969,8 @@ static void rd_pick_sb_modes(VP9_COMP *cpi, TileDataEnc *tile_data, x->block_qcoeff_opt = cpi->sf.allow_quant_coeff_opt; } + set_segment_index(cpi, x, mi_row, mi_col, bsize, 0); + if (aq_mode == VARIANCE_AQ) { x->rdmult = set_segment_rdmult(cpi, x, mi->segment_id); } else if (aq_mode == EQUATOR360_AQ) { @@ -4420,7 +4422,7 @@ static void nonrd_pick_sb_modes(VP9_COMP *cpi, TileDataEnc *tile_data, set_offsets(cpi, tile_info, x, mi_row, mi_col, bsize); - set_segment_index(cpi, x, mi_row, mi_col, bsize); + set_segment_index(cpi, x, mi_row, mi_col, bsize, 0); mi = xd->mi[0]; mi->sb_type = bsize; -- 2.50.1