summaryrefslogtreecommitdiff
path: root/vp9/common
diff options
context:
space:
mode:
authorJohn Koleszar <jkoleszar@google.com>2013-04-25 11:15:38 -0700
committerJohn Koleszar <jkoleszar@google.com>2013-04-26 10:14:07 -0700
commit4f55c5618afb8ef860744c870ac4e33b5583be22 (patch)
tree55680d6ef63cc26d2873662b46784f871e51533b /vp9/common
parent4b27eb1f186d9bd2d218c0140b41484df8d38fd1 (diff)
downloadlibvpx-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.h7
-rw-r--r--vp9/common/vp9_mbpitch.c50
-rw-r--r--vp9/common/vp9_reconintra.c20
-rw-r--r--vp9/common/vp9_reconintra.h3
-rw-r--r--vp9/common/vp9_reconintra4x4.c18
-rw-r--r--vp9/common/vp9_rtcd_defs.sh4
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