Bugfix in encode_inter_mb_segment_8x8
authorDeb Mukherjee <debargha@google.com>
Thu, 4 Apr 2013 18:07:19 +0000 (11:07 -0700)
committerDeb Mukherjee <debargha@google.com>
Thu, 4 Apr 2013 18:07:19 +0000 (11:07 -0700)
Fixes an indexing bug. Looks like the bug has been there for a while.

Change-Id: I9fc04b0c30754bcb47366ad94a08112925600c4d

vp9/encoder/vp9_rdopt.c

index e66f6a2..34adc99 100644 (file)
@@ -573,6 +573,10 @@ static INLINE int cost_coeffs(VP9_COMMON *const cm, MACROBLOCK *mb,
     if (vp9_segfeature_active(xd, segment_id, SEG_LVL_SKIP))
       seg_eob = 0;
 
+  /* sanity check to ensure that we do not have spurious non-zero q values */
+  if (eob < seg_eob)
+    assert(qcoeff_ptr[scan[eob]] == 0);
+
   {
 #if CONFIG_CODE_NONZEROCOUNT
     int nzc = 0;
@@ -2562,7 +2566,7 @@ static int64_t encode_inter_mb_segment_8x8(VP9_COMMON *const cm,
             BLOCKD *bd = &xd->block[ib + iblock[j]];
             BLOCK *be = &x->block[ib + iblock[j]];
             x->fwd_txm8x4(be->src_diff, be->coeff, 32);
-            x->quantize_b_4x4_pair(x, ib + iblock[j], ib + iblock[j]);
+            x->quantize_b_4x4_pair(x, ib + iblock[j], ib + iblock[j] + 1);
             thisdistortion = vp9_block_error_c(be->coeff, bd->dqcoeff, 32);
             otherdist += thisdistortion;
             xd->mode_info_context->mbmi.txfm_size = TX_4X4;