summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYaowu Xu <yaowu@google.com>2012-10-15 14:30:15 -0700
committerYaowu Xu <yaowu@google.com>2012-10-15 14:51:14 -0700
commitb2f4257c391d5112eb14381d32161f7fb287a237 (patch)
tree4ec18233d213a245b207c9a2dae0a99bfc661bdb
parentf9d5f86643244d8f1f9f64187098baa1a08b6d18 (diff)
downloadlibvpx-b2f4257c391d5112eb14381d32161f7fb287a237.tar
libvpx-b2f4257c391d5112eb14381d32161f7fb287a237.tar.gz
libvpx-b2f4257c391d5112eb14381d32161f7fb287a237.tar.bz2
libvpx-b2f4257c391d5112eb14381d32161f7fb287a237.zip
Changed to use real pixels only for evaluating MVs
The commit changed to avoid using pixels from extended border in in evaluating and select best reference motion vector. Change-Id: I39b758889373e42ed2889d59744388e5b9c1a20a
-rw-r--r--vp8/common/findnearmv.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/vp8/common/findnearmv.c b/vp8/common/findnearmv.c
index 235ca46ce..285aabdb6 100644
--- a/vp8/common/findnearmv.c
+++ b/vp8/common/findnearmv.c
@@ -217,7 +217,7 @@ void vp8_find_best_ref_mvs(MACROBLOCKD *xd,
unsigned char *above_ref;
unsigned char *left_ref;
int sad;
- int sad_scores[MAX_MV_REFS];
+ int sad_scores[MAX_MV_REFS] = {0};
int_mv sorted_mvs[MAX_MV_REFS];
int zero_seen = FALSE;
@@ -259,12 +259,13 @@ void vp8_find_best_ref_mvs(MACROBLOCKD *xd,
((this_mv.as_mv.col + 3) >> 3):((this_mv.as_mv.col + 4) >> 3);
offset = ref_y_stride * row_offset + col_offset;
- sad = vp8_sad16x3_c(above_src, xd->dst.y_stride,
- above_ref + offset, ref_y_stride, INT_MAX);
-
- sad += vp8_sad3x16_c(left_src, xd->dst.y_stride,
- left_ref + offset, ref_y_stride, INT_MAX);
-
+ sad = 0;
+ if (xd->up_available)
+ sad += vp8_sad16x3_c(above_src, xd->dst.y_stride,
+ above_ref + offset, ref_y_stride, INT_MAX);
+ if (xd->left_available)
+ sad += vp8_sad3x16_c(left_src, xd->dst.y_stride,
+ left_ref + offset, ref_y_stride, INT_MAX);
// Add the entry to our list and then resort the list on score.
sad_scores[i] = sad;
sorted_mvs[i].as_int = this_mv.as_int;