Refactor: remove unused arf_q.
And simplify branches and consolidate code after removal of arf_q.
Change-Id: I34e2b28a2e8d84bee9b77144d67aee0505d70c21
diff --git a/av1/encoder/ratectrl.c b/av1/encoder/ratectrl.c
index 15b51b9..ef8cb38 100644
--- a/av1/encoder/ratectrl.c
+++ b/av1/encoder/ratectrl.c
@@ -1083,8 +1083,8 @@
#define STATIC_MOTION_THRESH 95
static void get_intra_q_and_bounds_two_pass(const AV1_COMP *cpi, int width,
int height, int *active_best,
- int *active_worst, int *arf_q,
- int cq_level, int is_fwd_kf) {
+ int *active_worst, int cq_level,
+ int is_fwd_kf) {
const AV1_COMMON *const cm = &cpi->common;
const RATE_CONTROL *const rc = &cpi->rc;
const AV1EncoderConfig *const oxcf = &cpi->oxcf;
@@ -1107,8 +1107,6 @@
const int delta_qindex = av1_compute_qdelta(
rc, last_boosted_q, last_boosted_q * 0.25, bit_depth);
active_best_quality = AOMMAX(qindex + delta_qindex, rc->best_quality);
- // Update the arf_q since the forward keyframe is replacing the ALTREF
- *arf_q = active_best_quality;
} else if (rc->this_key_frame_forced) {
// Handle the special case for key frames forced when we have reached
// the maximum key frame interval. Here force the Q to a range
@@ -1273,8 +1271,7 @@
// function call.
static int get_active_best_quality(const AV1_COMP *const cpi,
const int active_worst_quality,
- const int cq_level, const int gf_index,
- int *arf_q) {
+ const int cq_level, const int gf_index) {
const AV1_COMMON *const cm = &cpi->common;
const int bit_depth = cm->seq_params.bit_depth;
const RATE_CONTROL *const rc = &cpi->rc;
@@ -1302,6 +1299,7 @@
return active_best_quality;
}
+ // TODO(chengchen): can we remove this condition?
if (rc_mode == AOM_Q && !cpi->refresh_alt_ref_frame && !is_intrl_arf_boost) {
return cq_level;
}
@@ -1322,38 +1320,20 @@
const int min_boost = get_gf_high_motion_quality(q, bit_depth);
const int boost = min_boost - active_best_quality;
active_best_quality = min_boost - (int)(boost * rc->arf_boost_factor);
- if (rc_mode == AOM_VBR || rc_mode == AOM_CBR) {
- if (is_intrl_arf_boost) {
- int this_height = gf_group_pyramid_level(gf_group, gf_index);
- while (this_height > 1) {
- active_best_quality =
- (active_best_quality + active_worst_quality + 1) / 2;
- --this_height;
- }
- }
- return active_best_quality;
- }
+ if (!is_intrl_arf_boost) return active_best_quality;
- // AOM_Q and AOM_CQ mode.
- if (gf_group->update_type[gf_index] == ARF_UPDATE) {
- *arf_q = active_best_quality;
- } else if (is_intrl_arf_boost) {
- assert(rc->arf_q >= 0); // Ensure it is set to a valid value.
- active_best_quality = rc->arf_q;
- int this_height = gf_group_pyramid_level(gf_group, gf_index);
- while (this_height > 1) {
- active_best_quality =
- (active_best_quality + active_worst_quality + 1) / 2;
- --this_height;
- }
+ if (rc_mode == AOM_Q || rc_mode == AOM_CQ) active_best_quality = rc->arf_q;
+ int this_height = gf_group_pyramid_level(gf_group, gf_index);
+ while (this_height > 1) {
+ active_best_quality = (active_best_quality + active_worst_quality + 1) / 2;
+ --this_height;
}
return active_best_quality;
}
static int rc_pick_q_and_bounds_two_pass(const AV1_COMP *cpi, int width,
int height, int gf_index,
- int *bottom_index, int *top_index,
- int *arf_q) {
+ int *bottom_index, int *top_index) {
const AV1_COMMON *const cm = &cpi->common;
const RATE_CONTROL *const rc = &cpi->rc;
const AV1EncoderConfig *const oxcf = &cpi->oxcf;
@@ -1371,11 +1351,10 @@
const int is_fwd_kf =
cm->current_frame.frame_type == KEY_FRAME && cm->show_frame == 0;
get_intra_q_and_bounds_two_pass(cpi, width, height, &active_best_quality,
- &active_worst_quality, arf_q, cq_level,
- is_fwd_kf);
+ &active_worst_quality, cq_level, is_fwd_kf);
} else {
- active_best_quality = get_active_best_quality(cpi, active_worst_quality,
- cq_level, gf_index, arf_q);
+ active_best_quality =
+ get_active_best_quality(cpi, active_worst_quality, cq_level, gf_index);
}
postprocess_q_and_bounds(cpi, width, height, &active_worst_quality,
@@ -1414,10 +1393,8 @@
q = rc_pick_q_and_bounds_one_pass_vbr(cpi, width, height, bottom_index,
top_index);
} else {
- int arf_q = -1; // Initialize to invalid value, for sanity check later.
-
q = rc_pick_q_and_bounds_two_pass(cpi, width, height, gf_index,
- bottom_index, top_index, &arf_q);
+ bottom_index, top_index);
}
if (gf_group->update_type[gf_index] == ARF_UPDATE) rc->arf_q = q;