diff options
author | Ronald S. Bultje <rbultje@google.com> | 2012-04-18 13:51:58 -0700 |
---|---|---|
committer | Ronald S. Bultje <rbultje@google.com> | 2012-04-18 14:05:39 -0700 |
commit | 18433aef17d9c4674de98a329e4e46e5677f846e (patch) | |
tree | d92072b825a7def3e5392dd00cca05feadfeb3b9 /vp8/common/mbpitch.c | |
parent | 1cc406ab4a16549fc3b44c0b20f7e81dfc2b649c (diff) | |
download | libvpx-18433aef17d9c4674de98a329e4e46e5677f846e.tar libvpx-18433aef17d9c4674de98a329e4e46e5677f846e.tar.gz libvpx-18433aef17d9c4674de98a329e4e46e5677f846e.tar.bz2 libvpx-18433aef17d9c4674de98a329e4e46e5677f846e.zip |
Compound prediction for splitmv macroblocks.
Change-Id: I0af3395500b1cb0ed629249eb6636a0c9322cb18
Diffstat (limited to 'vp8/common/mbpitch.c')
-rw-r--r-- | vp8/common/mbpitch.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/vp8/common/mbpitch.c b/vp8/common/mbpitch.c index 054042c0b..b23cbbe2c 100644 --- a/vp8/common/mbpitch.c +++ b/vp8/common/mbpitch.c @@ -22,6 +22,7 @@ static void setup_block BLOCKD *b, int mv_stride, unsigned char **base, + unsigned char **base2, int Stride, int offset, BLOCKSET bs @@ -39,6 +40,7 @@ static void setup_block b->pre_stride = Stride; b->pre = offset; b->base_pre = base; + b->base_second_pre = base2; } } @@ -49,6 +51,7 @@ static void setup_macroblock(MACROBLOCKD *x, BLOCKSET bs) int block; unsigned char **y, **u, **v; + unsigned char **y2, **u2, **v2; if (bs == DEST) { @@ -61,20 +64,24 @@ static void setup_macroblock(MACROBLOCKD *x, BLOCKSET bs) y = &x->pre.y_buffer; u = &x->pre.u_buffer; v = &x->pre.v_buffer; + + y2 = &x->second_pre.y_buffer; + u2 = &x->second_pre.u_buffer; + v2 = &x->second_pre.v_buffer; } for (block = 0; block < 16; block++) /* y blocks */ { - setup_block(&x->block[block], x->dst.y_stride, y, x->dst.y_stride, + setup_block(&x->block[block], x->dst.y_stride, y, y2, x->dst.y_stride, (block >> 2) * 4 * x->dst.y_stride + (block & 3) * 4, bs); } for (block = 16; block < 20; block++) /* U and V blocks */ { - setup_block(&x->block[block], x->dst.uv_stride, u, x->dst.uv_stride, + setup_block(&x->block[block], x->dst.uv_stride, u, u2, x->dst.uv_stride, ((block - 16) >> 1) * 4 * x->dst.uv_stride + (block & 1) * 4, bs); - setup_block(&x->block[block+4], x->dst.uv_stride, v, x->dst.uv_stride, + setup_block(&x->block[block+4], x->dst.uv_stride, v, v2, x->dst.uv_stride, ((block - 16) >> 1) * 4 * x->dst.uv_stride + (block & 1) * 4, bs); } } |