From: Marco Date: Wed, 15 Jun 2016 21:20:32 +0000 (-0700) Subject: vp9: Adjustments to nonrd-pickmode for vbr X-Git-Tag: v1.6.0~55^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8e070558b062e1978b6b8a3430b3a155d58a6444;p=libvpx vp9: Adjustments to nonrd-pickmode for vbr For VBR: (1) allow newmv mode for golden ref to select interpolation filter (as in last ref case), and (2) don't use the more aggressive tx-skip testing logic for large blocks. Only affects 1 pass real-time vbr mode (speed >= 5). PSNR/SSIM metrics on ytlive set are all positive, ~0.5-2% gain. Change-Id: I0ffbb0a9755563a5acd6230c58236e4f19a47266 --- diff --git a/vp9/encoder/vp9_pickmode.c b/vp9/encoder/vp9_pickmode.c index e40e59bf1..6b1b7e3d4 100644 --- a/vp9/encoder/vp9_pickmode.c +++ b/vp9/encoder/vp9_pickmode.c @@ -1667,8 +1667,9 @@ void vp9_pick_inter_mode(VP9_COMP *cpi, MACROBLOCK *x, if ((this_mode == NEWMV || filter_ref == SWITCHABLE) && pred_filter_search && (ref_frame == LAST_FRAME || - (ref_frame == GOLDEN_FRAME && cpi->use_svc)) - && (((mi->mv[0].as_mv.row | mi->mv[0].as_mv.col) & 0x07) != 0)) { + (ref_frame == GOLDEN_FRAME && + (cpi->use_svc || cpi->oxcf.rc_mode == VPX_VBR))) && + (((mi->mv[0].as_mv.row | mi->mv[0].as_mv.col) & 0x07) != 0)) { int pf_rate[3]; int64_t pf_dist[3]; unsigned int pf_var[3]; @@ -1723,7 +1724,7 @@ void vp9_pick_inter_mode(VP9_COMP *cpi, MACROBLOCK *x, vp9_build_inter_predictors_sby(xd, mi_row, mi_col, bsize); // For large partition blocks, extra testing is done. - if (bsize > BLOCK_32X32 && + if (cpi->oxcf.rc_mode == VPX_CBR && bsize > BLOCK_32X32 && !cyclic_refresh_segment_id_boosted(xd->mi[0]->segment_id) && cm->base_qindex) { model_rd_for_sb_y_large(cpi, bsize, x, xd, &this_rdc.rate,