vp10: allow MV refs to point outside visible image.
authorRonald S. Bultje <rsbultje@gmail.com>
Fri, 2 Oct 2015 16:09:24 +0000 (12:09 -0400)
committerRonald S. Bultje <rsbultje@gmail.com>
Fri, 16 Oct 2015 23:30:38 +0000 (19:30 -0400)
commitdea998997f46a3a15e07284452bd1d7407912bb4
treed28ffb0ec5361d257966a0f8a21bc9d8e8dd6d61
parent1eb51a2010c95845d340ac7dafe311e4c1716d66
vp10: allow MV refs to point outside visible image.

In VP9, the ref MV had to point to a block that itself fully resided
within the visible image, i.e. all borders of the image had to be
within the visible borders of the coded frame. This is somewhat
illogical, and had obscure side effects, e.g. clamping of fairly
reasonable motion vectors such as 0,0 were clipped to negative values
if the block was overhanging on frame edges (such as the last rows
on 1080p content), which makes no sense whatsoever.

Instead, relax clamping constraints such that the ref MVs are allowed
to point to blocks exactly outside the visible edges in both Y as well
as UV planes, including the 8tap filter edges (that's why the offset is
8 pixels + block size).

See issue 1037.

Change-Id: I2683eb2a18b24955e4dcce36c2940aa2ba3a1061
vp10/common/mvref_common.c
vp10/common/mvref_common.h