summaryrefslogtreecommitdiff
path: root/vp9/encoder/vp9_rdopt.c
diff options
context:
space:
mode:
authorJingning Han <jingning@google.com>2014-09-26 12:43:14 -0700
committerJingning Han <jingning@google.com>2014-09-26 12:53:43 -0700
commitccdb518ff8082bc1a3f9ec3027e051e3a8317851 (patch)
tree1f104a134b7859285dd918dc5520d03069a598b3 /vp9/encoder/vp9_rdopt.c
parent6989e81d611b438c21cab5576d01b1b30c5b1e34 (diff)
downloadlibvpx-ccdb518ff8082bc1a3f9ec3027e051e3a8317851.tar
libvpx-ccdb518ff8082bc1a3f9ec3027e051e3a8317851.tar.gz
libvpx-ccdb518ff8082bc1a3f9ec3027e051e3a8317851.tar.bz2
libvpx-ccdb518ff8082bc1a3f9ec3027e051e3a8317851.zip
Skip certain ALTREF inter modes in ARF coding
This commit enables the encoder to skip checking ALTREF inter modes in ARF coding, if the predicted motion vectors suggest that the GOLDEN_FRAME provides higher prediction accuracy than ALTREF_FRAME. It improves the speed 3 encoding speed by about 5%, at the expense of compression performance loss -0.041% and -0.225% for derf and stdhd, respectively. pedestrian_area 1080p 2000 kbps 66705 b/f, 40.909 dB, 118738 ms -> 66732 b/f, 40.908 dB, 113688 ms old_town_cross 720p 1500 kbps 14427 b/f, 36.256 dB, 62746 ms -> 14412 b/f, 36.252 dB, 60690 ms blue_sky 1080p 1500 kbps 51026 b/f, 35.897 dB, 73310 ms -> 50921 b/f, 35.893 dB, 70406 ms bus CIF 1000 kbps 21301 b/f, 34.841 dB, 7326 ms -> 21248 b/f, 34.837 dB, 7196 ms Change-Id: I76cf88b4d655e1ee3c0cb03c8a5745493040e8d2
Diffstat (limited to 'vp9/encoder/vp9_rdopt.c')
-rw-r--r--vp9/encoder/vp9_rdopt.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/vp9/encoder/vp9_rdopt.c b/vp9/encoder/vp9_rdopt.c
index 0f3009ddc..fd67ab5bd 100644
--- a/vp9/encoder/vp9_rdopt.c
+++ b/vp9/encoder/vp9_rdopt.c
@@ -2674,6 +2674,11 @@ int64_t vp9_rd_pick_inter_mode_sb(VP9_COMP *cpi, MACROBLOCK *x,
}
}
+ if (cpi->sf.alt_ref_search_fp)
+ if (!cm->show_frame)
+ if (x->pred_mv_sad[ALTREF_FRAME] > (x->pred_mv_sad[GOLDEN_FRAME] << 1))
+ mode_skip_mask[ALTREF_FRAME] |= INTER_ALL;
+
if (bsize > cpi->sf.max_intra_bsize) {
ref_frame_skip_mask[0] |= (1 << INTRA_FRAME);
ref_frame_skip_mask[1] |= (1 << INTRA_FRAME);