Add av1_update_tx_type_count() This will make the code cleaner and lv_map experiment will be able to reuse this function. Change-Id: I885336117daa0090e16f1bb7a0c3e7bb54105410
diff --git a/av1/encoder/encodeframe.c b/av1/encoder/encodeframe.c index 3f17a3d..0b479a6 100644 --- a/av1/encoder/encodeframe.c +++ b/av1/encoder/encodeframe.c
@@ -5754,6 +5754,51 @@ } #endif +void av1_update_tx_type_count(const AV1_COMMON *cm, MACROBLOCKD *xd, +#if CONFIG_LV_MAP + int block, +#endif + BLOCK_SIZE bsize, TX_SIZE tx_size, + FRAME_COUNTS *counts) { + MB_MODE_INFO *mbmi = &xd->mi[0]->mbmi; + int is_inter = is_inter_block(mbmi); +#if !CONFIG_LV_MAP + TX_TYPE tx_type = mbmi->tx_type; +#else + TX_TYPE tx_type = get_tx_type(PLANE_TYPE_Y, xd, block, tx_size); +#endif +#if CONFIG_EXT_TX + if (get_ext_tx_types(tx_size, bsize, is_inter, cm->reduced_tx_set_used) > 1 && + cm->base_qindex > 0 && !mbmi->skip && + !segfeature_active(&cm->seg, mbmi->segment_id, SEG_LVL_SKIP)) { + const int eset = + get_ext_tx_set(tx_size, bsize, is_inter, cm->reduced_tx_set_used); + if (eset > 0) { + if (is_inter) { + ++counts->inter_ext_tx[eset][txsize_sqr_map[tx_size]][tx_type]; + } else { + ++counts->intra_ext_tx[eset][txsize_sqr_map[tx_size]][mbmi->mode] + [tx_type]; + } + } + } +#else + (void)bsize; + if (tx_size < TX_32X32 && + ((!cm->seg.enabled && cm->base_qindex > 0) || + (cm->seg.enabled && xd->qindex[mbmi->segment_id] > 0)) && + !mbmi->skip && + !segfeature_active(&cm->seg, mbmi->segment_id, SEG_LVL_SKIP)) { + if (is_inter) { + ++counts->inter_ext_tx[tx_size][tx_type]; + } else { + ++counts->intra_ext_tx[tx_size][intra_mode_to_tx_type_context[mbmi->mode]] + [tx_type]; + } + } +#endif // CONFIG_EXT_TX +} + static void encode_superblock(const AV1_COMP *const cpi, ThreadData *td, TOKENEXTRA **t, RUN_TYPE dry_run, int mi_row, int mi_col, BLOCK_SIZE bsize, @@ -6000,38 +6045,9 @@ ++td->counts->tx_size_totals[txsize_sqr_map[tx_size]]; ++td->counts ->tx_size_totals[txsize_sqr_map[get_uv_tx_size(mbmi, &xd->plane[1])]]; -#if CONFIG_EXT_TX - if (get_ext_tx_types(tx_size, bsize, is_inter, cm->reduced_tx_set_used) > - 1 && - cm->base_qindex > 0 && !mbmi->skip && - !segfeature_active(&cm->seg, mbmi->segment_id, SEG_LVL_SKIP)) { - const int eset = - get_ext_tx_set(tx_size, bsize, is_inter, cm->reduced_tx_set_used); - if (eset > 0) { - if (is_inter) { - ++td->counts - ->inter_ext_tx[eset][txsize_sqr_map[tx_size]][mbmi->tx_type]; - } else { - ++td->counts->intra_ext_tx[eset][txsize_sqr_map[tx_size]][mbmi->mode] - [mbmi->tx_type]; - } - } - } -#else - if (tx_size < TX_32X32 && - ((!cm->seg.enabled && cm->base_qindex > 0) || - (cm->seg.enabled && xd->qindex[mbmi->segment_id] > 0)) && - !mbmi->skip && - !segfeature_active(&cm->seg, mbmi->segment_id, SEG_LVL_SKIP)) { - if (is_inter) { - ++td->counts->inter_ext_tx[tx_size][mbmi->tx_type]; - } else { - ++td->counts - ->intra_ext_tx[tx_size][intra_mode_to_tx_type_context[mbmi->mode]] - [mbmi->tx_type]; - } - } -#endif // CONFIG_EXT_TX +#if !CONFIG_LV_MAP + av1_update_tx_type_count(cm, xd, bsize, tx_size, td->counts); +#endif } #if CONFIG_VAR_TX
diff --git a/av1/encoder/encodeframe.h b/av1/encoder/encodeframe.h index ca4d5a5..0ea577b 100644 --- a/av1/encoder/encodeframe.h +++ b/av1/encoder/encodeframe.h
@@ -13,6 +13,8 @@ #define AV1_ENCODER_ENCODEFRAME_H_ #include "aom/aom_integer.h" +#include "av1/common/blockd.h" +#include "av1/common/enums.h" #ifdef __cplusplus extern "C" { @@ -42,6 +44,13 @@ void av1_set_variance_partition_thresholds(struct AV1_COMP *cpi, int q); +void av1_update_tx_type_count(const struct AV1Common *cm, MACROBLOCKD *xd, +#if CONFIG_LV_MAP + int block, +#endif + BLOCK_SIZE bsize, TX_SIZE tx_size, + FRAME_COUNTS *counts); + #ifdef __cplusplus } // extern "C" #endif