ref: 7e7d820d5b33969c00b3c3041e39d35a3eae6555
parent: 1e224dcb83c83ecb183d989937c3d13896bfd846
author: Marco <[email protected]>
date: Fri Feb 17 03:44:50 EST 2017
vp9: Non-rd pickmode: use simple block_yrd under some conditons. For speed 8 only. 3% speed up for QVGA and 6.3% for VGA on Nexus 6. ~3% avgPSNR decrease on rtc_derf and 2.9% on rtc. Disabled for now. Change-Id: I70133f1f6c804d663d594df437bfe7fdb0030d6a
--- a/vp9/encoder/vp9_pickmode.c
+++ b/vp9/encoder/vp9_pickmode.c
@@ -651,6 +651,17 @@
}
#endif
+ if (cpi->sf.use_simple_block_yrd && cpi->common.frame_type != KEY_FRAME &&
+ !cyclic_refresh_segment_id_boosted(xd->mi[0]->segment_id)) {
+ unsigned int var_y, sse_y;
+ (void)tx_size;
+ model_rd_for_sb_y(cpi, bsize, x, xd, &this_rdc->rate, &this_rdc->dist,
+ &var_y, &sse_y);
+ *sse = INT_MAX;
+ *skippable = 0;
+ return;
+ }
+
(void)cpi;
// The max tx_size passed in is TX_16X16.
--- a/vp9/encoder/vp9_speed_features.c
+++ b/vp9/encoder/vp9_speed_features.c
@@ -313,6 +313,7 @@
sf->allow_acl = 0;
sf->copy_partition_flag = 0;
sf->use_source_sad = 0;
+ sf->use_simple_block_yrd = 0;
if (speed >= 1) {
sf->allow_txfm_domain_distortion = 1;
@@ -555,6 +556,7 @@
}
}
sf->limit_newmv_early_exit = 0;
+ sf->use_simple_block_yrd = 0;
}
}
--- a/vp9/encoder/vp9_speed_features.h
+++ b/vp9/encoder/vp9_speed_features.h
@@ -482,6 +482,8 @@
// Compute the source sad for every superblock of the frame,
// prior to encoding the frame, to be used to bypass some encoder decisions.
int use_source_sad;
+
+ int use_simple_block_yrd;
} SPEED_FEATURES;
struct VP9_COMP;