NEW_MULTISYMBOL: support RECT_TX_EXT.
Change-Id: I0b6f56d2bf0482cfbf45525828d6daa6aea187e5
diff --git a/av1/common/entropy.c b/av1/common/entropy.c
index 01d5452..3ac9c82 100644
--- a/av1/common/entropy.c
+++ b/av1/common/entropy.c
@@ -2309,6 +2309,9 @@
#if CONFIG_NEW_MULTISYMBOL
AVERAGE_TILE_CDFS(palette_y_mode_cdf)
AVERAGE_TILE_CDFS(palette_uv_mode_cdf)
+#if CONFIG_RECT_TX_EXT && (CONFIG_EXT_TX || CONFIG_VAR_TX)
+ AVERAGE_TILE_CDFS(quarter_tx_size_cdf)
+#endif
#endif
}
diff --git a/av1/common/entropymode.c b/av1/common/entropymode.c
index f646a45..0cdbc13 100644
--- a/av1/common/entropymode.c
+++ b/av1/common/entropymode.c
@@ -2484,6 +2484,11 @@
#if CONFIG_RECT_TX_EXT && (CONFIG_EXT_TX || CONFIG_VAR_TX)
static const aom_prob default_quarter_tx_size_prob = 192;
+#if CONFIG_NEW_MULTISYMBOL
+static const aom_cdf_prob default_quarter_tx_size_cdf[CDF_SIZE(2)] = {
+ AOM_ICDF(192 * 128), AOM_ICDF(32768), 0
+};
+#endif
#endif
#if CONFIG_LOOP_RESTORATION
@@ -5583,6 +5588,9 @@
#endif // CONFIG_COMPOUND_SINGLEREF
#if CONFIG_RECT_TX_EXT && (CONFIG_EXT_TX || CONFIG_VAR_TX)
fc->quarter_tx_size_prob = default_quarter_tx_size_prob;
+#if CONFIG_NEW_MULTISYMBOL
+ av1_copy(fc->quarter_tx_size_cdf, default_quarter_tx_size_cdf);
+#endif // CONFIG_NEW_MULTISYMBOL
#endif
#if CONFIG_VAR_TX
av1_copy(fc->txfm_partition_prob, default_txfm_partition_probs);
diff --git a/av1/common/entropymode.h b/av1/common/entropymode.h
index fbebf15..8233001 100644
--- a/av1/common/entropymode.h
+++ b/av1/common/entropymode.h
@@ -309,6 +309,9 @@
#endif // CONFIG_COMPOUND_SINGLEREF
#if CONFIG_RECT_TX_EXT && (CONFIG_EXT_TX || CONFIG_VAR_TX)
aom_prob quarter_tx_size_prob;
+#if CONFIG_NEW_MULTISYMBOL
+ aom_cdf_prob quarter_tx_size_cdf[CDF_SIZE(2)];
+#endif
#endif
#if CONFIG_VAR_TX
aom_prob txfm_partition_prob[TXFM_PARTITION_CONTEXTS];
diff --git a/av1/decoder/decodemv.c b/av1/decoder/decodemv.c
index ba15a8c..70cadf0 100644
--- a/av1/decoder/decodemv.c
+++ b/av1/decoder/decodemv.c
@@ -551,10 +551,14 @@
int quarter_tx;
if (quarter_txsize_lookup[bsize] != max_txsize_lookup[bsize]) {
+#if CONFIG_NEW_MULTISYMBOL
+ quarter_tx =
+ aom_read_symbol(r, cm->fc->quarter_tx_size_cdf, 2, ACCT_STR);
+#else
quarter_tx = aom_read(r, cm->fc->quarter_tx_size_prob, ACCT_STR);
FRAME_COUNTS *counts = xd->counts;
-
if (counts) ++counts->quarter_tx_size[quarter_tx];
+#endif
} else {
quarter_tx = 1;
}
@@ -2970,8 +2974,13 @@
int quarter_tx;
if (quarter_txsize_lookup[bsize] != max_tx_size) {
+#if CONFIG_NEW_MULTISYMBOL
+ quarter_tx =
+ aom_read_symbol(r, cm->fc->quarter_tx_size_cdf, 2, ACCT_STR);
+#else
quarter_tx = aom_read(r, cm->fc->quarter_tx_size_prob, ACCT_STR);
if (xd->counts) ++xd->counts->quarter_tx_size[quarter_tx];
+#endif
} else {
quarter_tx = 1;
}
diff --git a/av1/encoder/bitstream.c b/av1/encoder/bitstream.c
index 9ec5e1f..42d92cc 100644
--- a/av1/encoder/bitstream.c
+++ b/av1/encoder/bitstream.c
@@ -381,9 +381,14 @@
tx_size_cat + 2);
#if CONFIG_RECT_TX_EXT && (CONFIG_EXT_TX || CONFIG_VAR_TX)
if (is_quarter_tx_allowed(xd, mbmi, is_inter) && tx_size != coded_tx_size)
+#if CONFIG_NEW_MULTISYMBOL
+ aom_write_symbol(w, tx_size == quarter_txsize_lookup[bsize],
+ cm->fc->quarter_tx_size_cdf, 2);
+#else
aom_write(w, tx_size == quarter_txsize_lookup[bsize],
cm->fc->quarter_tx_size_prob);
#endif
+#endif
}
}
@@ -1791,8 +1796,13 @@
quarter_txsize_lookup[bsize] != max_tx_size &&
(mbmi->tx_size == quarter_txsize_lookup[bsize] ||
mbmi->tx_size == max_tx_size)) {
+#if CONFIG_NEW_MULTISYMBOL
+ aom_write_symbol(w, mbmi->tx_size != max_tx_size,
+ cm->fc->quarter_tx_size_cdf, 2);
+#else
aom_write(w, mbmi->tx_size != max_tx_size,
cm->fc->quarter_tx_size_prob);
+#endif
}
#endif
} else {