ref: 64742f825d1e17a33ed412001414848789258e03
parent: 2f16e79e620dff35df98e1cd939b081ca0c96b6c
parent: f31ff029df13a415ab2eb8c2abbc212b41d5d6af
author: Yunqing Wang <[email protected]>
date: Tue Jul 1 12:05:51 EDT 2014
Merge "Elevate NEWMV mode checking threshold in real time"
--- a/vp9/encoder/vp9_rdopt.c
+++ b/vp9/encoder/vp9_rdopt.c
@@ -4273,6 +4273,7 @@
void vp9_set_rd_speed_thresholds(VP9_COMP *cpi) {
int i;
RD_OPT *const rd = &cpi->rd;
+ SPEED_FEATURES *const sf = &cpi->sf;
// Set baseline threshold values
for (i = 0; i < MAX_MODES; ++i)
@@ -4350,6 +4351,10 @@
rd->thresh_mult[THR_COMP_NEARGA ] = INT_MAX;
rd->thresh_mult[THR_COMP_NEWGA ] = INT_MAX;
}
+
+ // Adjust threshold only in real time mode, which only use last reference
+ // frame.
+ rd->thresh_mult[THR_NEWMV] += sf->elevate_newmv_thresh;
}
void vp9_set_rd_speed_thresholds_sub8x8(VP9_COMP *cpi) {
--- a/vp9/encoder/vp9_speed_features.c
+++ b/vp9/encoder/vp9_speed_features.c
@@ -277,11 +277,15 @@
// This feature is only enabled when partition search is disabled.
sf->reuse_inter_pred_sby = 1;
+
+ // Increase mode checking threshold for NEWMV.
+ sf->elevate_newmv_thresh = 2000;
}
if (speed >= 7) {
sf->lpf_pick = LPF_PICK_MINIMAL_LPF;
sf->encode_breakout_thresh = (MIN(cm->width, cm->height) >= 720) ?
800 : 300;
+ sf->elevate_newmv_thresh = 2500;
}
if (speed >= 8) {
int i;
@@ -352,6 +356,7 @@
sf->always_this_block_size = BLOCK_16X16;
sf->search_type_check_frequency = 50;
sf->encode_breakout_thresh = 0;
+ sf->elevate_newmv_thresh = 0;
// Recode loop tolerence %.
sf->recode_tolerance = 25;
--- a/vp9/encoder/vp9_speed_features.h
+++ b/vp9/encoder/vp9_speed_features.h
@@ -361,6 +361,9 @@
// This variable sets the encode_breakout threshold. Currently, it is only
// enabled in real time mode.
int encode_breakout_thresh;
+
+ // In real time encoding, increase the threshold for NEWMV.
+ int elevate_newmv_thresh;
} SPEED_FEATURES;
struct VP9_COMP;