Fix rc mode control logic
Use the correct rc mode flag to check the rc route. This fixes
a performance regression in q mode (in the range of 0.1 - 0.4%).
STATS_CHANGED
Change-Id: Ia5415dcd25ecb5d497eb2f71aa285e4bb8d41eac
diff --git a/av1/encoder/ratectrl.c b/av1/encoder/ratectrl.c
index 6705fa6..a94800f 100644
--- a/av1/encoder/ratectrl.c
+++ b/av1/encoder/ratectrl.c
@@ -1617,11 +1617,20 @@
get_active_best_quality(cpi, active_worst_quality, cq_level, gf_index);
}
- q = active_best_quality;
-
*top_index = active_worst_quality;
*bottom_index = active_best_quality;
+ *top_index = AOMMAX(*top_index, rc->best_quality);
+ *top_index = AOMMIN(*top_index, rc->worst_quality);
+
+ *bottom_index = AOMMAX(*bottom_index, rc->best_quality);
+ *bottom_index = AOMMIN(*bottom_index, rc->worst_quality);
+
+ q = active_best_quality;
+
+ q = AOMMAX(q, rc->best_quality);
+ q = AOMMIN(q, rc->worst_quality);
+
assert(*top_index <= rc->worst_quality && *top_index >= rc->best_quality);
assert(*bottom_index <= rc->worst_quality &&
*bottom_index >= rc->best_quality);
@@ -1666,7 +1675,7 @@
cq_level, bit_depth);
}
- if (oxcf->mode == AOM_Q) {
+ if (oxcf->rc_cfg.mode == AOM_Q) {
return rc_pick_q_and_bounds_q_mode(cpi, width, height, gf_index,
bottom_index, top_index);
}