Fix a bug related to use_external_quantize_index
authorangiebird <angiebird@google.com>
Tue, 19 Nov 2019 21:58:36 +0000 (13:58 -0800)
committerangiebird <angiebird@google.com>
Wed, 20 Nov 2019 18:41:16 +0000 (10:41 -0800)
Move the break point in encode_with_recode_loop after
save_coding_context() so that restore_coding_context
can work properly.

Change-Id: I58f46928c8cae0ae542fd8343076670fb35681bf

vp9/encoder/vp9_encoder.c

index 511ffec..8ca7eb6 100644 (file)
@@ -4319,13 +4319,6 @@ static void encode_with_recode_loop(VP9_COMP *cpi, size_t *size,
     // 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
@@ -4339,6 +4332,16 @@ static void encode_with_recode_loop(VP9_COMP *cpi, size_t *size,
       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;
     } else {