shithub: libvpx

Download patch

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;