Use correct bsize in vartx sub8x8 max tx_size lookup
This fixes crashes due to infinite recursion when var_tx,
ext_tx and rect_tx are enabled without cb4x4. This
is the first part of an ongoing fix for this experiment
interaction.
Change-Id: I674f28294666102aff2265f6b6112816cac17378
diff --git a/av1/encoder/bitstream.c b/av1/encoder/bitstream.c
index 1c53803..69aab4b 100644
--- a/av1/encoder/bitstream.c
+++ b/av1/encoder/bitstream.c
@@ -1742,7 +1742,7 @@
!(is_inter && skip) && !xd->lossless[segment_id]) {
#if CONFIG_VAR_TX
if (is_inter) { // This implies skip flag is 0.
- const TX_SIZE max_tx_size = max_txsize_rect_lookup[bsize];
+ const TX_SIZE max_tx_size = get_vartx_max_txsize(mbmi, bsize);
const int bh = tx_size_high_unit[max_tx_size];
const int bw = tx_size_wide_unit[max_tx_size];
const int width = block_size_wide[bsize] >> tx_size_wide_log2[0];
@@ -2442,7 +2442,7 @@
init_token_stats(&token_stats);
if (is_inter_block(mbmi)) {
- const TX_SIZE max_tx_size = max_txsize_rect_lookup[plane_bsize];
+ const TX_SIZE max_tx_size = get_vartx_max_txsize(mbmi, plane_bsize);
int block = 0;
const int step =
tx_size_wide_unit[max_tx_size] * tx_size_high_unit[max_tx_size];
diff --git a/av1/encoder/encodeframe.c b/av1/encoder/encodeframe.c
index b9f0a9e..910a0b0 100644
--- a/av1/encoder/encodeframe.c
+++ b/av1/encoder/encodeframe.c
@@ -5743,7 +5743,7 @@
MACROBLOCKD *xd = &x->e_mbd;
const int mi_width = block_size_wide[plane_bsize] >> tx_size_wide_log2[0];
const int mi_height = block_size_high[plane_bsize] >> tx_size_wide_log2[0];
- TX_SIZE max_tx_size = max_txsize_rect_lookup[plane_bsize];
+ TX_SIZE max_tx_size = get_vartx_max_txsize(&xd->mi[0]->mbmi, plane_bsize);
const int bh = tx_size_high_unit[max_tx_size];
const int bw = tx_size_wide_unit[max_tx_size];
int idx, idy;
@@ -5801,7 +5801,7 @@
int mi_row, int mi_col) {
const int mi_width = block_size_wide[plane_bsize] >> tx_size_wide_log2[0];
const int mi_height = block_size_high[plane_bsize] >> tx_size_high_log2[0];
- TX_SIZE max_tx_size = max_txsize_rect_lookup[plane_bsize];
+ TX_SIZE max_tx_size = get_vartx_max_txsize(&xd->mi[0]->mbmi, plane_bsize);
const int bh = tx_size_high_unit[max_tx_size];
const int bw = tx_size_wide_unit[max_tx_size];
int idx, idy;
diff --git a/av1/encoder/encodemb.c b/av1/encoder/encodemb.c
index 4199380..bd1d648 100644
--- a/av1/encoder/encodemb.c
+++ b/av1/encoder/encodemb.c
@@ -1320,7 +1320,7 @@
const BLOCK_SIZE plane_bsize = get_plane_block_size(bsize, pd);
const int mi_width = block_size_wide[plane_bsize] >> tx_size_wide_log2[0];
const int mi_height = block_size_high[plane_bsize] >> tx_size_wide_log2[0];
- const TX_SIZE max_tx_size = max_txsize_rect_lookup[plane_bsize];
+ const TX_SIZE max_tx_size = get_vartx_max_txsize(mbmi, plane_bsize);
const BLOCK_SIZE txb_size = txsize_to_bsize[max_tx_size];
const int bw = block_size_wide[txb_size] >> tx_size_wide_log2[0];
const int bh = block_size_high[txb_size] >> tx_size_wide_log2[0];
diff --git a/av1/encoder/tokenize.c b/av1/encoder/tokenize.c
index a2d1818..f48493b 100644
--- a/av1/encoder/tokenize.c
+++ b/av1/encoder/tokenize.c
@@ -731,7 +731,7 @@
#endif
const int mi_width = block_size_wide[plane_bsize] >> tx_size_wide_log2[0];
const int mi_height = block_size_high[plane_bsize] >> tx_size_wide_log2[0];
- const TX_SIZE max_tx_size = max_txsize_rect_lookup[plane_bsize];
+ const TX_SIZE max_tx_size = get_vartx_max_txsize(mbmi, plane_bsize);
const BLOCK_SIZE txb_size = txsize_to_bsize[max_tx_size];
int bw = block_size_wide[txb_size] >> tx_size_wide_log2[0];
int bh = block_size_high[txb_size] >> tx_size_wide_log2[0];