diff options
author | Marco <marpan@google.com> | 2017-02-17 08:44:50 -0800 |
---|---|---|
committer | Jerome Jiang <jianj@google.com> | 2017-02-22 13:22:53 -0800 |
commit | 7e7d820d5b33969c00b3c3041e39d35a3eae6555 (patch) | |
tree | 2d0a5a679979db4282f14680266e49a6eb3b7f3a /vp9 | |
parent | 1e224dcb83c83ecb183d989937c3d13896bfd846 (diff) | |
download | libvpx-7e7d820d5b33969c00b3c3041e39d35a3eae6555.tar libvpx-7e7d820d5b33969c00b3c3041e39d35a3eae6555.tar.gz libvpx-7e7d820d5b33969c00b3c3041e39d35a3eae6555.tar.bz2 libvpx-7e7d820d5b33969c00b3c3041e39d35a3eae6555.zip |
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
Diffstat (limited to 'vp9')
-rw-r--r-- | vp9/encoder/vp9_pickmode.c | 11 | ||||
-rw-r--r-- | vp9/encoder/vp9_speed_features.c | 2 | ||||
-rw-r--r-- | vp9/encoder/vp9_speed_features.h | 2 |
3 files changed, 15 insertions, 0 deletions
diff --git a/vp9/encoder/vp9_pickmode.c b/vp9/encoder/vp9_pickmode.c index b48ec9e24..08f3f3801 100644 --- a/vp9/encoder/vp9_pickmode.c +++ b/vp9/encoder/vp9_pickmode.c @@ -651,6 +651,17 @@ static void block_yrd(VP9_COMP *cpi, MACROBLOCK *x, RD_COST *this_rdc, } #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. diff --git a/vp9/encoder/vp9_speed_features.c b/vp9/encoder/vp9_speed_features.c index d63f8db7d..3d22fecc8 100644 --- a/vp9/encoder/vp9_speed_features.c +++ b/vp9/encoder/vp9_speed_features.c @@ -313,6 +313,7 @@ static void set_rt_speed_feature(VP9_COMP *cpi, SPEED_FEATURES *sf, int speed, 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 @@ static void set_rt_speed_feature(VP9_COMP *cpi, SPEED_FEATURES *sf, int speed, } } sf->limit_newmv_early_exit = 0; + sf->use_simple_block_yrd = 0; } } diff --git a/vp9/encoder/vp9_speed_features.h b/vp9/encoder/vp9_speed_features.h index df93b14c8..a7cc77872 100644 --- a/vp9/encoder/vp9_speed_features.h +++ b/vp9/encoder/vp9_speed_features.h @@ -482,6 +482,8 @@ typedef struct SPEED_FEATURES { // 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; |