Modify av1_read_tx_type for lv_map exp Change-Id: I422dfd9d7afe9f7baa04a962e19c8a92d5c12eeb
diff --git a/av1/decoder/decodemv.c b/av1/decoder/decodemv.c index 20b6d3c..762371b 100644 --- a/av1/decoder/decodemv.c +++ b/av1/decoder/decodemv.c
@@ -739,12 +739,15 @@ } #endif // CONFIG_EXT_INTRA -static void read_tx_type(const AV1_COMMON *const cm, MACROBLOCKD *xd, - MB_MODE_INFO *mbmi, +void av1_read_tx_type(const AV1_COMMON *const cm, MACROBLOCKD *xd, #if CONFIG_SUPERTX - int supertx_enabled, + int supertx_enabled, #endif - aom_reader *r) { +#if CONFIG_LV_MAP + int block, +#endif + aom_reader *r) { + MB_MODE_INFO *mbmi = &xd->mi[0]->mbmi; const int inter_block = is_inter_block(mbmi); #if CONFIG_VAR_TX const TX_SIZE tx_size = inter_block ? mbmi->min_tx_size : mbmi->tx_size; @@ -757,6 +760,12 @@ FRAME_CONTEXT *ec_ctx = cm->fc; #endif +#if !CONFIG_LV_MAP + TX_TYPE *tx_type = &mbmi->tx_type; +#else + TX_TYPE *tx_type = &mbmi->txk_type[block]; +#endif + if (!FIXED_TX_TYPE) { #if CONFIG_EXT_TX const TX_SIZE square_tx_size = txsize_sqr_map[tx_size]; @@ -776,36 +785,34 @@ if (inter_block) { if (eset > 0) { #if CONFIG_EC_MULTISYMBOL - mbmi->tx_type = av1_ext_tx_inter_inv[eset][aom_read_symbol( + *tx_type = av1_ext_tx_inter_inv[eset][aom_read_symbol( r, ec_ctx->inter_ext_tx_cdf[eset][square_tx_size], ext_tx_cnt_inter[eset], ACCT_STR)]; #else - mbmi->tx_type = aom_read_tree( + *tx_type = aom_read_tree( r, av1_ext_tx_inter_tree[eset], ec_ctx->inter_ext_tx_prob[eset][square_tx_size], ACCT_STR); #endif - if (counts) - ++counts->inter_ext_tx[eset][square_tx_size][mbmi->tx_type]; + if (counts) ++counts->inter_ext_tx[eset][square_tx_size][*tx_type]; } } else if (ALLOW_INTRA_EXT_TX) { if (eset > 0) { #if CONFIG_EC_MULTISYMBOL - mbmi->tx_type = av1_ext_tx_intra_inv[eset][aom_read_symbol( + *tx_type = av1_ext_tx_intra_inv[eset][aom_read_symbol( r, ec_ctx->intra_ext_tx_cdf[eset][square_tx_size][mbmi->mode], ext_tx_cnt_intra[eset], ACCT_STR)]; #else - mbmi->tx_type = aom_read_tree( + *tx_type = aom_read_tree( r, av1_ext_tx_intra_tree[eset], ec_ctx->intra_ext_tx_prob[eset][square_tx_size][mbmi->mode], ACCT_STR); #endif if (counts) - ++counts->intra_ext_tx[eset][square_tx_size][mbmi->mode] - [mbmi->tx_type]; + ++counts->intra_ext_tx[eset][square_tx_size][mbmi->mode][*tx_type]; } } } else { - mbmi->tx_type = DCT_DCT; + *tx_type = DCT_DCT; } #else @@ -821,28 +828,28 @@ if (inter_block) { #if CONFIG_EC_MULTISYMBOL - mbmi->tx_type = av1_ext_tx_inv[aom_read_symbol( + *tx_type = av1_ext_tx_inv[aom_read_symbol( r, ec_ctx->inter_ext_tx_cdf[tx_size], TX_TYPES, ACCT_STR)]; #else - mbmi->tx_type = aom_read_tree( - r, av1_ext_tx_tree, ec_ctx->inter_ext_tx_prob[tx_size], ACCT_STR); + *tx_type = aom_read_tree(r, av1_ext_tx_tree, + ec_ctx->inter_ext_tx_prob[tx_size], ACCT_STR); #endif - if (counts) ++counts->inter_ext_tx[tx_size][mbmi->tx_type]; + if (counts) ++counts->inter_ext_tx[tx_size][*tx_type]; } else { const TX_TYPE tx_type_nom = intra_mode_to_tx_type_context[mbmi->mode]; #if CONFIG_EC_MULTISYMBOL - mbmi->tx_type = av1_ext_tx_inv[aom_read_symbol( + *tx_type = av1_ext_tx_inv[aom_read_symbol( r, ec_ctx->intra_ext_tx_cdf[tx_size][tx_type_nom], TX_TYPES, ACCT_STR)]; #else - mbmi->tx_type = aom_read_tree( + *tx_type = aom_read_tree( r, av1_ext_tx_tree, ec_ctx->intra_ext_tx_prob[tx_size][tx_type_nom], ACCT_STR); #endif - if (counts) ++counts->intra_ext_tx[tx_size][tx_type_nom][mbmi->tx_type]; + if (counts) ++counts->intra_ext_tx[tx_size][tx_type_nom][*tx_type]; } } else { - mbmi->tx_type = DCT_DCT; + *tx_type = DCT_DCT; } #endif // CONFIG_EXT_TX } @@ -971,11 +978,13 @@ read_filter_intra_mode_info(cm, xd, r); #endif // CONFIG_FILTER_INTRA - read_tx_type(cm, xd, mbmi, +#if !CONFIG_LV_MAP + av1_read_tx_type(cm, xd, #if CONFIG_SUPERTX - 0, + 0, #endif - r); + r); +#endif // !CONFIG_LV_MAP } static int read_mv_component(aom_reader *r, nmv_component *mvcomp, int usehp) { @@ -2178,11 +2187,13 @@ else read_intra_block_mode_info(cm, mi_row, mi_col, xd, mi, r); - read_tx_type(cm, xd, mbmi, +#if !CONFIG_LV_MAP + av1_read_tx_type(cm, xd, #if CONFIG_SUPERTX - supertx_enabled, + supertx_enabled, #endif - r); + r); +#endif // !CONFIG_LV_MAP } void av1_read_mode_info(AV1Decoder *const pbi, MACROBLOCKD *xd,
diff --git a/av1/decoder/decodemv.h b/av1/decoder/decodemv.h index e916262..0d751b2 100644 --- a/av1/decoder/decodemv.h +++ b/av1/decoder/decodemv.h
@@ -32,4 +32,13 @@ } // extern "C" #endif +void av1_read_tx_type(const AV1_COMMON *const cm, MACROBLOCKD *xd, +#if CONFIG_SUPERTX + int supertx_enabled, +#endif +#if CONFIG_LV_MAP + int block, +#endif + aom_reader *r); + #endif // AV1_DECODER_DECODEMV_H_