Merge "Moving {sb, mb, b, ab}_index from MACROBLOCKD to MACROBLOCK."
authorDmitry Kovalev <dkovalev@google.com>
Tue, 12 Nov 2013 23:59:28 +0000 (15:59 -0800)
committerGerrit Code Review <gerrit@gerrit.golo.chromium.org>
Tue, 12 Nov 2013 23:59:28 +0000 (15:59 -0800)
1  2 
vp9/common/vp9_blockd.h
vp9/encoder/vp9_block.h
vp9/encoder/vp9_encodeframe.c
vp9/encoder/vp9_onyx_if.c
vp9/encoder/vp9_rdopt.c

Simple merge
Simple merge
Simple merge
@@@ -1443,82 -1436,42 +1443,81 @@@ static void cal_nmvsadcosts_hp(int *mvs
    } while (++i <= MV_MAX);
  }
  
 +static void alloc_mode_context(VP9_COMMON *cm, int num_4x4_blk,
 +                               PICK_MODE_CONTEXT *ctx) {
 +  int num_pix = num_4x4_blk << 4;
 +  int i, k;
 +  ctx->num_4x4_blk = num_4x4_blk;
 +  CHECK_MEM_ERROR(cm, ctx->zcoeff_blk,
 +                  vpx_calloc(num_4x4_blk, sizeof(uint8_t)));
 +  for (i = 0; i < MAX_MB_PLANE; ++i) {
 +    for (k = 0; k < 2; ++k) {
 +      CHECK_MEM_ERROR(cm, ctx->coeff[i][k],
 +                      vpx_memalign(16, num_pix * sizeof(int16_t)));
 +      CHECK_MEM_ERROR(cm, ctx->qcoeff[i][k],
 +                      vpx_memalign(16, num_pix * sizeof(int16_t)));
 +      CHECK_MEM_ERROR(cm, ctx->dqcoeff[i][k],
 +                      vpx_memalign(16, num_pix * sizeof(int16_t)));
 +      CHECK_MEM_ERROR(cm, ctx->eobs[i][k],
 +                      vpx_memalign(16, num_pix * sizeof(uint16_t)));
 +      ctx->coeff_pbuf[i][k]   = ctx->coeff[i][k];
 +      ctx->qcoeff_pbuf[i][k]  = ctx->qcoeff[i][k];
 +      ctx->dqcoeff_pbuf[i][k] = ctx->dqcoeff[i][k];
 +      ctx->eobs_pbuf[i][k]    = ctx->eobs[i][k];
 +    }
 +  }
 +}
 +
 +static void free_mode_context(PICK_MODE_CONTEXT *ctx) {
 +  int i, k;
 +  vpx_free(ctx->zcoeff_blk);
 +  ctx->zcoeff_blk = 0;
 +  for (i = 0; i < MAX_MB_PLANE; ++i) {
 +    for (k = 0; k < 2; ++k) {
 +      vpx_free(ctx->coeff[i][k]);
 +      ctx->coeff[i][k] = 0;
 +      vpx_free(ctx->qcoeff[i][k]);
 +      ctx->qcoeff[i][k] = 0;
 +      vpx_free(ctx->dqcoeff[i][k]);
 +      ctx->dqcoeff[i][k] = 0;
 +      vpx_free(ctx->eobs[i][k]);
 +      ctx->eobs[i][k] = 0;
 +    }
 +  }
 +}
 +
  static void init_pick_mode_context(VP9_COMP *cpi) {
    int i;
-   MACROBLOCK  *x  = &cpi->mb;
-   MACROBLOCKD *xd = &x->e_mbd;
-   VP9_COMMON  *cm = &cpi->common;
+   VP9_COMMON *const cm = &cpi->common;
+   MACROBLOCK *const x  = &cpi->mb;
  
    for (i = 0; i < BLOCK_SIZES; ++i) {
      const int num_4x4_w = num_4x4_blocks_wide_lookup[i];
      const int num_4x4_h = num_4x4_blocks_high_lookup[i];
      const int num_4x4_blk = MAX(4, num_4x4_w * num_4x4_h);
      if (i < BLOCK_16X16) {
-       for (xd->sb_index = 0; xd->sb_index < 4; ++xd->sb_index) {
-         for (xd->mb_index = 0; xd->mb_index < 4; ++xd->mb_index) {
-           for (xd->b_index = 0; xd->b_index < 16 / num_4x4_blk; ++xd->b_index) {
+       for (x->sb_index = 0; x->sb_index < 4; ++x->sb_index) {
+         for (x->mb_index = 0; x->mb_index < 4; ++x->mb_index) {
+           for (x->b_index = 0; x->b_index < 16 / num_4x4_blk; ++x->b_index) {
              PICK_MODE_CONTEXT *ctx = get_block_context(x, i);
 -            ctx->num_4x4_blk = num_4x4_blk;
 -            CHECK_MEM_ERROR(cm, ctx->zcoeff_blk,
 -                            vpx_calloc(num_4x4_blk, sizeof(uint8_t)));
 +            alloc_mode_context(cm, num_4x4_blk, ctx);
            }
          }
        }
      } else if (i < BLOCK_32X32) {
-       for (xd->sb_index = 0; xd->sb_index < 4; ++xd->sb_index) {
-         for (xd->mb_index = 0; xd->mb_index < 64 / num_4x4_blk;
-                                ++xd->mb_index) {
+       for (x->sb_index = 0; x->sb_index < 4; ++x->sb_index) {
+         for (x->mb_index = 0; x->mb_index < 64 / num_4x4_blk; ++x->mb_index) {
            PICK_MODE_CONTEXT *ctx = get_block_context(x, i);
            ctx->num_4x4_blk = num_4x4_blk;
 -          CHECK_MEM_ERROR(cm, ctx->zcoeff_blk,
 -                          vpx_calloc(num_4x4_blk, sizeof(uint8_t)));
 +          alloc_mode_context(cm, num_4x4_blk, ctx);
          }
        }
      } else if (i < BLOCK_64X64) {
-       for (xd->sb_index = 0; xd->sb_index < 256 / num_4x4_blk; ++xd->sb_index) {
+       for (x->sb_index = 0; x->sb_index < 256 / num_4x4_blk; ++x->sb_index) {
          PICK_MODE_CONTEXT *ctx = get_block_context(x, i);
          ctx->num_4x4_blk = num_4x4_blk;
 -        CHECK_MEM_ERROR(cm, ctx->zcoeff_blk,
 -                        vpx_calloc(num_4x4_blk, sizeof(uint8_t)));
 +        alloc_mode_context(cm, num_4x4_blk, ctx);
        }
      } else {
        PICK_MODE_CONTEXT *ctx = get_block_context(x, i);
@@@ -1537,26 -1490,28 +1535,25 @@@ static void free_pick_mode_context(MACR
      const int num_4x4_h = num_4x4_blocks_high_lookup[i];
      const int num_4x4_blk = MAX(4, num_4x4_w * num_4x4_h);
      if (i < BLOCK_16X16) {
-       for (xd->sb_index = 0; xd->sb_index < 4; ++xd->sb_index) {
-         for (xd->mb_index = 0; xd->mb_index < 4; ++xd->mb_index) {
-           for (xd->b_index = 0; xd->b_index < 16 / num_4x4_blk; ++xd->b_index) {
+       for (x->sb_index = 0; x->sb_index < 4; ++x->sb_index) {
+         for (x->mb_index = 0; x->mb_index < 4; ++x->mb_index) {
+           for (x->b_index = 0; x->b_index < 16 / num_4x4_blk; ++x->b_index) {
              PICK_MODE_CONTEXT *ctx = get_block_context(x, i);
 -            vpx_free(ctx->zcoeff_blk);
 -            ctx->zcoeff_blk = 0;
 +            free_mode_context(ctx);
            }
          }
        }
      } else if (i < BLOCK_32X32) {
-       for (xd->sb_index = 0; xd->sb_index < 4; ++xd->sb_index) {
-         for (xd->mb_index = 0; xd->mb_index < 64 / num_4x4_blk;
-                                ++xd->mb_index) {
+       for (x->sb_index = 0; x->sb_index < 4; ++x->sb_index) {
+         for (x->mb_index = 0; x->mb_index < 64 / num_4x4_blk; ++x->mb_index) {
            PICK_MODE_CONTEXT *ctx = get_block_context(x, i);
 -          vpx_free(ctx->zcoeff_blk);
 -          ctx->zcoeff_blk = 0;
 +          free_mode_context(ctx);
          }
        }
      } else if (i < BLOCK_64X64) {
-       for (xd->sb_index = 0; xd->sb_index < 256 / num_4x4_blk; ++xd->sb_index) {
+       for (x->sb_index = 0; x->sb_index < 256 / num_4x4_blk; ++x->sb_index) {
          PICK_MODE_CONTEXT *ctx = get_block_context(x, i);
 -        vpx_free(ctx->zcoeff_blk);
 -        ctx->zcoeff_blk = 0;
 +        free_mode_context(ctx);
        }
      } else {
        PICK_MODE_CONTEXT *ctx = get_block_context(x, i);
Simple merge