[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/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;