From: Marco Date: Mon, 21 Sep 2015 17:20:14 +0000 (-0700) Subject: Non-rd pickmode: Don't skip checking zeromv-last mode. X-Git-Tag: v1.5.0~133^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=38ad2dcea6cd20c46a0d6c6ba21df6363cb7f0f9;p=libvpx 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 --- 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;