Add the q_segmentation experiment
This experiment implements low-cost delta q signalling on a per-block basis
for all non-inter frame types, which would allow for more efficient AQ
which bases its decisions on temporal information.
Based on an Intel proposal from March.
Change-Id: I18e73d8b12f4caa0b165df12c58ab506271bec03
diff --git a/av1/common/entropymode.c b/av1/common/entropymode.c
index 34e7189..705d265 100644
--- a/av1/common/entropymode.c
+++ b/av1/common/entropymode.c
@@ -1746,6 +1746,21 @@
AOM_CDF8(4096, 8192, 12288, 16384, 20480, 24576, 28672)
};
+#if CONFIG_Q_SEGMENTATION
+static const aom_cdf_prob
+ default_q_seg_tree_cdf[Q_SEGMENT_CDF_COUNT][CDF_SIZE(MAX_SEGMENTS)] = {
+ {
+ AOM_CDF8(5622, 7893, 16093, 18233, 27809, 28373, 32533),
+ },
+ {
+ AOM_CDF8(14274, 18230, 22557, 24935, 29980, 30851, 32344),
+ },
+ {
+ AOM_CDF8(27527, 28487, 28723, 28890, 32397, 32647, 32679),
+ },
+ };
+#endif
+
static const aom_cdf_prob
default_tx_size_cdf[MAX_TX_DEPTH][TX_SIZE_CONTEXTS][CDF_SIZE(MAX_TX_DEPTH +
1)] = {
@@ -3521,6 +3536,10 @@
av1_copy(fc->skip_probs, default_skip_probs);
#endif // CONFIG_NEW_MULTISYMBOL
av1_copy(fc->seg.tree_cdf, default_seg_tree_cdf);
+#if CONFIG_Q_SEGMENTATION
+ for (int i = 0; i < Q_SEGMENT_CDF_COUNT; i++)
+ av1_copy(fc->seg.q_seg_cdf[i], default_q_seg_tree_cdf[i]);
+#endif
av1_copy(fc->tx_size_cdf, default_tx_size_cdf);
av1_copy(fc->delta_q_prob, default_delta_q_probs);
av1_copy(fc->delta_q_cdf, default_delta_q_cdf);