Replace RECT_TX_EXT experiment Remove the previous experiment and now use the same name for a simpler experiment that only enables 4:1 transforms for 4:1 partitions when ext_partition_types is on, and that which was previously enabled with the USE_RECT_TX_EXT macro. Change-Id: Iccc35744bd292abf3c187da6f23b787692d50296
diff --git a/av1/common/av1_inv_txfm2d.c b/av1/common/av1_inv_txfm2d.c index 80b362d..94f1ad0 100644 --- a/av1/common/av1_inv_txfm2d.c +++ b/av1/common/av1_inv_txfm2d.c
@@ -413,7 +413,7 @@ } #endif // CONFIG_TX64X64 -#if CONFIG_RECT_TX_EXT || (CONFIG_EXT_PARTITION_TYPES && USE_RECT_TX_EXT) +#if CONFIG_EXT_PARTITION_TYPES && CONFIG_RECT_TX_EXT void av1_inv_txfm2d_add_4x16_c(const int32_t *input, uint16_t *output, int stride, TX_TYPE tx_type, int bd) { int txfm_buf[4 * 16 + 16 + 16]; @@ -471,4 +471,4 @@ inv_txfm2d_add_facade(input, output, stride, txfm_buf, tx_type, TX_32X8, bd); #endif // CONFIG_TXMG } -#endif +#endif // CONFIG_EXT_PARTITION_TYPES && CONFIG_RECT_TX_EXT
diff --git a/av1/common/blockd.h b/av1/common/blockd.h index 56eb28c..56833a5 100644 --- a/av1/common/blockd.h +++ b/av1/common/blockd.h
@@ -1000,53 +1000,6 @@ !xd->lossless[mbmi->segment_id]; } -#if CONFIG_RECT_TX_EXT -static INLINE int is_quarter_tx_allowed_bsize(BLOCK_SIZE bsize) { - static const char LUT_QTTX[BLOCK_SIZES_ALL] = { - 0, // BLOCK_2X2 - 0, // BLOCK_2X4 - 0, // BLOCK_4X2 - 0, // BLOCK_4X4 - 0, // BLOCK_4X8 - 0, // BLOCK_8X4 - 0, // BLOCK_8X8 - 1, // BLOCK_8X16 - 1, // BLOCK_16X8 - 0, // BLOCK_16X16 - 0, // BLOCK_16X32 - 0, // BLOCK_32X16 - 0, // BLOCK_32X32 - 0, // BLOCK_32X64 - 0, // BLOCK_64X32 - 0, // BLOCK_64X64 -#if CONFIG_EXT_PARTITION - 0, // BLOCK_64X128 - 0, // BLOCK_128X64 - 0, // BLOCK_128X128 -#endif // CONFIG_EXT_PARTITION - 0, // BLOCK_4X16 - 0, // BLOCK_16X4 - 0, // BLOCK_8X32 - 0, // BLOCK_32X8 - 0, // BLOCK_16X64 - 0, // BLOCK_64X16 -#if CONFIG_EXT_PARTITION - 0, // BLOCK_32X128 - 0, // BLOCK_128X32 -#endif // CONFIG_EXT_PARTITION - }; - - return LUT_QTTX[bsize]; -} - -static INLINE int is_quarter_tx_allowed(const MACROBLOCKD *xd, - const MB_MODE_INFO *mbmi, - int is_inter) { - return is_quarter_tx_allowed_bsize(mbmi->sb_type) && is_inter && - !xd->lossless[mbmi->segment_id]; -} -#endif - static INLINE TX_SIZE get_max_rect_tx_size(BLOCK_SIZE bsize, int is_inter) { if (is_inter) return max_txsize_rect_lookup[bsize];
diff --git a/av1/common/common_data.h b/av1/common/common_data.h index a2a0d8e..542eea6 100644 --- a/av1/common/common_data.h +++ b/av1/common/common_data.h
@@ -717,7 +717,7 @@ TX_32X32, TX_32X32, TX_32X32, #endif // CONFIG_EXT_PARTITION #endif // CONFIG_TX64X64 -#if CONFIG_EXT_PARTITION_TYPES && USE_RECT_TX_EXT +#if CONFIG_EXT_PARTITION_TYPES && CONFIG_RECT_TX_EXT // 4x16, 16x4, 8x32 TX_4X16, TX_16X4, TX_8X16, // 32x8 @@ -727,7 +727,7 @@ TX_4X8, TX_8X4, TX_8X16, // 32x8 TX_16X8, -#endif // CONFIG_RECT_TX_EXT +#endif // CONFIG_EXT_PARTITION_TYPES && CONFIG_RECT_TX_EXT // 16x64, 64x16 TX_16X32, TX_32X16, #if CONFIG_EXT_PARTITION @@ -736,35 +736,6 @@ #endif // CONFIG_EXT_PARTITION }; -#if CONFIG_RECT_TX_EXT -static const TX_SIZE quarter_txsize_lookup[BLOCK_SIZES_ALL] = { - // 2X2, 2X4, 4X2, - TX_INVALID, TX_INVALID, TX_INVALID, - // 4x4, - TX_INVALID, - // 4x8, 8x4, 8x8, - TX_INVALID, TX_INVALID, TX_INVALID, - // 8x16, 16x8, 16x16, - TX_4X16, TX_16X4, TX_INVALID, - // 16x32, 32x16, 32x32, - TX_8X32, TX_32X8, TX_INVALID, - // 32x64, 64x32, 64x64 - TX_INVALID, TX_INVALID, TX_INVALID, -#if CONFIG_EXT_PARTITION - // 64x128, 128x64, 128x128 - TX_INVALID, TX_INVALID, TX_INVALID, -#endif - // 4x16, 16x4, 8x32 - TX_4X16, TX_16X4, TX_8X32, - // 32x8 16x64 64x16 - TX_32X8, TX_INVALID, TX_INVALID, -#if CONFIG_EXT_PARTITION - // 32x128 128x32 - TX_INVALID, TX_INVALID -#endif // CONFIG_EXT_PARTITION -}; -#endif // CONFIG_RECT_TX_EXT - static const TX_TYPE_1D vtx_tab[TX_TYPES] = { DCT_1D, ADST_1D, DCT_1D, ADST_1D, FLIPADST_1D, DCT_1D, FLIPADST_1D, ADST_1D, FLIPADST_1D, IDTX_1D,
diff --git a/av1/common/entropy.c b/av1/common/entropy.c index ff6f0aa..0e02961 100644 --- a/av1/common/entropy.c +++ b/av1/common/entropy.c
@@ -1749,9 +1749,6 @@ #if CONFIG_NEW_MULTISYMBOL AVERAGE_TILE_CDFS(palette_y_mode_cdf) AVERAGE_TILE_CDFS(palette_uv_mode_cdf) -#if CONFIG_RECT_TX_EXT - AVERAGE_TILE_CDFS(quarter_tx_size_cdf) -#endif #endif #if CONFIG_LPF_SB AVERAGE_TILE_CDFS(lpf_reuse_cdf);
diff --git a/av1/common/entropy.h b/av1/common/entropy.h index c3433b7..2df25d8 100644 --- a/av1/common/entropy.h +++ b/av1/common/entropy.h
@@ -342,7 +342,7 @@ left_ec = !!*(const uint64_t *)l; break; #endif // CONFIG_TX64X64 -#if CONFIG_RECT_TX_EXT || (CONFIG_EXT_PARTITION_TYPES && USE_RECT_TX_EXT) +#if CONFIG_EXT_PARTITION_TYPES && CONFIG_RECT_TX_EXT case TX_4X16: above_ec = a[0] != 0; left_ec = !!*(const uint32_t *)l; @@ -359,7 +359,7 @@ above_ec = !!*(const uint64_t *)a; left_ec = !!*(const uint16_t *)l; break; -#endif +#endif // CONFIG_EXT_PARTITION_TYPES && CONFIG_RECT_TX_EXT default: assert(0 && "Invalid transform size."); break; } return combine_entropy_contexts(above_ec, left_ec);
diff --git a/av1/common/entropymode.c b/av1/common/entropymode.c index be1ec75..a3ec6c1 100644 --- a/av1/common/entropymode.c +++ b/av1/common/entropymode.c
@@ -1566,14 +1566,6 @@ 1] = { -1, -1, 0, -1, -1, 4, 3, 2, 1 }; -#if CONFIG_RECT_TX_EXT -static const aom_prob default_quarter_tx_size_prob = 192; -#if CONFIG_NEW_MULTISYMBOL -static const aom_cdf_prob default_quarter_tx_size_cdf[CDF_SIZE(2)] = { AOM_CDF2( - 192 * 128) }; -#endif -#endif - #if CONFIG_LOOP_RESTORATION static const aom_cdf_prob default_switchable_restore_cdf[CDF_SIZE( RESTORE_SWITCHABLE_TYPES)] = { AOM_CDF3(32 * 128, 144 * 128) }; @@ -3254,12 +3246,6 @@ #if CONFIG_COMPOUND_SINGLEREF av1_copy(fc->comp_inter_mode_prob, default_comp_inter_mode_p); #endif // CONFIG_COMPOUND_SINGLEREF -#if CONFIG_RECT_TX_EXT - fc->quarter_tx_size_prob = default_quarter_tx_size_prob; -#if CONFIG_NEW_MULTISYMBOL - av1_copy(fc->quarter_tx_size_cdf, default_quarter_tx_size_cdf); -#endif // CONFIG_NEW_MULTISYMBOL -#endif av1_copy(fc->txfm_partition_prob, default_txfm_partition_probs); #if CONFIG_NEW_MULTISYMBOL av1_copy(fc->txfm_partition_cdf, default_txfm_partition_cdf); @@ -3486,13 +3472,6 @@ const FRAME_COUNTS *counts = &cm->counts; if (cm->tx_mode == TX_MODE_SELECT) { -#if CONFIG_RECT_TX_EXT - fc->quarter_tx_size_prob = av1_mode_mv_merge_probs( - pre_fc->quarter_tx_size_prob, counts->quarter_tx_size); -#endif - } - - if (cm->tx_mode == TX_MODE_SELECT) { for (i = 0; i < TXFM_PARTITION_CONTEXTS; ++i) fc->txfm_partition_prob[i] = av1_mode_mv_merge_probs( pre_fc->txfm_partition_prob[i], counts->txfm_partition[i]);
diff --git a/av1/common/entropymode.h b/av1/common/entropymode.h index d2cb009..7c756a6 100644 --- a/av1/common/entropymode.h +++ b/av1/common/entropymode.h
@@ -266,12 +266,6 @@ #if CONFIG_COMPOUND_SINGLEREF aom_prob comp_inter_mode_prob[COMP_INTER_MODE_CONTEXTS]; #endif // CONFIG_COMPOUND_SINGLEREF -#if CONFIG_RECT_TX_EXT - aom_prob quarter_tx_size_prob; -#if CONFIG_NEW_MULTISYMBOL - aom_cdf_prob quarter_tx_size_cdf[CDF_SIZE(2)]; -#endif -#endif aom_prob txfm_partition_prob[TXFM_PARTITION_CONTEXTS]; #if CONFIG_NEW_MULTISYMBOL aom_cdf_prob txfm_partition_cdf[TXFM_PARTITION_CONTEXTS][CDF_SIZE(2)]; @@ -459,9 +453,6 @@ #if CONFIG_COMPOUND_SINGLEREF unsigned int comp_inter_mode[COMP_INTER_MODE_CONTEXTS][2]; #endif // CONFIG_COMPOUND_SINGLEREF -#if CONFIG_RECT_TX_EXT - unsigned int quarter_tx_size[2]; -#endif unsigned int txfm_partition[TXFM_PARTITION_CONTEXTS][2]; #if CONFIG_EXT_SKIP unsigned int skip_mode[SKIP_MODE_CONTEXTS][2];
diff --git a/av1/common/enums.h b/av1/common/enums.h index c643edb..b2eeb76 100644 --- a/av1/common/enums.h +++ b/av1/common/enums.h
@@ -37,10 +37,6 @@ #define MAX_SB_SIZE (1 << MAX_SB_SIZE_LOG2) #define MAX_SB_SQUARE (MAX_SB_SIZE * MAX_SB_SIZE) -#if CONFIG_EXT_PARTITION_TYPES -#define USE_RECT_TX_EXT 1 -#endif - // Min superblock size #define MIN_SB_SIZE_LOG2 6
diff --git a/av1/common/idct.c b/av1/common/idct.c index 9496d0f..60af3fb 100644 --- a/av1/common/idct.c +++ b/av1/common/idct.c
@@ -1873,7 +1873,7 @@ } // These will be used by the masked-tx experiment in the future. -#if CONFIG_RECT_TX_EXT || (CONFIG_EXT_PARTITION_TYPES && USE_RECT_TX_EXT) +#if CONFIG_EXT_PARTITION_TYPES && CONFIG_RECT_TX_EXT static void inv_txfm_add_4x16(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param) { av1_iht4x16_64_add(input, dest, stride, txfm_param); @@ -1893,7 +1893,7 @@ int stride, const TxfmParam *txfm_param) { av1_iht32x8_256_add(input, dest, stride, txfm_param); } -#endif +#endif // CONFIG_EXT_PARTITION_TYPES && CONFIG_RECT_TX_EXT static void inv_txfm_add_8x16(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param) { @@ -2191,7 +2191,7 @@ txfm_param->tx_type, txfm_param->bd); } -#if CONFIG_RECT_TX_EXT || (CONFIG_EXT_PARTITION_TYPES && USE_RECT_TX_EXT) +#if CONFIG_EXT_PARTITION_TYPES && CONFIG_RECT_TX_EXT static void highbd_inv_txfm_add_16x4(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param) { const int32_t *src = cast_to_int32(input); @@ -2219,7 +2219,7 @@ av1_inv_txfm2d_add_8x32_c(src, CONVERT_TO_SHORTPTR(dest), stride, txfm_param->tx_type, txfm_param->bd); } -#endif +#endif // CONFIG_EXT_PARTITION_TYPES && CONFIG_RECT_TX_EXT #if CONFIG_TX64X64 static void highbd_inv_txfm_add_32x64(const tran_low_t *input, uint8_t *dest, @@ -2419,12 +2419,12 @@ // case. inv_txfm_add_4x4(input, dest, stride, txfm_param); break; -#if CONFIG_RECT_TX_EXT || (CONFIG_EXT_PARTITION_TYPES && USE_RECT_TX_EXT) +#if CONFIG_EXT_PARTITION_TYPES && CONFIG_RECT_TX_EXT case TX_32X8: inv_txfm_add_32x8(input, dest, stride, txfm_param); break; case TX_8X32: inv_txfm_add_8x32(input, dest, stride, txfm_param); break; case TX_16X4: inv_txfm_add_16x4(input, dest, stride, txfm_param); break; case TX_4X16: inv_txfm_add_4x16(input, dest, stride, txfm_param); break; -#endif +#endif // CONFIG_EXT_PARTITION_TYPES && CONFIG_RECT_TX_EXT default: assert(0 && "Invalid transform size"); break; } #endif @@ -2570,7 +2570,7 @@ // case. av1_highbd_inv_txfm_add_4x4(input, dest, stride, txfm_param); break; -#if CONFIG_RECT_TX_EXT || (CONFIG_EXT_PARTITION_TYPES && USE_RECT_TX_EXT) +#if CONFIG_EXT_PARTITION_TYPES && CONFIG_RECT_TX_EXT case TX_16X4: highbd_inv_txfm_add_16x4(input, dest, stride, txfm_param); break; @@ -2583,8 +2583,8 @@ case TX_32X8: highbd_inv_txfm_add_32x8(input, dest, stride, txfm_param); break; -#endif +#endif // CONFIG_EXT_PARTITION_TYPES && CONFIG_RECT_TX_EXT default: assert(0 && "Invalid transform size"); break; } -#endif +#endif // CONFIG_DAALA_TX }
diff --git a/av1/decoder/decodeframe.c b/av1/decoder/decodeframe.c index c380243..c8417f0 100644 --- a/av1/decoder/decodeframe.c +++ b/av1/decoder/decodeframe.c
@@ -341,15 +341,9 @@ pd->dst.stride, max_scan_line, eob); *eob_total += eob; } else { -#if CONFIG_RECT_TX_EXT - int is_qttx = plane_tx_size == quarter_txsize_lookup[plane_bsize]; - const TX_SIZE sub_txs = is_qttx ? plane_tx_size : sub_tx_size_map[tx_size]; - if (is_qttx) assert(blk_row == 0 && blk_col == 0 && block == 0); -#else const TX_SIZE sub_txs = sub_tx_size_map[tx_size]; assert(IMPLIES(tx_size <= TX_4X4, sub_txs == tx_size)); assert(IMPLIES(tx_size > TX_4X4, sub_txs < tx_size)); -#endif const int bsw = tx_size_wide_unit[sub_txs]; const int bsh = tx_size_high_unit[sub_txs]; const int sub_step = bsw * bsh; @@ -3371,11 +3365,6 @@ aom_internal_error(&cm->error, AOM_CODEC_MEM_ERROR, "Failed to allocate bool decoder 0"); -#if CONFIG_RECT_TX_EXT - if (cm->tx_mode == TX_MODE_SELECT) - av1_diff_update_prob(&r, &fc->quarter_tx_size_prob, ACCT_STR); -#endif - if (cm->tx_mode == TX_MODE_SELECT) for (int i = 0; i < TXFM_PARTITION_CONTEXTS; ++i) av1_diff_update_prob(&r, &fc->txfm_partition_prob[i], ACCT_STR);
diff --git a/av1/decoder/decodemv.c b/av1/decoder/decodemv.c index 8a577b0..35200af 100644 --- a/av1/decoder/decodemv.c +++ b/av1/decoder/decodemv.c
@@ -539,27 +539,6 @@ read_selected_tx_size(cm, xd, tx_size_cat, r); if (coded_tx_size > max_txsize_lookup[bsize]) { assert(coded_tx_size == max_txsize_lookup[bsize] + 1); -#if CONFIG_RECT_TX_EXT - if (is_quarter_tx_allowed(xd, &xd->mi[0]->mbmi, is_inter)) { - int quarter_tx; - - if (quarter_txsize_lookup[bsize] != max_txsize_lookup[bsize]) { -#if CONFIG_NEW_MULTISYMBOL - quarter_tx = - aom_read_symbol(r, cm->fc->quarter_tx_size_cdf, 2, ACCT_STR); -#else - quarter_tx = aom_read(r, cm->fc->quarter_tx_size_prob, ACCT_STR); - FRAME_COUNTS *counts = xd->counts; - if (counts) ++counts->quarter_tx_size[quarter_tx]; -#endif - } else { - quarter_tx = 1; - } - return quarter_tx ? quarter_txsize_lookup[bsize] - : get_max_rect_tx_size(bsize, is_inter); - } -#endif // CONFIG_RECT_TX_EXT - return get_max_rect_tx_size(bsize, is_inter); } return coded_tx_size; @@ -2714,31 +2693,6 @@ for (idx = 0; idx < width; idx += bw) read_tx_size_vartx(cm, xd, mbmi, xd->counts, max_tx_size, 0, idy, idx, r); -#if CONFIG_RECT_TX_EXT - if (is_quarter_tx_allowed(xd, mbmi, inter_block) && - mbmi->tx_size == max_tx_size) { - int quarter_tx; - - if (quarter_txsize_lookup[bsize] != max_tx_size) { -#if CONFIG_NEW_MULTISYMBOL - quarter_tx = - aom_read_symbol(r, cm->fc->quarter_tx_size_cdf, 2, ACCT_STR); -#else - quarter_tx = aom_read(r, cm->fc->quarter_tx_size_prob, ACCT_STR); - if (xd->counts) ++xd->counts->quarter_tx_size[quarter_tx]; -#endif - } else { - quarter_tx = 1; - } - if (quarter_tx) { - mbmi->tx_size = quarter_txsize_lookup[bsize]; - for (idy = 0; idy < tx_size_high_unit[max_tx_size] / 2; ++idy) - for (idx = 0; idx < tx_size_wide_unit[max_tx_size] / 2; ++idx) - mbmi->inter_tx_size[idy][idx] = mbmi->tx_size; - mbmi->min_tx_size = get_min_tx_size(mbmi->tx_size); - } - } -#endif } else { mbmi->tx_size = read_tx_size(cm, xd, inter_block, !mbmi->skip, r);
diff --git a/av1/encoder/bitstream.c b/av1/encoder/bitstream.c index 0e785d1..34111bb 100644 --- a/av1/encoder/bitstream.c +++ b/av1/encoder/bitstream.c
@@ -261,12 +261,7 @@ } const int write_txfm_partition = -#if CONFIG_RECT_TX_EXT - tx_size == mbmi->inter_tx_size[tx_row][tx_col] || - mbmi->tx_size == quarter_txsize_lookup[mbmi->sb_type]; -#else tx_size == mbmi->inter_tx_size[tx_row][tx_col]; -#endif if (write_txfm_partition) { #if CONFIG_NEW_MULTISYMBOL aom_write_symbol(w, 0, ec_ctx->txfm_partition_cdf[ctx], 2); @@ -337,16 +332,6 @@ aom_write_symbol(w, depth, ec_ctx->tx_size_cdf[tx_size_cat][tx_size_ctx], max_depths + 1); -#if CONFIG_RECT_TX_EXT - if (is_quarter_tx_allowed(xd, mbmi, 0) && tx_size != coded_tx_size) -#if CONFIG_NEW_MULTISYMBOL - aom_write_symbol(w, tx_size == quarter_txsize_lookup[bsize], - cm->fc->quarter_tx_size_cdf, 2); -#else - aom_write(w, tx_size == quarter_txsize_lookup[bsize], - cm->fc->quarter_tx_size_prob); -#endif -#endif } } @@ -714,12 +699,7 @@ token_stats->cost += tmp_token_stats.cost; #endif } else { -#if CONFIG_RECT_TX_EXT - int is_qttx = plane_tx_size == quarter_txsize_lookup[plane_bsize]; - const TX_SIZE sub_txs = is_qttx ? plane_tx_size : sub_tx_size_map[tx_size]; -#else const TX_SIZE sub_txs = sub_tx_size_map[tx_size]; -#endif const int bsw = tx_size_wide_unit[sub_txs]; const int bsh = tx_size_high_unit[sub_txs]; @@ -1451,20 +1431,6 @@ for (idy = 0; idy < height; idy += bh) for (idx = 0; idx < width; idx += bw) write_tx_size_vartx(cm, xd, mbmi, max_tx_size, 0, idy, idx, w); -#if CONFIG_RECT_TX_EXT - if (is_quarter_tx_allowed(xd, mbmi, is_inter_block(mbmi)) && - quarter_txsize_lookup[bsize] != max_tx_size && - (mbmi->tx_size == quarter_txsize_lookup[bsize] || - mbmi->tx_size == max_tx_size)) { -#if CONFIG_NEW_MULTISYMBOL - aom_write_symbol(w, mbmi->tx_size != max_tx_size, - cm->fc->quarter_tx_size_cdf, 2); -#else - aom_write(w, mbmi->tx_size != max_tx_size, - cm->fc->quarter_tx_size_prob); -#endif - } -#endif } else { set_txfm_ctxs(mbmi->tx_size, xd->n8_w, xd->n8_h, skip, xd); write_selected_tx_size(cm, xd, w); @@ -4506,12 +4472,6 @@ #endif aom_start_encode(header_bc, data); -#if CONFIG_RECT_TX_EXT - if (cm->tx_mode == TX_MODE_SELECT) - av1_cond_prob_diff_update(header_bc, &cm->fc->quarter_tx_size_prob, - cm->counts.quarter_tx_size, probwt); -#endif - #if !CONFIG_NEW_MULTISYMBOL if (cm->tx_mode == TX_MODE_SELECT) update_txfm_partition_probs(cm, header_bc, counts, probwt);
diff --git a/av1/encoder/block.h b/av1/encoder/block.h index 24987f8..4747ac8 100644 --- a/av1/encoder/block.h +++ b/av1/encoder/block.h
@@ -266,9 +266,6 @@ int cfl_cost[CFL_JOINT_SIGNS][CFL_PRED_PLANES][CFL_ALPHABET_SIZE]; #endif // CONFIG_CFL int tx_size_cost[TX_SIZES - 1][TX_SIZE_CONTEXTS][TX_SIZES]; -#if CONFIG_RECT_TX_EXT - int quarter_tx_size_cost[2]; -#endif int txfm_partition_cost[TXFM_PARTITION_CONTEXTS][2]; int inter_tx_type_costs[EXT_TX_SETS_INTER][EXT_TX_SIZES][TX_TYPES]; int intra_tx_type_costs[EXT_TX_SETS_INTRA][EXT_TX_SIZES][INTRA_MODES]
diff --git a/av1/encoder/encodeframe.c b/av1/encoder/encodeframe.c index 74c293e..a39ab43 100644 --- a/av1/encoder/encodeframe.c +++ b/av1/encoder/encodeframe.c
@@ -4433,12 +4433,7 @@ } make_consistent_compound_tools(cm); -#if CONFIG_RECT_TX_EXT - if (cm->tx_mode == TX_MODE_SELECT && cpi->td.mb.txb_split_count == 0 && - counts->quarter_tx_size[1] == 0) -#else if (cm->tx_mode == TX_MODE_SELECT && cpi->td.mb.txb_split_count == 0) -#endif #if CONFIG_SIMPLIFY_TX_MODE cm->tx_mode = TX_MODE_LARGEST; #else @@ -4596,32 +4591,20 @@ assert(tx_size > TX_4X4); if (depth == MAX_VARTX_DEPTH) { -// Don't add to counts in this case -#if CONFIG_RECT_TX_EXT - if (tx_size == plane_tx_size) -#endif - mbmi->tx_size = tx_size; + // Don't add to counts in this case + mbmi->tx_size = tx_size; txfm_partition_update(xd->above_txfm_context + blk_col, xd->left_txfm_context + blk_row, tx_size, tx_size); return; } -#if CONFIG_RECT_TX_EXT - if (tx_size == plane_tx_size || - mbmi->tx_size == quarter_txsize_lookup[mbmi->sb_type]) -#else - if (tx_size == plane_tx_size) -#endif - { + if (tx_size == plane_tx_size) { ++counts->txfm_partition[ctx][0]; #if CONFIG_NEW_MULTISYMBOL if (allow_update_cdf) update_cdf(xd->tile_ctx->txfm_partition_cdf[ctx], 0, 2); #endif -#if CONFIG_RECT_TX_EXT - if (tx_size == plane_tx_size) -#endif - mbmi->tx_size = tx_size; + mbmi->tx_size = tx_size; txfm_partition_update(xd->above_txfm_context + blk_col, xd->left_txfm_context + blk_row, tx_size, tx_size); } else { @@ -4941,21 +4924,6 @@ } else { if (tx_size != get_max_rect_tx_size(bsize, 0)) ++x->txb_split_count; } - -#if CONFIG_RECT_TX_EXT - if (is_quarter_tx_allowed(xd, mbmi, is_inter) && - quarter_txsize_lookup[bsize] != - get_max_rect_tx_size(bsize, is_inter) && - (mbmi->tx_size == quarter_txsize_lookup[bsize] || - mbmi->tx_size == get_max_rect_tx_size(bsize, is_inter))) { - const int use_qttx = mbmi->tx_size == quarter_txsize_lookup[bsize]; - ++td->counts->quarter_tx_size[use_qttx]; -#if CONFIG_NEW_MULTISYMBOL - if (tile_data->allow_update_cdf) - update_cdf(xd->tile_ctx->quarter_tx_size_cdf, use_qttx, 2); -#endif - } -#endif assert(IMPLIES(is_rect_tx(tx_size), is_rect_tx_allowed(xd, mbmi))); } else { int i, j;
diff --git a/av1/encoder/encodemb.c b/av1/encoder/encodemb.c index de7010c..7f06a51 100644 --- a/av1/encoder/encodemb.c +++ b/av1/encoder/encodemb.c
@@ -663,15 +663,9 @@ encode_block(plane, block, blk_row, blk_col, plane_bsize, tx_size, arg); } else { assert(tx_size < TX_SIZES_ALL); -#if CONFIG_RECT_TX_EXT - int is_qttx = plane_tx_size == quarter_txsize_lookup[plane_bsize]; - const TX_SIZE sub_txs = is_qttx ? plane_tx_size : sub_tx_size_map[tx_size]; - if (is_qttx) assert(blk_row == 0 && blk_col == 0 && block == 0); -#else const TX_SIZE sub_txs = sub_tx_size_map[tx_size]; assert(IMPLIES(tx_size <= TX_4X4, sub_txs == tx_size)); assert(IMPLIES(tx_size > TX_4X4, sub_txs < tx_size)); -#endif // This is the square transform block partition entry point. const int bsw = tx_size_wide_unit[sub_txs]; const int bsh = tx_size_high_unit[sub_txs];
diff --git a/av1/encoder/hybrid_fwd_txfm.c b/av1/encoder/hybrid_fwd_txfm.c index 8be9292..4d15598 100644 --- a/av1/encoder/hybrid_fwd_txfm.c +++ b/av1/encoder/hybrid_fwd_txfm.c
@@ -145,7 +145,7 @@ } #endif // CONFIG_TX64X64 -#if CONFIG_RECT_TX_EXT || (CONFIG_EXT_PARTITION_TYPES && USE_RECT_TX_EXT) +#if CONFIG_EXT_PARTITION_TYPES && CONFIG_RECT_TX_EXT static void fwd_txfm_16x4(const int16_t *src_diff, tran_low_t *coeff, int diff_stride, TxfmParam *txfm_param) { av1_fht16x4(src_diff, coeff, diff_stride, txfm_param); @@ -165,7 +165,7 @@ int diff_stride, TxfmParam *txfm_param) { av1_fht8x32(src_diff, coeff, diff_stride, txfm_param); } -#endif +#endif // CONFIG_EXT_PARTITION_TYPES && CONFIG_RECT_TX_EXT static void highbd_fwd_txfm_4x4(const int16_t *src_diff, tran_low_t *coeff, int diff_stride, TxfmParam *txfm_param) { @@ -247,7 +247,7 @@ txfm_param->bd); } -#if CONFIG_RECT_TX_EXT || (CONFIG_EXT_PARTITION_TYPES && USE_RECT_TX_EXT) +#if CONFIG_EXT_PARTITION_TYPES && CONFIG_RECT_TX_EXT static void highbd_fwd_txfm_16x4(const int16_t *src_diff, tran_low_t *coeff, int diff_stride, TxfmParam *txfm_param) { av1_fht16x4(src_diff, coeff, diff_stride, txfm_param); @@ -267,7 +267,7 @@ int diff_stride, TxfmParam *txfm_param) { av1_fht8x32(src_diff, coeff, diff_stride, txfm_param); } -#endif +#endif // CONFIG_EXT_PARTITION_TYPES && CONFIG_RECT_TX_EXT static void highbd_fwd_txfm_8x8(const int16_t *src_diff, tran_low_t *coeff, int diff_stride, TxfmParam *txfm_param) { @@ -525,7 +525,7 @@ fwd_txfm_32x16(src_diff, coeff, diff_stride, txfm_param); break; case TX_4X4: fwd_txfm_4x4(src_diff, coeff, diff_stride, txfm_param); break; -#if CONFIG_RECT_TX_EXT || (CONFIG_EXT_PARTITION_TYPES && USE_RECT_TX_EXT) +#if CONFIG_EXT_PARTITION_TYPES && CONFIG_RECT_TX_EXT case TX_4X16: fwd_txfm_4x16(src_diff, coeff, diff_stride, txfm_param); break; @@ -538,7 +538,7 @@ case TX_32X8: fwd_txfm_32x8(src_diff, coeff, diff_stride, txfm_param); break; -#endif +#endif // CONFIG_EXT_PARTITION_TYPES && CONFIG_RECT_TX_EXT default: assert(0); break; } #endif @@ -593,7 +593,7 @@ case TX_4X4: highbd_fwd_txfm_4x4(src_diff, coeff, diff_stride, txfm_param); break; -#if CONFIG_RECT_TX_EXT || (CONFIG_EXT_PARTITION_TYPES && USE_RECT_TX_EXT) +#if CONFIG_EXT_PARTITION_TYPES && CONFIG_RECT_TX_EXT case TX_4X16: highbd_fwd_txfm_4x16(src_diff, coeff, diff_stride, txfm_param); break; @@ -606,7 +606,7 @@ case TX_32X8: highbd_fwd_txfm_32x8(src_diff, coeff, diff_stride, txfm_param); break; -#endif +#endif // CONFIG_EXT_PARTITION_TYPES && CONFIG_RECT_TX_EXT default: assert(0); break; } #endif
diff --git a/av1/encoder/rd.c b/av1/encoder/rd.c index f2daad7..ed2b877 100644 --- a/av1/encoder/rd.c +++ b/av1/encoder/rd.c
@@ -205,16 +205,6 @@ av1_cost_tokens_from_cdf(x->tx_size_cost[i][j], fc->tx_size_cdf[i][j], NULL); -#if CONFIG_RECT_TX_EXT -#if CONFIG_NEW_MULTISYMBOL - av1_cost_tokens_from_cdf(x->quarter_tx_size_cost, fc->quarter_tx_size_cdf, - NULL); -#else - x->quarter_tx_size_cost[0] = av1_cost_bit(fc->quarter_tx_size_prob, 0); - x->quarter_tx_size_cost[1] = av1_cost_bit(fc->quarter_tx_size_prob, 1); -#endif -#endif - for (i = 0; i < TXFM_PARTITION_CONTEXTS; ++i) { #if CONFIG_NEW_MULTISYMBOL av1_cost_tokens_from_cdf(x->txfm_partition_cost[i], @@ -925,7 +915,7 @@ for (i = 0; i < num_4x4_h; i += 4) t_left[i] = !!*(const uint32_t *)&left[i]; break; -#if CONFIG_RECT_TX_EXT || (CONFIG_EXT_PARTITION_TYPES && USE_RECT_TX_EXT) +#if CONFIG_EXT_PARTITION_TYPES && CONFIG_RECT_TX_EXT case TX_4X16: memcpy(t_above, above, sizeof(ENTROPY_CONTEXT) * num_4x4_w); for (i = 0; i < num_4x4_h; i += 4) @@ -948,7 +938,7 @@ for (i = 0; i < num_4x4_h; i += 2) t_left[i] = !!*(const uint16_t *)&left[i]; break; -#endif +#endif // CONFIG_EXT_PARTITION_TYPES && CONFIG_RECT_TX_EXT default: assert(0 && "Invalid transform size."); break; } }
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c index 2259946..83ab458 100644 --- a/av1/encoder/rdopt.c +++ b/av1/encoder/rdopt.c
@@ -478,11 +478,7 @@ int visible_cols) { unsigned sse; - if (txb_rows == visible_rows && txb_cols == visible_cols -#if CONFIG_RECT_TX_EXT - && tx_bsize < BLOCK_SIZES -#endif - ) { + if (txb_rows == visible_rows && txb_cols == visible_cols) { cpi->fn_ptr[tx_bsize].vf(src, src_stride, dst, dst_stride, &sse); return sse; } @@ -1807,9 +1803,7 @@ BLOCK_SIZE plane_bsize, int blk_row, int blk_col, BLOCK_SIZE tx_bsize, int *width, int *height, int *visible_width, int *visible_height) { -#if !(CONFIG_RECT_TX_EXT) assert(tx_bsize <= plane_bsize); -#endif int txb_height = block_size_high[tx_bsize]; int txb_width = block_size_wide[tx_bsize]; const int block_height = block_size_high[plane_bsize]; @@ -2381,11 +2375,6 @@ const int depth = tx_size_to_depth(coded_tx_size, tx_size_cat); const int tx_size_ctx = get_tx_size_context(xd); int r_tx_size = x->tx_size_cost[tx_size_cat][tx_size_ctx][depth]; -#if CONFIG_RECT_TX_EXT - if (is_quarter_tx_allowed(xd, mbmi, is_inter) && tx_size != coded_tx_size) - r_tx_size += - x->quarter_tx_size_cost[tx_size == quarter_txsize_lookup[bsize]]; -#endif return r_tx_size; } else { return 0; @@ -2709,55 +2698,6 @@ } } -#if CONFIG_RECT_TX_EXT - // test 1:4/4:1 tx - int evaluate_quarter_tx = 0; - if (is_quarter_tx_allowed(xd, mbmi, is_inter)) { - if (tx_select) { - evaluate_quarter_tx = 1; - } else { - const TX_SIZE chosen_tx_size = - tx_size_from_tx_mode(bs, cm->tx_mode, is_inter); - evaluate_quarter_tx = chosen_tx_size == quarter_txsize_lookup[bs]; - } - } - if (evaluate_quarter_tx) { - TX_TYPE tx_start = DCT_DCT; - TX_TYPE tx_end = TX_TYPES; -#if CONFIG_TXK_SEL - // The tx_type becomes dummy when lv_map is on. The tx_type search will be - // performed in av1_search_txk_type() - tx_end = DCT_DCT + 1; -#endif - TX_TYPE tx_type; - for (tx_type = tx_start; tx_type < tx_end; ++tx_type) { - if (mbmi->ref_mv_idx > 0 && tx_type != DCT_DCT) continue; - const TX_SIZE tx_size = quarter_txsize_lookup[bs]; - RD_STATS this_rd_stats; - const TxSetType tx_set_type = - get_ext_tx_set_type(tx_size, bs, is_inter, cm->reduced_tx_set_used); - if (av1_ext_tx_used[tx_set_type][tx_type]) { - rd = - txfm_yrd(cpi, x, &this_rd_stats, ref_best_rd, bs, tx_type, tx_size); - if (rd < best_rd) { -#if CONFIG_TXK_SEL - memcpy(best_txk_type, mbmi->txk_type, - sizeof(best_txk_type[0]) * num_blk); -#endif - best_tx_type = tx_type; - best_tx_size = tx_size; - best_rd = rd; - *rd_stats = this_rd_stats; - } - } -#if !USE_TXTYPE_SEARCH_FOR_SUB8X8_IN_CB4X4 - const int is_inter = is_inter_block(mbmi); - if (mbmi->sb_type < BLOCK_8X8 && is_inter) break; -#endif // !USE_TXTYPE_SEARCH_FOR_SUB8X8_IN_CB4X4 - } - } -#endif // CONFIG_RECT_TX_EXT - if (tx_select) { start_tx = max_tx_size; end_tx = AOMMAX((int)TX_4X4, start_tx - MAX_TX_DEPTH + evaluate_rect_tx); @@ -3921,24 +3861,6 @@ TX_TYPE best_tx_type = TX_TYPES; int txk_idx = (blk_row << 4) + blk_col; #endif -#if CONFIG_RECT_TX_EXT - TX_SIZE quarter_txsize = quarter_txsize_lookup[mbmi->sb_type]; - int check_qttx = is_quarter_tx_allowed(xd, mbmi, is_inter_block(mbmi)) && - tx_size == get_max_rect_tx_size(mbmi->sb_type, 1) && - quarter_txsize != tx_size; - int is_qttx_picked = 0; - int eobs_qttx[2] = { 0, 0 }; - int skip_qttx[2] = { 0, 0 }; - int block_offset_qttx = check_qttx - ? tx_size_wide_unit[quarter_txsize] * - tx_size_high_unit[quarter_txsize] - : 0; - int blk_row_offset, blk_col_offset; - int is_wide_qttx = - tx_size_wide_unit[quarter_txsize] > tx_size_high_unit[quarter_txsize]; - blk_row_offset = is_wide_qttx ? tx_size_high_unit[quarter_txsize] : 0; - blk_col_offset = is_wide_qttx ? 0 : tx_size_wide_unit[quarter_txsize]; -#endif av1_init_rd_stats(&sum_rd_stats); @@ -3998,12 +3920,6 @@ if (tx_size > TX_4X4 && depth < MAX_VARTX_DEPTH) rd_stats->rate += x->txfm_partition_cost[ctx][0]; -#if CONFIG_RECT_TX_EXT - if (check_qttx) { - assert(blk_row == 0 && blk_col == 0); - rd_stats->rate += x->quarter_tx_size_cost[0]; - } -#endif this_rd = RDCOST(x->rdmult, rd_stats->rate, rd_stats->dist); #if CONFIG_LV_MAP tmp_eob = p->txb_entropy_ctx[block]; @@ -4014,104 +3930,6 @@ #if CONFIG_TXK_SEL best_tx_type = mbmi->txk_type[txk_idx]; #endif - -#if CONFIG_RECT_TX_EXT - if (check_qttx) { - assert(blk_row == 0 && blk_col == 0 && block == 0 && plane == 0); - - RD_STATS rd_stats_tmp, rd_stats_qttx; - int64_t rd_qttx; - - av1_init_rd_stats(&rd_stats_qttx); - av1_init_rd_stats(&rd_stats_tmp); - - av1_tx_block_rd_b(cpi, x, quarter_txsize, 0, 0, plane, 0, plane_bsize, - pta, ptl, &rd_stats_qttx, fast); - if (rd_stats->rate == INT_MAX) return; - - tx_size_ctx = txsize_sqr_map[quarter_txsize]; - coeff_ctx = get_entropy_context(quarter_txsize, pta, ptl); - zero_blk_rate = - x->token_head_costs[tx_size_ctx][pd->plane_type][1][0][coeff_ctx][0]; - if ((RDCOST(x->rdmult, rd_stats_qttx.rate, rd_stats_qttx.dist) >= - RDCOST(x->rdmult, zero_blk_rate, rd_stats_qttx.sse) || - rd_stats_qttx.skip == 1) && - !xd->lossless[mbmi->segment_id]) { -#if CONFIG_RD_DEBUG - av1_update_txb_coeff_cost(&rd_stats_qttx, plane, quarter_txsize, 0, 0, - zero_blk_rate - rd_stats_qttx.rate); -#endif // CONFIG_RD_DEBUG - rd_stats_qttx.rate = zero_blk_rate; - rd_stats_qttx.dist = rd_stats_qttx.sse; - rd_stats_qttx.skip = 1; - x->blk_skip[plane][blk_row * bw + blk_col] = 1; - skip_qttx[0] = 1; - p->eobs[block] = 0; - } else { - x->blk_skip[plane][blk_row * bw + blk_col] = 0; - skip_qttx[0] = 0; - rd_stats->skip = 0; - } - - // Second tx block - av1_tx_block_rd_b(cpi, x, quarter_txsize, blk_row_offset, blk_col_offset, - plane, block_offset_qttx, plane_bsize, pta, ptl, - &rd_stats_tmp, fast); - - if (rd_stats->rate == INT_MAX) return; - - av1_set_txb_context(x, plane, 0, quarter_txsize, pta, ptl); - - coeff_ctx = get_entropy_context(quarter_txsize, pta + blk_col_offset, - ptl + blk_row_offset); - zero_blk_rate = - x->token_head_costs[tx_size_ctx][pd->plane_type][1][0][coeff_ctx][0]; - if ((RDCOST(x->rdmult, rd_stats_tmp.rate, rd_stats_tmp.dist) >= - RDCOST(x->rdmult, zero_blk_rate, rd_stats_tmp.sse) || - rd_stats_tmp.skip == 1) && - !xd->lossless[mbmi->segment_id]) { -#if CONFIG_RD_DEBUG - av1_update_txb_coeff_cost(&rd_stats_tmp, plane, quarter_txsize, 0, 0, - zero_blk_rate - rd_stats_tmp.rate); -#endif // CONFIG_RD_DEBUG - rd_stats_tmp.rate = zero_blk_rate; - rd_stats_tmp.dist = rd_stats_tmp.sse; - rd_stats_tmp.skip = 1; - x->blk_skip[plane][blk_row_offset * bw + blk_col_offset] = 1; - skip_qttx[1] = 1; - p->eobs[block_offset_qttx] = 0; - } else { - x->blk_skip[plane][blk_row_offset * bw + blk_col_offset] = 0; - skip_qttx[1] = 0; - rd_stats_tmp.skip = 0; - } - - av1_merge_rd_stats(&rd_stats_qttx, &rd_stats_tmp); - - if (tx_size > TX_4X4 && depth < MAX_VARTX_DEPTH) { - rd_stats_qttx.rate += x->txfm_partition_cost[ctx][0]; - } - rd_stats_qttx.rate += x->quarter_tx_size_cost[1]; - rd_qttx = RDCOST(x->rdmult, rd_stats_qttx.rate, rd_stats_qttx.dist); -#if CONFIG_LV_MAP - eobs_qttx[0] = p->txb_entropy_ctx[0]; - eobs_qttx[1] = p->txb_entropy_ctx[block_offset_qttx]; -#else - eobs_qttx[0] = p->eobs[0]; - eobs_qttx[1] = p->eobs[block_offset_qttx]; -#endif - if (rd_qttx < this_rd) { - is_qttx_picked = 1; - this_rd = rd_qttx; - rd_stats->rate = rd_stats_qttx.rate; - rd_stats->dist = rd_stats_qttx.dist; - rd_stats->sse = rd_stats_qttx.sse; - rd_stats->skip = rd_stats_qttx.skip; - rd_stats->rdcost = rd_stats_qttx.rdcost; - } - av1_get_entropy_contexts(plane_bsize, 0, pd, ta, tl); - } -#endif } if (tx_size > TX_4X4 && depth < MAX_VARTX_DEPTH && tx_split_prune_flag == 0 @@ -4267,39 +4085,15 @@ if (this_rd < sum_rd) { int idx, idy; -#if CONFIG_RECT_TX_EXT - TX_SIZE tx_size_selected = is_qttx_picked ? quarter_txsize : tx_size; -#else TX_SIZE tx_size_selected = tx_size; -#endif -#if CONFIG_RECT_TX_EXT - if (is_qttx_picked) { - assert(blk_row == 0 && blk_col == 0 && plane == 0); #if CONFIG_LV_MAP - p->txb_entropy_ctx[0] = eobs_qttx[0]; - p->txb_entropy_ctx[block_offset_qttx] = eobs_qttx[1]; -#else - p->eobs[0] = eobs_qttx[0]; - p->eobs[block_offset_qttx] = eobs_qttx[1]; -#endif - } else { -#endif -#if CONFIG_LV_MAP - p->txb_entropy_ctx[block] = tmp_eob; + p->txb_entropy_ctx[block] = tmp_eob; #else p->eobs[block] = tmp_eob; #endif -#if CONFIG_RECT_TX_EXT - } -#endif av1_set_txb_context(x, plane, block, tx_size_selected, pta, ptl); -#if CONFIG_RECT_TX_EXT - if (is_qttx_picked) - av1_set_txb_context(x, plane, block_offset_qttx, tx_size_selected, - pta + blk_col_offset, ptl + blk_row_offset); -#endif // CONFIG_RECT_TX_EXT txfm_partition_update(tx_above + blk_col, tx_left + blk_row, tx_size, tx_size); @@ -4312,16 +4106,7 @@ mbmi->txk_type[txk_idx] = best_tx_type; #endif if (this_rd == INT64_MAX) *is_cost_valid = 0; -#if CONFIG_RECT_TX_EXT - if (is_qttx_picked) { - x->blk_skip[plane][0] = skip_qttx[0]; - x->blk_skip[plane][blk_row_offset * bw + blk_col_offset] = skip_qttx[1]; - } else { -#endif - x->blk_skip[plane][blk_row * bw + blk_col] = rd_stats->skip; -#if CONFIG_RECT_TX_EXT - } -#endif + x->blk_skip[plane][blk_row * bw + blk_col] = rd_stats->skip; } else { *rd_stats = sum_rd_stats; if (sum_rd == INT64_MAX) *is_cost_valid = 0;
diff --git a/av1/encoder/tokenize.c b/av1/encoder/tokenize.c index 56c169b6..e92ce9d 100644 --- a/av1/encoder/tokenize.c +++ b/av1/encoder/tokenize.c
@@ -605,13 +605,8 @@ cost_coeffs_b(plane, block, blk_row, blk_col, plane_bsize, tx_size, arg); #endif } else { -#if CONFIG_RECT_TX_EXT - int is_qttx = plane_tx_size == quarter_txsize_lookup[plane_bsize]; - const TX_SIZE sub_txs = is_qttx ? plane_tx_size : sub_tx_size_map[tx_size]; -#else // Half the block size in transform block unit. const TX_SIZE sub_txs = sub_tx_size_map[tx_size]; -#endif const int bsw = tx_size_wide_unit[sub_txs]; const int bsh = tx_size_high_unit[sub_txs]; const int step = bsw * bsh;