ref: 8e070558b062e1978b6b8a3430b3a155d58a6444
parent: 9c90830165413f5197d993a94e4b46def3e53aa3
author: Marco <[email protected]>
date: Wed Jun 15 10:20:32 EDT 2016
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
--- a/vp9/encoder/vp9_pickmode.c
+++ b/vp9/encoder/vp9_pickmode.c
@@ -1667,8 +1667,9 @@
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 @@
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,