From: Dmitry Kovalev Date: Thu, 1 Aug 2013 22:06:34 +0000 (-0700) Subject: Cleanup: reusing clamp_mv function. X-Git-Tag: v1.3.0~697^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=422d38bca1ed6d3211baafb3cd7d8d4a3786931e;p=platform%2Fupstream%2Flibvpx.git Cleanup: reusing clamp_mv function. Change-Id: I8715f08a3554bdb557c5f935f1dfbd671f18e766 --- diff --git a/vp9/common/vp9_findnearmv.h b/vp9/common/vp9_findnearmv.h index 543351d..c1f82cc 100644 --- a/vp9/common/vp9_findnearmv.h +++ b/vp9/common/vp9_findnearmv.h @@ -29,12 +29,6 @@ void vp9_find_best_ref_mvs(MACROBLOCKD *xd, int_mv *near); // TODO(jingning): this mv clamping function should be block size dependent. -static void clamp_mv(MV *mv, int min_col, int max_col, - int min_row, int max_row) { - mv->col = clamp(mv->col, min_col, max_col); - mv->row = clamp(mv->row, min_row, max_row); -} - static void clamp_mv2(MV *mv, const MACROBLOCKD *xd) { clamp_mv(mv, xd->mb_to_left_edge - LEFT_TOP_MARGIN, xd->mb_to_right_edge + RIGHT_BOTTOM_MARGIN, diff --git a/vp9/common/vp9_mv.h b/vp9/common/vp9_mv.h index a095258..31a79b9 100644 --- a/vp9/common/vp9_mv.h +++ b/vp9/common/vp9_mv.h @@ -13,6 +13,8 @@ #include "vpx/vpx_integer.h" +#include "vp9/common/vp9_common.h" + typedef struct { int16_t row; int16_t col; @@ -28,4 +30,10 @@ typedef struct { int32_t col; } MV32; +static void clamp_mv(MV *mv, int min_col, int max_col, + int min_row, int max_row) { + mv->col = clamp(mv->col, min_col, max_col); + mv->row = clamp(mv->row, min_row, max_row); +} + #endif // VP9_COMMON_VP9_MV_H_ diff --git a/vp9/common/vp9_mvref_common.c b/vp9/common/vp9_mvref_common.c index 8cf1716..64baac6 100644 --- a/vp9/common/vp9_mvref_common.c +++ b/vp9/common/vp9_mvref_common.c @@ -43,10 +43,10 @@ static const int mv_ref_blocks[BLOCK_SIZE_TYPES][MVREF_NEIGHBOURS][2] = { #define MV_BORDER (16 << 3) // Allow 16 pels in 1/8th pel units static void clamp_mv_ref(const MACROBLOCKD *xd, int_mv *mv) { - mv->as_mv.col = clamp(mv->as_mv.col, xd->mb_to_left_edge - MV_BORDER, - xd->mb_to_right_edge + MV_BORDER); - mv->as_mv.row = clamp(mv->as_mv.row, xd->mb_to_top_edge - MV_BORDER, - xd->mb_to_bottom_edge + MV_BORDER); + clamp_mv(&mv->as_mv, xd->mb_to_left_edge - MV_BORDER, + xd->mb_to_right_edge + MV_BORDER, + xd->mb_to_top_edge - MV_BORDER, + xd->mb_to_bottom_edge + MV_BORDER); } // Gets a candidate reference motion vector from the given mode info diff --git a/vp9/common/vp9_reconinter.c b/vp9/common/vp9_reconinter.c index 8c49393..c039a74 100644 --- a/vp9/common/vp9_reconinter.c +++ b/vp9/common/vp9_reconinter.c @@ -239,24 +239,25 @@ MV clamp_mv_to_umv_border_sb(const MV *src_mv, int bwl, int bhl, int ss_x, int ss_y, int mb_to_left_edge, int mb_to_top_edge, int mb_to_right_edge, int mb_to_bottom_edge) { - /* If the MV points so far into the UMV border that no visible pixels - * are used for reconstruction, the subpel part of the MV can be - * discarded and the MV limited to 16 pixels with equivalent results. - */ + // If the MV points so far into the UMV border that no visible pixels + // are used for reconstruction, the subpel part of the MV can be + // discarded and the MV limited to 16 pixels with equivalent results. const int spel_left = (VP9_INTERP_EXTEND + (4 << bwl)) << 4; const int spel_right = spel_left - (1 << 4); const int spel_top = (VP9_INTERP_EXTEND + (4 << bhl)) << 4; const int spel_bottom = spel_top - (1 << 4); - MV clamped_mv; - + MV clamped_mv = { + src_mv->row << (1 - ss_y), + src_mv->col << (1 - ss_x) + }; assert(ss_x <= 1); assert(ss_y <= 1); - clamped_mv.col = clamp(src_mv->col << (1 - ss_x), - (mb_to_left_edge << (1 - ss_x)) - spel_left, - (mb_to_right_edge << (1 - ss_x)) + spel_right); - clamped_mv.row = clamp(src_mv->row << (1 - ss_y), - (mb_to_top_edge << (1 - ss_y)) - spel_top, - (mb_to_bottom_edge << (1 - ss_y)) + spel_bottom); + + clamp_mv(&clamped_mv, (mb_to_left_edge << (1 - ss_x)) - spel_left, + (mb_to_right_edge << (1 - ss_x)) + spel_right, + (mb_to_top_edge << (1 - ss_y)) - spel_top, + (mb_to_bottom_edge << (1 - ss_y)) + spel_bottom); + return clamped_mv; }