Merge extquant changes from research branch patch
Change-Id: I92436b4452acc887b0fef1f8651230acf426c65e
diff --git a/av1/common/quant_common.c b/av1/common/quant_common.c
index d11838e..84ac6af 100644
--- a/av1/common/quant_common.c
+++ b/av1/common/quant_common.c
@@ -92,77 +92,47 @@
#endif // !CONFIG_EXTQUANT
#if CONFIG_EXTQUANT
-// 32, q_index = 0
-// qstep = 40 * 2^((q_index - 1)/24) q_index in [1, 255]
-#if 0
-static const uint16_t ac_qlookup_QTX[QINDEX_RANGE_8_BITS] = {
- 32, 40, 41, 42, 44, 45, 46, 48, 49, 50, 52,
- 53, 55, 57, 58, 60, 62, 63, 65, 67, 69, 71,
- 73, 76, 78, 80, 82, 85, 87, 90, 92, 95, 98,
- 101, 104, 107, 110, 113, 116, 120, 123, 127, 131, 135,
- 138, 143, 147, 151, 155, 160, 165, 170, 174, 180, 185,
- 190, 196, 202, 207, 214, 220, 226, 233, 240, 247, 254,
- 261, 269, 277, 285, 293, 302, 311, 320, 329, 339, 349,
- 359, 370, 381, 392, 403, 415, 427, 440, 453, 466, 479,
- 494, 508, 523, 538, 554, 570, 587, 604, 622, 640, 659,
- 678, 698, 718, 739, 761, 783, 806, 830, 854, 879, 905,
- 932, 959, 987, 1016, 1046, 1076, 1108, 1140, 1174, 1208, 1244,
- 1280, 1318, 1356, 1396, 1437, 1479, 1522, 1567, 1613, 1660, 1709,
- 1759, 1810, 1863, 1918, 1974, 2032, 2091, 2153, 2216, 2281, 2348,
- 2416, 2487, 2560, 2635, 2712, 2792, 2874, 2958, 3044, 3134, 3225,
- 3320, 3417, 3517, 3620, 3726, 3836, 3948, 4064, 4183, 4305, 4432,
- 4561, 4695, 4833, 4974, 5120, 5270, 5424, 5583, 5747, 5915, 6089,
- 6267, 6451, 6640, 6834, 7035, 7241, 7453, 7671, 7896, 8127, 8366,
- 8611, 8863, 9123, 9390, 9665, 9948, 10240, 10540, 10849, 11167, 11494,
- 11831, 12177, 12534, 12902, 13280, 13669, 14069, 14482, 14906, 15343, 15792,
- 16255, 16731, 17222, 17726, 18246, 18780, 19331, 19897, 20480, 21080, 21698,
- 22334, 22988, 23662, 24355, 25069, 25803, 26559, 27338, 28139, 28963, 29812,
- 30685, 31584, 32510, 33463, 34443, 35452, 36491, 37560, 38661, 39794, 40960,
- 42160, 43396, 44667, 45976, 47323, 48710, 50137, 51606, 53119, 54675, 56277,
- 57926, 59624, 61371
-};
-#else
#if CONFIG_FLEX_STEPS
static uint16_t ac_qlookup_QTX[QINDEX_RANGE_8_BITS];
#else
// 32, q_index = 0
-// Q = 40 * 2^((q_index - 1)/24) q_index in [1, 24]
+// Q = 2^((q_index + 127)/24) q_index in [1, 24]
// Q[(q_index - 1) % 24) + 1] * 2^((q_index-1)/24) q_index in [25, 255]
static const uint16_t ac_qlookup_QTX[25] = {
- 32, 40, 41, 42, 44, 45, 46, 48, 49, 50, 52,
- 53, 55, 57, 58, 60, 62, 63, 65, 67, 69, 71,
- 73, 76, 78
+ 32, 40, 41, 43, 44, 45, 47, 48, 49, 51, 52,
+ 54, 55, 57, 59, 60, 62, 64, 66, 68, 70, 72,
+ 74, 76, 78
};
-#endif
+
#ifndef NDEBUG
static const uint16_t ac_qlookup_QTX_full[QINDEX_RANGE_8_BITS] = {
- 32, 40, 41, 42, 44, 45, 46, 48, 49, 50, 52,
- 53, 55, 57, 58, 60, 62, 63, 65, 67, 69, 71,
- 73, 76, 78, 80, 82, 84, 88, 90, 92, 96, 98,
- 100, 104, 106, 110, 114, 116, 120, 124, 126, 130, 134,
- 138, 142, 146, 152, 156, 160, 164, 168, 176, 180, 184,
- 192, 196, 200, 208, 212, 220, 228, 232, 240, 248, 252,
- 260, 268, 276, 284, 292, 304, 312, 320, 328, 336, 352,
- 360, 368, 384, 392, 400, 416, 424, 440, 456, 464, 480,
- 496, 504, 520, 536, 552, 568, 584, 608, 624, 640, 656,
- 672, 704, 720, 736, 768, 784, 800, 832, 848, 880, 912,
- 928, 960, 992, 1008, 1040, 1072, 1104, 1136, 1168, 1216, 1248,
- 1280, 1312, 1344, 1408, 1440, 1472, 1536, 1568, 1600, 1664, 1696,
- 1760, 1824, 1856, 1920, 1984, 2016, 2080, 2144, 2208, 2272, 2336,
- 2432, 2496, 2560, 2624, 2688, 2816, 2880, 2944, 3072, 3136, 3200,
- 3328, 3392, 3520, 3648, 3712, 3840, 3968, 4032, 4160, 4288, 4416,
- 4544, 4672, 4864, 4992, 5120, 5248, 5376, 5632, 5760, 5888, 6144,
- 6272, 6400, 6656, 6784, 7040, 7296, 7424, 7680, 7936, 8064, 8320,
- 8576, 8832, 9088, 9344, 9728, 9984, 10240, 10496, 10752, 11264, 11520,
- 11776, 12288, 12544, 12800, 13312, 13568, 14080, 14592, 14848, 15360, 15872,
- 16128, 16640, 17152, 17664, 18176, 18688, 19456, 19968, 20480, 20992, 21504,
- 22528, 23040, 23552, 24576, 25088, 25600, 26624, 27136, 28160, 29184, 29696,
- 30720, 31744, 32256, 33280, 34304, 35328, 36352, 37376, 38912, 39936, 40960,
- 41984, 43008, 45056, 46080, 47104, 49152, 50176, 51200, 53248, 54272, 56320,
- 58368, 59392, 61440
+ 32, 40, 41, 43, 44, 45, 47, 48, 49, 51, 52,
+ 54, 55, 57, 59, 60, 62, 64, 66, 68, 70, 72,
+ 74, 76, 78, 80, 82, 86, 88, 90, 94, 96, 98,
+ 102, 104, 108, 110, 114, 118, 120, 124, 128, 132, 136,
+ 140, 144, 148, 152, 156, 160, 164, 172, 176, 180, 188,
+ 192, 196, 204, 208, 216, 220, 228, 236, 240, 248, 256,
+ 264, 272, 280, 288, 296, 304, 312, 320, 328, 344, 352,
+ 360, 376, 384, 392, 408, 416, 432, 440, 456, 472, 480,
+ 496, 512, 528, 544, 560, 576, 592, 608, 624, 640, 656,
+ 688, 704, 720, 752, 768, 784, 816, 832, 864, 880, 912,
+ 944, 960, 992, 1024, 1056, 1088, 1120, 1152, 1184, 1216, 1248,
+ 1280, 1312, 1376, 1408, 1440, 1504, 1536, 1568, 1632, 1664, 1728,
+ 1760, 1824, 1888, 1920, 1984, 2048, 2112, 2176, 2240, 2304, 2368,
+ 2432, 2496, 2560, 2624, 2752, 2816, 2880, 3008, 3072, 3136, 3264,
+ 3328, 3456, 3520, 3648, 3776, 3840, 3968, 4096, 4224, 4352, 4480,
+ 4608, 4736, 4864, 4992, 5120, 5248, 5504, 5632, 5760, 6016, 6144,
+ 6272, 6528, 6656, 6912, 7040, 7296, 7552, 7680, 7936, 8192, 8448,
+ 8704, 8960, 9216, 9472, 9728, 9984, 10240, 10496, 11008, 11264, 11520,
+ 12032, 12288, 12544, 13056, 13312, 13824, 14080, 14592, 15104, 15360, 15872,
+ 16384, 16896, 17408, 17920, 18432, 18944, 19456, 19968, 20480, 20992, 22016,
+ 22528, 23040, 24064, 24576, 25088, 26112, 26624, 27648, 28160, 29184, 30208,
+ 30720, 31744, 32768, 33792, 34816, 35840, 36864, 37888, 38912, 39936, 40960,
+ 41984, 44032, 45056, 46080, 48128, 49152, 50176, 52224, 53248, 55296, 56320,
+ 58368, 60416, 61440
};
#endif // NDEBUG
-#endif
+#endif // CONFIG_FLEX_STEPS
#else
static const int16_t ac_qlookup_QTX[QINDEX_RANGE] = {
4, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
@@ -186,7 +156,7 @@
1219, 1243, 1267, 1292, 1317, 1343, 1369, 1396, 1423, 1451, 1479, 1508, 1537,
1567, 1597, 1628, 1660, 1692, 1725, 1759, 1793, 1828,
};
-#endif
+#endif // CONFIG_EXTQUANT
#if !CONFIG_EXTQUANT
static const int16_t ac_qlookup_10_QTX[QINDEX_RANGE] = {
@@ -392,9 +362,8 @@
// for 8 bit video, Q is calculated as
// 32, q_idx = 0
- // Q = 40 * 2^((q_idx - 1)/24) q_idx in [1, 24]
+ // Q = 2^((q_idx + 127)/24) q_idx in [1, 24]
// Q[(q_idx - 1) % 24) + 1] * 2^((q_idx-1)/24) q_idx in [25, 255]
-
if (q_clamped > MAXQ_8_BITS) {
switch (bit_depth) {
case AOM_BITS_8: assert(q_clamped <= MAXQ_8_BITS);
@@ -426,7 +395,7 @@
}
return 16 * Q;
}
-#endif
+#endif // CONFIG_FLEX_STEPS
default:
assert(0 &&
"bit_depth should be AOM_BITS_8, AOM_BITS_10 or AOM_BITS_12");
@@ -444,7 +413,7 @@
assert(Q == ac_qlookup_QTX_full[q_clamped]);
}
return Q;
-#endif
+#endif // CONFIG_FLEX_STEPS
}
}
#else
@@ -478,9 +447,8 @@
// for 8 bit video, Q is calculated as
// 32, q_idx = 0
- // Q = 40 * 2^((q_idx - 1)/24) q_idx in [1, 24]
+ // Q = 2^((q_idx + 127)/24) q_idx in [1, 24]
// Q[(q_idx - 1) % 24) + 1] * 2^((q_idx-1)/24) q_idx in [25, 255]
-
if (q_clamped > MAXQ_8_BITS) {
switch (bit_depth) {
case AOM_BITS_8: assert(q_clamped <= MAXQ_8_BITS);
@@ -512,7 +480,7 @@
}
return 16 * Q;
}
-#endif
+#endif // CONFIG_FLEX_STEPS
default:
assert(0 &&
"bit_depth should be AOM_BITS_8, AOM_BITS_10 or AOM_BITS_12");
@@ -530,9 +498,10 @@
assert(Q == ac_qlookup_QTX_full[q_clamped]);
}
return Q;
-#endif
+#endif // CONFIG_FLEX_STEPS
}
}
+
#else
int16_t av1_ac_quant_QTX(int qindex, int delta, aom_bit_depth_t bit_depth) {
const int q_clamped = clamp(qindex + delta, 0, MAXQ);