From df4e79f7f7b1c5f62fdb80575bab6ce1b2be7928 Mon Sep 17 00:00:00 2001
From: Paul Wilkins <paulwilkins@google.com>
Date: Fri, 16 Dec 2011 10:23:01 +0000
Subject: [PATCH] Extend to 256 Q steps.

This commit extends the number of Q steps to 256 from 128.
The q_trans[] array has been altered to distribute available Q index values
(using the current 64 steps available as input parameters) evenly across the
available range. This is coupled with the fact that each Q step where possible
now equates to a fixed % change in the quantizer. This may want refinement
later especially in terms of the granularity at the high quality end but is a
reasonable starting point.

Change-Id: I2aaa6874fa10ce05c958dd182947ce39f6f1eecb
---
 vp8/common/onyxc_int.h    | 6 +++---
 vp8/common/quant_common.c | 7 ++++---
 vp8/encoder/onyx_if.c     | 6 +++---
 3 files changed, 10 insertions(+), 9 deletions(-)

diff --git a/vp8/common/onyxc_int.h b/vp8/common/onyxc_int.h
index 64c305a8d4..0e078ebb88 100644
--- a/vp8/common/onyxc_int.h
+++ b/vp8/common/onyxc_int.h
@@ -33,13 +33,13 @@ void vp8_initialize_common(void);
 
 #define MINQ 0
 
-/*#if CONFIG_EXTEND_QRANGE
+#if CONFIG_EXTEND_QRANGE
 #define MAXQ 255
 #define QINDEX_BITS 8
-#else*/
+#else
 #define MAXQ 127
 #define QINDEX_BITS 7
-//#endif
+#endif
 
 
 #define QINDEX_RANGE (MAXQ + 1)
diff --git a/vp8/common/quant_common.c b/vp8/common/quant_common.c
index 6c81607ccc..f3569f9627 100644
--- a/vp8/common/quant_common.c
+++ b/vp8/common/quant_common.c
@@ -89,7 +89,8 @@ void vp8_init_quant_tables()
     {
         ac_qlookup[i] = current_val;
         //current_val = (int)((double)current_val * 1.045);
-        current_val = (int)((double)current_val * 1.04);
+        //current_val = (int)((double)current_val * 1.04);
+        current_val = (int)((double)current_val * 1.018);
         if ( current_val == last_val )
             current_val++;
         last_val = current_val;
@@ -99,8 +100,8 @@ void vp8_init_quant_tables()
         dc_qlookup[i] = (0.000000305 * ac_val * ac_val * ac_val) +
                         (-0.00065 * ac_val * ac_val) +
                         (0.9 * ac_val) + 0.5;
-        if ( dc_qlookup[i] > dc_max )
-            dc_qlookup[i] = dc_max;
+        //if ( dc_qlookup[i] > dc_max )
+        //    dc_qlookup[i] = dc_max;
         if ( dc_qlookup[i] < ACDC_MIN )
             dc_qlookup[i] = ACDC_MIN;
     }
diff --git a/vp8/encoder/onyx_if.c b/vp8/encoder/onyx_if.c
index 9a5ce38a62..fe8f1ab785 100644
--- a/vp8/encoder/onyx_if.c
+++ b/vp8/encoder/onyx_if.c
@@ -1857,7 +1857,7 @@ void vp8_alloc_compressor_data(VP8_COMP *cpi)
 //
 // Table that converts 0-63 Q range values passed in outside to the Qindex
 // range used internally.
-/*#if CONFIG_EXTEND_QRANGE
+#if CONFIG_EXTEND_QRANGE
 static const int q_trans[] =
 {
      0,    4,   8,  12,  16,  20,  24,  28,
@@ -1869,7 +1869,7 @@ static const int q_trans[] =
     192, 196, 200, 204, 208, 212, 216, 220,
     224, 228, 232, 236, 240, 244, 249, 255,
 };
-#else*/
+#else
 static const int q_trans[] =
 {
     0,   1,  2,  3,  4,  5,  7,  8,
@@ -1881,7 +1881,7 @@ static const int q_trans[] =
     82,  85, 88, 91, 94, 97, 100, 103,
     106, 109, 112, 115, 118, 121, 124, 127,
 };
-//#endif
+#endif
 
 int vp8_reverse_trans(int x)
 {
-- 
GitLab