for (i = 0; i < BLOCK_SIZES; ++i) {
for (j = 0; j < MAX_MODES; ++j) {
tile_data->thresh_freq_fact[i][j] = RD_THRESH_INIT_FACT;
-#if CONFIG_RATE_CTRL
- if (cpi->oxcf.use_simple_encode_api) {
- tile_data->thresh_freq_fact_prev[i][j] = RD_THRESH_INIT_FACT;
- }
-#endif // CONFIG_RATE_CTRL
-#if CONFIG_CONSISTENT_RECODE
tile_data->thresh_freq_fact_prev[i][j] = RD_THRESH_INIT_FACT;
-#endif // CONFIG_CONSISTENT_RECODE
tile_data->mode_map[i][j] = j;
}
}
x->fwd_txfm4x4 = xd->lossless ? vp9_fwht4x4 : vpx_fdct4x4;
#endif // CONFIG_VP9_HIGHBITDEPTH
x->inv_txfm_add = xd->lossless ? vp9_iwht4x4_add : vp9_idct4x4_add;
-#if CONFIG_CONSISTENT_RECODE
x->optimize = sf->optimize_coefficients == 1 && cpi->oxcf.pass != 1;
-#endif
if (xd->lossless) x->optimize = 0;
x->sharpness = cpi->oxcf.sharpness;
x->adjust_rdmult_by_segment = (cpi->oxcf.aq_mode == VARIANCE_AQ);
return sum_delta / (cm->mi_rows * cm->mi_cols);
}
-#if CONFIG_CONSISTENT_RECODE || CONFIG_RATE_CTRL
static void restore_encode_params(VP9_COMP *cpi) {
VP9_COMMON *const cm = &cpi->common;
- const int tile_cols = 1 << cm->log2_tile_cols;
- const int tile_rows = 1 << cm->log2_tile_rows;
- int tile_col, tile_row;
+ int tile_idx;
int i, j;
+ TileDataEnc *tile_data;
RD_OPT *rd_opt = &cpi->rd;
for (i = 0; i < MAX_REF_FRAMES; i++) {
for (j = 0; j < REFERENCE_MODES; j++)
rd_opt->filter_threshes[i][j] = rd_opt->filter_threshes_prev[i][j];
}
- if (cpi->tile_data != NULL) {
- for (tile_row = 0; tile_row < tile_rows; ++tile_row)
- for (tile_col = 0; tile_col < tile_cols; ++tile_col) {
- TileDataEnc *tile_data =
- &cpi->tile_data[tile_row * tile_cols + tile_col];
- for (i = 0; i < BLOCK_SIZES; ++i) {
- for (j = 0; j < MAX_MODES; ++j) {
- tile_data->thresh_freq_fact[i][j] =
- tile_data->thresh_freq_fact_prev[i][j];
- }
- }
- }
+ for (tile_idx = 0; tile_idx < cpi->allocated_tiles; tile_idx++) {
+ assert(cpi->tile_data);
+ tile_data = &cpi->tile_data[tile_idx];
+ vp9_copy(tile_data->thresh_freq_fact, tile_data->thresh_freq_fact_prev);
}
cm->interp_filter = cpi->sf.default_interp_filter;
}
-#endif // CONFIG_CONSISTENT_RECODE || CONFIG_RATE_CTRL
void vp9_encode_frame(VP9_COMP *cpi) {
VP9_COMMON *const cm = &cpi->common;
-#if CONFIG_RATE_CTRL
- if (cpi->oxcf.use_simple_encode_api) {
- restore_encode_params(cpi);
- }
-#endif // CONFIG_RATE_CTRL
-#if CONFIG_CONSISTENT_RECODE
restore_encode_params(cpi);
-#endif
#if CONFIG_MISMATCH_DEBUG
mismatch_reset_frame(MAX_MB_PLANE);
set_ref_ptrs(cm, xd, LAST_FRAME, LAST_FRAME);
}
-#if CONFIG_CONSISTENT_RECODE || CONFIG_RATE_CTRL
static void save_encode_params(VP9_COMP *cpi) {
- VP9_COMMON *const cm = &cpi->common;
- const int tile_cols = 1 << cm->log2_tile_cols;
- const int tile_rows = 1 << cm->log2_tile_rows;
- int tile_col, tile_row;
+ int tile_idx;
int i, j;
+ TileDataEnc *tile_data;
RD_OPT *rd_opt = &cpi->rd;
for (i = 0; i < MAX_REF_FRAMES; i++) {
for (j = 0; j < REFERENCE_MODES; j++)
rd_opt->filter_threshes_prev[i][j] = rd_opt->filter_threshes[i][j];
}
- if (cpi->tile_data != NULL) {
- for (tile_row = 0; tile_row < tile_rows; ++tile_row)
- for (tile_col = 0; tile_col < tile_cols; ++tile_col) {
- TileDataEnc *tile_data =
- &cpi->tile_data[tile_row * tile_cols + tile_col];
- for (i = 0; i < BLOCK_SIZES; ++i) {
- for (j = 0; j < MAX_MODES; ++j) {
- tile_data->thresh_freq_fact_prev[i][j] =
- tile_data->thresh_freq_fact[i][j];
- }
- }
- }
+ for (tile_idx = 0; tile_idx < cpi->allocated_tiles; tile_idx++) {
+ assert(cpi->tile_data);
+ tile_data = &cpi->tile_data[tile_idx];
+ vp9_copy(tile_data->thresh_freq_fact_prev, tile_data->thresh_freq_fact);
}
}
-#endif // CONFIG_CONSISTENT_RECODE || CONFIG_RATE_CTRL
static INLINE void set_raw_source_frame(VP9_COMP *cpi) {
#ifdef ENABLE_KF_DENOISE
memset(cpi->mode_chosen_counts, 0,
MAX_MODES * sizeof(*cpi->mode_chosen_counts));
#endif
-#if CONFIG_CONSISTENT_RECODE
// Backup to ensure consistency between recodes
save_encode_params(cpi);
-#elif CONFIG_RATE_CTRL
- if (cpi->oxcf.use_simple_encode_api) {
- save_encode_params(cpi);
- }
-#endif
if (cpi->ext_ratectrl.ready &&
(cpi->ext_ratectrl.funcs.rc_type & VPX_RC_RDMULT) != 0) {
vpx_codec_err_t codec_status;