]> granicus.if.org Git - libvpx/commitdiff
Merge "Inlining decode_atom, decode_sb_intra, and decode_sb."
authorDmitry Kovalev <dkovalev@google.com>
Mon, 1 Jul 2013 21:58:06 +0000 (14:58 -0700)
committerGerrit Code Review <gerrit@gerrit.golo.chromium.org>
Mon, 1 Jul 2013 21:58:06 +0000 (14:58 -0700)
1  2 
vp9/decoder/vp9_decodframe.c

index 5238658d09e4fc5f7c725bd45610c0490a50a3eb,befa238233f7d6f184fa4fa17f58a99d4cbac405..f4e80fe7ec756ae66c10daed278565ccc31a172e
@@@ -294,17 -255,35 +255,35 @@@ static void decode_modes_b(VP9D_COMP *p
        return;
  
    set_offsets(pbi, bsize, mi_row, mi_col);
 -  vp9_decode_mb_mode_mv(pbi, xd, mi_row, mi_col, r);
 +  vp9_read_mode_info(pbi, mi_row, mi_col, r);
  
-   if (xd->mode_info_context->mbmi.ref_frame[0] == INTRA_FRAME) {
-     decode_sb_intra(pbi, mi_row, mi_col, r,
-                     (bsize < BLOCK_SIZE_SB8X8) ? BLOCK_SIZE_SB8X8 : bsize);
+   if (less8x8)
+     bsize = BLOCK_SIZE_SB8X8;
+   // Has to be called after set_offsets
+   mbmi = &xd->mode_info_context->mbmi;
+   if (mbmi->ref_frame[0] == INTRA_FRAME) {
+     // Intra reconstruction
+     decode_tokens(pbi, bsize, r);
+     foreach_transformed_block(xd, bsize, decode_block_intra, xd);
    } else {
+     // Inter reconstruction
+     int eobtotal;
      set_refs(pbi, mi_row, mi_col);
-     if (bsize < BLOCK_SIZE_SB8X8)
-       decode_atom(pbi, mi_row, mi_col, r);
-     else
-       decode_sb(pbi, mi_row, mi_col, r, bsize);
+     vp9_setup_interp_filters(xd, mbmi->interp_filter, cm);
+     vp9_build_inter_predictors_sb(xd, mi_row, mi_col, bsize);
+     eobtotal = decode_tokens(pbi, bsize, r);
+     if (less8x8) {
+       if (eobtotal >= 0)
+         foreach_transformed_block(xd, bsize, decode_block, xd);
+     } else {
+       assert(mbmi->sb_type == bsize);
+       if (eobtotal == 0)
+         vp9_set_pred_flag(xd, bsize, PRED_MBSKIP, 1);  // skip loopfilter
+       else if (eobtotal > 0)
+         foreach_transformed_block(xd, bsize, decode_block, xd);
+     }
    }
    xd->corrupted |= vp9_reader_has_error(r);
  }