summaryrefslogtreecommitdiff
path: root/vp9/common
diff options
context:
space:
mode:
authorPaul Wilkins <paulwilkins@google.com>2013-04-04 17:40:39 +0100
committerGerrit Code Review <gerrit@gerrit.golo.chromium.org>2013-05-07 15:34:17 -0700
commit9afb6700c20d1aae858f6e0177b40c3e1682b88c (patch)
treeca2b6819ed2c9f494a38090f6c49c5c314e50e47 /vp9/common
parent67266cb2134d275c9f06754bc0e861492cd99dfe (diff)
downloadlibvpx-9afb6700c20d1aae858f6e0177b40c3e1682b88c.tar
libvpx-9afb6700c20d1aae858f6e0177b40c3e1682b88c.tar.gz
libvpx-9afb6700c20d1aae858f6e0177b40c3e1682b88c.tar.bz2
libvpx-9afb6700c20d1aae858f6e0177b40c3e1682b88c.zip
Adjust q range
Skip Q values between the q.0 mode and a real q of 2.0 as these are not valuable from an RD perspective. Change-Id: I110c4858c57f97315953f4d88a2596d4764360df
Diffstat (limited to 'vp9/common')
-rw-r--r--vp9/common/vp9_quant_common.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/vp9/common/vp9_quant_common.c b/vp9/common/vp9_quant_common.c
index 5907b4f58..295c8e738 100644
--- a/vp9/common/vp9_quant_common.c
+++ b/vp9/common/vp9_quant_common.c
@@ -15,7 +15,7 @@
static int16_t dc_qlookup[QINDEX_RANGE];
static int16_t ac_qlookup[QINDEX_RANGE];
-#define ACDC_MIN 4
+#define ACDC_MIN 8
// TODO(dkovalev) move to common and reuse
static double poly3(double a, double b, double c, double d, double x) {
@@ -25,10 +25,19 @@ static double poly3(double a, double b, double c, double d, double x) {
void vp9_init_quant_tables() {
int i, val = 4;
- for (i = 0; i < QINDEX_RANGE; i++) {
+ // A "real" q of 1.0 forces lossless mode.
+ // In practice non lossless Q's between 1.0 and 2.0 (represented here by
+ // integer values from 5-7 give poor rd results (lower psnr and often
+ // larger size than the lossless encode. To block out those "not very useful"
+ // values we increment the ac and dc q lookup values by 4 after position 0.
+ ac_qlookup[0] = val;
+ dc_qlookup[0] = val;
+ val += 4;
+
+ for (i = 1; i < QINDEX_RANGE; i++) {
const int ac_val = val;
- val = (int)(val * 1.02);
+ val = (int)(val * 1.01975);
if (val == ac_val)
++val;