Refactor av1_refining_search_8p_c() interface
Remove dependency on macroblock_plane.
Change-Id: I65543d479c4d4a0e7b7747540f538868290462e0
diff --git a/av1/encoder/mcomp.c b/av1/encoder/mcomp.c
index e71d3ef..7b80569 100644
--- a/av1/encoder/mcomp.c
+++ b/av1/encoder/mcomp.c
@@ -2018,7 +2018,9 @@
const aom_variance_fn_ptr_t *fn_ptr,
const uint8_t *mask, int mask_stride,
int invert_mask, const MV *center_mv,
- const uint8_t *second_pred) {
+ const uint8_t *second_pred,
+ const struct buf_2d *src,
+ const struct buf_2d *pre) {
static const search_neighbors neighbors[8] = {
{ { -1, 0 }, -1 * SEARCH_GRID_STRIDE_8P + 0 },
{ { 0, -1 }, 0 * SEARCH_GRID_STRIDE_8P - 1 },
@@ -2029,9 +2031,8 @@
{ { -1, 1 }, -1 * SEARCH_GRID_STRIDE_8P + 1 },
{ { 1, 1 }, 1 * SEARCH_GRID_STRIDE_8P + 1 }
};
- const MACROBLOCKD *const xd = &x->e_mbd;
- const struct buf_2d *const what = &x->plane[0].src;
- const struct buf_2d *const in_what = &xd->plane[0].pre[0];
+ const struct buf_2d *const what = src;
+ const struct buf_2d *const in_what = pre;
const MV fcenter_mv = { center_mv->row >> 3, center_mv->col >> 3 };
MV *best_mv = &x->best_mv.as_mv;
unsigned int best_sad = INT_MAX;
diff --git a/av1/encoder/mcomp.h b/av1/encoder/mcomp.h
index da965e9..72169c9 100644
--- a/av1/encoder/mcomp.h
+++ b/av1/encoder/mcomp.h
@@ -133,7 +133,9 @@
const aom_variance_fn_ptr_t *fn_ptr,
const uint8_t *mask, int mask_stride,
int invert_mask, const MV *center_mv,
- const uint8_t *second_pred);
+ const uint8_t *second_pred,
+ const struct buf_2d *src,
+ const struct buf_2d *pre);
int av1_full_pixel_search(const struct AV1_COMP *cpi, MACROBLOCK *x,
BLOCK_SIZE bsize, MV *mvp_full, int step_param,
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c
index 2effddb..641d261 100644
--- a/av1/encoder/rdopt.c
+++ b/av1/encoder/rdopt.c
@@ -7087,9 +7087,9 @@
best_mv->row >>= 3;
// Small-range full-pixel motion search.
- bestsme = av1_refining_search_8p_c(x, sadpb, search_range,
- &cpi->fn_ptr[bsize], mask, mask_stride,
- id, &ref_mv[id].as_mv, second_pred);
+ bestsme = av1_refining_search_8p_c(
+ x, sadpb, search_range, &cpi->fn_ptr[bsize], mask, mask_stride, id,
+ &ref_mv[id].as_mv, second_pred, &x->plane[0].src, &ref_yv12[id]);
if (bestsme < INT_MAX) {
if (mask)
bestsme = av1_get_mvpred_mask_var(x, best_mv, &ref_mv[id].as_mv,
@@ -7645,6 +7645,7 @@
// Store the first prediction buffer.
struct buf_2d orig_yv12;
+ struct buf_2d ref_yv12 = pd->pre[ref_idx];
if (ref_idx) {
orig_yv12 = pd->pre[0];
pd->pre[0] = pd->pre[ref_idx];
@@ -7681,9 +7682,9 @@
best_mv->row >>= 3;
// Small-range full-pixel motion search.
- bestsme = av1_refining_search_8p_c(x, sadpb, search_range,
- &cpi->fn_ptr[bsize], mask, mask_stride,
- ref_idx, &ref_mv.as_mv, second_pred);
+ bestsme = av1_refining_search_8p_c(
+ x, sadpb, search_range, &cpi->fn_ptr[bsize], mask, mask_stride, ref_idx,
+ &ref_mv.as_mv, second_pred, &x->plane[0].src, &ref_yv12);
if (bestsme < INT_MAX) {
if (mask)
bestsme =