Fix for var_tx context update
The tx_partition_set_contexts function changes tx_size even for blocks coded with a rectangular transform. This causes an internal rd inconsistency when using all of CONFIG_VAR_TX, CONFIG_RECT_TX, CONFIG_EXT_TX. Change-Id: Ia45d4a8893b0961534219bb96d9652719038c7a1
This commit is contained in:
@@ -5236,11 +5236,14 @@ static void encode_superblock(AV1_COMP *cpi, ThreadData *td, TOKENEXTRA **t,
|
|||||||
#if CONFIG_VAR_TX
|
#if CONFIG_VAR_TX
|
||||||
if (cm->tx_mode == TX_MODE_SELECT && mbmi->sb_type >= BLOCK_8X8 &&
|
if (cm->tx_mode == TX_MODE_SELECT && mbmi->sb_type >= BLOCK_8X8 &&
|
||||||
is_inter_block(mbmi) && !(mbmi->skip || seg_skip)) {
|
is_inter_block(mbmi) && !(mbmi->skip || seg_skip)) {
|
||||||
if (dry_run) tx_partition_set_contexts(cm, xd, bsize, mi_row, mi_col);
|
|
||||||
#if CONFIG_EXT_TX && CONFIG_RECT_TX
|
#if CONFIG_EXT_TX && CONFIG_RECT_TX
|
||||||
if (is_rect_tx(mbmi->tx_size)) {
|
if (is_rect_tx(mbmi->tx_size)) {
|
||||||
set_txfm_ctxs(mbmi->tx_size, xd->n8_w, xd->n8_h, xd);
|
set_txfm_ctxs(mbmi->tx_size, xd->n8_w, xd->n8_h, xd);
|
||||||
|
} else {
|
||||||
|
if (dry_run) tx_partition_set_contexts(cm, xd, bsize, mi_row, mi_col);
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
if (dry_run) tx_partition_set_contexts(cm, xd, bsize, mi_row, mi_col);
|
||||||
#endif // CONFIG_EXT_TX && CONFIG_RECT_TX
|
#endif // CONFIG_EXT_TX && CONFIG_RECT_TX
|
||||||
} else {
|
} else {
|
||||||
TX_SIZE tx_size;
|
TX_SIZE tx_size;
|
||||||
|
|||||||
Reference in New Issue
Block a user