From 38ad2dcea6cd20c46a0d6c6ba21df6363cb7f0f9 Mon Sep 17 00:00:00 2001 From: Marco Date: Mon, 21 Sep 2015 10:20:14 -0700 Subject: [PATCH] Non-rd pickmode: Don't skip checking zeromv-last mode. Reference frame masking logic may skip checking zeromv-last mode. Fix to avoid this and make sure zero-last is always checked. No noticeable change in speed, and PSNR/SSIM metrics on RTC set overall neutral (very small gain ~0.02). Small visual improvement on few RTC clips. Change-Id: I26eacdc449126424001a4a64e5ac31949f064417 --- vp9/encoder/vp9_pickmode.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/vp9/encoder/vp9_pickmode.c b/vp9/encoder/vp9_pickmode.c index 19b0beb34..5a4b26a92 100644 --- a/vp9/encoder/vp9_pickmode.c +++ b/vp9/encoder/vp9_pickmode.c @@ -1238,10 +1238,12 @@ void vp9_pick_inter_mode(VP9_COMP *cpi, MACROBLOCK *x, if (const_motion[ref_frame] && this_mode == NEARMV) continue; - i = (ref_frame == LAST_FRAME) ? GOLDEN_FRAME : LAST_FRAME; - if ((cpi->ref_frame_flags & flag_list[i]) && sf->reference_masking) - if (x->pred_mv_sad[ref_frame] > (x->pred_mv_sad[i] << 1)) - ref_frame_skip_mask |= (1 << ref_frame); + if (!(this_mode == ZEROMV && ref_frame == LAST_FRAME)) { + i = (ref_frame == LAST_FRAME) ? GOLDEN_FRAME : LAST_FRAME; + if ((cpi->ref_frame_flags & flag_list[i]) && sf->reference_masking) + if (x->pred_mv_sad[ref_frame] > (x->pred_mv_sad[i] << 1)) + ref_frame_skip_mask |= (1 << ref_frame); + } if (ref_frame_skip_mask & (1 << ref_frame)) continue;