summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRonald S. Bultje <rbultje@google.com>2012-11-12 07:22:22 -0800
committerGerrit Code Review <gerrit@gerrit.golo.chromium.org>2012-11-12 07:22:22 -0800
commit11fec1863d7e9f0e864238dcc5b755edf29d10d0 (patch)
tree4cd4ee421823d520172848b3078dc0b12b463ab7
parent6fb8953c190430bbc324b57efa0297f6a612d7c7 (diff)
parent73987d140a961c6644261491bec023b5e3b074c1 (diff)
downloadlibvpx-11fec1863d7e9f0e864238dcc5b755edf29d10d0.tar
libvpx-11fec1863d7e9f0e864238dcc5b755edf29d10d0.tar.gz
libvpx-11fec1863d7e9f0e864238dcc5b755edf29d10d0.tar.bz2
libvpx-11fec1863d7e9f0e864238dcc5b755edf29d10d0.zip
Merge "Remove 'thismb' data pointer when superblock experiment is on." into experimental
-rw-r--r--vp9/encoder/block.h2
-rw-r--r--vp9/encoder/encodeframe.c21
-rw-r--r--vp9/encoder/firstpass.c2
3 files changed, 25 insertions, 0 deletions
diff --git a/vp9/encoder/block.h b/vp9/encoder/block.h
index 7c0099368..9f4d060cc 100644
--- a/vp9/encoder/block.h
+++ b/vp9/encoder/block.h
@@ -86,9 +86,11 @@ typedef struct {
typedef struct macroblock {
DECLARE_ALIGNED(16, short, src_diff[400]); // 16x16 Y 8x8 U 8x8 V 4x4 2nd Y
DECLARE_ALIGNED(16, short, coeff[400]); // 16x16 Y 8x8 U 8x8 V 4x4 2nd Y
+#if !CONFIG_SUPERBLOCKS
DECLARE_ALIGNED(16, unsigned char, thismb[256]); // 16x16 Y
unsigned char *thismb_ptr;
+#endif
// 16 Y blocks, 4 U blocks, 4 V blocks,
// 1 DC 2nd order block each with 16 entries
BLOCK block[25];
diff --git a/vp9/encoder/encodeframe.c b/vp9/encoder/encodeframe.c
index 12e517a36..18ab2f0c1 100644
--- a/vp9/encoder/encodeframe.c
+++ b/vp9/encoder/encodeframe.c
@@ -294,8 +294,10 @@ static void build_activity_map(VP9_COMP *cpi) {
xd->left_available = (mb_col != 0);
recon_yoffset += 16;
#endif
+#if !CONFIG_SUPERBLOCKS
// Copy current mb to a buffer
vp9_copy_mem16x16(x->src.y_buffer, x->src.y_stride, x->thismb, 16);
+#endif
// measure activity
mb_activity = mb_activity_measure(cpi, x, mb_row, mb_col);
@@ -575,8 +577,10 @@ static void pick_mb_modes(VP9_COMP *cpi,
xd->dst.u_buffer = cm->yv12_fb[dst_fb_idx].u_buffer + recon_uvoffset;
xd->dst.v_buffer = cm->yv12_fb[dst_fb_idx].v_buffer + recon_uvoffset;
+#if !CONFIG_SUPERBLOCKS
// Copy current MB to a work buffer
vp9_copy_mem16x16(x->src.y_buffer, x->src.y_stride, x->thismb, 16);
+#endif
x->rddiv = cpi->RDDIV;
x->rdmult = cpi->RDMULT;
@@ -953,8 +957,10 @@ static void encode_sb(VP9_COMP *cpi,
xd->dst.u_buffer = cm->yv12_fb[dst_fb_idx].u_buffer + recon_uvoffset;
xd->dst.v_buffer = cm->yv12_fb[dst_fb_idx].v_buffer + recon_uvoffset;
+#if !CONFIG_SUPERBLOCKS
// Copy current MB to a work buffer
vp9_copy_mem16x16(x->src.y_buffer, x->src.y_stride, x->thismb, 16);
+#endif
if (cpi->oxcf.tuning == VP8_TUNE_SSIM)
vp9_activity_masking(cpi, x);
@@ -1694,6 +1700,7 @@ void vp9_build_block_offsets(MACROBLOCK *x) {
vp9_build_block_doffsets(&x->e_mbd);
+#if !CONFIG_SUPERBLOCKS
// y blocks
x->thismb_ptr = &x->thismb[0];
for (br = 0; br < 4; br++) {
@@ -1708,6 +1715,20 @@ void vp9_build_block_offsets(MACROBLOCK *x) {
++block;
}
}
+#else
+ for (br = 0; br < 4; br++) {
+ for (bc = 0; bc < 4; bc++) {
+ BLOCK *this_block = &x->block[block];
+ // this_block->base_src = &x->src.y_buffer;
+ // this_block->src_stride = x->src.y_stride;
+ // this_block->src = 4 * br * this_block->src_stride + 4 * bc;
+ this_block->base_src = &x->src.y_buffer;
+ this_block->src_stride = x->src.y_stride;
+ this_block->src = 4 * br * this_block->src_stride + 4 * bc;
+ ++block;
+ }
+ }
+#endif
// u blocks
for (br = 0; br < 2; br++) {
diff --git a/vp9/encoder/firstpass.c b/vp9/encoder/firstpass.c
index efc9fb3e8..db7c4d771 100644
--- a/vp9/encoder/firstpass.c
+++ b/vp9/encoder/firstpass.c
@@ -521,8 +521,10 @@ void vp9_first_pass(VP9_COMP *cpi) {
xd->dst.v_buffer = new_yv12->v_buffer + recon_uvoffset;
xd->left_available = (mb_col != 0);
+#if !CONFIG_SUPERBLOCKS
// Copy current mb to a buffer
vp9_copy_mem16x16(x->src.y_buffer, x->src.y_stride, x->thismb, 16);
+#endif
// do intra 16x16 prediction
this_error = vp9_encode_intra(cpi, x, use_dc_pred);