Merge "Optimize 16x16 dequant and idct" into experimental
authorYunqing Wang <yunqingwang@google.com>
Fri, 9 Nov 2012 16:30:53 +0000 (08:30 -0800)
committerGerrit Code Review <gerrit@gerrit.golo.chromium.org>
Fri, 9 Nov 2012 16:30:53 +0000 (08:30 -0800)
1  2 
vp9/common/rtcd_defs.sh
vp9/decoder/decodframe.c

Simple merge
@@@ -508,12 -401,43 +508,12 @@@ static void decode_macroblock(VP9D_COM
        } else {
          vp9_dequant_idct_add_16x16(xd->qcoeff, xd->block[0].dequant,
                                       xd->predictor, xd->dst.y_buffer,
-                                      16, xd->dst.y_stride);
+                                      16, xd->dst.y_stride, xd->eobs[0]);
        }
      } else if (tx_size == TX_8X8) {
 -#if CONFIG_SUPERBLOCKS
 -      void *orig = xd->mode_info_context;
 -      int n, num = xd->mode_info_context->mbmi.encoded_as_sb ? 4 : 1;
 -      for (n = 0; n < num; n++) {
 -        int x_idx = n & 1, y_idx = n >> 1;
 -        if (num == 4 && (mb_col + x_idx >= pc->mb_cols ||
 -                         mb_row + y_idx >= pc->mb_rows))
 -          continue;
 -
 -        if (n != 0) {
 -          for (i = 0; i < 25; i++) {
 -            xd->block[i].eob = 0;
 -            xd->eobs[i] = 0;
 -          }
 -          xd->above_context = pc->above_context + mb_col + (n & 1);
 -          xd->left_context = pc->left_context + (n >> 1);
 -          xd->mode_info_context = orig;
 -          xd->mode_info_context += (n & 1);
 -          xd->mode_info_context += (n >> 1) * pc->mode_info_stride;
 -          if (!orig_skip_flag) {
 -            eobtotal = vp9_decode_mb_tokens_8x8(pbi, xd, bc);
 -            if (eobtotal == 0) // skip loopfilter
 -              xd->mode_info_context->mbmi.mb_skip_coeff = 1;
 -          } else {
 -            vp9_reset_mb_tokens_context(xd);
 -          }
 -        }
 -
 -        if (xd->mode_info_context->mbmi.mb_skip_coeff)
 -          continue; // only happens for SBs, which are already in dest buffer
 -#endif
        vp9_dequantize_b_2x2(b);
        IDCT_INVOKE(RTCD_VTABLE(idct), ihaar2)(&b->dqcoeff[0], b->diff, 8);
 -      ((int *)b->qcoeff)[0] = 0;// 2nd order block are set to 0 after inverse transform
 +      ((int *)b->qcoeff)[0] = 0;  // 2nd order block are set to 0 after idct
        ((int *)b->qcoeff)[1] = 0;
        ((int *)b->qcoeff)[2] = 0;
        ((int *)b->qcoeff)[3] = 0;