diff options
-rw-r--r-- | vp9/common/blockd.h | 2 | ||||
-rw-r--r-- | vp9/common/mvref_common.c | 7 |
2 files changed, 7 insertions, 2 deletions
diff --git a/vp9/common/blockd.h b/vp9/common/blockd.h index 862335483..300c01f96 100644 --- a/vp9/common/blockd.h +++ b/vp9/common/blockd.h @@ -44,7 +44,7 @@ void vpx_log(const char *format, ...); /* Segment Feature Masks */ #define SEGMENT_DELTADATA 0 #define SEGMENT_ABSDATA 1 -#define MAX_MV_REFS 19 +#define MAX_MV_REFS 9 typedef struct { int r, c; diff --git a/vp9/common/mvref_common.c b/vp9/common/mvref_common.c index d6faa138d..67f2fb0fb 100644 --- a/vp9/common/mvref_common.c +++ b/vp9/common/mvref_common.c @@ -290,7 +290,7 @@ void vp9_find_mv_refs( // Populate a list with candidate reference vectors from the // spatial neighbours. - for (i = 2; i < MVREF_NEIGHBOURS; ++i) { + for (i = 2; (i < MVREF_NEIGHBOURS) && (index < (MAX_MV_REFS - 2)); ++i) { if (((mv_ref_search[i][0] << 7) >= xd->mb_to_left_edge) && ((mv_ref_search[i][1] << 7) >= xd->mb_to_top_edge)) { @@ -323,6 +323,11 @@ void vp9_find_mv_refs( } } + // Make sure we are able to add 0,0 + if (index > (MAX_MV_REFS - 1)) { + index = (MAX_MV_REFS - 1); + } + // 0,0 is always a valid reference. for (i = 0; i < index; ++i) if (candidate_mvs[i].as_int == 0) |