]> granicus.if.org Git - libvpx/commitdiff
border mvref issue
authorJim Bankoski <jimbankoski@google.com>
Mon, 10 Jun 2013 16:21:11 +0000 (09:21 -0700)
committerJim Bankoski <jimbankoski@google.com>
Mon, 10 Jun 2013 16:21:11 +0000 (09:21 -0700)
Fixes mvref issue.

Change-Id: I07dc1b0682845bc18fe0efa6af5e4f4da3abfa3a

vp9/common/vp9_mvref_common.c

index 4878cbef67275d6dc3fd9cc3d3dc1fb525d59aed..78fb2f022d6716574d92b05749f70001ecc05a12 100644 (file)
@@ -152,6 +152,7 @@ void vp9_find_mv_refs_idx(VP9_COMMON *cm, MACROBLOCKD *xd, MODE_INFO *here,
   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 @@ void vp9_find_mv_refs_idx(VP9_COMMON *cm, MACROBLOCKD *xd, MODE_INFO *here,
   // 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 @@ void vp9_find_mv_refs_idx(VP9_COMMON *cm, MACROBLOCKD *xd, MODE_INFO *here,
   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 @@ void vp9_find_mv_refs_idx(VP9_COMMON *cm, MACROBLOCKD *xd, MODE_INFO *here,
   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);