• John Koleszar's avatar
    make buid_inter_predictors block size agnostic (luma) · 4924934d
    John Koleszar authored
    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
    4924934d
vp9_blockd.h 28.6 KB