summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--vp9/common/blockd.h2
-rw-r--r--vp9/common/mvref_common.c7
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)