Commit 9afb6700 by Paul Wilkins Committed by Gerrit Code Review

```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```
parent 67266cb2
 ... @@ -15,7 +15,7 @@ ... @@ -15,7 +15,7 @@ static int16_t dc_qlookup[QINDEX_RANGE]; static int16_t dc_qlookup[QINDEX_RANGE]; static int16_t ac_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 // TODO(dkovalev) move to common and reuse static double poly3(double a, double b, double c, double d, double x) { 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) { ... @@ -25,10 +25,19 @@ static double poly3(double a, double b, double c, double d, double x) { void vp9_init_quant_tables() { void vp9_init_quant_tables() { int i, val = 4; 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; const int ac_val = val; val = (int)(val * 1.02); val = (int)(val * 1.01975); if (val == ac_val) if (val == ac_val) ++val; ++val; ... ...
 ... @@ -161,6 +161,11 @@ static int calculate_minq_index(double maxq, ... @@ -161,6 +161,11 @@ static int calculate_minq_index(double maxq, const double minqtarget = MIN(((x3 * maxq + x2) * maxq + x1) * maxq + c, const double minqtarget = MIN(((x3 * maxq + x2) * maxq + x1) * maxq + c, maxq); maxq); // Special case handling to deal with the step from q2.0 // down to lossless mode represented by q 1.0. if (minqtarget <= 2.0) return 0; for (i = 0; i < QINDEX_RANGE; i++) { for (i = 0; i < QINDEX_RANGE; i++) { if (minqtarget <= vp9_convert_qindex_to_q(i)) if (minqtarget <= vp9_convert_qindex_to_q(i)) return i; return i; ... ...
 ... @@ -263,10 +263,6 @@ void vp9_set_quantizer(struct VP9_COMP *cpi, int Q) { ... @@ -263,10 +263,6 @@ void vp9_set_quantizer(struct VP9_COMP *cpi, int Q) { cm->base_qindex = Q; cm->base_qindex = Q; // Set lossless mode if (cm->base_qindex <= 4) cm->base_qindex = 0; // if any of the delta_q values are changing update flag will // if any of the delta_q values are changing update flag will // have to be set. // have to be set. cm->y_dc_delta_q = 0; cm->y_dc_delta_q = 0; ... ...
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!