diff --git a/vp9/common/vp9_reconinter.c b/vp9/common/vp9_reconinter.c index 7cd0a86c3..1975e2e76 100644 --- a/vp9/common/vp9_reconinter.c +++ b/vp9/common/vp9_reconinter.c @@ -257,8 +257,7 @@ void vp9_setup_scale_factors(VP9_COMMON *cm, int i) { fb->y_crop_width, fb->y_crop_height, cm->width, cm->height); - if (sf->x_scale_fp != VP9_REF_NO_SCALE || - sf->y_scale_fp != VP9_REF_NO_SCALE) + if (vp9_is_scaled(sf)) vp9_extend_frame_borders(fb, cm->subsampling_x, cm->subsampling_y); } } diff --git a/vp9/common/vp9_scale.h b/vp9/common/vp9_scale.h index 21a46dd2f..e3fcae1fc 100644 --- a/vp9/common/vp9_scale.h +++ b/vp9/common/vp9_scale.h @@ -40,4 +40,9 @@ void vp9_setup_scale_factors_for_frame(struct VP9Common *cm, int other_w, int other_h, int this_w, int this_h); +static int vp9_is_scaled(const struct scale_factors *sf) { + return sf->x_scale_fp != VP9_REF_NO_SCALE || + sf->y_scale_fp != VP9_REF_NO_SCALE; +} + #endif // VP9_COMMON_VP9_SCALE_H_ diff --git a/vp9/encoder/vp9_rdopt.c b/vp9/encoder/vp9_rdopt.c index 5fae2d4aa..d3d0afe73 100644 --- a/vp9/encoder/vp9_rdopt.c +++ b/vp9/encoder/vp9_rdopt.c @@ -2285,8 +2285,7 @@ static void setup_buffer_inter(VP9_COMP *cpi, MACROBLOCK *x, // Further refinement that is encode side only to test the top few candidates // in full and choose the best as the centre point for subsequent searches. // The current implementation doesn't support scaling. - if (scale[frame_type].x_scale_fp == VP9_REF_NO_SCALE && - scale[frame_type].y_scale_fp == VP9_REF_NO_SCALE) + if (!vp9_is_scaled(&scale[frame_type])) mv_pred(cpi, x, yv12_mb[frame_type][0].buf, yv12->y_stride, frame_type, block_size); } @@ -3272,14 +3271,12 @@ int64_t vp9_rd_pick_inter_mode_sb(VP9_COMP *cpi, MACROBLOCK *x, // TODO(jingning, jkoleszar): scaling reference frame not supported for // SPLITMV. if (ref_frame > 0 && - (scale_factor[ref_frame].x_scale_fp != VP9_REF_NO_SCALE || - scale_factor[ref_frame].y_scale_fp != VP9_REF_NO_SCALE) && + vp9_is_scaled(&scale_factor[ref_frame]) && this_mode == SPLITMV) continue; if (second_ref_frame > 0 && - (scale_factor[second_ref_frame].x_scale_fp != VP9_REF_NO_SCALE || - scale_factor[second_ref_frame].y_scale_fp != VP9_REF_NO_SCALE) && + vp9_is_scaled(&scale_factor[second_ref_frame]) && this_mode == SPLITMV) continue;