Fix mode selection bug when ARNR filtering disabled
authorAdrian Grange <agrange@google.com>
Thu, 1 May 2014 21:31:50 +0000 (14:31 -0700)
committerAdrian Grange <agrange@google.com>
Thu, 1 May 2014 21:38:58 +0000 (14:38 -0700)
When ARNR filtering is disabled, by setting
arnr_max_frames=0, mode_skip_mask was being set to
-1 for the ARF frame resulting in no mode being
selected for the block.

The intent is to restrict the reference frame to the
previous ARF frame and the mode to one of ZEROMV,
NEARMV or NEARESTMV.

Change-Id: Ifc3920b153142cd01d422910c94d2f20ffb6f129

vp9/encoder/vp9_rdopt.c

index f309aac966343e9fcaeb66180994c44bb12d37d3..a6b14599ab1a17aaf0191d1cee441cf8e40c2b67 100644 (file)
@@ -3250,9 +3250,8 @@ int64_t vp9_rd_pick_inter_mode_sb(VP9_COMP *cpi, MACROBLOCK *x,
     // an unfiltered alternative. We allow near/nearest as well
     // because they may result in zero-zero MVs but be cheaper.
     if (cpi->rc.is_src_frame_alt_ref && (cpi->oxcf.arnr_max_frames == 0)) {
-      const int altref_zero_mask =
+      mode_skip_mask =
           ~((1 << THR_NEARESTA) | (1 << THR_NEARA) | (1 << THR_ZEROA));
-      mode_skip_mask |= altref_zero_mask;
       if (frame_mv[NEARMV][ALTREF_FRAME].as_int != 0)
         mode_skip_mask |= (1 << THR_NEARA);
       if (frame_mv[NEARESTMV][ALTREF_FRAME].as_int != 0)