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;