Remove some redundant code in av1_txfm_search()
BUG=aomedia:2617
Change-Id: Ie2a903e9cfb042fba235a75daf560d9add9908e8
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c
index 036b5ee..3a0ea59 100644
--- a/av1/encoder/rdopt.c
+++ b/av1/encoder/rdopt.c
@@ -1530,8 +1530,8 @@
if (!eval_txfm) continue;
}
- if (!av1_txfm_search(cpi, tile_data, x, bsize, rd_stats, rd_stats_y,
- rd_stats_uv, rd_stats->rate, ref_best_rd)) {
+ if (!av1_txfm_search(cpi, x, bsize, rd_stats, rd_stats_y, rd_stats_uv,
+ rd_stats->rate, ref_best_rd)) {
if (rd_stats_y->rate == INT_MAX && mode_index == 0) {
if (cpi->sf.inter_sf.prune_single_motion_modes_by_simple_trans &&
!is_comp_pred) {
@@ -2778,7 +2778,7 @@
dvcost, MV_COST_WEIGHT_SUB);
const int rate_mode = x->intrabc_cost[1];
RD_STATS rd_stats_yuv, rd_stats_y, rd_stats_uv;
- if (!av1_txfm_search(cpi, NULL, x, bsize, &rd_stats_yuv, &rd_stats_y,
+ if (!av1_txfm_search(cpi, x, bsize, &rd_stats_yuv, &rd_stats_y,
&rd_stats_uv, rate_mode + rate_mv, INT64_MAX))
continue;
rd_stats_yuv.rdcost =
@@ -4724,8 +4724,8 @@
if (!eval_txfm) continue;
}
- if (!av1_txfm_search(cpi, tile_data, x, bsize, &rd_stats, &rd_stats_y,
- &rd_stats_uv, mode_rate, search_state.best_rd)) {
+ if (!av1_txfm_search(cpi, x, bsize, &rd_stats, &rd_stats_y, &rd_stats_uv,
+ mode_rate, search_state.best_rd)) {
continue;
} else if (cpi->sf.inter_sf.inter_mode_rd_model_estimation == 1) {
inter_mode_data_push(tile_data, mbmi->sb_type, rd_stats.sse,
diff --git a/av1/encoder/tx_search.c b/av1/encoder/tx_search.c
index 3129b3a..e315b0c 100644
--- a/av1/encoder/tx_search.c
+++ b/av1/encoder/tx_search.c
@@ -3467,10 +3467,9 @@
}
}
-int av1_txfm_search(const AV1_COMP *cpi, const TileDataEnc *tile_data,
- MACROBLOCK *x, BLOCK_SIZE bsize, RD_STATS *rd_stats,
- RD_STATS *rd_stats_y, RD_STATS *rd_stats_uv, int mode_rate,
- int64_t ref_best_rd) {
+int av1_txfm_search(const AV1_COMP *cpi, MACROBLOCK *x, BLOCK_SIZE bsize,
+ RD_STATS *rd_stats, RD_STATS *rd_stats_y,
+ RD_STATS *rd_stats_uv, int mode_rate, int64_t ref_best_rd) {
/*
* This function combines y and uv planes' transform search processes
* together, when the prediction is generated. It first does subtraction to
@@ -3482,7 +3481,6 @@
const AV1_COMMON *cm = &cpi->common;
MACROBLOCKD *const xd = &x->e_mbd;
MB_MODE_INFO *const mbmi = xd->mi[0];
- const int ref_frame_1 = mbmi->ref_frame[1];
const int64_t mode_rd = RDCOST(x->rdmult, mode_rate, 0);
const int64_t rd_thresh =
ref_best_rd == INT64_MAX ? INT64_MAX : ref_best_rd - mode_rd;
@@ -3494,7 +3492,6 @@
// Account for minimum skip and non_skip rd.
// Eventually either one of them will be added to mode_rate
const int64_t min_header_rd_possible = RDCOST(x->rdmult, min_header_rate, 0);
- (void)tile_data;
if (min_header_rd_possible > ref_best_rd) {
av1_invalid_rd_stats(rd_stats_y);
@@ -3520,12 +3517,7 @@
set_blk_skip(x, 0, i, rd_stats_y->skip);
}
- if (rd_stats_y->rate == INT_MAX) {
- // TODO(angiebird): check if we need this
- // restore_dst_buf(xd, *orig_dst, num_planes);
- mbmi->ref_frame[1] = ref_frame_1;
- return 0;
- }
+ if (rd_stats_y->rate == INT_MAX) return 0;
av1_merge_rd_stats(rd_stats, rd_stats_y);
@@ -3541,9 +3533,9 @@
// Invalidate rd_stats_y to skip the rest of the motion modes search
if (tokenonly_rdy -
(tokenonly_rdy >> cpi->sf.inter_sf.prune_motion_mode_level) >
- rd_thresh)
+ rd_thresh) {
av1_invalid_rd_stats(rd_stats_y);
- mbmi->ref_frame[1] = ref_frame_1;
+ }
return 0;
}
@@ -3559,10 +3551,7 @@
}
const int is_cost_valid_uv =
av1_super_block_uvrd(cpi, x, rd_stats_uv, bsize, ref_best_chroma_rd);
- if (!is_cost_valid_uv) {
- mbmi->ref_frame[1] = ref_frame_1;
- return 0;
- }
+ if (!is_cost_valid_uv) return 0;
av1_merge_rd_stats(rd_stats, rd_stats_uv);
}
@@ -3578,10 +3567,7 @@
// here mbmi->skip temporarily plays a role as what this_skip2 does
const int64_t tmprd = RDCOST(x->rdmult, rd_stats->rate, rd_stats->dist);
- if (tmprd > ref_best_rd) {
- mbmi->ref_frame[1] = ref_frame_1;
- return 0;
- }
+ if (tmprd > ref_best_rd) return 0;
} else if (!xd->lossless[mbmi->segment_id] &&
(RDCOST(x->rdmult,
rd_stats_y->rate + rd_stats_uv->rate + skip_flag_cost[0],
diff --git a/av1/encoder/tx_search.h b/av1/encoder/tx_search.h
index 66a9b19..669c361 100644
--- a/av1/encoder/tx_search.h
+++ b/av1/encoder/tx_search.h
@@ -69,10 +69,9 @@
TX_SIZE tx_size, int use_fast_coef_casting,
FAST_TX_SEARCH_MODE ftxs_mode, int skip_trellis);
-int av1_txfm_search(const AV1_COMP *cpi, const TileDataEnc *tile_data,
- MACROBLOCK *x, BLOCK_SIZE bsize, RD_STATS *rd_stats,
- RD_STATS *rd_stats_y, RD_STATS *rd_stats_uv, int mode_rate,
- int64_t ref_best_rd);
+int av1_txfm_search(const AV1_COMP *cpi, MACROBLOCK *x, BLOCK_SIZE bsize,
+ RD_STATS *rd_stats, RD_STATS *rd_stats_y,
+ RD_STATS *rd_stats_uv, int mode_rate, int64_t ref_best_rd);
#ifdef __cplusplus
} // extern "C"