From 9ed2d0a5779cedfd36bc588c526f377ac829b730 Mon Sep 17 00:00:00 2001 From: Yunqing Wang Date: Tue, 29 Oct 2013 10:40:13 -0700 Subject: [PATCH] Fix x_offset_q4/y_offset_q4 calculation "<< SUBPEL_BITS" needs to be added in the calculation. Call set_scaled_offsets() to calculate x_offset_q4 and y_offset_q4. Change-Id: Ied130ea771510e918f51cd1dc3abe57f4c0962b5 --- vp9/common/vp9_reconinter.c | 9 ++++----- vp9/encoder/vp9_rdopt.c | 8 ++------ 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/vp9/common/vp9_reconinter.c b/vp9/common/vp9_reconinter.c index 53b90035f..1c96788db 100644 --- a/vp9/common/vp9_reconinter.c +++ b/vp9/common/vp9_reconinter.c @@ -161,13 +161,12 @@ static void build_inter_predictors(int plane, int block, BLOCK_SIZE bsize, // scaling case. It needs to be done on the scaled MV, not the pre-scaling // MV. Note however that it performs the subsampling aware scaling so // that the result is always q4. - const MV res_mv = clamp_mv_to_umv_border_sb(xd, &mv, bw, bh, - pd->subsampling_x, - pd->subsampling_y); + // mv_precision precision is MV_PRECISION_Q4. + const MV mv_q4 = clamp_mv_to_umv_border_sb(xd, &mv, bw, bh, + pd->subsampling_x, + pd->subsampling_y); uint8_t *pre; - // mv_precision precision is MV_PRECISION_Q4. - const MV mv_q4 = {res_mv.row, res_mv.col }; MV32 scaled_mv; int xs, ys; diff --git a/vp9/encoder/vp9_rdopt.c b/vp9/encoder/vp9_rdopt.c index d25112b30..eb3abe3f2 100644 --- a/vp9/encoder/vp9_rdopt.c +++ b/vp9/encoder/vp9_rdopt.c @@ -2268,12 +2268,8 @@ static void setup_buffer_inter(VP9_COMP *cpi, MACROBLOCK *x, // set up scaling factors scale[frame_type] = cpi->common.active_ref_scale[frame_type - 1]; - scale[frame_type].x_offset_q4 = - ROUND_POWER_OF_TWO(mi_col * MI_SIZE * scale[frame_type].sfc->x_scale_fp, - REF_SCALE_SHIFT) & 0xf; - scale[frame_type].y_offset_q4 = - ROUND_POWER_OF_TWO(mi_row * MI_SIZE * scale[frame_type].sfc->y_scale_fp, - REF_SCALE_SHIFT) & 0xf; + scale[frame_type].sfc->set_scaled_offsets(&scale[frame_type], + mi_row * MI_SIZE, mi_col * MI_SIZE); // TODO(jkoleszar): Is the UV buffer ever used here? If so, need to make this // use the UV scaling factors. -- 2.40.0