Commit 6bd9e961b2 for aom
commit 6bd9e961b2689de75c0f725ecad720ff6e32752e
Author: Jingning Han <jingning@google.com>
Date: Fri Nov 21 00:02:23 2025 -0800
Remove tracking blk_skip at coding block level
Change-Id: I273c2d67f6eaab10006533f0223d5d0284cdef46
diff --git a/av1/encoder/context_tree.c b/av1/encoder/context_tree.c
index 4273fae59a..74b82e5d89 100644
--- a/av1/encoder/context_tree.c
+++ b/av1/encoder/context_tree.c
@@ -25,8 +25,6 @@ void av1_copy_tree_context(PICK_MODE_CONTEXT *dst_ctx,
dst_ctx->best_mode_index = src_ctx->best_mode_index;
#endif // CONFIG_INTERNAL_STATS
- memcpy(dst_ctx->blk_skip, src_ctx->blk_skip,
- sizeof(uint8_t) * src_ctx->num_4x4_blk);
av1_copy_array(dst_ctx->tx_type_map, src_ctx->tx_type_map,
src_ctx->num_4x4_blk);
@@ -84,8 +82,6 @@ PICK_MODE_CONTEXT *av1_alloc_pmc(const struct AV1_COMP *const cpi,
const int num_pix = block_size_wide[bsize] * block_size_high[bsize];
const int num_blk = num_pix / 16;
- AOM_CHECK_MEM_ERROR(&error, ctx->blk_skip,
- aom_calloc(num_blk, sizeof(*ctx->blk_skip)));
AOM_CHECK_MEM_ERROR(&error, ctx->tx_type_map,
aom_calloc(num_blk, sizeof(*ctx->tx_type_map)));
ctx->num_4x4_blk = num_blk;
@@ -119,7 +115,6 @@ PICK_MODE_CONTEXT *av1_alloc_pmc(const struct AV1_COMP *const cpi,
}
void av1_reset_pmc(PICK_MODE_CONTEXT *ctx) {
- av1_zero_array(ctx->blk_skip, ctx->num_4x4_blk);
av1_zero_array(ctx->tx_type_map, ctx->num_4x4_blk);
av1_invalid_rd_stats(&ctx->rd_stats);
}
@@ -127,8 +122,6 @@ void av1_reset_pmc(PICK_MODE_CONTEXT *ctx) {
void av1_free_pmc(PICK_MODE_CONTEXT *ctx, int num_planes) {
if (ctx == NULL) return;
- aom_free(ctx->blk_skip);
- ctx->blk_skip = NULL;
aom_free(ctx->tx_type_map);
for (int i = 0; i < num_planes; ++i) {
ctx->coeff[i] = NULL;
diff --git a/av1/encoder/context_tree.h b/av1/encoder/context_tree.h
index 6b6d851106..1578793c0e 100644
--- a/av1/encoder/context_tree.h
+++ b/av1/encoder/context_tree.h
@@ -38,7 +38,6 @@ typedef struct PICK_MODE_CONTEXT {
MB_MODE_INFO mic;
MB_MODE_INFO_EXT_FRAME mbmi_ext_best;
uint8_t *color_index_map[2];
- uint8_t *blk_skip;
tran_low_t *coeff[MAX_MB_PLANE];
tran_low_t *qcoeff[MAX_MB_PLANE];
diff --git a/av1/encoder/encodeframe_utils.c b/av1/encoder/encodeframe_utils.c
index 2b0495e240..e73a4e5a7e 100644
--- a/av1/encoder/encodeframe_utils.c
+++ b/av1/encoder/encodeframe_utils.c
@@ -203,9 +203,6 @@ void av1_update_state(const AV1_COMP *const cpi, ThreadData *td,
copy_mbmi_ext_frame_to_mbmi_ext(&x->mbmi_ext, &ctx->mbmi_ext_best,
av1_ref_frame_type(ctx->mic.ref_frame));
- memcpy(txfm_info->blk_skip, ctx->blk_skip,
- sizeof(txfm_info->blk_skip[0]) * ctx->num_4x4_blk);
-
txfm_info->skip_txfm = ctx->rd_stats.skip_txfm;
xd->tx_type_map = ctx->tx_type_map;
diff --git a/av1/encoder/encodemb.c b/av1/encoder/encodemb.c
index 3226cda259..bf5c697bde 100644
--- a/av1/encoder/encodemb.c
+++ b/av1/encoder/encodemb.c
@@ -392,16 +392,13 @@ static void encode_block(int plane, int block, int blk_row, int blk_col,
ENTROPY_CONTEXT *a, *l;
int dummy_rate_cost = 0;
- const int bw = mi_size_wide[plane_bsize];
dst = &pd->dst.buf[(blk_row * pd->dst.stride + blk_col) << MI_SIZE_LOG2];
a = &args->ta[blk_col];
l = &args->tl[blk_row];
TX_TYPE tx_type = DCT_DCT;
- const int blk_skip_idx = blk_row * bw + blk_col;
- if (!is_blk_skip(x->txfm_search_info.blk_skip, plane, blk_skip_idx) &&
- !mbmi->skip_mode) {
+ if (!mbmi->skip_mode) {
tx_type = av1_get_tx_type(xd, pd->plane_type, blk_row, blk_col, tx_size,
cm->features.reduced_tx_set_used);
TxfmParam txfm_param;
@@ -722,15 +719,9 @@ static void encode_block_intra(int plane, int block, int blk_row, int blk_col,
av1_predict_intra_block_facade(cm, xd, plane, blk_col, blk_row, tx_size);
TX_TYPE tx_type = DCT_DCT;
- const int bw = mi_size_wide[plane_bsize];
-
if (xd->mi[0]->skip_txfm) {
*eob = 0;
p->txb_entropy_ctx[block] = 0;
- } else if (plane == 0 && is_blk_skip(x->txfm_search_info.blk_skip, plane,
- blk_row * bw + blk_col)) {
- *eob = 0;
- p->txb_entropy_ctx[block] = 0;
} else {
av1_subtract_txb(x, plane, plane_bsize, blk_col, blk_row, tx_size);
diff --git a/av1/encoder/intra_mode_search.c b/av1/encoder/intra_mode_search.c
index f014553353..6f61a7cb6e 100644
--- a/av1/encoder/intra_mode_search.c
+++ b/av1/encoder/intra_mode_search.c
@@ -298,8 +298,6 @@ static int rd_pick_filter_intra_sby(const AV1_COMP *const cpi, MACROBLOCK *x,
best_tx_size = mbmi->tx_size;
filter_intra_mode_info = mbmi->filter_intra_mode_info;
av1_copy_array(best_tx_type_map, xd->tx_type_map, ctx->num_4x4_blk);
- memcpy(ctx->blk_skip, x->txfm_search_info.blk_skip,
- sizeof(x->txfm_search_info.blk_skip[0]) * ctx->num_4x4_blk);
*rate = this_rate;
*rate_tokenonly = tokenonly_rd_stats.rate;
*distortion = tokenonly_rd_stats.dist;
@@ -1048,7 +1046,6 @@ int av1_search_palette_mode(IntraModeSearchState *intra_search_state,
x->palette_buffer->best_palette_color_map;
uint8_t *const color_map = xd->plane[0].color_index_map;
MB_MODE_INFO best_mbmi_palette = *mbmi;
- uint8_t best_blk_skip[MAX_MIB_SIZE * MAX_MIB_SIZE];
uint8_t best_tx_type_map[MAX_MIB_SIZE * MAX_MIB_SIZE];
const ModeCosts *mode_costs = &x->mode_costs;
const int *const intra_mode_cost =
@@ -1064,18 +1061,15 @@ int av1_search_palette_mode(IntraModeSearchState *intra_search_state,
RD_STATS rd_stats_y;
av1_invalid_rd_stats(&rd_stats_y);
- av1_rd_pick_palette_intra_sby(cpi, x, bsize, intra_mode_cost[DC_PRED],
- &best_mbmi_palette, best_palette_color_map,
- &best_rd_palette, &rd_stats_y.rate, NULL,
- &rd_stats_y.dist, &rd_stats_y.skip_txfm, NULL,
- ctx, best_blk_skip, best_tx_type_map);
+ av1_rd_pick_palette_intra_sby(
+ cpi, x, bsize, intra_mode_cost[DC_PRED], &best_mbmi_palette,
+ best_palette_color_map, &best_rd_palette, &rd_stats_y.rate, NULL,
+ &rd_stats_y.dist, &rd_stats_y.skip_txfm, NULL, ctx, best_tx_type_map);
if (rd_stats_y.rate == INT_MAX || pmi->palette_size[0] == 0) {
this_rd_cost->rdcost = INT64_MAX;
return skippable;
}
- memcpy(x->txfm_search_info.blk_skip, best_blk_skip,
- sizeof(best_blk_skip[0]) * bsize_to_num_blk(bsize));
av1_copy_array(xd->tx_type_map, best_tx_type_map, ctx->num_4x4_blk);
memcpy(color_map, best_palette_color_map,
rows * cols * sizeof(best_palette_color_map[0]));
@@ -1137,7 +1131,6 @@ void av1_search_palette_mode_luma(const AV1_COMP *cpi, MACROBLOCK *x,
x->palette_buffer->best_palette_color_map;
uint8_t *const color_map = xd->plane[0].color_index_map;
MB_MODE_INFO best_mbmi_palette = *mbmi;
- uint8_t best_blk_skip[MAX_MIB_SIZE * MAX_MIB_SIZE];
uint8_t best_tx_type_map[MAX_MIB_SIZE * MAX_MIB_SIZE];
const ModeCosts *mode_costs = &x->mode_costs;
const int *const intra_mode_cost =
@@ -1153,18 +1146,15 @@ void av1_search_palette_mode_luma(const AV1_COMP *cpi, MACROBLOCK *x,
RD_STATS rd_stats_y;
av1_invalid_rd_stats(&rd_stats_y);
- av1_rd_pick_palette_intra_sby(cpi, x, bsize, intra_mode_cost[DC_PRED],
- &best_mbmi_palette, best_palette_color_map,
- &best_rd_palette, &rd_stats_y.rate, NULL,
- &rd_stats_y.dist, &rd_stats_y.skip_txfm, NULL,
- ctx, best_blk_skip, best_tx_type_map);
+ av1_rd_pick_palette_intra_sby(
+ cpi, x, bsize, intra_mode_cost[DC_PRED], &best_mbmi_palette,
+ best_palette_color_map, &best_rd_palette, &rd_stats_y.rate, NULL,
+ &rd_stats_y.dist, &rd_stats_y.skip_txfm, NULL, ctx, best_tx_type_map);
if (rd_stats_y.rate == INT_MAX || pmi->palette_size[0] == 0) {
this_rd_cost->rdcost = INT64_MAX;
return;
}
- memcpy(x->txfm_search_info.blk_skip, best_blk_skip,
- sizeof(best_blk_skip[0]) * bsize_to_num_blk(bsize));
av1_copy_array(xd->tx_type_map, best_tx_type_map, ctx->num_4x4_blk);
memcpy(color_map, best_palette_color_map,
rows * cols * sizeof(best_palette_color_map[0]));
@@ -1231,8 +1221,6 @@ static inline int intra_block_yrd(const AV1_COMP *const cpi, MACROBLOCK *x,
*rate_tokenonly = this_rate_tokenonly;
*distortion = rd_stats.dist;
*skippable = rd_stats.skip_txfm;
- av1_copy_array(ctx->blk_skip, x->txfm_search_info.blk_skip,
- ctx->num_4x4_blk);
av1_copy_array(ctx->tx_type_map, xd->tx_type_map, ctx->num_4x4_blk);
return 1;
}
@@ -1262,9 +1250,6 @@ static inline void handle_filter_intra_mode(const AV1_COMP *cpi, MACROBLOCK *x,
int filter_intra_selected_flag = 0;
TX_SIZE best_tx_size = mbmi->tx_size;
FILTER_INTRA_MODE best_fi_mode = FILTER_DC_PRED;
- uint8_t best_blk_skip[MAX_MIB_SIZE * MAX_MIB_SIZE];
- memcpy(best_blk_skip, x->txfm_search_info.blk_skip,
- sizeof(best_blk_skip[0]) * ctx->num_4x4_blk);
uint8_t best_tx_type_map[MAX_MIB_SIZE * MAX_MIB_SIZE];
av1_copy_array(best_tx_type_map, xd->tx_type_map, ctx->num_4x4_blk);
mbmi->filter_intra_mode_info.use_filter_intra = 1;
@@ -1285,8 +1270,6 @@ static inline void handle_filter_intra_mode(const AV1_COMP *cpi, MACROBLOCK *x,
if (this_rd_tmp < best_rd_so_far) {
best_tx_size = mbmi->tx_size;
av1_copy_array(best_tx_type_map, xd->tx_type_map, ctx->num_4x4_blk);
- memcpy(best_blk_skip, x->txfm_search_info.blk_skip,
- sizeof(best_blk_skip[0]) * ctx->num_4x4_blk);
best_fi_mode = fi_mode;
*rd_stats_y = rd_stats_y_fi;
filter_intra_selected_flag = 1;
@@ -1296,8 +1279,6 @@ static inline void handle_filter_intra_mode(const AV1_COMP *cpi, MACROBLOCK *x,
mbmi->tx_size = best_tx_size;
av1_copy_array(xd->tx_type_map, best_tx_type_map, ctx->num_4x4_blk);
- memcpy(x->txfm_search_info.blk_skip, best_blk_skip,
- sizeof(x->txfm_search_info.blk_skip[0]) * ctx->num_4x4_blk);
if (filter_intra_selected_flag) {
mbmi->filter_intra_mode_info.use_filter_intra = 1;
@@ -1675,18 +1656,16 @@ int64_t av1_rd_pick_intra_sby_mode(const AV1_COMP *const cpi, MACROBLOCK *x,
*rate_tokenonly = this_rate_tokenonly;
*distortion = this_distortion;
*skippable = s;
- memcpy(ctx->blk_skip, x->txfm_search_info.blk_skip,
- sizeof(x->txfm_search_info.blk_skip[0]) * ctx->num_4x4_blk);
av1_copy_array(ctx->tx_type_map, xd->tx_type_map, ctx->num_4x4_blk);
}
}
// Searches palette
if (try_palette) {
- av1_rd_pick_palette_intra_sby(
- cpi, x, bsize, bmode_costs[DC_PRED], &best_mbmi, best_palette_color_map,
- &best_rd, rate, rate_tokenonly, distortion, skippable, &beat_best_rd,
- ctx, ctx->blk_skip, ctx->tx_type_map);
+ av1_rd_pick_palette_intra_sby(cpi, x, bsize, bmode_costs[DC_PRED],
+ &best_mbmi, best_palette_color_map, &best_rd,
+ rate, rate_tokenonly, distortion, skippable,
+ &beat_best_rd, ctx, ctx->tx_type_map);
}
// Searches filter_intra
diff --git a/av1/encoder/nonrd_opt.c b/av1/encoder/nonrd_opt.c
index 1acf7fb2c0..a196e0ca61 100644
--- a/av1/encoder/nonrd_opt.c
+++ b/av1/encoder/nonrd_opt.c
@@ -708,7 +708,6 @@ void av1_estimate_intra_mode(AV1_COMP *cpi, MACROBLOCK *x, BLOCK_SIZE bsize,
PRED_BUFFER *tmp_buffers,
PRED_BUFFER **this_mode_pred, RD_STATS *best_rdc,
BEST_PICKMODE *best_pickmode,
- PICK_MODE_CONTEXT *ctx,
unsigned int *best_sad_norm) {
AV1_COMMON *const cm = &cpi->common;
MACROBLOCKD *const xd = &x->e_mbd;
@@ -924,14 +923,8 @@ void av1_estimate_intra_mode(AV1_COMP *cpi, MACROBLOCK *x, BLOCK_SIZE bsize,
mi->uv_mode = this_mode;
mi->mv[0].as_int = INVALID_MV;
mi->mv[1].as_int = INVALID_MV;
- if (!this_rdc.skip_txfm)
- memset(ctx->blk_skip, 0,
- sizeof(x->txfm_search_info.blk_skip[0]) * ctx->num_4x4_blk);
}
}
- if (best_pickmode->best_ref_frame == INTRA_FRAME)
- memset(ctx->blk_skip, 0,
- sizeof(x->txfm_search_info.blk_skip[0]) * ctx->num_4x4_blk);
mi->tx_size = best_pickmode->best_tx_size;
*best_sad_norm = args.best_sad >>
diff --git a/av1/encoder/nonrd_opt.h b/av1/encoder/nonrd_opt.h
index a22f492b8e..1e783e93e9 100644
--- a/av1/encoder/nonrd_opt.h
+++ b/av1/encoder/nonrd_opt.h
@@ -585,7 +585,6 @@ void av1_estimate_intra_mode(AV1_COMP *cpi, MACROBLOCK *x, BLOCK_SIZE bsize,
PRED_BUFFER *tmp_buffers,
PRED_BUFFER **this_mode_pred, RD_STATS *best_rdc,
BEST_PICKMODE *best_pickmode,
- PICK_MODE_CONTEXT *ctx,
unsigned int *best_sad_norm);
#endif // AOM_AV1_ENCODER_NONRD_OPT_H_
diff --git a/av1/encoder/nonrd_pickmode.c b/av1/encoder/nonrd_pickmode.c
index d7d26369be..9d7444e1a5 100644
--- a/av1/encoder/nonrd_pickmode.c
+++ b/av1/encoder/nonrd_pickmode.c
@@ -77,8 +77,9 @@ static inline void init_best_pickmode(BEST_PICKMODE *bp) {
// Copy best inter mode parameters to best_pickmode
static inline void update_search_state_nonrd(
InterModeSearchStateNonrd *search_state, MB_MODE_INFO *const mi,
- TxfmSearchInfo *txfm_info, RD_STATS *nonskip_rdc, PICK_MODE_CONTEXT *ctx,
+ TxfmSearchInfo *txfm_info, RD_STATS *nonskip_rdc,
PREDICTION_MODE this_best_mode, const int64_t sse_y) {
+ (void)txfm_info;
BEST_PICKMODE *const best_pickmode = &search_state->best_pickmode;
best_pickmode->best_sse = sse_y;
@@ -93,10 +94,6 @@ static inline void update_search_state_nonrd(
best_pickmode->best_mode_skip_txfm = search_state->this_rdc.skip_txfm;
best_pickmode->best_mode_initial_skip_flag =
(nonskip_rdc->rate == INT_MAX && search_state->this_rdc.skip_txfm);
- if (!best_pickmode->best_mode_skip_txfm) {
- memcpy(ctx->blk_skip, txfm_info->blk_skip,
- sizeof(txfm_info->blk_skip[0]) * ctx->num_4x4_blk);
- }
}
static inline int subpel_select(AV1_COMP *cpi, MACROBLOCK *x, BLOCK_SIZE bsize,
@@ -1665,15 +1662,6 @@ void av1_nonrd_pick_intra_mode(AV1_COMP *cpi, MACROBLOCK *x, RD_STATS *rd_cost,
if (this_rdc.rdcost < best_rdc.rdcost) {
best_rdc = this_rdc;
best_mode = this_mode;
- if (!this_rdc.skip_txfm) {
- if (flat_blocks_screen && args.skippable && best_rdc.dist < 20000) {
- memcpy(ctx->blk_skip, x->txfm_search_info.blk_skip,
- sizeof(x->txfm_search_info.blk_skip[0]) * ctx->num_4x4_blk);
- } else {
- memset(ctx->blk_skip, 0,
- sizeof(x->txfm_search_info.blk_skip[0]) * ctx->num_4x4_blk);
- }
- }
}
if (this_mode == DC_PRED) {
if (flat_blocks_screen && args.skippable && this_rdc.dist > 0)
@@ -1699,7 +1687,6 @@ void av1_nonrd_pick_intra_mode(AV1_COMP *cpi, MACROBLOCK *x, RD_STATS *rd_cost,
try_palette &= prune;
}
if (try_palette) {
- const TxfmSearchInfo *txfm_info = &x->txfm_search_info;
const unsigned int intra_ref_frame_cost = 0;
x->color_palette_thresh = (best_sad_norm < 500) ? 32 : 64;
@@ -1714,10 +1701,6 @@ void av1_nonrd_pick_intra_mode(AV1_COMP *cpi, MACROBLOCK *x, RD_STATS *rd_cost,
best_rdc.rate = this_rdc.rate;
best_rdc.dist = this_rdc.dist;
best_rdc.rdcost = this_rdc.rdcost;
- if (!this_rdc.skip_txfm) {
- memcpy(ctx->blk_skip, txfm_info->blk_skip,
- sizeof(txfm_info->blk_skip[0]) * ctx->num_4x4_blk);
- }
if (xd->tx_type_map[0] != DCT_DCT)
av1_copy_array(ctx->tx_type_map, xd->tx_type_map, ctx->num_4x4_blk);
} else {
@@ -1735,8 +1718,6 @@ void av1_nonrd_pick_intra_mode(AV1_COMP *cpi, MACROBLOCK *x, RD_STATS *rd_cost,
// do it here again in case the above logic changes.
if (is_lossless_requested(&cpi->oxcf.rc_cfg)) {
x->txfm_search_info.skip_txfm = 0;
- memset(ctx->blk_skip, 0,
- sizeof(x->txfm_search_info.blk_skip[0]) * ctx->num_4x4_blk);
}
#if CONFIG_INTERNAL_STATS
@@ -2643,9 +2624,9 @@ static AOM_FORCE_INLINE bool skip_inter_mode_nonrd(
// Function to perform inter mode evaluation for non-rd
static AOM_FORCE_INLINE bool handle_inter_mode_nonrd(
AV1_COMP *cpi, MACROBLOCK *x, InterModeSearchStateNonrd *search_state,
- PICK_MODE_CONTEXT *ctx, PRED_BUFFER **this_mode_pred,
- PRED_BUFFER *tmp_buffer, InterPredParams inter_pred_params_sr,
- int *best_early_term, unsigned int *sse_zeromv_norm, bool *check_globalmv,
+ PRED_BUFFER **this_mode_pred, PRED_BUFFER *tmp_buffer,
+ InterPredParams inter_pred_params_sr, int *best_early_term,
+ unsigned int *sse_zeromv_norm, bool *check_globalmv,
#if CONFIG_AV1_TEMPORAL_DENOISING
int64_t *zero_last_cost_orig, int denoise_svc_pickmode,
#endif
@@ -3034,7 +3015,7 @@ static AOM_FORCE_INLINE bool handle_inter_mode_nonrd(
if (search_state->this_rdc.rdcost < search_state->best_rdc.rdcost) {
search_state->best_rdc = search_state->this_rdc;
*best_early_term = this_early_term;
- update_search_state_nonrd(search_state, mi, txfm_info, &nonskip_rdc, ctx,
+ update_search_state_nonrd(search_state, mi, txfm_info, &nonskip_rdc,
this_best_mode, sse_y);
// This is needed for the compound modes.
@@ -3074,7 +3055,6 @@ static AOM_FORCE_INLINE void handle_screen_content_mode_nonrd(
struct macroblockd_plane *const pd = &xd->plane[0];
const int bw = block_size_wide[bsize];
const int bh = block_size_high[bsize];
- TxfmSearchInfo *txfm_info = &x->txfm_search_info;
BEST_PICKMODE *const best_pickmode = &search_state->best_pickmode;
// TODO(marpan): Only allow for 8 bit-depth for now, re-enable for 10/12 bit
@@ -3129,10 +3109,6 @@ static AOM_FORCE_INLINE void handle_screen_content_mode_nonrd(
best_pickmode->tx_type = IDTX;
search_state->best_rdc.rdcost = idx_rdcost;
best_pickmode->best_mode_skip_txfm = idtx_rdc.skip_txfm;
- if (!idtx_rdc.skip_txfm) {
- memcpy(ctx->blk_skip, txfm_info->blk_skip,
- sizeof(txfm_info->blk_skip[0]) * ctx->num_4x4_blk);
- }
xd->tx_type_map[0] = best_pickmode->tx_type;
memset(ctx->tx_type_map, best_pickmode->tx_type, ctx->num_4x4_blk);
memset(xd->tx_type_map, best_pickmode->tx_type, ctx->num_4x4_blk);
@@ -3176,10 +3152,7 @@ static AOM_FORCE_INLINE void handle_screen_content_mode_nonrd(
if (x->color_sensitivity[COLOR_SENS_IDX(AOM_PLANE_U)] ||
x->color_sensitivity[COLOR_SENS_IDX(AOM_PLANE_V)])
search_state->this_rdc.skip_txfm = 0;
- if (!search_state->this_rdc.skip_txfm) {
- memcpy(ctx->blk_skip, txfm_info->blk_skip,
- sizeof(txfm_info->blk_skip[0]) * ctx->num_4x4_blk);
- }
+
if (xd->tx_type_map[0] != DCT_DCT)
av1_copy_array(ctx->tx_type_map, xd->tx_type_map, ctx->num_4x4_blk);
}
@@ -3509,7 +3482,7 @@ void av1_nonrd_pick_inter_mode_sb(AV1_COMP *cpi, TileDataEnc *tile_data,
// Perform inter mode evaluation for non-rd
if (!handle_inter_mode_nonrd(
- cpi, x, &search_state, ctx, &this_mode_pred, tmp_buffer,
+ cpi, x, &search_state, &this_mode_pred, tmp_buffer,
inter_pred_params_sr, &best_early_term, &sse_zeromv_norm,
&check_globalmv,
#if CONFIG_AV1_TEMPORAL_DENOISING
@@ -3584,7 +3557,7 @@ void av1_nonrd_pick_inter_mode_sb(AV1_COMP *cpi, TileDataEnc *tile_data,
search_state.ref_costs_single[INTRA_FRAME],
reuse_inter_pred, &orig_dst, tmp_buffer,
&this_mode_pred, &search_state.best_rdc,
- best_pickmode, ctx, &best_intra_sad_norm);
+ best_pickmode, &best_intra_sad_norm);
int skip_idtx_palette = (x->color_sensitivity[COLOR_SENS_IDX(AOM_PLANE_U)] ||
x->color_sensitivity[COLOR_SENS_IDX(AOM_PLANE_V)]) &&
@@ -3625,7 +3598,6 @@ void av1_nonrd_pick_inter_mode_sb(AV1_COMP *cpi, TileDataEnc *tile_data,
// For lossless: always force the skip flags off.
if (is_lossless_requested(&cpi->oxcf.rc_cfg)) {
txfm_info->skip_txfm = 0;
- memset(ctx->blk_skip, 0, sizeof(ctx->blk_skip[0]) * ctx->num_4x4_blk);
} else {
txfm_info->skip_txfm = best_pickmode->best_mode_skip_txfm;
}
diff --git a/av1/encoder/palette.c b/av1/encoder/palette.c
index 79a2fa5696..14c8970933 100644
--- a/av1/encoder/palette.c
+++ b/av1/encoder/palette.c
@@ -232,9 +232,9 @@ static inline void palette_rd_y(
int n, uint16_t *color_cache, int n_cache, bool do_header_rd_based_gating,
MB_MODE_INFO *best_mbmi, uint8_t *best_palette_color_map, int64_t *best_rd,
int *rate, int *rate_tokenonly, int64_t *distortion, uint8_t *skippable,
- int *beat_best_rd, PICK_MODE_CONTEXT *ctx, uint8_t *blk_skip,
- uint8_t *tx_type_map, int *beat_best_palette_rd,
- bool *do_header_rd_based_breakout, int discount_color_cost) {
+ int *beat_best_rd, PICK_MODE_CONTEXT *ctx, uint8_t *tx_type_map,
+ int *beat_best_palette_rd, bool *do_header_rd_based_breakout,
+ int discount_color_cost) {
if (do_header_rd_based_breakout != NULL) *do_header_rd_based_breakout = false;
optimize_palette_colors(color_cache, n_cache, n, 1, centroids,
cpi->common.seq_params->bit_depth);
@@ -314,8 +314,6 @@ static inline void palette_rd_y(
memcpy(best_palette_color_map, color_map,
block_width * block_height * sizeof(color_map[0]));
*best_mbmi = *mbmi;
- memcpy(blk_skip, x->txfm_search_info.blk_skip,
- sizeof(x->txfm_search_info.blk_skip[0]) * ctx->num_4x4_blk);
av1_copy_array(tx_type_map, xd->tx_type_map, ctx->num_4x4_blk);
if (rate) *rate = this_rate;
if (rate_tokenonly) *rate_tokenonly = tokenonly_rd_stats.rate;
@@ -342,7 +340,7 @@ static inline int perform_top_color_palette_search(
int n_cache, MB_MODE_INFO *best_mbmi, uint8_t *best_palette_color_map,
int64_t *best_rd, int *rate, int *rate_tokenonly, int64_t *distortion,
uint8_t *skippable, int *beat_best_rd, PICK_MODE_CONTEXT *ctx,
- uint8_t *best_blk_skip, uint8_t *tx_type_map, int discount_color_cost) {
+ uint8_t *tx_type_map, int discount_color_cost) {
int16_t centroids[PALETTE_MAX_SIZE];
int n = start_n;
int top_color_winner = end_n;
@@ -357,9 +355,9 @@ static inline int perform_top_color_palette_search(
palette_rd_y(cpi, x, mbmi, bsize, dc_mode_cost, data, centroids, n,
color_cache, n_cache, do_header_rd_based_gating, best_mbmi,
best_palette_color_map, best_rd, rate, rate_tokenonly,
- distortion, skippable, beat_best_rd, ctx, best_blk_skip,
- tx_type_map, &beat_best_palette_rd,
- &do_header_rd_based_breakout, discount_color_cost);
+ distortion, skippable, beat_best_rd, ctx, tx_type_map,
+ &beat_best_palette_rd, &do_header_rd_based_breakout,
+ discount_color_cost);
*last_n_searched = n;
if (do_header_rd_based_breakout) {
// Terminate palette_size search by setting last_n_searched to end_n.
@@ -389,8 +387,8 @@ static inline int perform_k_means_palette_search(
int n_cache, MB_MODE_INFO *best_mbmi, uint8_t *best_palette_color_map,
int64_t *best_rd, int *rate, int *rate_tokenonly, int64_t *distortion,
uint8_t *skippable, int *beat_best_rd, PICK_MODE_CONTEXT *ctx,
- uint8_t *best_blk_skip, uint8_t *tx_type_map, uint8_t *color_map,
- int data_points, int discount_color_cost) {
+ uint8_t *tx_type_map, uint8_t *color_map, int data_points,
+ int discount_color_cost) {
int16_t centroids[PALETTE_MAX_SIZE];
const int max_itr = 50;
int n = start_n;
@@ -410,9 +408,9 @@ static inline int perform_k_means_palette_search(
palette_rd_y(cpi, x, mbmi, bsize, dc_mode_cost, data, centroids, n,
color_cache, n_cache, do_header_rd_based_gating, best_mbmi,
best_palette_color_map, best_rd, rate, rate_tokenonly,
- distortion, skippable, beat_best_rd, ctx, best_blk_skip,
- tx_type_map, &beat_best_palette_rd,
- &do_header_rd_based_breakout, discount_color_cost);
+ distortion, skippable, beat_best_rd, ctx, tx_type_map,
+ &beat_best_palette_rd, &do_header_rd_based_breakout,
+ discount_color_cost);
*last_n_searched = n;
if (do_header_rd_based_breakout) {
// Terminate palette_size search by setting last_n_searched to end_n.
@@ -543,8 +541,7 @@ void av1_rd_pick_palette_intra_sby(
const AV1_COMP *cpi, MACROBLOCK *x, BLOCK_SIZE bsize, int dc_mode_cost,
MB_MODE_INFO *best_mbmi, uint8_t *best_palette_color_map, int64_t *best_rd,
int *rate, int *rate_tokenonly, int64_t *distortion, uint8_t *skippable,
- int *beat_best_rd, PICK_MODE_CONTEXT *ctx, uint8_t *best_blk_skip,
- uint8_t *tx_type_map) {
+ int *beat_best_rd, PICK_MODE_CONTEXT *ctx, uint8_t *tx_type_map) {
MACROBLOCKD *const xd = &x->e_mbd;
MB_MODE_INFO *const mbmi = xd->mi[0];
assert(!is_inter_block(mbmi));
@@ -662,7 +659,7 @@ void av1_rd_pick_palette_intra_sby(
cpi, x, mbmi, bsize, dc_mode_cost, data, top_colors, min_n, max_n + 1,
step_size, do_header_rd_based_gating, &unused, color_cache, n_cache,
best_mbmi, best_palette_color_map, best_rd, rate, rate_tokenonly,
- distortion, skippable, beat_best_rd, ctx, best_blk_skip, tx_type_map,
+ distortion, skippable, beat_best_rd, ctx, tx_type_map,
discount_color_cost);
// Evaluate neighbors for the winner color (if winner is found) in the
// above coarse search for dominant colors
@@ -676,8 +673,8 @@ void av1_rd_pick_palette_intra_sby(
stage2_max_n + 1, stage2_step_size,
/*do_header_rd_based_gating=*/false, &unused, color_cache, n_cache,
best_mbmi, best_palette_color_map, best_rd, rate, rate_tokenonly,
- distortion, skippable, beat_best_rd, ctx, best_blk_skip,
- tx_type_map, discount_color_cost);
+ distortion, skippable, beat_best_rd, ctx, tx_type_map,
+ discount_color_cost);
}
// K-means clustering.
// Perform k-means coarse palette search to find the winner candidate
@@ -686,8 +683,7 @@ void av1_rd_pick_palette_intra_sby(
min_n, max_n + 1, step_size, do_header_rd_based_gating, &unused,
color_cache, n_cache, best_mbmi, best_palette_color_map, best_rd,
rate, rate_tokenonly, distortion, skippable, beat_best_rd, ctx,
- best_blk_skip, tx_type_map, color_map, rows * cols,
- discount_color_cost);
+ tx_type_map, color_map, rows * cols, discount_color_cost);
// Evaluate neighbors for the winner color (if winner is found) in the
// above coarse search for k-means
if (k_means_winner <= max_n) {
@@ -700,8 +696,8 @@ void av1_rd_pick_palette_intra_sby(
start_n_stage2, end_n_stage2 + 1, step_size_stage2,
/*do_header_rd_based_gating=*/false, &unused, color_cache, n_cache,
best_mbmi, best_palette_color_map, best_rd, rate, rate_tokenonly,
- distortion, skippable, beat_best_rd, ctx, best_blk_skip,
- tx_type_map, color_map, rows * cols, discount_color_cost);
+ distortion, skippable, beat_best_rd, ctx, tx_type_map, color_map,
+ rows * cols, discount_color_cost);
}
} else {
const int max_n = AOMMIN(colors, PALETTE_MAX_SIZE),
@@ -712,7 +708,7 @@ void av1_rd_pick_palette_intra_sby(
cpi, x, mbmi, bsize, dc_mode_cost, data, top_colors, min_n, max_n + 1,
1, do_header_rd_based_gating, &last_n_searched, color_cache, n_cache,
best_mbmi, best_palette_color_map, best_rd, rate, rate_tokenonly,
- distortion, skippable, beat_best_rd, ctx, best_blk_skip, tx_type_map,
+ distortion, skippable, beat_best_rd, ctx, tx_type_map,
discount_color_cost);
if (last_n_searched < max_n) {
// Search in descending order until we get to the previous best
@@ -721,7 +717,7 @@ void av1_rd_pick_palette_intra_sby(
last_n_searched, -1, /*do_header_rd_based_gating=*/false, &unused,
color_cache, n_cache, best_mbmi, best_palette_color_map, best_rd,
rate, rate_tokenonly, distortion, skippable, beat_best_rd, ctx,
- best_blk_skip, tx_type_map, discount_color_cost);
+ tx_type_map, discount_color_cost);
}
// K-means clustering.
if (colors == PALETTE_MIN_SIZE) {
@@ -733,8 +729,7 @@ void av1_rd_pick_palette_intra_sby(
color_cache, n_cache, /*do_header_rd_based_gating=*/false,
best_mbmi, best_palette_color_map, best_rd, rate,
rate_tokenonly, distortion, skippable, beat_best_rd, ctx,
- best_blk_skip, tx_type_map, NULL, NULL,
- discount_color_cost);
+ tx_type_map, NULL, NULL, discount_color_cost);
} else {
// Perform k-means palette search in ascending order
last_n_searched = min_n;
@@ -743,8 +738,7 @@ void av1_rd_pick_palette_intra_sby(
min_n, max_n + 1, 1, do_header_rd_based_gating, &last_n_searched,
color_cache, n_cache, best_mbmi, best_palette_color_map, best_rd,
rate, rate_tokenonly, distortion, skippable, beat_best_rd, ctx,
- best_blk_skip, tx_type_map, color_map, rows * cols,
- discount_color_cost);
+ tx_type_map, color_map, rows * cols, discount_color_cost);
if (last_n_searched < max_n) {
// Search in descending order until we get to the previous best
perform_k_means_palette_search(
@@ -752,8 +746,8 @@ void av1_rd_pick_palette_intra_sby(
max_n, last_n_searched, -1, /*do_header_rd_based_gating=*/false,
&unused, color_cache, n_cache, best_mbmi, best_palette_color_map,
best_rd, rate, rate_tokenonly, distortion, skippable,
- beat_best_rd, ctx, best_blk_skip, tx_type_map, color_map,
- rows * cols, discount_color_cost);
+ beat_best_rd, ctx, tx_type_map, color_map, rows * cols,
+ discount_color_cost);
}
}
}
diff --git a/av1/encoder/palette.h b/av1/encoder/palette.h
index ce109497bd..ac1112f5cf 100644
--- a/av1/encoder/palette.h
+++ b/av1/encoder/palette.h
@@ -174,7 +174,7 @@ void av1_rd_pick_palette_intra_sby(
int dc_mode_cost, MB_MODE_INFO *best_mbmi, uint8_t *best_palette_color_map,
int64_t *best_rd, int *rate, int *rate_tokenonly, int64_t *distortion,
uint8_t *skippable, int *beat_best_rd, struct PICK_MODE_CONTEXT *ctx,
- uint8_t *best_blk_skip, uint8_t *tx_type_map);
+ uint8_t *tx_type_map);
/*!\brief Search for the best palette in the chroma plane.
*
diff --git a/av1/encoder/partition_search.c b/av1/encoder/partition_search.c
index 624f5ed1be..19540ae590 100644
--- a/av1/encoder/partition_search.c
+++ b/av1/encoder/partition_search.c
@@ -5554,16 +5554,6 @@ bool av1_rd_pick_partition(AV1_COMP *const cpi, ThreadData *td,
part_search_state.partition_rect_allowed[VERT] &= !blk_params.has_cols;
}
-#ifndef NDEBUG
- // Nothing should rely on the default value of this array (which is just
- // leftover from encoding the previous block. Setting it to fixed pattern
- // when debugging.
- // bit 0, 1, 2 are blk_skip of each plane
- // bit 4, 5, 6 are initialization checking of each plane
- memset(x->txfm_search_info.blk_skip, 0x77,
- sizeof(x->txfm_search_info.blk_skip));
-#endif // NDEBUG
-
assert(mi_size_wide[bsize] == mi_size_high[bsize]);
// Set buffers and offsets.
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c
index 59b8fa5326..91b5dea736 100644
--- a/av1/encoder/rdopt.c
+++ b/av1/encoder/rdopt.c
@@ -1512,7 +1512,6 @@ static int64_t motion_mode_rd(
const int rate2_nocoeff = rd_stats->rate;
int best_xskip_txfm = 0;
RD_STATS best_rd_stats, best_rd_stats_y, best_rd_stats_uv;
- uint8_t best_blk_skip[MAX_MIB_SIZE * MAX_MIB_SIZE];
uint8_t best_tx_type_map[MAX_MIB_SIZE * MAX_MIB_SIZE];
const int rate_mv0 = *rate_mv;
const int interintra_allowed = cm->seq_params->enable_interintra_compound &&
@@ -1870,8 +1869,6 @@ static int64_t motion_mode_rd(
best_rate_mv = tmp_rate_mv;
*yrd = this_yrd;
if (num_planes > 1) best_rd_stats_uv = *rd_stats_uv;
- memcpy(best_blk_skip, txfm_info->blk_skip,
- sizeof(txfm_info->blk_skip[0]) * xd->height * xd->width);
av1_copy_array(best_tx_type_map, xd->tx_type_map, xd->height * xd->width);
best_xskip_txfm = mbmi->skip_txfm;
}
@@ -1888,8 +1885,6 @@ static int64_t motion_mode_rd(
*rd_stats = best_rd_stats;
*rd_stats_y = best_rd_stats_y;
if (num_planes > 1) *rd_stats_uv = best_rd_stats_uv;
- memcpy(txfm_info->blk_skip, best_blk_skip,
- sizeof(txfm_info->blk_skip[0]) * xd->height * xd->width);
av1_copy_array(xd->tx_type_map, best_tx_type_map, xd->height * xd->width);
txfm_info->skip_txfm = best_xskip_txfm;
@@ -3061,7 +3056,6 @@ static int64_t handle_inter_mode(
const int8_t ref_frame_type = av1_ref_frame_type(mbmi->ref_frame);
RD_STATS best_rd_stats, best_rd_stats_y, best_rd_stats_uv;
int64_t best_rd = INT64_MAX;
- uint8_t best_blk_skip[MAX_MIB_SIZE * MAX_MIB_SIZE];
uint8_t best_tx_type_map[MAX_MIB_SIZE * MAX_MIB_SIZE];
int64_t best_yrd = INT64_MAX;
MB_MODE_INFO best_mbmi = *mbmi;
@@ -3326,8 +3320,6 @@ static int64_t handle_inter_mode(
best_rd = tmp_rd;
best_mbmi = *mbmi;
best_xskip_txfm = txfm_info->skip_txfm;
- memcpy(best_blk_skip, txfm_info->blk_skip,
- sizeof(best_blk_skip[0]) * xd->height * xd->width);
av1_copy_array(best_tx_type_map, xd->tx_type_map,
xd->height * xd->width);
motion_mode_cand->rate_mv = rate_mv;
@@ -3353,8 +3345,6 @@ static int64_t handle_inter_mode(
txfm_info->skip_txfm = best_xskip_txfm;
assert(IMPLIES(mbmi->comp_group_idx == 1,
mbmi->interinter_comp.type != COMPOUND_AVERAGE));
- memcpy(txfm_info->blk_skip, best_blk_skip,
- sizeof(best_blk_skip[0]) * xd->height * xd->width);
av1_copy_array(xd->tx_type_map, best_tx_type_map, xd->height * xd->width);
rd_stats->rdcost = RDCOST(x->rdmult, rd_stats->rate, rd_stats->dist);
@@ -3388,7 +3378,6 @@ static int64_t rd_pick_intrabc_mode_sb(const AV1_COMP *cpi, MACROBLOCK *x,
MACROBLOCKD *const xd = &x->e_mbd;
const TileInfo *tile = &xd->tile;
MB_MODE_INFO *mbmi = xd->mi[0];
- TxfmSearchInfo *txfm_info = &x->txfm_search_info;
const int mi_row = xd->mi_row;
const int mi_col = xd->mi_col;
@@ -3439,7 +3428,6 @@ static int64_t rd_pick_intrabc_mode_sb(const AV1_COMP *cpi, MACROBLOCK *x,
MB_MODE_INFO best_mbmi = *mbmi;
RD_STATS best_rdstats = *rd_stats;
- uint8_t best_blk_skip[MAX_MIB_SIZE * MAX_MIB_SIZE] = { 0 };
uint8_t best_tx_type_map[MAX_MIB_SIZE * MAX_MIB_SIZE];
av1_copy_array(best_tx_type_map, xd->tx_type_map, ctx->num_4x4_blk);
@@ -3565,15 +3553,11 @@ static int64_t rd_pick_intrabc_mode_sb(const AV1_COMP *cpi, MACROBLOCK *x,
best_rd = rd_stats_yuv.rdcost;
best_mbmi = *mbmi;
best_rdstats = rd_stats_yuv;
- memcpy(best_blk_skip, txfm_info->blk_skip,
- sizeof(txfm_info->blk_skip[0]) * xd->height * xd->width);
av1_copy_array(best_tx_type_map, xd->tx_type_map, xd->height * xd->width);
}
}
*mbmi = best_mbmi;
*rd_stats = best_rdstats;
- memcpy(txfm_info->blk_skip, best_blk_skip,
- sizeof(txfm_info->blk_skip[0]) * xd->height * xd->width);
av1_copy_array(xd->tx_type_map, best_tx_type_map, ctx->num_4x4_blk);
#if CONFIG_RD_DEBUG
mbmi->rd_stats = *rd_stats;
@@ -3593,7 +3577,6 @@ void av1_rd_pick_intra_mode_sb(const struct AV1_COMP *cpi, struct macroblock *x,
MACROBLOCKD *const xd = &x->e_mbd;
MB_MODE_INFO *const mbmi = xd->mi[0];
const int num_planes = av1_num_planes(cm);
- TxfmSearchInfo *txfm_info = &x->txfm_search_info;
int rate_y = 0, rate_uv = 0, rate_y_tokenonly = 0, rate_uv_tokenonly = 0;
uint8_t y_skip_txfm = 0, uv_skip_txfm = 0;
int64_t dist_y = 0, dist_uv = 0;
@@ -3618,8 +3601,6 @@ void av1_rd_pick_intra_mode_sb(const struct AV1_COMP *cpi, struct macroblock *x,
// Set up the tx variables for reproducing the y predictions in case we
// need it for chroma-from-luma.
if (xd->is_chroma_ref && store_cfl_required_rdo(cm, x)) {
- memcpy(txfm_info->blk_skip, ctx->blk_skip,
- sizeof(txfm_info->blk_skip[0]) * ctx->num_4x4_blk);
av1_copy_array(xd->tx_type_map, ctx->tx_type_map, ctx->num_4x4_blk);
}
const TX_SIZE max_uv_tx_size = av1_get_tx_size(AOM_PLANE_U, xd);
@@ -3643,8 +3624,6 @@ void av1_rd_pick_intra_mode_sb(const struct AV1_COMP *cpi, struct macroblock *x,
best_rd = rd_cost->rdcost;
if (rd_pick_intrabc_mode_sb(cpi, x, ctx, rd_cost, bsize, best_rd) < best_rd) {
ctx->rd_stats.skip_txfm = mbmi->skip_txfm;
- memcpy(ctx->blk_skip, txfm_info->blk_skip,
- sizeof(txfm_info->blk_skip[0]) * ctx->num_4x4_blk);
assert(rd_cost->rate != INT_MAX);
}
if (rd_cost->rate == INT_MAX) return;
@@ -3830,7 +3809,6 @@ static inline void refine_winner_mode_tx(
MACROBLOCKD *const xd = &x->e_mbd;
MB_MODE_INFO *const mbmi = xd->mi[0];
TxfmSearchParams *txfm_params = &x->txfm_search_params;
- TxfmSearchInfo *txfm_info = &x->txfm_search_info;
int64_t best_rd;
const int num_planes = av1_num_planes(cm);
@@ -3910,8 +3888,6 @@ static inline void refine_winner_mode_tx(
INT64_MAX);
memset(mbmi->inter_tx_size, mbmi->tx_size,
sizeof(mbmi->inter_tx_size));
- for (int i = 0; i < xd->height * xd->width; ++i)
- set_blk_skip(txfm_info->blk_skip, 0, i, rd_stats_y.skip_txfm);
}
} else {
av1_pick_uniform_tx_size_type_yrd(cpi, x, &rd_stats_y, bsize,
@@ -3951,7 +3927,6 @@ static inline void refine_winner_mode_tx(
if (best_rd > this_rd) {
*best_mbmode = *mbmi;
*best_mode_index = winner_mode_index;
- av1_copy_array(ctx->blk_skip, txfm_info->blk_skip, ctx->num_4x4_blk);
av1_copy_array(ctx->tx_type_map, xd->tx_type_map, ctx->num_4x4_blk);
rd_cost->rate = this_rate;
rd_cost->dist = rd_stats_y.dist + rd_stats_uv.dist;
@@ -5117,7 +5092,6 @@ static inline void update_search_state(
const int skip_ctx = av1_get_skip_txfm_context(xd);
const int skip_txfm =
mbmi->skip_txfm && !is_mode_intra(av1_mode_defs[new_best_mode].mode);
- const TxfmSearchInfo *txfm_info = &x->txfm_search_info;
search_state->best_rd = new_best_rd_stats->rdcost;
search_state->best_mode_index = new_best_mode;
@@ -5137,8 +5111,6 @@ static inline void update_search_state(
search_state->best_rate_uv = new_best_rd_stats_uv->rate;
}
search_state->best_y_rdcost = *new_best_rd_stats_y;
- memcpy(ctx->blk_skip, txfm_info->blk_skip,
- sizeof(txfm_info->blk_skip[0]) * ctx->num_4x4_blk);
av1_copy_array(ctx->tx_type_map, xd->tx_type_map, ctx->num_4x4_blk);
}
@@ -5725,7 +5697,6 @@ static inline void search_intra_modes_in_interframe(
int best_mode_cost_y = -1;
MB_MODE_INFO best_mbmi = *xd->mi[0];
THR_MODES best_mode_enum = THR_INVALID;
- uint8_t best_blk_skip[MAX_MIB_SIZE * MAX_MIB_SIZE];
uint8_t best_tx_type_map[MAX_MIB_SIZE * MAX_MIB_SIZE];
const int num_4x4 = bsize_to_num_blk(bsize);
@@ -5812,8 +5783,6 @@ static inline void search_intra_modes_in_interframe(
best_rd_y = intra_rd_y;
best_mbmi = *mbmi;
best_mode_enum = mode_enum;
- memcpy(best_blk_skip, x->txfm_search_info.blk_skip,
- sizeof(best_blk_skip[0]) * num_4x4);
av1_copy_array(best_tx_type_map, xd->tx_type_map, num_4x4);
}
}
@@ -5827,8 +5796,6 @@ static inline void search_intra_modes_in_interframe(
// Restores the best luma mode
*mbmi = best_mbmi;
- memcpy(x->txfm_search_info.blk_skip, best_blk_skip,
- sizeof(best_blk_skip[0]) * num_4x4);
av1_copy_array(xd->tx_type_map, best_tx_type_map, num_4x4);
// Performs chroma search
@@ -6481,8 +6448,6 @@ void av1_rd_pick_inter_mode(struct AV1_COMP *cpi, struct TileDataEnc *tile_data,
search_state.best_mbmode = *mbmi;
search_state.best_skip2 = 0;
search_state.best_mode_skippable = this_skippable;
- memcpy(ctx->blk_skip, txfm_info->blk_skip,
- sizeof(txfm_info->blk_skip[0]) * ctx->num_4x4_blk);
av1_copy_array(ctx->tx_type_map, xd->tx_type_map, ctx->num_4x4_blk);
}
}
diff --git a/av1/encoder/tx_search.c b/av1/encoder/tx_search.c
index 5bce47d72b..8bf926d5de 100644
--- a/av1/encoder/tx_search.c
+++ b/av1/encoder/tx_search.c
@@ -111,8 +111,6 @@ static inline void fetch_mb_rd_info(int n4, const MB_RD_INFO *const mb_rd_info,
MACROBLOCKD *const xd = &x->e_mbd;
MB_MODE_INFO *const mbmi = xd->mi[0];
mbmi->tx_size = mb_rd_info->tx_size;
- memcpy(x->txfm_search_info.blk_skip, mb_rd_info->blk_skip,
- sizeof(mb_rd_info->blk_skip[0]) * n4);
av1_copy(mbmi->inter_tx_size, mb_rd_info->inter_tx_size);
av1_copy_array(xd->tx_type_map, mb_rd_info->tx_type_map, n4);
*rd_stats = mb_rd_info->rd_stats;
@@ -247,8 +245,6 @@ static inline void set_skip_txfm(MACROBLOCK *x, RD_STATS *rd_stats,
memset(xd->tx_type_map, DCT_DCT, sizeof(xd->tx_type_map[0]) * n4);
memset(mbmi->inter_tx_size, tx_size, sizeof(mbmi->inter_tx_size));
mbmi->tx_size = tx_size;
- for (int i = 0; i < n4; ++i)
- set_blk_skip(x->txfm_search_info.blk_skip, 0, i, 1);
rd_stats->skip_txfm = 1;
if (is_cur_buf_hbd(xd)) dist = ROUND_POWER_OF_TWO(dist, (xd->bd - 8) * 2);
rd_stats->dist = rd_stats->sse = (dist << 4);
@@ -297,8 +293,6 @@ static inline void save_mb_rd_info(int n4, uint32_t hash,
const MB_MODE_INFO *const mbmi = xd->mi[0];
mb_rd_info->hash_value = hash;
mb_rd_info->tx_size = mbmi->tx_size;
- memcpy(mb_rd_info->blk_skip, x->txfm_search_info.blk_skip,
- sizeof(mb_rd_info->blk_skip[0]) * n4);
av1_copy(mb_rd_info->inter_tx_size, mbmi->inter_tx_size);
av1_copy_array(mb_rd_info->tx_type_map, xd->tx_type_map, n4);
mb_rd_info->rd_stats = *rd_stats;
@@ -2353,7 +2347,6 @@ static inline void try_tx_block_no_split(
MACROBLOCKD *const xd = &x->e_mbd;
MB_MODE_INFO *const mbmi = xd->mi[0];
struct macroblock_plane *const p = &x->plane[0];
- const int bw = mi_size_wide[plane_bsize];
const ENTROPY_CONTEXT *const pta = ta + blk_col;
const ENTROPY_CONTEXT *const ptl = tl + blk_row;
const TX_SIZE txs_ctx = get_txsize_entropy_ctx(tx_size);
@@ -2383,8 +2376,6 @@ static inline void try_tx_block_no_split(
update_txk_array(xd, blk_row, blk_col, tx_size, DCT_DCT);
}
rd_stats->skip_txfm = pick_skip_txfm;
- set_blk_skip(x->txfm_search_info.blk_skip, 0, blk_row * bw + blk_col,
- pick_skip_txfm);
if (tx_size > TX_4X4 && depth < MAX_VARTX_DEPTH)
rd_stats->rate += x->mode_costs.txfm_partition_cost[txfm_partition_ctx][0];
@@ -2640,9 +2631,6 @@ static inline void select_tx_block(
}
mbmi->tx_size = tx_size;
update_txk_array(xd, blk_row, blk_col, tx_size, no_split.tx_type);
- const int bw = mi_size_wide[plane_bsize];
- set_blk_skip(x->txfm_search_info.blk_skip, 0, blk_row * bw + blk_col,
- rd_stats->skip_txfm);
} else {
*rd_stats = split_rd_stats;
if (split_rd_stats.rdcost == INT64_MAX) *is_cost_valid = 0;
@@ -2935,13 +2923,11 @@ static inline void choose_tx_size_type_from_rd(const AV1_COMP *const cpi,
}
uint8_t best_txk_type_map[MAX_MIB_SIZE * MAX_MIB_SIZE];
- uint8_t best_blk_skip[MAX_MIB_SIZE * MAX_MIB_SIZE];
TX_SIZE best_tx_size = max_rect_tx_size;
int64_t best_rd = INT64_MAX;
const int num_blks = bsize_to_num_blk(bs);
x->rd_model = FULL_TXFM_RD;
int64_t rd[MAX_TX_DEPTH + 1] = { INT64_MAX, INT64_MAX, INT64_MAX };
- TxfmSearchInfo *txfm_info = &x->txfm_search_info;
for (int tx_size = start_tx, depth = init_depth; depth <= MAX_TX_DEPTH;
depth++, tx_size = sub_tx_size_map[tx_size]) {
if ((!cpi->oxcf.txfm_cfg.enable_tx64 &&
@@ -2972,7 +2958,6 @@ static inline void choose_tx_size_type_from_rd(const AV1_COMP *const cpi,
rd[depth] = uniform_txfm_yrd(cpi, x, &this_rd_stats, rd_thresh, bs, tx_size,
FTXS_NONE);
if (rd[depth] < best_rd) {
- av1_copy_array(best_blk_skip, txfm_info->blk_skip, num_blks);
av1_copy_array(best_txk_type_map, xd->tx_type_map, num_blks);
best_tx_size = tx_size;
best_rd = rd[depth];
@@ -2990,7 +2975,6 @@ static inline void choose_tx_size_type_from_rd(const AV1_COMP *const cpi,
if (rd_stats->rate != INT_MAX) {
mbmi->tx_size = best_tx_size;
av1_copy_array(xd->tx_type_map, best_txk_type_map, num_blks);
- av1_copy_array(txfm_info->blk_skip, best_blk_skip, num_blks);
}
#if !CONFIG_REALTIME_ONLY
@@ -3057,16 +3041,6 @@ static inline void block_rd_txfm(int plane, int block, int blk_row, int blk_col,
#endif // CONFIG_RD_DEBUG
av1_set_txb_context(x, plane, block, tx_size, a, l);
- const int blk_idx =
- blk_row * (block_size_wide[plane_bsize] >> MI_SIZE_LOG2) + blk_col;
-
- TxfmSearchInfo *txfm_info = &x->txfm_search_info;
- if (plane == 0)
- set_blk_skip(txfm_info->blk_skip, plane, blk_idx,
- x->plane[plane].eobs[block] == 0);
- else
- set_blk_skip(txfm_info->blk_skip, plane, blk_idx, 0);
-
int64_t rd;
if (is_inter) {
const int64_t no_skip_txfm_rd =
@@ -3249,21 +3223,17 @@ static inline void tx_block_yrd(const AV1_COMP *cpi, MACROBLOCK *x, int blk_row,
rd_stats->zero_rate = zero_blk_rate;
tx_type_rd(cpi, x, tx_size, blk_row, blk_col, block, plane_bsize, &txb_ctx,
rd_stats, ftxs_mode, ref_best_rd);
- const int mi_width = mi_size_wide[plane_bsize];
- TxfmSearchInfo *txfm_info = &x->txfm_search_info;
if (RDCOST(x->rdmult, rd_stats->rate, rd_stats->dist) >=
RDCOST(x->rdmult, zero_blk_rate, rd_stats->sse) ||
rd_stats->skip_txfm == 1) {
rd_stats->rate = zero_blk_rate;
rd_stats->dist = rd_stats->sse;
rd_stats->skip_txfm = 1;
- set_blk_skip(txfm_info->blk_skip, 0, blk_row * mi_width + blk_col, 1);
x->plane[0].eobs[block] = 0;
x->plane[0].txb_entropy_ctx[block] = 0;
update_txk_array(xd, blk_row, blk_col, tx_size, DCT_DCT);
} else {
rd_stats->skip_txfm = 0;
- set_blk_skip(txfm_info->blk_skip, 0, blk_row * mi_width + blk_col, 0);
}
if (tx_size > TX_4X4 && depth < MAX_VARTX_DEPTH)
rd_stats->rate += x->mode_costs.txfm_partition_cost[ctx][0];
@@ -3783,8 +3753,6 @@ int av1_txfm_search(const AV1_COMP *cpi, MACROBLOCK *x, BLOCK_SIZE bsize,
} else {
av1_pick_uniform_tx_size_type_yrd(cpi, x, rd_stats_y, bsize, rd_thresh);
memset(mbmi->inter_tx_size, mbmi->tx_size, sizeof(mbmi->inter_tx_size));
- for (int i = 0; i < xd->height * xd->width; ++i)
- set_blk_skip(x->txfm_search_info.blk_skip, 0, i, rd_stats_y->skip_txfm);
}
if (rd_stats_y->rate == INT_MAX) return 0;