diff options
author | John Koleszar <jkoleszar@google.com> | 2013-04-25 11:15:38 -0700 |
---|---|---|
committer | John Koleszar <jkoleszar@google.com> | 2013-04-26 10:14:07 -0700 |
commit | 4f55c5618afb8ef860744c870ac4e33b5583be22 (patch) | |
tree | 55680d6ef63cc26d2873662b46784f871e51533b /vp9/common | |
parent | 4b27eb1f186d9bd2d218c0140b41484df8d38fd1 (diff) | |
download | libvpx-4f55c5618afb8ef860744c870ac4e33b5583be22.tar libvpx-4f55c5618afb8ef860744c870ac4e33b5583be22.tar.gz libvpx-4f55c5618afb8ef860744c870ac4e33b5583be22.tar.bz2 libvpx-4f55c5618afb8ef860744c870ac4e33b5583be22.zip |
Remove destination pointers from BLOCKD
Access these members from MACROBLOCKD instead.
Change-Id: I7907230dd473ff12ebe182b9280d8b7f12a888c4
Diffstat (limited to 'vp9/common')
-rw-r--r-- | vp9/common/vp9_blockd.h | 7 | ||||
-rw-r--r-- | vp9/common/vp9_mbpitch.c | 50 | ||||
-rw-r--r-- | vp9/common/vp9_reconintra.c | 20 | ||||
-rw-r--r-- | vp9/common/vp9_reconintra.h | 3 | ||||
-rw-r--r-- | vp9/common/vp9_reconintra4x4.c | 18 | ||||
-rw-r--r-- | vp9/common/vp9_rtcd_defs.sh | 4 |
6 files changed, 20 insertions, 82 deletions
diff --git a/vp9/common/vp9_blockd.h b/vp9/common/vp9_blockd.h index b4f7c93a5..844892abc 100644 --- a/vp9/common/vp9_blockd.h +++ b/vp9/common/vp9_blockd.h @@ -279,11 +279,7 @@ typedef struct { } MODE_INFO; typedef struct blockd { - uint8_t **base_dst; - int dst; - int dst_stride; - -// union b_mode_info bmi; + int unused; } BLOCKD; struct scale_factors { @@ -743,7 +739,6 @@ static TX_TYPE get_tx_type_16x16(const MACROBLOCKD *xd, int ib) { return tx_type; } -void vp9_build_block_doffsets(MACROBLOCKD *xd); void vp9_setup_block_dptrs(MACROBLOCKD *xd); static TX_SIZE get_uv_tx_size(const MACROBLOCKD *xd) { diff --git a/vp9/common/vp9_mbpitch.c b/vp9/common/vp9_mbpitch.c index 3a918522b..8c05a34e5 100644 --- a/vp9/common/vp9_mbpitch.c +++ b/vp9/common/vp9_mbpitch.c @@ -11,51 +11,6 @@ #include "vp9/common/vp9_blockd.h" -typedef enum { - PRED = 0, - DEST = 1 -} BLOCKSET; - -static void setup_block(BLOCKD *b, uint8_t **base, uint8_t **base2, - int stride, int offset, BLOCKSET bs) { - if (bs == DEST) { - b->dst_stride = stride; - b->dst = offset; - b->base_dst = base; - } -} - -static void setup_macroblock(MACROBLOCKD *mb, BLOCKSET bs) { - BLOCKD *blockd = mb->block; - uint8_t **y, **u, **v, **y2, **u2, **v2; - int i, stride; - - if (bs == DEST) { - y = &mb->plane[0].dst.buf; - u = &mb->plane[1].dst.buf; - v = &mb->plane[2].dst.buf; - - y2 = NULL; - u2 = NULL; - v2 = NULL; - } - - // luma - stride = mb->plane[0].dst.stride; - for (i = 0; i < 16; ++i) { - const int offset = (i >> 2) * 4 * stride + (i & 3) * 4; - setup_block(&blockd[i], y, y2, stride, offset, bs); - } - - // chroma - stride = mb->plane[1].dst.stride; - for (i = 16; i < 20; i++) { - const int offset = ((i - 16) >> 1) * 4 * stride + (i & 1) * 4; - setup_block(&blockd[i], u, u2, stride, offset, bs); - setup_block(&blockd[i + 4], v, v2, stride, offset, bs); - } -} - void vp9_setup_block_dptrs(MACROBLOCKD *mb) { int i; @@ -65,8 +20,3 @@ void vp9_setup_block_dptrs(MACROBLOCKD *mb) { mb->plane[i].subsampling_y = !!i; } } - -void vp9_build_block_doffsets(MACROBLOCKD *mb) { - // handle the destination pitch features - setup_macroblock(mb, DEST); -} diff --git a/vp9/common/vp9_reconintra.c b/vp9/common/vp9_reconintra.c index 23fc55205..a66e78255 100644 --- a/vp9/common/vp9_reconintra.c +++ b/vp9/common/vp9_reconintra.c @@ -611,37 +611,31 @@ void vp9_build_intra_predictors_sbuv_s(MACROBLOCKD *xd, } void vp9_intra8x8_predict(MACROBLOCKD *xd, - BLOCKD *b, + int block4x4_idx, int mode, uint8_t *predictor, int pre_stride) { - const int block4x4_idx = (b - xd->block); const int block_idx = (block4x4_idx >> 2) | !!(block4x4_idx & 2); const int have_top = (block_idx >> 1) || xd->up_available; const int have_left = (block_idx & 1) || xd->left_available; const int have_right = !(block_idx & 1) || xd->right_available; - vp9_build_intra_predictors(*(b->base_dst) + b->dst, - b->dst_stride, predictor, pre_stride, + vp9_build_intra_predictors(predictor, pre_stride, + predictor, pre_stride, mode, 8, 8, have_top, have_left, have_right); } void vp9_intra_uv4x4_predict(MACROBLOCKD *xd, - BLOCKD *b, + int block4x4_idx, int mode, uint8_t *predictor, int pre_stride) { - const int block_idx = (b - xd->block) & 3; + const int block_idx = block4x4_idx & 3; const int have_top = (block_idx >> 1) || xd->up_available; const int have_left = (block_idx & 1) || xd->left_available; const int have_right = !(block_idx & 1) || xd->right_available; - vp9_build_intra_predictors(*(b->base_dst) + b->dst, - b->dst_stride, predictor, pre_stride, + vp9_build_intra_predictors(predictor, pre_stride, + predictor, pre_stride, mode, 4, 4, have_top, have_left, have_right); } - -/* TODO: try different ways of use Y-UV mode correlation - Current code assumes that a uv 4x4 block use same mode - as corresponding Y 8x8 area - */ diff --git a/vp9/common/vp9_reconintra.h b/vp9/common/vp9_reconintra.h index e94359683..21cd7abbe 100644 --- a/vp9/common/vp9_reconintra.h +++ b/vp9/common/vp9_reconintra.h @@ -18,7 +18,8 @@ B_PREDICTION_MODE vp9_find_dominant_direction(uint8_t *ptr, int stride, int n, int tx, int ty); -B_PREDICTION_MODE vp9_find_bpred_context(MACROBLOCKD *xd, BLOCKD *x); +B_PREDICTION_MODE vp9_find_bpred_context(MACROBLOCKD *xd, int block, + uint8_t *ptr, int stride); #if CONFIG_COMP_INTERINTRA_PRED void vp9_build_interintra_predictors(MACROBLOCKD *xd, diff --git a/vp9/common/vp9_reconintra4x4.c b/vp9/common/vp9_reconintra4x4.c index 779422011..5d0bdecb3 100644 --- a/vp9/common/vp9_reconintra4x4.c +++ b/vp9/common/vp9_reconintra4x4.c @@ -147,12 +147,10 @@ B_PREDICTION_MODE vp9_find_dominant_direction(uint8_t *ptr, } #endif -B_PREDICTION_MODE vp9_find_bpred_context(MACROBLOCKD *xd, BLOCKD *x) { - const int block_idx = x - xd->block; +B_PREDICTION_MODE vp9_find_bpred_context(MACROBLOCKD *xd, int block_idx, + uint8_t *ptr, int stride) { const int have_top = (block_idx >> 2) || xd->up_available; const int have_left = (block_idx & 3) || xd->left_available; - uint8_t *ptr = *(x->base_dst) + x->dst; - int stride = x->dst_stride; int tx = have_left ? 4 : 0; int ty = have_top ? 4 : 0; if (!have_left && !have_top) @@ -182,8 +180,8 @@ void vp9_intra4x4_predict(MACROBLOCKD *xd, */ if (have_left) { - uint8_t *left_ptr = *(x->base_dst) + x->dst - 1; - const int stride = x->dst_stride; + uint8_t *left_ptr = predictor - 1; + const int stride = ps; left[0] = left_ptr[0 * stride]; left[1] = left_ptr[1 * stride]; @@ -194,7 +192,7 @@ void vp9_intra4x4_predict(MACROBLOCKD *xd, } if (have_top) { - uint8_t *above_ptr = *(x->base_dst) + x->dst - x->dst_stride; + uint8_t *above_ptr = predictor - ps; top_left = have_left ? above_ptr[-1] : 127; above[0] = above_ptr[0]; @@ -213,10 +211,10 @@ void vp9_intra4x4_predict(MACROBLOCKD *xd, uint8_t *above_right = above_ptr + 4; if (xd->sb_index == 3 && (xd->mb_index & 1)) - above_right -= 32 * x->dst_stride; + above_right -= 32 * ps; if (xd->mb_index == 3) - above_right -= 16 * x->dst_stride; - above_right -= (block_idx & ~3) * x->dst_stride; + above_right -= 16 * ps; + above_right -= (block_idx & ~3) * ps; /* use a more distant above-right (from closest available top-right * corner), but with a "localized DC" (similar'ish to TM-pred): diff --git a/vp9/common/vp9_rtcd_defs.sh b/vp9/common/vp9_rtcd_defs.sh index ec0b2913b..3621dca60 100644 --- a/vp9/common/vp9_rtcd_defs.sh +++ b/vp9/common/vp9_rtcd_defs.sh @@ -98,10 +98,10 @@ specialize vp9_build_intra_predictors_sbuv_s prototype void vp9_intra4x4_predict "struct macroblockd *xd, struct blockd *x, int b_mode, uint8_t *predictor, int pre_stride" specialize vp9_intra4x4_predict; -prototype void vp9_intra8x8_predict "struct macroblockd *xd, struct blockd *x, int b_mode, uint8_t *predictor, int pre_stride" +prototype void vp9_intra8x8_predict "struct macroblockd *xd, int block, int b_mode, uint8_t *predictor, int pre_stride" specialize vp9_intra8x8_predict; -prototype void vp9_intra_uv4x4_predict "struct macroblockd *xd, struct blockd *x, int b_mode, uint8_t *predictor, int pre_stride" +prototype void vp9_intra_uv4x4_predict "struct macroblockd *xd, int block, int b_mode, uint8_t *predictor, int pre_stride" specialize vp9_intra_uv4x4_predict; if [ "$CONFIG_VP9_DECODER" = "yes" ]; then |