Fix convolve function for IntraBC BUG=aomedia:2527 Change-Id: I82d625a5478d22b358a8ec2171cd343193c49c14
diff --git a/av1/common/convolve.c b/av1/common/convolve.c index c4dba9b..1504611 100644 --- a/av1/common/convolve.c +++ b/av1/common/convolve.c
@@ -569,10 +569,16 @@ // TODO(jingning, yunqing): Add SIMD support to 2-tap filter case. // Do we have SIMD support to 4-tap case? + // 2-tap filter indicates that it is for IntraBC. if (filter_params_x->taps == 2 || filter_params_y->taps == 2) { - av1_convolve_2d_sr_c(src, src_stride, dst, dst_stride, w, h, - filter_params_x, filter_params_y, 0, 0, conv_params); - return; + assert(filter_params_x->taps == 2 && filter_params_y->taps == 2); + assert(!scaled); + if (subpel_x_qn || subpel_y_qn) { + av1_convolve_2d_sr_c(src, src_stride, dst, dst_stride, w, h, + filter_params_x, filter_params_y, subpel_x_qn, + subpel_y_qn, conv_params); + return; + } } if (scaled) {
diff --git a/av1/common/filter.h b/av1/common/filter.h index 87eef57..3fa18d3 100644 --- a/av1/common/filter.h +++ b/av1/common/filter.h
@@ -170,9 +170,9 @@ // A special 2-tap bilinear filter for IntraBC chroma. IntraBC uses full pixel // MV for luma. If sub-sampling exists, chroma may possibly use half-pel MV. DECLARE_ALIGNED(256, static const int16_t, - av1_intrabc_bilinear_filter[SUBPEL_SHIFTS]) = { - 64, - 64, + av1_intrabc_bilinear_filter[2 * SUBPEL_SHIFTS]) = { + 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; static const InterpFilterParams av1_intrabc_filter_params = {
diff --git a/av1/common/reconinter.c b/av1/common/reconinter.c index 71c249c..12ae289 100644 --- a/av1/common/reconinter.c +++ b/av1/common/reconinter.c
@@ -124,8 +124,6 @@ dst_stride, inter_pred_params->subsampling_x, inter_pred_params->subsampling_y, &inter_pred_params->conv_params); } else if (inter_pred_params->mode == UNIFORM_PRED) { - // TODO(jingning): is_intrabc related convolve function can be refactored - // and streamlined. #if CONFIG_AV1_HIGHBITDEPTH if (inter_pred_params->use_hbd_buf) { highbd_inter_predictor(