shithub: libvpx

Download patch

ref: 549258b1c22036d273b45c8cf139c0edcdefd019
parent: 7f99844e919065ed1380e012234c139ffdefd482
parent: 75459d65dfba690d6ded22219549ae1a528ca60c
author: Ronald S. Bultje <rbultje@google.com>
date: Mon Jun 10 05:22:49 EDT 2013

Merge "border mvref issue" into experimental

--- a/vp9/common/vp9_mvref_common.c
+++ b/vp9/common/vp9_mvref_common.c
@@ -152,6 +152,7 @@
   int split_count = 0;
   int (*mv_ref_search)[2];
   const int mi_col = get_mi_col(xd);
+  const int mi_row = get_mi_row(xd);
   int intra_count = 0;
   int zero_count = 0;
   int newmv_count = 0;
@@ -171,10 +172,10 @@
   // Look at nearest neigbours
   for (i = 0; i < 2; ++i) {
     const int mi_search_col = mi_col + mv_ref_search[i][0];
+    const int mi_search_row = mi_row + mv_ref_search[i][1];
     if ((mi_search_col >= cm->cur_tile_mi_col_start) &&
         (mi_search_col < cm->cur_tile_mi_col_end) &&
-        ((mv_ref_search[i][1] << 6) >= xd->mb_to_top_edge) &&
-        ((-mv_ref_search[i][1] << 6) <= xd->mb_to_bottom_edge)) {
+        (mi_search_row >= 0) && (mi_search_row < cm->mi_rows)) {
       int b;
 
       candidate_mi = here + mv_ref_search[i][0] +
@@ -206,11 +207,10 @@
   for (i = 2; (i < MVREF_NEIGHBOURS) &&
               (refmv_count < MAX_MV_REF_CANDIDATES); ++i) {
     const int mi_search_col = mi_col + mv_ref_search[i][0];
-
+    const int mi_search_row = mi_row + mv_ref_search[i][1];
     if ((mi_search_col >= cm->cur_tile_mi_col_start) &&
         (mi_search_col < cm->cur_tile_mi_col_end) &&
-        ((mv_ref_search[i][1] << 6) >= xd->mb_to_top_edge) &&
-        ((-mv_ref_search[i][1] << 6) <= xd->mb_to_bottom_edge)) {
+        (mi_search_row >= 0) && (mi_search_row < cm->mi_rows)) {
       candidate_mi = here + mv_ref_search[i][0] +
                      (mv_ref_search[i][1] * xd->mode_info_stride);
 
@@ -237,11 +237,10 @@
   for (i = 0; (i < MVREF_NEIGHBOURS) &&
               (refmv_count < MAX_MV_REF_CANDIDATES); ++i) {
     const int mi_search_col = mi_col + mv_ref_search[i][0];
-
+    const int mi_search_row = mi_row + mv_ref_search[i][1];
     if ((mi_search_col >= cm->cur_tile_mi_col_start) &&
         (mi_search_col < cm->cur_tile_mi_col_end) &&
-        ((mv_ref_search[i][1] << 6) >= xd->mb_to_top_edge) &&
-        ((-mv_ref_search[i][1] << 6) <= xd->mb_to_bottom_edge)) {
+        (mi_search_row >= 0) && (mi_search_row < cm->mi_rows)) {
       candidate_mi = here + mv_ref_search[i][0] +
                      (mv_ref_search[i][1] * xd->mode_info_stride);