Commit d69927da authored by Debargha Mukherjee's avatar Debargha Mukherjee

Consolidate all post_rounding for compound modes

The do_post_rounding flag can now be removed since it is equivalent
to is_compound.

Change-Id: I3a18d853571b7363a87e65601c82d1f345b3dcd2
parent c3a8ae46
......@@ -34,7 +34,6 @@ typedef struct ConvolveParams {
int round_0;
int round_1;
int plane;
int do_post_rounding;
int is_compound;
#if CONFIG_JNT_COMP
int use_jnt_comp_avg;
......@@ -101,7 +100,6 @@ static INLINE ConvolveParams get_conv_params_round(int ref, int do_average,
conv_params.round = CONVOLVE_OPT_ROUND;
conv_params.round_0 = ROUND0_BITS;
conv_params.round_1 = 0;
conv_params.do_post_rounding = 0;
conv_params.is_compound = 0;
conv_params.dst = NULL;
conv_params.dst_stride = 0;
......@@ -146,7 +144,6 @@ static INLINE ConvolveParams get_conv_params_no_round(int ref, int do_average,
conv_params.dst = dst;
conv_params.dst_stride = dst_stride;
conv_params.plane = plane;
conv_params.do_post_rounding = 0;
return conv_params;
}
......
......@@ -28,6 +28,21 @@
// This function will determine whether or not to create a warped
// prediction.
static INLINE int get_compound_post_rounding_bits(
const MB_MODE_INFO *const mbmi, const ConvolveParams *conv_params) {
assert(conv_params->is_compound);
int round_bits =
2 * FILTER_BITS - conv_params->round_0 - conv_params->round_1;
if (is_masked_compound_type(mbmi->interinter_compound_type))
return round_bits;
round_bits += conv_params->is_compound;
#if CONFIG_JNT_COMP
if (conv_params->use_jnt_comp_avg) round_bits += DIST_PRECISION_BITS - 1;
#endif // CONFIG_JNT_COMP
return round_bits;
}
static INLINE int allow_warp(const MODE_INFO *const mi,
const WarpTypesAllowed *const warp_types,
const WarpedMotionParams *const gm_params,
......@@ -96,9 +111,6 @@ static INLINE void av1_make_inter_predictor(
inter_predictor(src, src_stride, dst, dst_stride, subpel_x, subpel_y, sf, w,
h, conv_params, interp_filters, xs, ys);
}
// For compound, do_post_rounding is always 1.
// For masked compound, this flag will be turned off after the blend stage.
conv_params->do_post_rounding = conv_params->is_compound;
}
#define NSMOOTHERS 1
......@@ -792,16 +804,6 @@ void av1_make_masked_inter_predictor(
org_dst_stride, tmp_buf32, tmp_buf_stride,
&comp_data, mi->mbmi.sb_type, h, w);
const int convolve_rounding_bits =
FILTER_BITS * 2 - conv_params->round_0 - conv_params->round_1;
if (xd->cur_buf->flags & YV12_FLAG_HIGHBITDEPTH)
av1_highbd_convolve_rounding(org_dst, org_dst_stride, dst, dst_stride, w,
h, convolve_rounding_bits, xd->bd);
else
av1_convolve_rounding(org_dst, org_dst_stride, dst, dst_stride, w, h,
convolve_rounding_bits);
conv_params->do_post_rounding = 0;
} else {
if (xd->cur_buf->flags & YV12_FLAG_HIGHBITDEPTH)
build_masked_compound_highbd(dst, dst_stride, dst, dst_stride, tmp_dst,
......@@ -1102,15 +1104,10 @@ static INLINE void build_inter_predictors(const AV1_COMMON *cm, MACROBLOCKD *xd,
xs, ys, xd);
} // for (ref = 0; ref < 1 + is_compound; ++ref)
if (conv_params.do_post_rounding) {
assert(!is_masked_compound_type(mi->mbmi.interinter_compound_type));
if (conv_params.is_compound) {
assert(conv_params.dst != NULL);
int round_bits = FILTER_BITS * 2 + is_compound - conv_params.round_0 -
conv_params.round_1;
#if CONFIG_JNT_COMP
if (conv_params.use_jnt_comp_avg)
round_bits += DIST_PRECISION_BITS - 1;
#endif // CONFIG_JNT_COMP
int round_bits =
get_compound_post_rounding_bits(&mi->mbmi, &conv_params);
if (xd->cur_buf->flags & YV12_FLAG_HIGHBITDEPTH)
av1_highbd_convolve_rounding(tmp_dst, tmp_dst_stride, dst,
dst_buf->stride, b4_w, b4_h,
......@@ -1244,14 +1241,9 @@ static INLINE void build_inter_predictors(const AV1_COMMON *cm, MACROBLOCKD *xd,
}
// TODO(angiebird): This part needs optimization
if (conv_params.do_post_rounding) {
assert(!is_masked_compound_type(mi->mbmi.interinter_compound_type));
if (conv_params.is_compound) {
assert(conv_params.dst != NULL);
int round_bits = FILTER_BITS * 2 + is_compound - conv_params.round_0 -
conv_params.round_1;
#if CONFIG_JNT_COMP
if (conv_params.use_jnt_comp_avg) round_bits += DIST_PRECISION_BITS - 1;
#endif // CONFIG_JNT_COMP
int round_bits = get_compound_post_rounding_bits(&mi->mbmi, &conv_params);
if (xd->cur_buf->flags & YV12_FLAG_HIGHBITDEPTH)
av1_highbd_convolve_rounding(tmp_dst, MAX_SB_SIZE, dst, dst_buf->stride,
w, h, round_bits, xd->bd);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment