Abstract update of comp type stats to a function
Abstracted the update of current compound type stats
for future reuse into a function
Change-Id: Ief5dde47f512d15b25c1311569574ee4a8bc7334
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c
index 91379f1..f0bc0b5 100644
--- a/av1/encoder/rdopt.c
+++ b/av1/encoder/rdopt.c
@@ -7758,6 +7758,15 @@
}
}
+// Takes a backup of rate, distortion and model_rd for future reuse
+static INLINE void backup_stats(COMPOUND_TYPE cur_type, int32_t *comp_rate,
+ int64_t *comp_dist, int64_t *comp_model_rd,
+ RD_STATS *rd_stats, int64_t est_rd) {
+ comp_rate[cur_type] = rd_stats->rate;
+ comp_dist[cur_type] = rd_stats->dist;
+ comp_model_rd[cur_type] = est_rd;
+}
+
static int64_t masked_compound_type_rd(
const AV1_COMP *const cpi, MACROBLOCK *x, const int_mv *const cur_mv,
const BLOCK_SIZE bsize, const PREDICTION_MODE this_mode, int *rs2,
@@ -7869,9 +7878,8 @@
rd =
RDCOST(x->rdmult, *rs2 + *out_rate_mv + rd_stats.rate, rd_stats.dist);
// Backup rate and distortion for future reuse
- comp_rate[compound_type] = rd_stats.rate;
- comp_dist[compound_type] = rd_stats.dist;
- comp_model_rd[compound_type] = *comp_model_rd_cur;
+ backup_stats(compound_type, comp_rate, comp_dist, comp_model_rd,
+ &rd_stats, *comp_model_rd_cur);
}
} else {
assert(comp_dist[compound_type] != INT64_MAX);
@@ -9964,9 +9972,8 @@
best_rd_cur = RDCOST(x->rdmult, rs2 + *rate_mv + est_rd_stats.rate,
est_rd_stats.dist);
// Backup rate and distortion for future reuse
- comp_rate[best_type] = est_rd_stats.rate;
- comp_dist[best_type] = est_rd_stats.dist;
- comp_model_rd[best_type] = est_rd[best_type];
+ backup_stats(best_type, comp_rate, comp_dist, comp_model_rd,
+ &est_rd_stats, est_rd[best_type]);
comp_model_rd_cur = est_rd[best_type];
}
if (best_type == COMPOUND_AVERAGE) restore_dst_buf(xd, *tmp_dst, 1);
@@ -10009,9 +10016,8 @@
RDCOST(x->rdmult, rs2 + *rate_mv + rate_sum, dist_sum);
// Backup rate and distortion for future reuse
- comp_rate[cur_type] = est_rd_stats.rate;
- comp_dist[cur_type] = est_rd_stats.dist;
- comp_model_rd[cur_type] = comp_model_rd_cur;
+ backup_stats(cur_type, comp_rate, comp_dist, comp_model_rd,
+ &est_rd_stats, comp_model_rd_cur);
}
} else {
// Calculate RD cost based on stored stats