Refactor/Change the entropy context for transforms
The change makes the entropy context for transforms use
the same mechanism as with and without lv_map.
For the non-lv-map case the context is now based on the
the larger transform dim for 2:1 rect transforms. The context
is now the average for 4:1 rect transforms for both lv-map and
non-lv-map cases.
There is one small fix for level map for getting the correct
rate when skip is set.
BDRATE: lowres, 30 frames, speed 1: -0.15% gain for the
non-lv-map case on the baseline.
Change-Id: I06a583d33bef68202d72a88e077f8d31cc5e7fe4
diff --git a/av1/encoder/encodetxb.c b/av1/encoder/encodetxb.c
index cbdc9f6..bf35d93 100644
--- a/av1/encoder/encodetxb.c
+++ b/av1/encoder/encodetxb.c
@@ -147,7 +147,7 @@
int16_t eob_pt = get_eob_pos_token(eob, &eob_extra);
int16_t dummy;
int16_t max_eob_pt = get_eob_pos_token(seg_eob, &dummy);
- TX_SIZE txs_ctx = get_txsize_context(tx_size);
+ TX_SIZE txs_ctx = get_txsize_entropy_ctx(tx_size);
for (int i = 1; i < max_eob_pt; i++) {
int eob_pos_ctx = av1_get_eob_pos_ctx(tx_type, i);
@@ -322,7 +322,7 @@
uint16_t eob, TXB_CTX *txb_ctx) {
MB_MODE_INFO *mbmi = &xd->mi[0]->mbmi;
const PLANE_TYPE plane_type = get_plane_type(plane);
- const TX_SIZE txs_ctx = get_txsize_context(tx_size);
+ const TX_SIZE txs_ctx = get_txsize_entropy_ctx(tx_size);
const TX_TYPE tx_type =
av1_get_tx_type(plane_type, xd, blk_row, blk_col, block, tx_size);
const SCAN_ORDER *const scan_order = get_scan(cm, tx_size, tx_type, mbmi);
@@ -646,7 +646,7 @@
int blk_row, int blk_col, int block, TX_SIZE tx_size,
TXB_CTX *txb_ctx) {
MACROBLOCKD *const xd = &x->e_mbd;
- TX_SIZE txs_ctx = get_txsize_context(tx_size);
+ TX_SIZE txs_ctx = get_txsize_entropy_ctx(tx_size);
const PLANE_TYPE plane_type = get_plane_type(plane);
const TX_TYPE tx_type =
av1_get_tx_type(plane_type, xd, blk_row, blk_col, block, tx_size);
@@ -2084,7 +2084,7 @@
TXB_CTX *txb_ctx, int fast_mode) {
MACROBLOCKD *const xd = &x->e_mbd;
const PLANE_TYPE plane_type = get_plane_type(plane);
- const TX_SIZE txs_ctx = get_txsize_context(tx_size);
+ const TX_SIZE txs_ctx = get_txsize_entropy_ctx(tx_size);
const TX_TYPE tx_type =
av1_get_tx_type(plane_type, xd, blk_row, blk_col, block, tx_size);
const MB_MODE_INFO *mbmi = &xd->mi[0]->mbmi;
@@ -2200,7 +2200,7 @@
DECLARE_ALIGNED(16, uint8_t, level_counts[MAX_TX_SQUARE]);
const uint8_t allow_update_cdf = args->allow_update_cdf;
- TX_SIZE txsize_ctx = get_txsize_context(tx_size);
+ TX_SIZE txsize_ctx = get_txsize_entropy_ctx(tx_size);
FRAME_CONTEXT *ec_ctx = xd->tile_ctx;
memcpy(tcoeff, qcoeff, sizeof(*tcoeff) * seg_eob);