summaryrefslogtreecommitdiff
path: root/vp9
diff options
context:
space:
mode:
authorJames Zern <jzern@google.com>2014-01-22 16:50:30 -0800
committerGerrit Code Review <gerrit@gerrit.golo.chromium.org>2014-01-22 16:50:30 -0800
commiteb4cb4339711597cb563110e6c7505242114e205 (patch)
treeaf2406bf69a281f4233c3ffa04b3e918790afac9 /vp9
parentaf1485380243ae8b980a3937349b28ab820e7a20 (diff)
parent20cf22a1289c01cc44ac948103fa4755293f9df3 (diff)
downloadlibvpx-eb4cb4339711597cb563110e6c7505242114e205.tar
libvpx-eb4cb4339711597cb563110e6c7505242114e205.tar.gz
libvpx-eb4cb4339711597cb563110e6c7505242114e205.tar.bz2
libvpx-eb4cb4339711597cb563110e6c7505242114e205.zip
Merge "Enforce effective motion vector search range"
Diffstat (limited to 'vp9')
-rw-r--r--vp9/encoder/vp9_mcomp.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/vp9/encoder/vp9_mcomp.c b/vp9/encoder/vp9_mcomp.c
index e81dd0db7..0f2edb55a 100644
--- a/vp9/encoder/vp9_mcomp.c
+++ b/vp9/encoder/vp9_mcomp.c
@@ -24,10 +24,15 @@
// #define NEW_DIAMOND_SEARCH
void vp9_set_mv_search_range(MACROBLOCK *x, const MV *mv) {
- const int col_min = (mv->col >> 3) - MAX_FULL_PEL_VAL + (mv->col & 7 ? 1 : 0);
- const int row_min = (mv->row >> 3) - MAX_FULL_PEL_VAL + (mv->row & 7 ? 1 : 0);
- const int col_max = (mv->col >> 3) + MAX_FULL_PEL_VAL;
- const int row_max = (mv->row >> 3) + MAX_FULL_PEL_VAL;
+ int col_min = (mv->col >> 3) - MAX_FULL_PEL_VAL + (mv->col & 7 ? 1 : 0);
+ int row_min = (mv->row >> 3) - MAX_FULL_PEL_VAL + (mv->row & 7 ? 1 : 0);
+ int col_max = (mv->col >> 3) + MAX_FULL_PEL_VAL;
+ int row_max = (mv->row >> 3) + MAX_FULL_PEL_VAL;
+
+ col_min = MAX(col_min, (MV_LOW >> 3) + 1);
+ row_min = MAX(row_min, (MV_LOW >> 3) + 1);
+ col_max = MIN(col_max, (MV_UPP >> 3) - 1);
+ row_max = MIN(row_max, (MV_UPP >> 3) - 1);
// Get intersection of UMV window and valid MV window to reduce # of checks
// in diamond search.