ref: 93e2e701a9fd2b979ff9f3811146858a3d9f81b0
parent: fb4f013f27e3c5304a12f9cc2a863e093ceb3cc2
author: angiebird <angiebird@google.com>
date: Tue Nov 19 08:58:36 EST 2019
Fix a bug related to use_external_quantize_index Move the break point in encode_with_recode_loop after save_coding_context() so that restore_coding_context can work properly. Change-Id: I58f46928c8cae0ae542fd8343076670fb35681bf
--- a/vp9/encoder/vp9_encoder.c
+++ b/vp9/encoder/vp9_encoder.c
@@ -4319,13 +4319,6 @@
// update_base_skip_probs(cpi);
vpx_clear_system_state();
-#if CONFIG_RATE_CTRL
- // TODO(angiebird): This is a hack for making sure the encoder use the
- // external_quantize_index exactly. Avoid this kind of hack later.
- if (cpi->encode_command.use_external_quantize_index) {
- break;
- }
-#endif
// Dummy pack of the bitstream using up to date stats to get an
// accurate estimate of output frame size to determine if we need
@@ -4338,6 +4331,16 @@
if (frame_over_shoot_limit == 0) frame_over_shoot_limit = 1;
}
+
+#if CONFIG_RATE_CTRL
+ // This part needs to be after save_coding_context() because
+ // restore_coding_context may be called in the end of this function.
+ // TODO(angiebird): This is a hack for making sure the encoder use the
+ // external_quantize_index exactly. Avoid this kind of hack later.
+ if (cpi->encode_command.use_external_quantize_index) {
+ break;
+ }
+#endif
if (oxcf->rc_mode == VPX_Q) {
loop = 0;