diff --git a/vp9/common/vp9_blockd.h b/vp9/common/vp9_blockd.h index 121947b7e4a5efbab021451541552e98a43633b9..7b147b424cb14076b0260bfe656ded2a8b9bd7e4 100644 --- a/vp9/common/vp9_blockd.h +++ b/vp9/common/vp9_blockd.h @@ -286,16 +286,6 @@ static BLOCK_SIZE get_plane_block_size(BLOCK_SIZE bsize, return bs; } -static INLINE int plane_block_width(BLOCK_SIZE bsize, - const struct macroblockd_plane* plane) { - return 4 << (b_width_log2(bsize) - plane->subsampling_x); -} - -static INLINE int plane_block_height(BLOCK_SIZE bsize, - const struct macroblockd_plane* plane) { - return 4 << (b_height_log2(bsize) - plane->subsampling_y); -} - typedef void (*foreach_transformed_block_visitor)(int plane, int block, BLOCK_SIZE plane_bsize, TX_SIZE tx_size, diff --git a/vp9/common/vp9_reconinter.c b/vp9/common/vp9_reconinter.c index 3add81b99ee306a3e16648705187e19656201e25..aa17b85c8a562387cdf1132eb62ce77b408a96bc 100644 --- a/vp9/common/vp9_reconinter.c +++ b/vp9/common/vp9_reconinter.c @@ -106,9 +106,10 @@ static void build_inter_predictors(MACROBLOCKD *xd, int plane, int block, BLOCK_SIZE bsize, int pred_w, int pred_h, int mi_x, int mi_y) { struct macroblockd_plane *const pd = &xd->plane[plane]; - const int bwl = b_width_log2(bsize) - pd->subsampling_x; + const BLOCK_SIZE plane_bsize = get_plane_block_size(bsize, pd); + const int bwl = b_width_log2(plane_bsize); const int bw = 4 << bwl; - const int bh = plane_block_height(bsize, pd); + const int bh = 4 * num_4x4_blocks_high_lookup[plane_bsize]; const int x = 4 * (block & ((1 << bwl) - 1)); const int y = 4 * (block >> bwl); const MODE_INFO *mi = xd->mi_8x8[0]; diff --git a/vp9/encoder/vp9_encodemb.c b/vp9/encoder/vp9_encodemb.c index 0e1523b84270284fcf9741fbcf352e0e0c319d63..beaac247e827dc721a17e8d76f4c97197f22624e 100644 --- a/vp9/encoder/vp9_encodemb.c +++ b/vp9/encoder/vp9_encodemb.c @@ -63,13 +63,12 @@ void vp9_subtract_block_c(int rows, int cols, static void subtract_plane(MACROBLOCK *x, BLOCK_SIZE bsize, int plane) { struct macroblock_plane *const p = &x->plane[plane]; - const MACROBLOCKD *const xd = &x->e_mbd; - const struct macroblockd_plane *const pd = &xd->plane[plane]; - const int bw = plane_block_width(bsize, pd); - const int bh = plane_block_height(bsize, pd); + const struct macroblockd_plane *const pd = &x->e_mbd.plane[plane]; + const BLOCK_SIZE plane_bsize = get_plane_block_size(bsize, pd); + const int bw = 4 * num_4x4_blocks_wide_lookup[plane_bsize]; + const int bh = 4 * num_4x4_blocks_high_lookup[plane_bsize]; - vp9_subtract_block(bh, bw, p->src_diff, bw, - p->src.buf, p->src.stride, + vp9_subtract_block(bh, bw, p->src_diff, bw, p->src.buf, p->src.stride, pd->dst.buf, pd->dst.stride); } diff --git a/vp9/encoder/vp9_rdopt.c b/vp9/encoder/vp9_rdopt.c index 5d37f83933d1ed3012402475884b233c29e732b0..3dd99157ba19c5d3724346e464b43bee85733626 100644 --- a/vp9/encoder/vp9_rdopt.c +++ b/vp9/encoder/vp9_rdopt.c @@ -1549,9 +1549,9 @@ static int64_t encode_inter_mb_segment(VP9_COMP *cpi, struct macroblockd_plane *const pd = &xd->plane[0]; struct macroblock_plane *const p = &x->plane[0]; MODE_INFO *const mi = xd->mi_8x8[0]; - const BLOCK_SIZE bsize = mi->mbmi.sb_type; - const int width = plane_block_width(bsize, pd); - const int height = plane_block_height(bsize, pd); + const BLOCK_SIZE plane_bsize = get_plane_block_size(mi->mbmi.sb_type, pd); + const int width = 4 * num_4x4_blocks_wide_lookup[plane_bsize]; + const int height = 4 * num_4x4_blocks_high_lookup[plane_bsize]; int idx, idy; const uint8_t *const src = &p->src.buf[raster_block_offset(BLOCK_8X8, i,