Remove min_tx_size in MB_MODE_INFO
Not needed anymore.
Change-Id: I70a3333bda10de19b4e346fac414bafd12439e3e
diff --git a/av1/common/blockd.h b/av1/common/blockd.h
index 82b4cc6..fd7604e 100644
--- a/av1/common/blockd.h
+++ b/av1/common/blockd.h
@@ -230,7 +230,6 @@
BLOCK_SIZE sb_type;
PREDICTION_MODE mode;
TX_SIZE tx_size;
- TX_SIZE min_tx_size;
uint8_t inter_tx_size[INTER_TX_SIZE_BUF_LEN];
int8_t skip;
int8_t skip_mode;
diff --git a/av1/decoder/decodeframe.c b/av1/decoder/decodeframe.c
index 8ba2bfd..d53e3d0 100644
--- a/av1/decoder/decodeframe.c
+++ b/av1/decoder/decodeframe.c
@@ -515,7 +515,6 @@
}
}
mbmi->tx_size = tx_size;
- mbmi->min_tx_size = TXSIZEMIN(mbmi->min_tx_size, tx_size);
txfm_partition_update(xd->above_txfm_context + blk_col,
xd->left_txfm_context + blk_row, tx_size, tx_size);
return;
@@ -540,7 +539,6 @@
}
}
mbmi->tx_size = sub_txs;
- mbmi->min_tx_size = mbmi->tx_size;
txfm_partition_update(xd->above_txfm_context + blk_col,
xd->left_txfm_context + blk_row, sub_txs, tx_size);
return;
@@ -563,7 +561,6 @@
}
}
mbmi->tx_size = tx_size;
- mbmi->min_tx_size = TXSIZEMIN(mbmi->min_tx_size, tx_size);
txfm_partition_update(xd->above_txfm_context + blk_col,
xd->left_txfm_context + blk_row, tx_size, tx_size);
}
@@ -645,7 +642,6 @@
const int width = block_size_wide[bsize] >> tx_size_wide_log2[0];
const int height = block_size_high[bsize] >> tx_size_wide_log2[0];
- mbmi->min_tx_size = TX_SIZES_LARGEST;
for (int idy = 0; idy < height; idy += bh)
for (int idx = 0; idx < width; idx += bw)
read_tx_size_vartx(xd, mbmi, max_tx_size, 0, idy, idx, r);
@@ -653,7 +649,6 @@
mbmi->tx_size = read_tx_size(cm, xd, inter_block_tx, !mbmi->skip, r);
if (inter_block_tx)
memset(mbmi->inter_tx_size, mbmi->tx_size, sizeof(mbmi->inter_tx_size));
- mbmi->min_tx_size = mbmi->tx_size;
set_txfm_ctxs(mbmi->tx_size, xd->n8_w, xd->n8_h,
mbmi->skip && is_inter_block(mbmi), xd);
}
diff --git a/av1/encoder/block.h b/av1/encoder/block.h
index 1a0e7b7..d32b3cf 100644
--- a/av1/encoder/block.h
+++ b/av1/encoder/block.h
@@ -103,7 +103,6 @@
typedef struct {
TX_SIZE tx_size;
- TX_SIZE min_tx_size;
TX_SIZE inter_tx_size[INTER_TX_SIZE_BUF_LEN];
uint8_t blk_skip[MAX_MIB_SIZE * MAX_MIB_SIZE * 8];
TX_TYPE txk_type[TXK_TYPE_BUF_LEN];
diff --git a/av1/encoder/encodeframe.c b/av1/encoder/encodeframe.c
index fe333e9..e7f280d 100644
--- a/av1/encoder/encodeframe.c
+++ b/av1/encoder/encodeframe.c
@@ -376,7 +376,6 @@
}
if (is_inter_block(mbmi)) {
memset(mbmi->inter_tx_size, mbmi->tx_size, sizeof(mbmi->inter_tx_size));
- mbmi->min_tx_size = mbmi->tx_size;
}
}
@@ -4709,7 +4708,6 @@
}
}
- mbmi->min_tx_size = mbmi->tx_size;
av1_update_txb_context(cpi, td, dry_run, bsize, rate, mi_row, mi_col,
tile_data->allow_update_cdf);
} else {
@@ -4749,7 +4747,6 @@
#endif
av1_encode_sb(cpi, x, bsize, mi_row, mi_col, dry_run);
- if (mbmi->skip) mbmi->min_tx_size = mbmi->tx_size;
av1_tokenize_sb_vartx(cpi, td, t, dry_run, mi_row, mi_col, bsize, rate,
tile_data->allow_update_cdf);
}
@@ -4757,17 +4754,15 @@
if (!dry_run) {
if (av1_allow_intrabc(cm) && is_intrabc_block(mbmi))
td->intrabc_used_this_tile = 1;
- TX_SIZE tx_size =
- is_inter && !mbmi->skip ? mbmi->min_tx_size : mbmi->tx_size;
if (cm->tx_mode == TX_MODE_SELECT && !xd->lossless[mbmi->segment_id] &&
mbmi->sb_type > BLOCK_4X4 && !(is_inter && (mbmi->skip || seg_skip))) {
if (is_inter) {
tx_partition_count_update(cm, x, bsize, mi_row, mi_col, td->counts,
tile_data->allow_update_cdf);
} else {
- if (tx_size != get_max_rect_tx_size(bsize)) ++x->txb_split_count;
+ if (mbmi->tx_size != get_max_rect_tx_size(bsize)) ++x->txb_split_count;
}
- assert(IMPLIES(is_rect_tx(tx_size), is_rect_tx_allowed(xd, mbmi)));
+ assert(IMPLIES(is_rect_tx(mbmi->tx_size), is_rect_tx_allowed(xd, mbmi)));
} else {
int i, j;
TX_SIZE intra_tx_size;
@@ -4779,12 +4774,12 @@
intra_tx_size = tx_size_from_tx_mode(bsize, cm->tx_mode);
}
} else {
- intra_tx_size = tx_size;
+ intra_tx_size = mbmi->tx_size;
if (block_signals_txsize(bsize) && !xd->lossless[mbmi->segment_id] &&
tile_data->allow_update_cdf) {
const int tx_size_ctx = get_tx_size_context(xd);
const int32_t tx_size_cat = bsize_to_tx_size_cat(bsize, 0);
- const int depth = tx_size_to_depth(tx_size, bsize, 0);
+ const int depth = tx_size_to_depth(intra_tx_size, bsize, 0);
const int max_depths = bsize_to_max_depth(bsize, 0);
update_cdf(xd->tile_ctx->tx_size_cdf[tx_size_cat][tx_size_ctx], depth,
max_depths + 1);
@@ -4796,7 +4791,6 @@
if (mi_col + i < cm->mi_cols && mi_row + j < cm->mi_rows)
mi_8x8[mis * j + i]->mbmi.tx_size = intra_tx_size;
- mbmi->min_tx_size = intra_tx_size;
if (intra_tx_size != get_max_rect_tx_size(bsize)) ++x->txb_split_count;
}
}
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c
index f976daa..20e249e 100644
--- a/av1/encoder/rdopt.c
+++ b/av1/encoder/rdopt.c
@@ -2377,7 +2377,6 @@
MB_MODE_INFO *const mbmi = &xd->mi[0]->mbmi;
const int is_inter = is_inter_block(mbmi);
mbmi->tx_size = tx_size_from_tx_mode(bs, cm->tx_mode);
- mbmi->min_tx_size = mbmi->tx_size;
const TxSetType tx_set_type =
get_ext_tx_set_type(mbmi->tx_size, bs, is_inter, cm->reduced_tx_set_used);
prune_tx(cpi, bs, x, xd, tx_set_type, 0);
@@ -2397,8 +2396,6 @@
MB_MODE_INFO *const mbmi = &xd->mi[0]->mbmi;
mbmi->tx_size = TX_4X4;
- mbmi->min_tx_size = TX_4X4;
-
if (skip_invalid_tx_size_for_filter_intra(mbmi, AOM_PLANE_Y, rd_stats)) {
return;
}
@@ -2500,7 +2497,6 @@
sizeof(best_txk_type[0]) * TXK_TYPE_BUF_LEN);
memcpy(x->blk_skip[0], best_blk_skip, sizeof(best_blk_skip[0]) * n4);
- mbmi->min_tx_size = mbmi->tx_size;
// Reset the pruning flags.
av1_zero(x->tx_search_prune);
}
@@ -3867,8 +3863,6 @@
int s0 = x->skip_cost[skip_ctx][0];
int s1 = x->skip_cost[skip_ctx][1];
int64_t rd;
- const int max_blocks_high = max_block_high(xd, bsize, 0);
- const int max_blocks_wide = max_block_wide(xd, bsize, 0);
// TODO(debargha): enable this as a speed feature where the
// select_inter_block_yrd() function above will use a simplified search
@@ -3885,15 +3879,6 @@
rd_info_tree);
if (rd_stats->rate == INT_MAX) return INT64_MAX;
- mbmi->min_tx_size = mbmi->inter_tx_size[0];
- for (int row = 0; row < max_blocks_high; ++row) {
- for (int col = 0; col < max_blocks_wide; ++col) {
- const int index = av1_get_txb_size_index(bsize, row, col);
- mbmi->min_tx_size =
- TXSIZEMIN(mbmi->min_tx_size, mbmi->inter_tx_size[index]);
- }
- }
-
// If fast_tx_search is true, only DCT and 1D DCT were tested in
// select_inter_block_yrd() above. Do a better search for tx type with
// tx sizes already decided.
@@ -4110,7 +4095,6 @@
const MB_MODE_INFO *const mbmi = &xd->mi[0]->mbmi;
tx_rd_info->hash_value = hash;
tx_rd_info->tx_size = mbmi->tx_size;
- tx_rd_info->min_tx_size = mbmi->min_tx_size;
memcpy(tx_rd_info->blk_skip, x->blk_skip[0],
sizeof(tx_rd_info->blk_skip[0]) * n4);
av1_copy(tx_rd_info->inter_tx_size, mbmi->inter_tx_size);
@@ -4123,7 +4107,6 @@
MACROBLOCKD *const xd = &x->e_mbd;
MB_MODE_INFO *const mbmi = &xd->mi[0]->mbmi;
mbmi->tx_size = tx_rd_info->tx_size;
- mbmi->min_tx_size = tx_rd_info->min_tx_size;
memcpy(x->blk_skip[0], tx_rd_info->blk_skip,
sizeof(tx_rd_info->blk_skip[0]) * n4);
av1_copy(mbmi->inter_tx_size, tx_rd_info->inter_tx_size);
@@ -4356,7 +4339,6 @@
memset(mbmi->txk_type, DCT_DCT, sizeof(mbmi->txk_type[0]) * TXK_TYPE_BUF_LEN);
memset(mbmi->inter_tx_size, tx_size, sizeof(mbmi->inter_tx_size));
mbmi->tx_size = tx_size;
- mbmi->min_tx_size = tx_size;
memset(x->blk_skip[0], 1, sizeof(uint8_t) * n4);
rd_stats->skip = 1;
@@ -4394,7 +4376,6 @@
const int is_inter = is_inter_block(mbmi);
TX_SIZE best_tx_size[INTER_TX_SIZE_BUF_LEN] = { 0 };
TX_SIZE best_tx = max_txsize_rect_lookup[bsize];
- TX_SIZE best_min_tx_size = TX_SIZES_ALL;
uint8_t best_blk_skip[MAX_MIB_SIZE * MAX_MIB_SIZE];
const int n4 = bsize_to_num_blk(bsize);
// Get the tx_size 1 level down
@@ -4460,7 +4441,6 @@
best_rd = rd;
*rd_stats = this_rd_stats;
best_tx = mbmi->tx_size;
- best_min_tx_size = mbmi->min_tx_size;
memcpy(best_blk_skip, x->blk_skip[0], sizeof(best_blk_skip[0]) * n4);
found = 1;
av1_copy(best_tx_size, mbmi->inter_tx_size);
@@ -4479,7 +4459,6 @@
// array into mbmi.
av1_copy(mbmi->inter_tx_size, best_tx_size);
mbmi->tx_size = best_tx;
- mbmi->min_tx_size = best_min_tx_size;
memcpy(x->blk_skip[0], best_blk_skip, sizeof(best_blk_skip[0]) * n4);
// Save the RD search results into tx_rd_record.
@@ -9676,7 +9655,6 @@
for (i = 0; i < num_planes; ++i)
memcpy(ctx->blk_skip[i], x->blk_skip[i],
sizeof(uint8_t) * ctx->num_4x4_blk);
- best_mbmode.min_tx_size = mbmi->min_tx_size;
av1_copy(best_mbmode.txk_type, mbmi->txk_type);
rd_cost->rate +=
(rd_stats_y.rate + rd_stats_uv.rate - best_rate_y - best_rate_uv);
@@ -9809,7 +9787,6 @@
: max_txsize_rect_lookup[bsize];
memset(best_mbmode.inter_tx_size, best_mbmode.tx_size,
sizeof(best_mbmode.inter_tx_size));
- best_mbmode.min_tx_size = best_mbmode.tx_size;
set_txfm_ctxs(best_mbmode.tx_size, xd->n8_w, xd->n8_h,
best_mbmode.skip && is_inter_block(mbmi), xd);