make buid_inter_predictors block size agnostic (luma)
authorJohn Koleszar <jkoleszar@google.com>
Sat, 13 Apr 2013 00:19:57 +0000 (17:19 -0700)
committerJohn Koleszar <jkoleszar@google.com>
Fri, 19 Apr 2013 00:42:55 +0000 (17:42 -0700)
commit4924934d2bf860a13ebd8b3f28fe78ea7d9ccb25
tree851648cb8cf0d45bdcc38fe23f443d2baee9dcf0
parentb27edc67d2122bf4c0b56295bdedc18d634ecb68
make buid_inter_predictors block size agnostic (luma)

This commit converts the luma versions of vp9_build_inter_predictors_sb
to use a common function. Update the convolution functions to support
block sizes larger than 16x16, and add a foreach_predicted_block walker.

Next step will be to calculate the UV motion vector and implement SBUV,
then fold in vp9_build_inter16x16_predictors_mb and SPLITMV.

At the 16x16, 32x32, and 64x64 levels implemented in this commit, each
plane is predicted with only a single call to vp9_build_inter_predictor.
This is not yet called for SPLITMV. If the notion of SPLITMV/I8X8/I4X4
goes away, then the prediction block walker can go away, since we'll
always predict the whole bsize in a single step. Implemented using a
block walker at this stage for SPLITMV, as a 4x4 "prediction block size"
within the BLOCK_SIZE_MB16X16 macroblock. It would also support other
rectangular sizes too, if the blocks smaller than 16x16 remain
implemented as a SPLITMV-like thing. Just using 4x4 for now.

There's also a potential to combine with the foreach_transformed_block
walker if the logic for calculating the size of the subsampled
transform is made more straightforward, perhaps as a consequence of
supporing smaller macroblocks than 16x16. Will watch what happens there.

Change-Id: Iddd9973398542216601b630c628b9b7fdee33fe2
vp9/common/vp9_blockd.h
vp9/common/vp9_reconinter.c
vp9/common/vp9_reconinter.h
vp9/encoder/vp9_firstpass.c