From 50f944272cedc7b150963f5e9492f2ba99244634 Mon Sep 17 00:00:00 2001 From: "Ronald S. Bultje" Date: Tue, 8 Sep 2015 14:48:33 -0400 Subject: vp10: do sub8x8 block reconstruction in full subblocks. This means that we don't reconstruct in 4x4 dimensions, but in blocksize dimensions, e.g. 4x8 or 8x4. This may in some cases lead to performance improvements. Also, if we decide to re-introduce scalable coding support, this would fix the fact that you need to re-scale the MV halfway the block in sub8x8 non-4x4 blocks. See issue 1013. Change-Id: If39c890cad20dff96635720d8c75b910cafac495 --- vp10/decoder/decodeframe.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'vp10/decoder/decodeframe.c') diff --git a/vp10/decoder/decodeframe.c b/vp10/decoder/decodeframe.c index d3c04784a..50d50f88e 100644 --- a/vp10/decoder/decodeframe.c +++ b/vp10/decoder/decodeframe.c @@ -707,12 +707,19 @@ static void dec_build_inter_predictors_sb(VP10Decoder *const pbi, const int is_scaled = vp10_is_scaled(sf); if (sb_type < BLOCK_8X8) { + const PARTITION_TYPE bp = BLOCK_8X8 - sb_type; + const int have_vsplit = bp != PARTITION_HORZ; + const int have_hsplit = bp != PARTITION_VERT; + const int num_4x4_w = 2 >> ((!have_vsplit) | pd->subsampling_x); + const int num_4x4_h = 2 >> ((!have_hsplit) | pd->subsampling_y); + const int pw = 8 >> (have_vsplit | pd->subsampling_x); + const int ph = 8 >> (have_hsplit | pd->subsampling_y); int x, y; for (y = 0; y < num_4x4_h; ++y) { for (x = 0; x < num_4x4_w; ++x) { const MV mv = average_split_mvs(pd, mi, ref, y * 2 + x); dec_build_inter_predictors(pbi, xd, plane, n4w_x4, n4h_x4, - 4 * x, 4 * y, 4, 4, mi_x, mi_y, kernel, + 4 * x, 4 * y, pw, ph, mi_x, mi_y, kernel, sf, pre_buf, dst_buf, &mv, ref_frame_buf, is_scaled, ref); } -- cgit v1.2.3