[NORMATIVE] Update txfm context using tx_size in intra mode When a coding block is coded in the intra mode, always update its tx size regardless if it is coded as skip or not. BUG=aomedia:1066 Change-Id: I807bb5a5c44609adeaf54fe4e1bc805477751332
diff --git a/av1/decoder/decodeframe.c b/av1/decoder/decodeframe.c index aed335b..2eec2fd 100644 --- a/av1/decoder/decodeframe.c +++ b/av1/decoder/decodeframe.c
@@ -674,7 +674,8 @@ 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, xd); + set_txfm_ctxs(mbmi->tx_size, xd->n8_w, xd->n8_h, + mbmi->skip && is_inter_block(mbmi), xd); } if (!inter_block_tx) read_filter_intra_mode_info(xd, r);
diff --git a/av1/encoder/bitstream.c b/av1/encoder/bitstream.c index dfd3b50..0c8d129 100644 --- a/av1/encoder/bitstream.c +++ b/av1/encoder/bitstream.c
@@ -1702,10 +1702,11 @@ write_tx_size_vartx(cm, xd, mbmi, max_tx_size, 0, idy, idx, w); } else { write_selected_tx_size(cm, xd, w); - set_txfm_ctxs(mbmi->tx_size, xd->n8_w, xd->n8_h, skip, xd); + set_txfm_ctxs(mbmi->tx_size, xd->n8_w, xd->n8_h, 0, xd); } } else { - set_txfm_ctxs(mbmi->tx_size, xd->n8_w, xd->n8_h, skip, xd); + set_txfm_ctxs(mbmi->tx_size, xd->n8_w, xd->n8_h, + skip && is_inter_block(mbmi), xd); } if (!is_inter_tx) write_filter_intra_mode_info(xd, mbmi, w);
diff --git a/av1/encoder/encodeframe.c b/av1/encoder/encodeframe.c index 1e78ee5..e329506 100644 --- a/av1/encoder/encodeframe.c +++ b/av1/encoder/encodeframe.c
@@ -4931,7 +4931,8 @@ tx_size = (bsize > BLOCK_4X4) ? tx_size : TX_4X4; } mbmi->tx_size = tx_size; - set_txfm_ctxs(tx_size, xd->n8_w, xd->n8_h, (mbmi->skip || seg_skip), xd); + set_txfm_ctxs(tx_size, xd->n8_w, xd->n8_h, + (mbmi->skip || seg_skip) && is_inter_block(mbmi), xd); } #if CONFIG_CFL CFL_CTX *const cfl = &xd->cfl;
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c index 62ddafa..0e2c0da 100644 --- a/av1/encoder/rdopt.c +++ b/av1/encoder/rdopt.c
@@ -9963,8 +9963,8 @@ 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, - xd); + set_txfm_ctxs(best_mbmode.tx_size, xd->n8_w, xd->n8_h, + best_mbmode.skip && is_inter_block(mbmi), xd); // Set up color-related variables for skip mode. best_mbmode.uv_mode = UV_DC_PRED;