From ebcc6605c1bd224fcb26494d74a1db81e981f3ab Mon Sep 17 00:00:00 2001
From: Yaowu Xu <yaowu@google.com>
Date: Wed, 7 Dec 2011 20:08:31 -0800
Subject: [PATCH] fixed a crash caused invalid Q choice

The commit fixed a problem by capping cpi->active_best_quality to be
smaller than cpi->worst_quality.  Also fixed a few line of code that
was misplaced.

Change-Id: Ie908264b72140c669122a0afde5d886619c33474
---
 vp8/encoder/onyx_if.c  |  3 +++
 vp8/encoder/quantize.c | 15 +++++++--------
 2 files changed, 10 insertions(+), 8 deletions(-)

diff --git a/vp8/encoder/onyx_if.c b/vp8/encoder/onyx_if.c
index 0b95a02e21..6d92906758 100644
--- a/vp8/encoder/onyx_if.c
+++ b/vp8/encoder/onyx_if.c
@@ -4180,6 +4180,9 @@ static void encode_frame_to_data_rate
     if (cpi->active_best_quality < cpi->best_quality)
         cpi->active_best_quality = cpi->best_quality;
 
+    if (cpi->active_best_quality > cpi->worst_quality)
+        cpi->active_best_quality = cpi->worst_quality;
+
     if ( cpi->active_worst_quality < cpi->active_best_quality )
         cpi->active_worst_quality = cpi->active_best_quality;
 
diff --git a/vp8/encoder/quantize.c b/vp8/encoder/quantize.c
index 926a1cc798..d8a52f1ac1 100644
--- a/vp8/encoder/quantize.c
+++ b/vp8/encoder/quantize.c
@@ -965,18 +965,17 @@ void vp8cx_init_quantizer(VP8_COMP *cpi)
     int i;
     int quant_val;
     int Q;
-
-    int zbin_boost[16] = {0, 0, 8, 10, 12, 14, 16, 20, 24, 28, 32, 36, 40, 44, 44, 44};
-
+    int zbin_boost[16] = { 0,  0,  8, 10, 12, 14, 16, 20,
+                          24, 28, 32, 36, 40, 44, 44, 44};
     int qrounding_factor = 48;
-#if CONFIG_EXTEND_QRANGE
-    int qzbin_factor = (vp8_dc_quant(Q,0) < 148) ? 84 : 80;
-#else
-    int qzbin_factor = (vp8_dc_quant(Q,0) < 37) ? 84: 80;
-#endif
 
     for (Q = 0; Q < QINDEX_RANGE; Q++)
     {
+#if CONFIG_EXTEND_QRANGE
+        int qzbin_factor = (vp8_dc_quant(Q,0) < 148) ? 84 : 80;
+#else
+        int qzbin_factor = (vp8_dc_quant(Q,0) < 37) ? 84: 80;
+#endif
         // dc values
         quant_val = vp8_dc_quant(Q, cpi->common.y1dc_delta_q);
         cpi->Y1quant_fast[Q][0] = (1 << 16) / quant_val;
-- 
GitLab