Refine mv equal check by using int_mv Use union can check two MVs' equality by one statement, no need to check col and row separately. Change-Id: I94120435bc3f7bb3d3aa595f2c7c75a8c7579d87
diff --git a/av1/encoder/block.h b/av1/encoder/block.h index bbd5734..28cc1b4 100644 --- a/av1/encoder/block.h +++ b/av1/encoder/block.h
@@ -169,7 +169,7 @@ #define MAX_INTERP_FILTER_STATS 64 typedef struct { InterpFilters filters; - MV mv[2]; + int_mv mv[2]; int8_t ref_frames[2]; } INTERPOLATION_FILTER_STATS;
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c index 92a14ca..5af8003 100644 --- a/av1/encoder/rdopt.c +++ b/av1/encoder/rdopt.c
@@ -7438,9 +7438,8 @@ static INLINE int is_interp_filter_match(const INTERPOLATION_FILTER_STATS *st, MB_MODE_INFO *const mi) { for (int i = 0; i < 2; ++i) { - const MV *mv = &mi->mv[i].as_mv; - if ((st->ref_frames[i] != mi->ref_frame[i]) || (st->mv[i].row != mv->row) || - (st->mv[i].col != mv->col)) { + if ((st->ref_frames[i] != mi->ref_frame[i]) || + (st->mv[i].as_int != mi->mv[i].as_int)) { return 0; } } @@ -7466,11 +7465,9 @@ const int comp_idx = mbmi->compound_idx; const int offset = x->interp_filter_stats_idx[comp_idx]; if (offset < MAX_INTERP_FILTER_STATS) { - const MV mv0 = mbmi->mv[0].as_mv; - const MV mv1 = mbmi->mv[1].as_mv; INTERPOLATION_FILTER_STATS stat = { mbmi->interp_filters, - { mv0, mv1 }, + { mbmi->mv[0], mbmi->mv[1] }, { mbmi->ref_frame[0], mbmi->ref_frame[1] }, }; x->interp_filter_stats[comp_idx][offset] = stat;