summaryrefslogtreecommitdiff
path: root/vp8/common/findnearmv.c
diff options
context:
space:
mode:
authorYaowu Xu <yaowu@google.com>2012-09-14 08:58:02 -0700
committerYaowu Xu <yaowu@google.com>2012-09-14 09:47:43 -0700
commit6d8538e508af89b2704181bdbb8a823743c814ad (patch)
tree2a25ba6be7b233fd4480e40a775ffaffbf70d24a /vp8/common/findnearmv.c
parente1210c6aeddbe7a042a52311050b0397c473f89e (diff)
downloadlibvpx-6d8538e508af89b2704181bdbb8a823743c814ad.tar
libvpx-6d8538e508af89b2704181bdbb8a823743c814ad.tar.gz
libvpx-6d8538e508af89b2704181bdbb8a823743c814ad.tar.bz2
libvpx-6d8538e508af89b2704181bdbb8a823743c814ad.zip
Use 3 rows and cols of pixels for ref_mv scoring
The commit changed to use 3 rows above and 3 cols from left for SAD scoring for selecting the best reference motion vector. The change helped std-hd set by >.2% on psnr/ssim metrics. Change-Id: Ifad3b528d0b4b6e3c22518af789d76eff23c1520
Diffstat (limited to 'vp8/common/findnearmv.c')
-rw-r--r--vp8/common/findnearmv.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/vp8/common/findnearmv.c b/vp8/common/findnearmv.c
index 43eb6bf4d..235ca46ce 100644
--- a/vp8/common/findnearmv.c
+++ b/vp8/common/findnearmv.c
@@ -225,10 +225,10 @@ void vp8_find_best_ref_mvs(MACROBLOCKD *xd,
best_mv->as_int = nearest->as_int = near->as_int = 0;
vpx_memset(sorted_mvs, 0, sizeof(sorted_mvs));
- above_src = xd->dst.y_buffer - xd->dst.y_stride * 2;
- left_src = xd->dst.y_buffer - 2;
- above_ref = ref_y_buffer - ref_y_stride * 2;
- left_ref = ref_y_buffer - 2;
+ above_src = xd->dst.y_buffer - xd->dst.y_stride * 3;
+ left_src = xd->dst.y_buffer - 3;
+ above_ref = ref_y_buffer - ref_y_stride * 3;
+ left_ref = ref_y_buffer - 3;
//for(i = 0; i < MAX_MV_REFS; ++i) {
// Limit search to the predicted best 4
@@ -259,10 +259,10 @@ 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_sad16x2_c(above_src, xd->dst.y_stride,
+ sad = vp8_sad16x3_c(above_src, xd->dst.y_stride,
above_ref + offset, ref_y_stride, INT_MAX);
- sad += vp8_sad2x16_c(left_src, xd->dst.y_stride,
+ 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.
@@ -281,7 +281,6 @@ void vp8_find_best_ref_mvs(MACROBLOCKD *xd,
}
}
-
// Set the best mv to the first entry in the sorted list
best_mv->as_int = sorted_mvs[0].as_int;