Clean up av1_build_inter_predictor() interface
Remove redundant parameters setup for inter predictor control.
Change-Id: I5f86f535dc58000fffd5629aa32f0e12f8076d8d
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c
index 126a00a..f970e24 100644
--- a/av1/encoder/rdopt.c
+++ b/av1/encoder/rdopt.c
@@ -7049,9 +7049,7 @@
// Since we have scaled the reference frames to match the size of the
// current frame we must use a unit scaling factor during mode selection.
- av1_build_inter_predictor(ref_yv12[!id].buf, ref_yv12[!id].stride,
- second_pred, pw, &cur_mv[!id].as_mv,
- mi_col * MI_SIZE, mi_row * MI_SIZE,
+ av1_build_inter_predictor(second_pred, pw, &cur_mv[!id].as_mv,
&inter_pred_params);
const int order_idx = id != 0;
@@ -7596,9 +7594,7 @@
inter_pred_params.conv_params = get_conv_params(0, plane, xd->bd);
// Get the prediction block from the 'other' reference frame.
- av1_build_inter_predictor(ref_yv12.buf, ref_yv12.stride, second_pred, pw,
- other_mv, mi_col * MI_SIZE, mi_row * MI_SIZE,
- &inter_pred_params);
+ av1_build_inter_predictor(second_pred, pw, other_mv, &inter_pred_params);
av1_dist_wtd_comp_weight_assign(cm, mbmi, 0, &xd->jcp_param.fwd_offset,
&xd->jcp_param.bck_offset,
diff --git a/av1/encoder/reconinter_enc.c b/av1/encoder/reconinter_enc.c
index b347431..e8bfbf9 100644
--- a/av1/encoder/reconinter_enc.c
+++ b/av1/encoder/reconinter_enc.c
@@ -161,8 +161,7 @@
ref, plane, xd->tmp_conv_dst, tmp_dst_stride, 0, xd->bd);
inter_pred_params.conv_params.use_dist_wtd_comp_avg = 0;
- av1_build_inter_predictor(pre_buf->buf, pre_buf->stride, dst,
- dst_buf->stride, &mv, mi_x, mi_y,
+ av1_build_inter_predictor(dst, dst_buf->stride, &mv,
&inter_pred_params);
++col;
}
@@ -217,9 +216,7 @@
inter_pred_params.mask_comp.seg_mask = xd->seg_mask;
}
- av1_build_inter_predictor(pre_buf.buf, pre_buf.stride, dst,
- dst_buf->stride, &mv, mi_x, mi_y,
- &inter_pred_params);
+ av1_build_inter_predictor(dst, dst_buf->stride, &mv, &inter_pred_params);
}
}
}
@@ -261,14 +258,10 @@
}
}
-void av1_build_inter_predictor(const uint8_t *src, int src_stride, uint8_t *dst,
- int dst_stride, const MV *src_mv, int pix_col,
- int pix_row,
+void av1_build_inter_predictor(uint8_t *dst, int dst_stride, const MV *src_mv,
InterPredParams *inter_pred_params) {
SubpelParams subpel_params;
const struct scale_factors *sf = inter_pred_params->scale_factors;
- (void)pix_row;
- (void)pix_col;
struct buf_2d *pre_buf = &inter_pred_params->ref_frame_buf;
int ssx = inter_pred_params->subsampling_x;
@@ -289,8 +282,9 @@
pos_y = clamp(pos_y, top, bottom);
pos_x = clamp(pos_x, left, right);
- src = pre_buf->buf0 + (pos_y >> SCALE_SUBPEL_BITS) * pre_buf->stride +
- (pos_x >> SCALE_SUBPEL_BITS);
+ uint8_t *src = pre_buf->buf0 +
+ (pos_y >> SCALE_SUBPEL_BITS) * pre_buf->stride +
+ (pos_x >> SCALE_SUBPEL_BITS);
subpel_params.subpel_x = pos_x & SCALE_SUBPEL_MASK;
subpel_params.subpel_y = pos_y & SCALE_SUBPEL_MASK;
subpel_params.xs = sf->x_step_q4;
@@ -298,10 +292,10 @@
if (inter_pred_params->comp_mode == UNIFORM_SINGLE ||
inter_pred_params->comp_mode == UNIFORM_COMP)
- av1_make_inter_predictor(src, src_stride, dst, dst_stride,
+ av1_make_inter_predictor(src, pre_buf->stride, dst, dst_stride,
inter_pred_params, &subpel_params);
else
- av1_make_masked_inter_predictor(src, src_stride, dst, dst_stride,
+ av1_make_masked_inter_predictor(src, pre_buf->stride, dst, dst_stride,
inter_pred_params, &subpel_params);
}
@@ -348,8 +342,7 @@
above_mbmi->interp_filters);
inter_pred_params.conv_params = get_conv_params(0, j, xd->bd);
- av1_build_inter_predictor(pre_buf->buf, pre_buf->stride, pd->dst.buf,
- pd->dst.stride, &mv, mi_x, mi_y,
+ av1_build_inter_predictor(pd->dst.buf, pd->dst.stride, &mv,
&inter_pred_params);
}
}
@@ -458,12 +451,10 @@
inter_pred_params.conv_params = get_conv_params(0, plane, xd->bd);
av1_init_warp_params(&inter_pred_params, &warp_types, ref, xd, mi);
- const struct buf_2d *const pre_buf = &pd->pre[ref];
uint8_t *const dst = get_buf_by_bd(xd, ext_dst[plane]);
const MV mv = mi->mv[ref].as_mv;
- av1_build_inter_predictor(pre_buf->buf, pre_buf->stride, dst,
- ext_dst_stride[plane], &mv, mi_x, mi_y,
+ av1_build_inter_predictor(dst, ext_dst_stride[plane], &mv,
&inter_pred_params);
}
}
diff --git a/av1/encoder/reconinter_enc.h b/av1/encoder/reconinter_enc.h
index f3ec07e..279d2ae 100644
--- a/av1/encoder/reconinter_enc.h
+++ b/av1/encoder/reconinter_enc.h
@@ -29,8 +29,7 @@
const BUFFER_SET *ctx, BLOCK_SIZE bsize,
int plane_from, int plane_to);
-void av1_build_inter_predictor(const uint8_t *src, int src_stride, uint8_t *dst,
- int dst_stride, const MV *src_mv, int x, int y,
+void av1_build_inter_predictor(uint8_t *dst, int dst_stride, const MV *src_mv,
InterPredParams *inter_pred_params);
void av1_build_prediction_by_above_preds(const AV1_COMMON *cm, MACROBLOCKD *xd,
diff --git a/av1/encoder/temporal_filter.c b/av1/encoder/temporal_filter.c
index 9ea73bb..5f2af82 100644
--- a/av1/encoder/temporal_filter.c
+++ b/av1/encoder/temporal_filter.c
@@ -51,25 +51,18 @@
1431655766U, 1288490189U, 1171354718U,
0U, 991146300U };
-static void temporal_filter_predictors_mb_c(
- YV12_BUFFER_CONFIG *ref_frame, MACROBLOCKD *xd, uint8_t *y_mb_ptr,
- uint8_t *u_mb_ptr, uint8_t *v_mb_ptr, int stride, int uv_block_width,
- int uv_block_height, int mv_row, int mv_col, uint8_t *pred,
- struct scale_factors *scale, int x, int y, int num_planes, MV *blk_mvs,
- int use_32x32) {
- int uv_stride;
+static void temporal_filter_predictors_mb_c(YV12_BUFFER_CONFIG *ref_frame,
+ MACROBLOCKD *xd, int uv_block_width,
+ int uv_block_height, int mv_row,
+ int mv_col, uint8_t *pred,
+ struct scale_factors *scale, int x,
+ int y, int num_planes, MV *blk_mvs,
+ int use_32x32) {
const int_interpfilters interp_filters =
av1_broadcast_interp_filter(MULTITAP_SHARP);
WarpTypesAllowed warp_types;
memset(&warp_types, 0, sizeof(WarpTypesAllowed));
- const int ssx = (uv_block_width == (BW >> 1)) ? 1 : 0;
- if (ssx) {
- uv_stride = (stride + 1) >> 1;
- } else {
- uv_stride = stride;
- }
-
InterPredParams inter_pred_params;
struct buf_2d ref_buf_y = { NULL, ref_frame->y_buffer, ref_frame->y_width,
ref_frame->y_height, ref_frame->y_stride };
@@ -84,8 +77,7 @@
mv_col <= INT16_MAX);
const MV mv = { (int16_t)mv_row, (int16_t)mv_col };
- av1_build_inter_predictor(y_mb_ptr, stride, &pred[0], BW, &mv, x, y,
- &inter_pred_params);
+ av1_build_inter_predictor(&pred[0], BW, &mv, &inter_pred_params);
if (num_planes > 1) {
struct buf_2d ref_buf_uv = { NULL, ref_frame->u_buffer,
@@ -98,8 +90,8 @@
xd->plane[1].subsampling_x, xd->plane[1].subsampling_y, xd->bd,
is_cur_buf_hbd(xd), 0, scale, &ref_buf_uv, interp_filters);
inter_pred_params.conv_params = get_conv_params(0, 1, xd->bd);
- av1_build_inter_predictor(u_mb_ptr, uv_stride, &pred[BLK_PELS],
- uv_block_width, &mv, x, y, &inter_pred_params);
+ av1_build_inter_predictor(&pred[BLK_PELS], uv_block_width, &mv,
+ &inter_pred_params);
ref_buf_uv.buf0 = ref_frame->v_buffer;
av1_init_inter_params(
@@ -108,8 +100,8 @@
xd->plane[1].subsampling_x, xd->plane[1].subsampling_y, xd->bd,
is_cur_buf_hbd(xd), 0, scale, &ref_buf_uv, interp_filters);
inter_pred_params.conv_params = get_conv_params(0, 2, xd->bd);
- av1_build_inter_predictor(v_mb_ptr, uv_stride, &pred[(BLK_PELS << 1)],
- uv_block_width, &mv, x, y, &inter_pred_params);
+ av1_build_inter_predictor(&pred[(BLK_PELS << 1)], uv_block_width, &mv,
+ &inter_pred_params);
}
return;
@@ -122,7 +114,6 @@
for (i = 0; i < BH; i += ys) {
for (j = 0; j < BW; j += xs) {
const MV mv = blk_mvs[k];
- const int y_offset = i * stride + j;
const int p_offset = i * BW + j;
av1_init_inter_params(&inter_pred_params, xs, ys, y + i, x + j, 0, 0,
@@ -130,8 +121,7 @@
interp_filters);
inter_pred_params.conv_params = get_conv_params(0, 0, xd->bd);
- av1_build_inter_predictor(y_mb_ptr + y_offset, stride, &pred[p_offset],
- BW, &mv, x, y, &inter_pred_params);
+ av1_build_inter_predictor(&pred[p_offset], BW, &mv, &inter_pred_params);
k++;
}
}
@@ -145,7 +135,6 @@
for (i = 0; i < uv_block_height; i += ys) {
for (j = 0; j < uv_block_width; j += xs) {
const MV mv = blk_mvs[k];
- const int uv_offset = i * uv_stride + j;
const int p_offset = i * uv_block_width + j;
struct buf_2d ref_buf_uv = { NULL, ref_frame->u_buffer,
@@ -158,9 +147,8 @@
xd->plane[1].subsampling_y, xd->bd, is_cur_buf_hbd(xd), 0, scale,
&ref_buf_uv, interp_filters);
inter_pred_params.conv_params = get_conv_params(0, 1, xd->bd);
- av1_build_inter_predictor(u_mb_ptr + uv_offset, uv_stride,
- &pred[BLK_PELS + p_offset], uv_block_width,
- &mv, x, y, &inter_pred_params);
+ av1_build_inter_predictor(&pred[BLK_PELS + p_offset], uv_block_width,
+ &mv, &inter_pred_params);
ref_buf_uv.buf0 = ref_frame->v_buffer;
av1_init_inter_params(
@@ -170,9 +158,8 @@
&ref_buf_uv, interp_filters);
inter_pred_params.conv_params = get_conv_params(0, 2, xd->bd);
- av1_build_inter_predictor(
- v_mb_ptr + uv_offset, uv_stride, &pred[(BLK_PELS << 1) + p_offset],
- uv_block_width, &mv, x, y, &inter_pred_params);
+ av1_build_inter_predictor(&pred[(BLK_PELS << 1) + p_offset],
+ uv_block_width, &mv, &inter_pred_params);
k++;
}
}
@@ -1186,10 +1173,7 @@
if (blk_fw[0] || blk_fw[1] || blk_fw[2] || blk_fw[3]) {
// Construct the predictors
temporal_filter_predictors_mb_c(
- frames[frame], mbd, frames[frame]->y_buffer + mb_y_src_offset,
- frames[frame]->u_buffer + mb_uv_src_offset,
- frames[frame]->v_buffer + mb_uv_src_offset,
- frames[frame]->y_stride, mb_uv_width, mb_uv_height,
+ frames[frame], mbd, mb_uv_width, mb_uv_height,
mbd->mi[0]->mv[0].as_mv.row, mbd->mi[0]->mv[0].as_mv.col,
predictor, ref_scale_factors, mb_col * BW, mb_row * BH,
num_planes, blk_mvs, use_32x32);
diff --git a/av1/encoder/tpl_model.c b/av1/encoder/tpl_model.c
index 714e63f..aaef6de 100644
--- a/av1/encoder/tpl_model.c
+++ b/av1/encoder/tpl_model.c
@@ -271,9 +271,8 @@
sf, &ref_buf, kernel);
inter_pred_params.conv_params = get_conv_params(0, 0, xd->bd);
- av1_build_inter_predictor(ref_mb, ref_stride, predictor, bw,
- &x->best_mv.as_mv, mi_col * MI_SIZE,
- mi_row * MI_SIZE, &inter_pred_params);
+ av1_build_inter_predictor(predictor, bw, &x->best_mv.as_mv,
+ &inter_pred_params);
#if CONFIG_AV1_HIGHBITDEPTH
if (is_cur_buf_hbd(xd)) {
@@ -327,14 +326,8 @@
sf, &ref_buf, kernel);
inter_pred_params.conv_params = get_conv_params(0, 0, xd->bd);
- const int ref_mb_offset =
- mi_row * MI_SIZE * ref_frame_ptr->y_stride + mi_col * MI_SIZE;
- uint8_t *ref_mb = ref_frame_ptr->y_buffer + ref_mb_offset;
- int ref_stride = ref_frame_ptr->y_stride;
-
- av1_build_inter_predictor(ref_mb, ref_stride, dst_buffer, dst_buffer_stride,
- &best_mv.as_mv, mi_col * MI_SIZE,
- mi_row * MI_SIZE, &inter_pred_params);
+ av1_build_inter_predictor(dst_buffer, dst_buffer_stride, &best_mv.as_mv,
+ &inter_pred_params);
} else {
av1_predict_intra_block(cm, xd, block_size_wide[bsize],
block_size_high[bsize], tx_size, best_mode, 0, 0,
@@ -1092,9 +1085,7 @@
0, &sf, &ref_buf, kernel);
inter_pred_params.conv_params = get_conv_params(0, 0, xd->bd);
- av1_build_inter_predictor(ref->y_buffer + mb_y_offset_ref, ref->y_stride,
- predictor, bw, &x->best_mv.as_mv,
- mi_col * MI_SIZE, mi_row * MI_SIZE,
+ av1_build_inter_predictor(predictor, bw, &x->best_mv.as_mv,
&inter_pred_params);
if (use_satd) {
#if CONFIG_AV1_HIGHBITDEPTH