Index: source/libvpx/vp9/common/vp9_mvref_common.h |
=================================================================== |
--- source/libvpx/vp9/common/vp9_mvref_common.h (revision 293081) |
+++ source/libvpx/vp9/common/vp9_mvref_common.h (working copy) |
@@ -158,29 +158,32 @@ |
// This macro is used to add a motion vector mv_ref list if it isn't |
// already in the list. If it's the second motion vector it will also |
// skip all additional processing and jump to done! |
-#define ADD_MV_REF_LIST(mv) \ |
+#define ADD_MV_REF_LIST(mv, refmv_count, mv_ref_list, Done) \ |
do { \ |
if (refmv_count) { \ |
- if ((mv).as_int != mv_ref_list[0].as_int) { \ |
- mv_ref_list[refmv_count] = (mv); \ |
+ if ((mv).as_int != (mv_ref_list)[0].as_int) { \ |
+ (mv_ref_list)[(refmv_count)] = (mv); \ |
goto Done; \ |
} \ |
} else { \ |
- mv_ref_list[refmv_count++] = (mv); \ |
+ (mv_ref_list)[(refmv_count)++] = (mv); \ |
} \ |
} while (0) |
// If either reference frame is different, not INTRA, and they |
// are different from each other scale and add the mv to our list. |
-#define IF_DIFF_REF_FRAME_ADD_MV(mbmi) \ |
+#define IF_DIFF_REF_FRAME_ADD_MV(mbmi, ref_frame, ref_sign_bias, refmv_count, \ |
+ mv_ref_list, Done) \ |
do { \ |
if (is_inter_block(mbmi)) { \ |
if ((mbmi)->ref_frame[0] != ref_frame) \ |
- ADD_MV_REF_LIST(scale_mv((mbmi), 0, ref_frame, ref_sign_bias)); \ |
+ ADD_MV_REF_LIST(scale_mv((mbmi), 0, ref_frame, ref_sign_bias), \ |
+ refmv_count, mv_ref_list, Done); \ |
if (has_second_ref(mbmi) && \ |
(mbmi)->ref_frame[1] != ref_frame && \ |
(mbmi)->mv[1].as_int != (mbmi)->mv[0].as_int) \ |
- ADD_MV_REF_LIST(scale_mv((mbmi), 1, ref_frame, ref_sign_bias)); \ |
+ ADD_MV_REF_LIST(scale_mv((mbmi), 1, ref_frame, ref_sign_bias), \ |
+ refmv_count, mv_ref_list, Done); \ |
} \ |
} while (0) |