Commit 6fb8953c authored by Paul Wilkins's avatar Paul Wilkins

Restrict ref mv search range.

Experiment to test speed trade off of reducing the
extent of the ref mv search.

Reducing the maximum number of tested candidates to 9 had
minimal net effect on quality in any of the tests sets.

Reduction to 7 has a small negative impact (worst was STD-HD
at about -0.2%).

This change is in response to the apparently high number of
decode cycles reported in regard to mv-ref selection.

Change-Id: I0e92e92e324337689358495a1ec9ccdeb23dc774
parent d01357bb
......@@ -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;
......
......@@ -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)
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment