| Index: source/libvpx/vp9/common/vp9_reconinter.c
|
| diff --git a/source/libvpx/vp9/common/vp9_reconinter.c b/source/libvpx/vp9/common/vp9_reconinter.c
|
| index f83f8257aa71ec2ad2e54ab34fd5bd227bd30a73..d8c14ecc818bec4833a90f7bc89ef78c576f61b8 100644
|
| --- a/source/libvpx/vp9/common/vp9_reconinter.c
|
| +++ b/source/libvpx/vp9/common/vp9_reconinter.c
|
| @@ -187,7 +187,19 @@ static void build_inter_predictors(MACROBLOCKD *xd, int plane, int block,
|
| const int is_scaled = vp9_is_scaled(sf);
|
|
|
| if (is_scaled) {
|
| - pre = pre_buf->buf + scaled_buffer_offset(x, y, pre_buf->stride, sf);
|
| + // Co-ordinate of containing block to pixel precision.
|
| + const int x_start = (-xd->mb_to_left_edge >> (3 + pd->subsampling_x));
|
| + const int y_start = (-xd->mb_to_top_edge >> (3 + pd->subsampling_y));
|
| + if (plane == 0)
|
| + pre_buf->buf = xd->block_refs[ref]->buf->y_buffer;
|
| + else if (plane == 1)
|
| + pre_buf->buf = xd->block_refs[ref]->buf->u_buffer;
|
| + else
|
| + pre_buf->buf = xd->block_refs[ref]->buf->v_buffer;
|
| +
|
| + pre_buf->buf += scaled_buffer_offset(x_start + x, y_start + y,
|
| + pre_buf->stride, sf);
|
| + pre = pre_buf->buf;
|
| scaled_mv = vp9_scale_mv(&mv_q4, mi_x + x, mi_y + y, sf);
|
| xs = sf->x_step_q4;
|
| ys = sf->y_step_q4;
|
|
|