Merge "Refactor sub-pixel motion search" into nextgenv2
diff --git a/vp10/common/reconinter.c b/vp10/common/reconinter.c
index 674b037..2d2563e 100644
--- a/vp10/common/reconinter.c
+++ b/vp10/common/reconinter.c
@@ -454,7 +454,7 @@
     const MACROBLOCKD *xd) {
   const MODE_INFO *mi = xd->mi[0];
 #if CONFIG_VP9_HIGHBITDEPTH
-  uint8_t tmp_dst_[2 * MAX_SB_SQUARE];
+  DECLARE_ALIGNED(16, uint8_t, tmp_dst_[2 * MAX_SB_SQUARE]);
   uint8_t *tmp_dst =
       (xd->cur_buf->flags & YV12_FLAG_HIGHBITDEPTH) ?
       CONVERT_TO_BYTEPTR(tmp_dst_) : tmp_dst_;
@@ -487,7 +487,7 @@
         mi->mbmi.sb_type, h, w);
 #endif  // CONFIG_SUPERTX
 #else   // CONFIG_VP9_HIGHBITDEPTH
-  uint8_t tmp_dst[MAX_SB_SQUARE];
+  DECLARE_ALIGNED(16, uint8_t, tmp_dst[MAX_SB_SQUARE]);
   vp10_make_inter_predictor(pre, pre_stride, tmp_dst, MAX_SB_SIZE,
                             subpel_x, subpel_y, sf, w, h, 0,
                             interp_filter, xs, ys, xd);
@@ -2020,7 +2020,7 @@
   }
 #endif  // CONFIG_VP9_HIGHBITDEPTH
   {
-    uint8_t intrapredictor[MAX_SB_SQUARE];
+    DECLARE_ALIGNED(16, uint8_t, intrapredictor[MAX_SB_SQUARE]);
     vp10_build_intra_predictors_for_interintra(
         xd, bsize, 0, intrapredictor, MAX_SB_SIZE);
     vp10_combine_interintra(xd, bsize, 0, ypred, ystride,
@@ -2045,7 +2045,7 @@
   }
 #endif  // CONFIG_VP9_HIGHBITDEPTH
   {
-    uint8_t uintrapredictor[MAX_SB_SQUARE];
+    DECLARE_ALIGNED(16, uint8_t, uintrapredictor[MAX_SB_SQUARE]);
     vp10_build_intra_predictors_for_interintra(
         xd, bsize, plane, uintrapredictor, MAX_SB_SIZE);
     vp10_combine_interintra(xd, bsize, plane, upred, ustride,
@@ -2204,12 +2204,12 @@
     if (ref && get_wedge_bits(mi->mbmi.sb_type)
         && mi->mbmi.use_wedge_interinter) {
 #if CONFIG_VP9_HIGHBITDEPTH
-      uint8_t tmp_dst_[2 * MAX_SB_SQUARE];
+      DECLARE_ALIGNED(16, uint8_t, tmp_dst_[2 * MAX_SB_SQUARE]);
       uint8_t *tmp_dst =
           (xd->cur_buf->flags & YV12_FLAG_HIGHBITDEPTH) ?
           CONVERT_TO_BYTEPTR(tmp_dst_) : tmp_dst_;
 #else
-      uint8_t tmp_dst[MAX_SB_SQUARE];
+      DECLARE_ALIGNED(16, uint8_t, tmp_dst[MAX_SB_SQUARE]);
 #endif  // CONFIG_VP9_HIGHBITDEPTH
 #if CONFIG_VP9_HIGHBITDEPTH
         if (xd->cur_buf->flags & YV12_FLAG_HIGHBITDEPTH) {
diff --git a/vp10/encoder/mcomp.c b/vp10/encoder/mcomp.c
index 84f345f..823095e 100644
--- a/vp10/encoder/mcomp.c
+++ b/vp10/encoder/mcomp.c
@@ -99,8 +99,8 @@
 static int mvsad_err_cost(const MACROBLOCK *x, const MV *mv, const MV *ref,
                           int sad_per_bit) {
 #if CONFIG_REF_MV
-  const MV diff = { (mv->row - ref->row) << 3,
-                    (mv->col - ref->col) << 3 };
+  const MV diff = { (mv->row - ref->row) * 8,
+                    (mv->col - ref->col) * 8 };
   return ROUND_POWER_OF_TWO(
       (unsigned)mv_cost(&diff, x->nmvjointsadcost, x->mvsadcost) *
           sad_per_bit,
@@ -783,7 +783,7 @@
   if (use_upsampled_ref)
     besterr = upsampled_setup_center_error(xd, bestmv, ref_mv, error_per_bit,
                                            vfp, z, src_stride, y, y_stride,
-                                           second_pred, w, h, (offset << 3),
+                                           second_pred, w, h, (offset * 8),
                                            mvjcost, mvcost, sse1, distortion);
   else
     besterr = setup_center_error(xd, bestmv, ref_mv, error_per_bit, vfp,
diff --git a/vp10/encoder/rdopt.c b/vp10/encoder/rdopt.c
index ff31e75..6ffa790 100644
--- a/vp10/encoder/rdopt.c
+++ b/vp10/encoder/rdopt.c
@@ -1829,6 +1829,8 @@
         if (centroids[i] == centroids[i - 1]) {
           j = i;
           while (j < k - 1) {
+            assert((j + 1) < PALETTE_MAX_SIZE);
+            assert(j > 0);
             centroids[j] = centroids[j + 1];
             ++j;
           }
@@ -8874,7 +8876,6 @@
       else if (best_mbmode.mv[0].as_int == 0)
         best_mbmode.mode = ZEROMV;
     } else {
-      int i;
       int_mv nearestmv[2] = { frame_mv[NEARESTMV][refs[0]],
                               frame_mv[NEARESTMV][refs[1]] };
       int_mv nearmv[2] = { frame_mv[NEARMV][refs[0]],
@@ -8886,6 +8887,7 @@
          nearmv[1] = mbmi_ext->ref_mv_stack[rf_type][1].comp_mv;
        }
 #else
+      int i;
       int ref_set = (mbmi_ext->ref_mv_count[rf_type] >= 2) ?
           VPXMIN(2, mbmi_ext->ref_mv_count[rf_type] - 2) : INT_MAX;