handle_inter_mode: merge rate/dist/sse/skip RD_STATS
Change-Id: I4d145daa33ed2f4b7f01e81ae2f0c17551982d80
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c
index f697049..5ec1f82 100644
--- a/av1/encoder/rdopt.c
+++ b/av1/encoder/rdopt.c
@@ -6866,8 +6866,8 @@
#endif // CONFIG_EXT_INTER
static int64_t handle_inter_mode(
- const AV1_COMP *const cpi, MACROBLOCK *x, BLOCK_SIZE bsize, int *rate2,
- int64_t *distortion, int *skippable, int *rate_y, int *rate_uv,
+ const AV1_COMP *const cpi, MACROBLOCK *x, BLOCK_SIZE bsize,
+ RD_STATS *rd_stats, RD_STATS *rd_stats_y, RD_STATS *rd_stats_uv,
int *disable_skip, int_mv (*mode_mv)[TOTAL_REFS_PER_FRAME], int mi_row,
int mi_col,
#if CONFIG_MOTION_VAR
@@ -6883,8 +6883,7 @@
int_mv single_newmv[TOTAL_REFS_PER_FRAME],
#endif // CONFIG_EXT_INTER
InterpFilter (*single_filter)[TOTAL_REFS_PER_FRAME],
- int (*single_skippable)[TOTAL_REFS_PER_FRAME], int64_t *psse,
- const int64_t ref_best_rd) {
+ int (*single_skippable)[TOTAL_REFS_PER_FRAME], const int64_t ref_best_rd) {
const AV1_COMMON *cm = &cpi->common;
MACROBLOCKD *xd = &x->e_mbd;
MB_MODE_INFO *mbmi = &xd->mi[0]->mbmi;
@@ -6922,13 +6921,11 @@
!is_comp_interintra_pred &&
#endif // CONFIG_EXT_INTER
is_motion_variation_allowed(mbmi);
- int rate2_nocoeff = 0, best_rate2 = INT_MAX, best_skippable, best_xskip,
- best_disable_skip = 0;
- int best_rate_y, best_rate_uv;
+ int rate2_nocoeff = 0, best_xskip, best_disable_skip = 0;
+ RD_STATS best_rd_stats, best_rd_stats_y, best_rd_stats_uv;
#if CONFIG_VAR_TX
uint8_t best_blk_skip[MAX_MB_PLANE][MAX_MIB_SIZE * MAX_MIB_SIZE * 4];
#endif // CONFIG_VAR_TX
- int64_t best_distortion = INT64_MAX;
int64_t best_rd = INT64_MAX;
MB_MODE_INFO best_mbmi;
#if CONFIG_EXT_INTER
@@ -6947,8 +6944,10 @@
int skip_txfm_sb = 0;
int64_t skip_sse_sb = INT64_MAX;
- int64_t distortion_y = 0, distortion_uv = 0;
int16_t mode_ctx = mbmi_ext->mode_context[refs[0]];
+#if CONFIG_MOTION_VAR || CONFIG_WARPED_MOTION
+ av1_invalid_rd_stats(&best_rd_stats);
+#endif
#if CONFIG_EXT_INTER
*compmode_interintra_cost = 0;
@@ -7077,7 +7076,7 @@
rate_mv = AOMMAX((rate_mv / NEW_MV_DISCOUNT_FACTOR), 1);
}
}
- *rate2 += rate_mv;
+ rd_stats->rate += rate_mv;
}
for (i = 0; i < is_comp_pred + 1; ++i) {
@@ -7200,21 +7199,22 @@
if (discount_newmv_test(cpi, this_mode, frame_mv[refs[0]], mode_mv,
refs[0])) {
#if CONFIG_REF_MV && CONFIG_EXT_INTER
- *rate2 += AOMMIN(cost_mv_ref(cpi, this_mode, is_comp_pred, mode_ctx),
- cost_mv_ref(cpi, NEARESTMV, is_comp_pred, mode_ctx));
+ rd_stats->rate +=
+ AOMMIN(cost_mv_ref(cpi, this_mode, is_comp_pred, mode_ctx),
+ cost_mv_ref(cpi, NEARESTMV, is_comp_pred, mode_ctx));
#else
- *rate2 += AOMMIN(cost_mv_ref(cpi, this_mode, mode_ctx),
- cost_mv_ref(cpi, NEARESTMV, mode_ctx));
+ rd_stats->rate += AOMMIN(cost_mv_ref(cpi, this_mode, mode_ctx),
+ cost_mv_ref(cpi, NEARESTMV, mode_ctx));
#endif // CONFIG_REF_MV && CONFIG_EXT_INTER
} else {
#if CONFIG_REF_MV && CONFIG_EXT_INTER
- *rate2 += cost_mv_ref(cpi, this_mode, is_comp_pred, mode_ctx);
+ rd_stats->rate += cost_mv_ref(cpi, this_mode, is_comp_pred, mode_ctx);
#else
- *rate2 += cost_mv_ref(cpi, this_mode, mode_ctx);
+ rd_stats->rate += cost_mv_ref(cpi, this_mode, mode_ctx);
#endif // CONFIG_REF_MV && CONFIG_EXT_INTER
}
- if (RDCOST(x->rdmult, x->rddiv, *rate2, 0) > ref_best_rd &&
+ if (RDCOST(x->rdmult, x->rddiv, rd_stats->rate, 0) > ref_best_rd &&
#if CONFIG_EXT_INTER
mbmi->mode != NEARESTMV && mbmi->mode != NEAREST_NEARESTMV
#else
@@ -7347,7 +7347,7 @@
#if CONFIG_MOTION_VAR
best_bmc_mbmi = *mbmi;
rate_mv_bmc = rate_mv;
- rate2_bmc_nocoeff = *rate2;
+ rate2_bmc_nocoeff = rd_stats->rate;
if (cm->interp_filter == SWITCHABLE) rate2_bmc_nocoeff += rs;
#endif // CONFIG_MOTION_VAR
@@ -7444,7 +7444,7 @@
mbmi->use_wedge_interinter = 1;
xd->mi[0]->bmi[0].as_mv[0].as_int = mbmi->mv[0].as_int;
xd->mi[0]->bmi[0].as_mv[1].as_int = mbmi->mv[1].as_int;
- *rate2 += tmp_rate_mv - rate_mv;
+ rd_stats->rate += tmp_rate_mv - rate_mv;
rate_mv = tmp_rate_mv;
} else {
mbmi->use_wedge_interinter = 0;
@@ -7601,7 +7601,7 @@
mbmi->use_wedge_interintra = 1;
best_interintra_rd = best_interintra_rd_wedge;
mbmi->mv[0].as_int = tmp_mv.as_int;
- *rate2 += tmp_rate_mv - rate_mv;
+ rd_stats->rate += tmp_rate_mv - rate_mv;
rate_mv = tmp_rate_mv;
} else {
mbmi->use_wedge_interintra = 0;
@@ -7683,9 +7683,9 @@
}
}
- if (cm->interp_filter == SWITCHABLE) *rate2 += rs;
+ if (cm->interp_filter == SWITCHABLE) rd_stats->rate += rs;
#if CONFIG_MOTION_VAR
- rate2_nocoeff = *rate2;
+ rate2_nocoeff = rd_stats->rate;
#endif // CONFIG_MOTION_VAR
#if CONFIG_MOTION_VAR || CONFIG_WARPED_MOTION
@@ -7775,33 +7775,23 @@
#endif // CONFIG_WARPED_MOTION
x->skip = 0;
- *rate2 = tmp_rate2;
- if (allow_motvar) *rate2 += cpi->motion_mode_cost[bsize][mbmi->motion_mode];
- *distortion = 0;
+ rd_stats->rate = tmp_rate2;
+ if (allow_motvar)
+ rd_stats->rate += cpi->motion_mode_cost[bsize][mbmi->motion_mode];
+ rd_stats->dist = 0;
#endif // CONFIG_MOTION_VAR || CONFIG_WARPED_MOTION
if (!skip_txfm_sb) {
- int skippable_y, skippable_uv;
- int64_t sseuv = INT64_MAX;
int64_t rdcosty = INT64_MAX;
int is_cost_valid_uv = 0;
+
// cost and distortion
- RD_STATS rd_stats_uv;
- RD_STATS rd_stats_y;
av1_subtract_plane(x, bsize, 0);
#if CONFIG_VAR_TX
if (cm->tx_mode == TX_MODE_SELECT && !xd->lossless[mbmi->segment_id]) {
- select_tx_type_yrd(cpi, x, &rd_stats_y, bsize, ref_best_rd);
- *rate_y = rd_stats_y.rate;
- distortion_y = rd_stats_y.dist;
- skippable_y = rd_stats_y.skip;
- *psse = rd_stats_y.sse;
+ select_tx_type_yrd(cpi, x, rd_stats_y, bsize, ref_best_rd);
} else {
int idx, idy;
- super_block_yrd(cpi, x, &rd_stats_y, bsize, ref_best_rd);
- *rate_y = rd_stats_y.rate;
- distortion_y = rd_stats_y.dist;
- skippable_y = rd_stats_y.skip;
- *psse = rd_stats_y.sse;
+ super_block_yrd(cpi, x, rd_stats_y, bsize, ref_best_rd);
for (idy = 0; idy < xd->n8_h; ++idy)
for (idx = 0; idx < xd->n8_w; ++idx)
mbmi->inter_tx_size[idy][idx] = mbmi->tx_size;
@@ -7810,17 +7800,12 @@
}
#else
/* clang-format off */
- super_block_yrd(cpi, x, &rd_stats_y, bsize, ref_best_rd);
- *rate_y = rd_stats_y.rate;
- distortion_y = rd_stats_y.dist;
- skippable_y = rd_stats_y.skip;
- *psse = rd_stats_y.sse;
+ super_block_yrd(cpi, x, rd_stats_y, bsize, ref_best_rd);
/* clang-format on */
#endif // CONFIG_VAR_TX
- if (*rate_y == INT_MAX) {
- *rate2 = INT_MAX;
- *distortion = INT64_MAX;
+ if (rd_stats_y->rate == INT_MAX) {
+ av1_invalid_rd_stats(rd_stats);
#if CONFIG_MOTION_VAR || CONFIG_WARPED_MOTION
if (mbmi->motion_mode != SIMPLE_TRANSLATION) {
continue;
@@ -7833,30 +7818,23 @@
#endif // CONFIG_MOTION_VAR || CONFIG_WARPED_MOTION
}
- *rate2 += *rate_y;
- *distortion += distortion_y;
+ av1_merge_rd_stats(rd_stats, rd_stats_y);
- rdcosty = RDCOST(x->rdmult, x->rddiv, *rate2, *distortion);
- rdcosty = AOMMIN(rdcosty, RDCOST(x->rdmult, x->rddiv, 0, *psse));
+ rdcosty = RDCOST(x->rdmult, x->rddiv, rd_stats->rate, rd_stats->dist);
+ rdcosty = AOMMIN(rdcosty, RDCOST(x->rdmult, x->rddiv, 0, rd_stats->sse));
/* clang-format off */
#if CONFIG_VAR_TX
is_cost_valid_uv =
- inter_block_uvrd(cpi, x, &rd_stats_uv, bsize, ref_best_rd - rdcosty);
+ inter_block_uvrd(cpi, x, rd_stats_uv, bsize, ref_best_rd - rdcosty);
#else
is_cost_valid_uv =
- super_block_uvrd(cpi, x, &rd_stats_uv, bsize, ref_best_rd - rdcosty);
+ super_block_uvrd(cpi, x, rd_stats_uv, bsize, ref_best_rd - rdcosty);
#endif // CONFIG_VAR_TX
#if CONFIG_RD_DEBUG
// record uv planes' transform block coefficient cost
- if (is_cost_valid_uv) av1_merge_rd_stats(&mbmi->rd_stats, &rd_stats_uv);
+ if (is_cost_valid_uv) av1_merge_rd_stats(&mbmi->rd_stats, rd_stats_uv);
#endif
- *rate_uv = rd_stats_uv.rate;
- distortion_uv = rd_stats_uv.dist;
- skippable_uv = rd_stats_uv.skip;
- sseuv = rd_stats_uv.sse;
if (!is_cost_valid_uv) {
- *rate2 = INT_MAX;
- *distortion = INT64_MAX;
#if CONFIG_MOTION_VAR || CONFIG_WARPED_MOTION
continue;
#else
@@ -7865,33 +7843,31 @@
#endif // CONFIG_MOTION_VAR || CONFIG_WARPED_MOTION
}
/* clang-format on */
- *psse += sseuv;
- *rate2 += *rate_uv;
- *distortion += distortion_uv;
- *skippable = skippable_y && skippable_uv;
+ av1_merge_rd_stats(rd_stats, rd_stats_uv);
#if CONFIG_MOTION_VAR || CONFIG_WARPED_MOTION
- if (*skippable) {
- *rate2 -= *rate_uv + *rate_y;
- *rate_y = 0;
- *rate_uv = 0;
- *rate2 += av1_cost_bit(av1_get_skip_prob(cm, xd), 1);
+ if (rd_stats->skip) {
+ rd_stats->rate -= rd_stats_uv->rate + rd_stats_y->rate;
+ rd_stats_y->rate = 0;
+ rd_stats_uv->rate = 0;
+ rd_stats->rate += av1_cost_bit(av1_get_skip_prob(cm, xd), 1);
mbmi->skip = 0;
// here mbmi->skip temporarily plays a role as what this_skip2 does
} else if (!xd->lossless[mbmi->segment_id] &&
(RDCOST(x->rdmult, x->rddiv,
- *rate_y + *rate_uv +
+ rd_stats_y->rate + rd_stats_uv->rate +
av1_cost_bit(av1_get_skip_prob(cm, xd), 0),
- *distortion) >=
+ rd_stats->dist) >=
RDCOST(x->rdmult, x->rddiv,
- av1_cost_bit(av1_get_skip_prob(cm, xd), 1), *psse))) {
- *rate2 -= *rate_uv + *rate_y;
- *rate2 += av1_cost_bit(av1_get_skip_prob(cm, xd), 1);
- *distortion = *psse;
- *rate_y = 0;
- *rate_uv = 0;
+ av1_cost_bit(av1_get_skip_prob(cm, xd), 1),
+ rd_stats->sse))) {
+ rd_stats->rate -= rd_stats_uv->rate + rd_stats_y->rate;
+ rd_stats->rate += av1_cost_bit(av1_get_skip_prob(cm, xd), 1);
+ rd_stats->dist = rd_stats->sse;
+ rd_stats_y->rate = 0;
+ rd_stats_uv->rate = 0;
mbmi->skip = 1;
} else {
- *rate2 += av1_cost_bit(av1_get_skip_prob(cm, xd), 0);
+ rd_stats->rate += av1_cost_bit(av1_get_skip_prob(cm, xd), 0);
mbmi->skip = 0;
}
*disable_skip = 0;
@@ -7905,23 +7881,24 @@
#if CONFIG_MOTION_VAR || CONFIG_WARPED_MOTION
mbmi->skip = 0;
#endif // CONFIG_MOTION_VAR || CONFIG_WARPED_MOTION
- *rate2 += av1_cost_bit(av1_get_skip_prob(cm, xd), 1);
+ rd_stats->rate += av1_cost_bit(av1_get_skip_prob(cm, xd), 1);
- *distortion = skip_sse_sb;
- *psse = skip_sse_sb;
- *rate_y = 0;
- *rate_uv = 0;
- *skippable = 1;
+ rd_stats->dist = skip_sse_sb;
+ rd_stats->sse = skip_sse_sb;
+ rd_stats_y->rate = 0;
+ rd_stats_uv->rate = 0;
+ rd_stats->skip = 1;
}
#if CONFIG_GLOBAL_MOTION
if (this_mode == ZEROMV) {
- *rate2 += GLOBAL_MOTION_RATE(mbmi->ref_frame[0]);
- if (is_comp_pred) *rate2 += GLOBAL_MOTION_RATE(mbmi->ref_frame[1]);
+ rd_stats->rate += GLOBAL_MOTION_RATE(mbmi->ref_frame[0]);
+ if (is_comp_pred)
+ rd_stats->rate += GLOBAL_MOTION_RATE(mbmi->ref_frame[1]);
}
#endif // CONFIG_GLOBAL_MOTION
#if CONFIG_MOTION_VAR || CONFIG_WARPED_MOTION
- tmp_rd = RDCOST(x->rdmult, x->rddiv, *rate2, *distortion);
+ tmp_rd = RDCOST(x->rdmult, x->rddiv, rd_stats->rate, rd_stats->dist);
if (mbmi->motion_mode == SIMPLE_TRANSLATION || (tmp_rd < best_rd)) {
#if CONFIG_EXT_INTERP
#if CONFIG_DUAL_FILTER
@@ -7933,16 +7910,14 @@
#endif // CONFIG_EXT_INTERP
best_mbmi = *mbmi;
best_rd = tmp_rd;
- best_rate2 = *rate2;
- best_rate_y = *rate_y;
- best_rate_uv = *rate_uv;
+ best_rd_stats = *rd_stats;
+ best_rd_stats_y = *rd_stats_y;
+ best_rd_stats_uv = *rd_stats_uv;
#if CONFIG_VAR_TX
for (i = 0; i < MAX_MB_PLANE; ++i)
memcpy(best_blk_skip[i], x->blk_skip[i],
sizeof(uint8_t) * xd->n8_h * xd->n8_w * 4);
#endif // CONFIG_VAR_TX
- best_distortion = *distortion;
- best_skippable = *skippable;
best_xskip = x->skip;
best_disable_skip = *disable_skip;
#if CONFIG_AOM_HIGHBITDEPTH
@@ -7961,27 +7936,24 @@
}
if (best_rd == INT64_MAX) {
- *rate2 = INT_MAX;
- *distortion = INT64_MAX;
+ av1_invalid_rd_stats(rd_stats);
restore_dst_buf(xd, orig_dst, orig_dst_stride);
return INT64_MAX;
}
*mbmi = best_mbmi;
- *rate2 = best_rate2;
- *rate_y = best_rate_y;
- *rate_uv = best_rate_uv;
+ *rd_stats = best_rd_stats;
+ *rd_stats_y = best_rd_stats_y;
+ *rd_stats_uv = best_rd_stats_uv;
#if CONFIG_VAR_TX
for (i = 0; i < MAX_MB_PLANE; ++i)
memcpy(x->blk_skip[i], best_blk_skip[i],
sizeof(uint8_t) * xd->n8_h * xd->n8_w * 4);
#endif // CONFIG_VAR_TX
- *distortion = best_distortion;
- *skippable = best_skippable;
x->skip = best_xskip;
*disable_skip = best_disable_skip;
#endif // CONFIG_MOTION_VAR || CONFIG_WARPED_MOTION
- if (!is_comp_pred) single_skippable[this_mode][refs[0]] = *skippable;
+ if (!is_comp_pred) single_skippable[this_mode][refs[0]] = rd_stats->skip;
#if !(CONFIG_MOTION_VAR || CONFIG_WARPED_MOTION)
#if CONFIG_AOM_HIGHBITDEPTH
@@ -9138,19 +9110,31 @@
}
}
#endif
- this_rd = handle_inter_mode(
- cpi, x, bsize, &rate2, &distortion2, &skippable, &rate_y, &rate_uv,
- &disable_skip, frame_mv, mi_row, mi_col,
+ {
+ RD_STATS rd_stats, rd_stats_y, rd_stats_uv;
+ av1_init_rd_stats(&rd_stats);
+ rd_stats.rate = rate2;
+ this_rd = handle_inter_mode(
+ cpi, x, bsize, &rd_stats, &rd_stats_y, &rd_stats_uv, &disable_skip,
+ frame_mv, mi_row, mi_col,
#if CONFIG_MOTION_VAR
- dst_buf1, dst_stride1, dst_buf2, dst_stride2,
+ dst_buf1, dst_stride1, dst_buf2, dst_stride2,
#endif // CONFIG_MOTION_VAR
#if CONFIG_EXT_INTER
- single_newmvs, single_newmvs_rate, &compmode_interintra_cost,
- &compmode_wedge_cost, modelled_rd,
+ single_newmvs, single_newmvs_rate, &compmode_interintra_cost,
+ &compmode_wedge_cost, modelled_rd,
#else
- single_newmv,
+ single_newmv,
#endif // CONFIG_EXT_INTER
- single_inter_filter, single_skippable, &total_sse, best_rd);
+ single_inter_filter, single_skippable, best_rd);
+
+ rate2 = rd_stats.rate;
+ skippable = rd_stats.skip;
+ distortion2 = rd_stats.dist;
+ total_sse = rd_stats.sse;
+ rate_y = rd_stats_y.rate;
+ rate_uv = rd_stats_uv.rate;
+ }
#if CONFIG_REF_MV
// TODO(jingning): This needs some refactoring to improve code quality
@@ -9200,12 +9184,10 @@
for (ref_idx = 0; ref_idx < ref_set; ++ref_idx) {
int64_t tmp_alt_rd = INT64_MAX;
- int tmp_rate = 0, tmp_rate_y = 0, tmp_rate_uv = 0;
- int tmp_skip = 1;
- int64_t tmp_dist = 0, tmp_sse = 0;
int dummy_disable_skip = 0;
int ref;
int_mv cur_mv;
+ RD_STATS tmp_rd_stats, tmp_rd_stats_y, tmp_rd_stats_uv;
mbmi->ref_mv_idx = 1 + ref_idx;
@@ -9240,9 +9222,10 @@
#endif
frame_mv[NEARMV][ref_frame] = cur_mv;
+ av1_init_rd_stats(&tmp_rd_stats);
tmp_alt_rd = handle_inter_mode(
- cpi, x, bsize, &tmp_rate, &tmp_dist, &tmp_skip, &tmp_rate_y,
- &tmp_rate_uv, &dummy_disable_skip, frame_mv, mi_row, mi_col,
+ cpi, x, bsize, &tmp_rd_stats, &tmp_rd_stats_y, &tmp_rd_stats_uv,
+ &dummy_disable_skip, frame_mv, mi_row, mi_col,
#if CONFIG_MOTION_VAR
dst_buf1, dst_stride1, dst_buf2, dst_stride2,
#endif // CONFIG_MOTION_VAR
@@ -9253,15 +9236,16 @@
#else
dummy_single_newmv,
#endif
- single_inter_filter, dummy_single_skippable, &tmp_sse, best_rd);
+ single_inter_filter, dummy_single_skippable, best_rd);
}
for (i = 0; i < mbmi->ref_mv_idx; ++i) {
uint8_t drl1_ctx = 0;
drl1_ctx = av1_drl_ctx(mbmi_ext->ref_mv_stack[ref_frame_type],
i + idx_offset);
- tmp_rate +=
- (tmp_rate < INT_MAX ? cpi->drl_mode_cost0[drl1_ctx][1] : 0);
+ tmp_rd_stats.rate +=
+ (tmp_rd_stats.rate < INT_MAX ? cpi->drl_mode_cost0[drl1_ctx][1]
+ : 0);
}
if (mbmi_ext->ref_mv_count[ref_frame_type] >
@@ -9270,36 +9254,41 @@
uint8_t drl1_ctx =
av1_drl_ctx(mbmi_ext->ref_mv_stack[ref_frame_type],
mbmi->ref_mv_idx + idx_offset);
- tmp_rate += cpi->drl_mode_cost0[drl1_ctx][0];
+ tmp_rd_stats.rate += cpi->drl_mode_cost0[drl1_ctx][0];
}
if (tmp_alt_rd < INT64_MAX) {
#if CONFIG_MOTION_VAR
- tmp_alt_rd = RDCOST(x->rdmult, x->rddiv, tmp_rate, tmp_dist);
+ tmp_alt_rd = RDCOST(x->rdmult, x->rddiv, tmp_rd_stats.rate,
+ tmp_rd_stats.dist);
#else
- if (RDCOST(x->rdmult, x->rddiv, tmp_rate_y + tmp_rate_uv,
- tmp_dist) < RDCOST(x->rdmult, x->rddiv, 0, tmp_sse))
+ if (RDCOST(x->rdmult, x->rddiv,
+ tmp_rd_stats_y.rate + tmp_rd_stats_uv.rate,
+ tmp_rd_stats.dist) <
+ RDCOST(x->rdmult, x->rddiv, 0, tmp_rd_stats.sse))
tmp_alt_rd =
RDCOST(x->rdmult, x->rddiv,
- tmp_rate + av1_cost_bit(av1_get_skip_prob(cm, xd), 0),
- tmp_dist);
+ tmp_rd_stats.rate +
+ av1_cost_bit(av1_get_skip_prob(cm, xd), 0),
+ tmp_rd_stats.dist);
else
tmp_alt_rd =
RDCOST(x->rdmult, x->rddiv,
- tmp_rate + av1_cost_bit(av1_get_skip_prob(cm, xd), 1) -
- tmp_rate_y - tmp_rate_uv,
- tmp_sse);
+ tmp_rd_stats.rate +
+ av1_cost_bit(av1_get_skip_prob(cm, xd), 1) -
+ tmp_rd_stats_y.rate - tmp_rd_stats_uv.rate,
+ tmp_rd_stats.sse);
#endif // CONFIG_MOTION_VAR
}
if (tmp_ref_rd > tmp_alt_rd) {
- rate2 = tmp_rate;
+ rate2 = tmp_rd_stats.rate;
disable_skip = dummy_disable_skip;
- distortion2 = tmp_dist;
- skippable = tmp_skip;
- rate_y = tmp_rate_y;
- rate_uv = tmp_rate_uv;
- total_sse = tmp_sse;
+ distortion2 = tmp_rd_stats.dist;
+ skippable = tmp_rd_stats.skip;
+ rate_y = tmp_rd_stats_y.rate;
+ rate_uv = tmp_rd_stats_uv.rate;
+ total_sse = tmp_rd_stats.sse;
this_rd = tmp_alt_rd;
tmp_ref_rd = tmp_alt_rd;
backup_mbmi = *mbmi;