diff options
author | JackyChen <jackychen@google.com> | 2016-06-06 16:30:14 -0700 |
---|---|---|
committer | JackyChen <jackychen@google.com> | 2016-06-13 09:33:22 -0700 |
commit | f9c0587200b56285e6847ec88c8ea876b422acc1 (patch) | |
tree | c0d0171ed8865b75db961fea2275231d700c6ae4 /vp9/encoder/vp9_speed_features.c | |
parent | 181988d37273bd31708718a51e727ea1048d7c98 (diff) | |
download | libvpx-f9c0587200b56285e6847ec88c8ea876b422acc1.tar libvpx-f9c0587200b56285e6847ec88c8ea876b422acc1.tar.gz libvpx-f9c0587200b56285e6847ec88c8ea876b422acc1.tar.bz2 libvpx-f9c0587200b56285e6847ec88c8ea876b422acc1.zip |
vp9: Encoding cycle reduction for speed 8.
1. Skip golden non-zeromv and newmv-last for bsize >= 16x16 if the
temporal variance obtained from choose_partitioning is very low.
2. Skip horz and vert INTRA mode for speed 8.
This change works best on the clips with little noise and with some
motion (e.g. gips_motion which has > 5% speed up). PSNR drop is 1.78%
on rtc test set, no obvious visual quality regression found.
Change-Id: Ib43b5b20e67809d03c5a6890818ddff59e1fc94a
Diffstat (limited to 'vp9/encoder/vp9_speed_features.c')
-rw-r--r-- | vp9/encoder/vp9_speed_features.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/vp9/encoder/vp9_speed_features.c b/vp9/encoder/vp9_speed_features.c index 0090b4f40..e7f04a244 100644 --- a/vp9/encoder/vp9_speed_features.c +++ b/vp9/encoder/vp9_speed_features.c @@ -429,7 +429,7 @@ static void set_rt_speed_feature(VP9_COMP *cpi, SPEED_FEATURES *sf, sf->mv.search_method = NSTEP; sf->mv.reduce_first_step_size = 1; sf->skip_encode_sb = 0; - if (!cpi->use_svc && cpi->oxcf.rc_mode == VPX_CBR && cpi->oxcf.pass == 0 && + if (!cpi->use_svc && cpi->oxcf.rc_mode == VPX_CBR && content != VP9E_CONTENT_SCREEN) { // Enable short circuit for low temporal variance. sf->short_circuit_low_temp_var = 1; @@ -450,6 +450,17 @@ static void set_rt_speed_feature(VP9_COMP *cpi, SPEED_FEATURES *sf, sf->adaptive_rd_thresh = 4; sf->mv.subpel_force_stop = (content == VP9E_CONTENT_SCREEN) ? 3 : 2; sf->lpf_pick = LPF_PICK_MINIMAL_LPF; + // Only keep INTRA_DC mode for speed 8. + if (!is_keyframe) { + int i = 0; + for (i = 0; i < BLOCK_SIZES; ++i) + sf->intra_y_mode_bsize_mask[i] = INTRA_DC; + } + if (!cpi->use_svc && cpi->oxcf.rc_mode == VPX_CBR && + content != VP9E_CONTENT_SCREEN) { + // More aggressive short circuit for speed 8. + sf->short_circuit_low_temp_var = 2; + } } } |