Group toolset config in AV1EncoderConfig
This CL groups the toolset related configuration parameters
in AV1EncoderConfig into a new struct ToolCfg, renames some
variables, and adds relevant documentation.
BUG=aomedia:2701
Change-Id: If59d79e23f9ac4ee589cd86d3ea149d75c0d01c4
diff --git a/av1/av1_cx_iface.c b/av1/av1_cx_iface.c
index 0d59ae2..2a79aa4 100644
--- a/av1/av1_cx_iface.c
+++ b/av1/av1_cx_iface.c
@@ -734,6 +734,8 @@
AlgoCfg *const algo_cfg = &oxcf->algo_cfg;
+ ToolCfg *const tool_cfg = &oxcf->tool_cfg;
+
const int is_vbr = cfg->rc_end_usage == AOM_VBR;
oxcf->profile = cfg->g_profile;
oxcf->max_threads = (int)cfg->g_threads;
@@ -747,8 +749,6 @@
frm_dim_cfg->render_width = extra_cfg->render_width;
frm_dim_cfg->render_height = extra_cfg->render_height;
- oxcf->bit_depth = cfg->g_bit_depth;
-
// Set input video related configuration.
input_cfg->input_bit_depth = cfg->g_input_bit_depth;
// guess a frame rate if out of whack, use 30
@@ -824,11 +824,32 @@
// Convert target bandwidth from Kbit/s to Bit/s
oxcf->target_bandwidth = 1000 * cfg->rc_target_bitrate;
- oxcf->enable_cdef = extra_cfg->enable_cdef;
- oxcf->enable_restoration =
+ // Set Toolset related configuration.
+ tool_cfg->bit_depth = cfg->g_bit_depth;
+ tool_cfg->enable_cdef = extra_cfg->enable_cdef;
+ tool_cfg->enable_restoration =
(cfg->g_usage == AOM_USAGE_REALTIME) ? 0 : extra_cfg->enable_restoration;
- oxcf->force_video_mode = extra_cfg->force_video_mode;
- oxcf->enable_palette = extra_cfg->enable_palette;
+ tool_cfg->force_video_mode = extra_cfg->force_video_mode;
+ tool_cfg->enable_palette = extra_cfg->enable_palette;
+ // FIXME(debargha): Should this be:
+ // tool_cfg->enable_ref_frame_mvs = extra_cfg->allow_ref_frame_mvs &
+ // extra_cfg->enable_order_hint ?
+ // Disallow using temporal MVs while large_scale_tile = 1.
+ tool_cfg->enable_ref_frame_mvs =
+ extra_cfg->allow_ref_frame_mvs && !cfg->large_scale_tile;
+ tool_cfg->superblock_size = extra_cfg->superblock_size;
+ tool_cfg->enable_monochrome = cfg->monochrome;
+ tool_cfg->full_still_picture_hdr = cfg->full_still_picture_hdr;
+ tool_cfg->enable_dual_filter = extra_cfg->enable_dual_filter;
+ tool_cfg->enable_order_hint = extra_cfg->enable_order_hint;
+ tool_cfg->enable_interintra_comp = extra_cfg->enable_interintra_comp;
+ tool_cfg->ref_frame_mvs_present =
+ extra_cfg->enable_ref_frame_mvs & extra_cfg->enable_order_hint;
+ tool_cfg->enable_global_motion = extra_cfg->enable_global_motion;
+ tool_cfg->error_resilient_mode =
+ cfg->g_error_resilient | extra_cfg->error_resilient_mode;
+ tool_cfg->frame_parallel_decoding_mode =
+ extra_cfg->frame_parallel_decoding_mode;
// Set Quantization related configuration.
q_cfg->using_qm = extra_cfg->enable_qm;
@@ -844,28 +865,24 @@
if (q_cfg->use_fixed_qp_offsets) {
if (cfg->fixed_qp_offsets[i] >= 0) { // user-provided qp offset
q_cfg->fixed_qp_offsets[i] = convert_qp_offset(
- rc_cfg->cq_level, cfg->fixed_qp_offsets[i], oxcf->bit_depth);
+ rc_cfg->cq_level, cfg->fixed_qp_offsets[i], tool_cfg->bit_depth);
} else { // auto-selected qp offset
q_cfg->fixed_qp_offsets[i] =
- get_modeled_qp_offset(rc_cfg->cq_level, i, oxcf->bit_depth);
+ get_modeled_qp_offset(rc_cfg->cq_level, i, tool_cfg->bit_depth);
}
} else {
q_cfg->fixed_qp_offsets[i] = -1.0;
}
}
+ tool_cfg->enable_deltalf_mode =
+ (q_cfg->deltaq_mode != NO_DELTA_Q) && extra_cfg->deltalf_mode;
+
// Set cost update frequency configuration.
oxcf->cost_upd_freq.coeff = (COST_UPDATE_TYPE)extra_cfg->coeff_cost_upd_freq;
oxcf->cost_upd_freq.mode = (COST_UPDATE_TYPE)extra_cfg->mode_cost_upd_freq;
oxcf->cost_upd_freq.mv = (COST_UPDATE_TYPE)extra_cfg->mv_cost_upd_freq;
- // FIXME(debargha): Should this be:
- // oxcf->allow_ref_frame_mvs = extra_cfg->allow_ref_frame_mvs &
- // extra_cfg->enable_order_hint ?
- // Disallow using temporal MVs while large_scale_tile = 1.
- oxcf->allow_ref_frame_mvs =
- extra_cfg->allow_ref_frame_mvs && !cfg->large_scale_tile;
-
// Set frame resize mode configuration.
resize_cfg->resize_mode = (RESIZE_MODE)cfg->rc_resize_mode;
resize_cfg->resize_scale_denominator = (uint8_t)cfg->rc_resize_denominator;
@@ -929,7 +946,6 @@
oxcf->tuning = extra_cfg->tuning;
oxcf->vmaf_model_path = extra_cfg->vmaf_model_path;
oxcf->content = extra_cfg->content;
- oxcf->superblock_size = extra_cfg->superblock_size;
if (cfg->large_scale_tile) {
oxcf->film_grain_test_vector = 0;
oxcf->film_grain_table_filename = NULL;
@@ -969,7 +985,7 @@
// AOM_SUPERBLOCK_SIZE_64X64(default value in large_scale_tile).
if (extra_cfg->superblock_size != AOM_SUPERBLOCK_SIZE_64X64 &&
extra_cfg->superblock_size != AOM_SUPERBLOCK_SIZE_128X128)
- oxcf->superblock_size = AOM_SUPERBLOCK_SIZE_64X64;
+ tool_cfg->superblock_size = AOM_SUPERBLOCK_SIZE_64X64;
}
// Set reference frame related configuration.
@@ -980,16 +996,6 @@
oxcf->row_mt = extra_cfg->row_mt;
- oxcf->monochrome = cfg->monochrome;
- oxcf->full_still_picture_hdr = cfg->full_still_picture_hdr;
- oxcf->enable_dual_filter = extra_cfg->enable_dual_filter;
- oxcf->enable_order_hint = extra_cfg->enable_order_hint;
- oxcf->enable_interintra_comp = extra_cfg->enable_interintra_comp;
- oxcf->enable_ref_frame_mvs =
- extra_cfg->enable_ref_frame_mvs & extra_cfg->enable_order_hint;
-
- oxcf->enable_global_motion = extra_cfg->enable_global_motion;
-
// Set motion mode related configuration.
oxcf->motion_mode_cfg.enable_obmc = extra_cfg->enable_obmc;
oxcf->motion_mode_cfg.enable_warped_motion = extra_cfg->enable_warped_motion;
@@ -1067,19 +1073,12 @@
disable_superres(superres_cfg);
}
- oxcf->error_resilient_mode =
- cfg->g_error_resilient | extra_cfg->error_resilient_mode;
- oxcf->frame_parallel_decoding_mode = extra_cfg->frame_parallel_decoding_mode;
-
if (input_cfg->limit == 1) {
// still picture mode, display model and timing is meaningless
dec_model_cfg->display_model_info_present_flag = 0;
dec_model_cfg->timing_info_present = 0;
}
- oxcf->deltalf_mode =
- (q_cfg->deltaq_mode != NO_DELTA_Q) && extra_cfg->deltalf_mode;
-
oxcf->save_as_annexb = cfg->save_as_annexb;
// Set unit test related configuration.
diff --git a/av1/encoder/encode_strategy.c b/av1/encoder/encode_strategy.c
index 0e9414d..d314663 100644
--- a/av1/encoder/encode_strategy.c
+++ b/av1/encoder/encode_strategy.c
@@ -483,7 +483,7 @@
if (lookahead_src == NULL) return 1;
const int is_error_resilient =
- cpi->oxcf.error_resilient_mode ||
+ cpi->oxcf.tool_cfg.error_resilient_mode ||
(lookahead_src->flags & AOM_EFLAG_ERROR_RESILIENT);
const int is_s_frame = cpi->oxcf.kf_cfg.enable_sframe ||
(lookahead_src->flags & AOM_EFLAG_SET_S_FRAME);
diff --git a/av1/encoder/encodeframe.c b/av1/encoder/encodeframe.c
index 65fcb25..f861d86 100644
--- a/av1/encoder/encodeframe.c
+++ b/av1/encoder/encodeframe.c
@@ -3457,7 +3457,7 @@
// keep track of any non-zero delta-q used
td->deltaq_used |= (x->delta_qindex != 0);
- if (cpi->oxcf.deltalf_mode) {
+ if (cpi->oxcf.tool_cfg.enable_deltalf_mode) {
const int delta_lf_res = delta_q_info->delta_lf_res;
const int lfmask = ~(delta_lf_res - 1);
const int delta_lf_from_base =
@@ -4445,7 +4445,8 @@
cpi->deltaq_used = 0;
cm->delta_q_info.delta_lf_present_flag =
- cm->delta_q_info.delta_q_present_flag && oxcf->deltalf_mode;
+ cm->delta_q_info.delta_q_present_flag &&
+ oxcf->tool_cfg.enable_deltalf_mode;
cm->delta_q_info.delta_lf_multi = DEFAULT_DELTA_LF_MULTI;
// update delta_q_present_flag and delta_lf_present_flag based on
diff --git a/av1/encoder/encoder.c b/av1/encoder/encoder.c
index 649071e..3d09cc1 100644
--- a/av1/encoder/encoder.c
+++ b/av1/encoder/encoder.c
@@ -384,18 +384,19 @@
void av1_init_seq_coding_tools(SequenceHeader *seq, AV1_COMMON *cm,
const AV1EncoderConfig *oxcf, int use_svc) {
const FrameDimensionCfg *const frm_dim_cfg = &oxcf->frm_dim_cfg;
+ const ToolCfg *const tool_cfg = &oxcf->tool_cfg;
seq->still_picture =
- (oxcf->force_video_mode == 0) && (oxcf->input_cfg.limit == 1);
+ (tool_cfg->force_video_mode == 0) && (oxcf->input_cfg.limit == 1);
seq->reduced_still_picture_hdr = seq->still_picture;
- seq->reduced_still_picture_hdr &= !oxcf->full_still_picture_hdr;
+ seq->reduced_still_picture_hdr &= !tool_cfg->full_still_picture_hdr;
seq->force_screen_content_tools = (oxcf->mode == REALTIME) ? 0 : 2;
seq->force_integer_mv = 2;
- seq->order_hint_info.enable_order_hint = oxcf->enable_order_hint;
+ seq->order_hint_info.enable_order_hint = tool_cfg->enable_order_hint;
seq->frame_id_numbers_present_flag =
!(seq->still_picture && seq->reduced_still_picture_hdr) &&
- !oxcf->tile_cfg.enable_large_scale_tile && oxcf->error_resilient_mode &&
- !use_svc;
+ !oxcf->tile_cfg.enable_large_scale_tile &&
+ tool_cfg->error_resilient_mode && !use_svc;
if (seq->still_picture && seq->reduced_still_picture_hdr) {
seq->order_hint_info.enable_order_hint = 0;
seq->force_screen_content_tools = 2;
@@ -422,19 +423,19 @@
seq->frame_id_length = FRAME_ID_LENGTH;
seq->delta_frame_id_length = DELTA_FRAME_ID_LENGTH;
- seq->enable_dual_filter = oxcf->enable_dual_filter;
+ seq->enable_dual_filter = tool_cfg->enable_dual_filter;
seq->order_hint_info.enable_dist_wtd_comp =
oxcf->comp_type_cfg.enable_dist_wtd_comp;
seq->order_hint_info.enable_dist_wtd_comp &=
seq->order_hint_info.enable_order_hint;
- seq->order_hint_info.enable_ref_frame_mvs = oxcf->enable_ref_frame_mvs;
+ seq->order_hint_info.enable_ref_frame_mvs = tool_cfg->ref_frame_mvs_present;
seq->order_hint_info.enable_ref_frame_mvs &=
seq->order_hint_info.enable_order_hint;
seq->enable_superres = oxcf->superres_cfg.enable_superres;
- seq->enable_cdef = oxcf->enable_cdef;
- seq->enable_restoration = oxcf->enable_restoration;
+ seq->enable_cdef = tool_cfg->enable_cdef;
+ seq->enable_restoration = tool_cfg->enable_restoration;
seq->enable_warped_motion = oxcf->motion_mode_cfg.enable_warped_motion;
- seq->enable_interintra_compound = oxcf->enable_interintra_comp;
+ seq->enable_interintra_compound = tool_cfg->enable_interintra_comp;
seq->enable_masked_compound = oxcf->comp_type_cfg.enable_masked_comp;
seq->enable_intra_edge_filter = oxcf->intra_mode_cfg.enable_intra_edge_filter;
seq->enable_filter_intra = oxcf->intra_mode_cfg.enable_filter_intra;
@@ -473,12 +474,12 @@
cpi->framerate = oxcf->input_cfg.init_framerate;
seq_params->profile = oxcf->profile;
- seq_params->bit_depth = oxcf->bit_depth;
+ seq_params->bit_depth = oxcf->tool_cfg.bit_depth;
seq_params->use_highbitdepth = oxcf->use_highbitdepth;
seq_params->color_primaries = color_cfg->color_primaries;
seq_params->transfer_characteristics = color_cfg->transfer_characteristics;
seq_params->matrix_coefficients = color_cfg->matrix_coefficients;
- seq_params->monochrome = oxcf->monochrome;
+ seq_params->monochrome = oxcf->tool_cfg.enable_monochrome;
seq_params->chroma_sample_position = oxcf->chroma_sample_position;
seq_params->color_range = color_cfg->color_range;
seq_params->timing_info_present = dec_model_cfg->timing_info_present;
@@ -594,11 +595,11 @@
}
if (seq_params->profile != oxcf->profile) seq_params->profile = oxcf->profile;
- seq_params->bit_depth = oxcf->bit_depth;
+ seq_params->bit_depth = oxcf->tool_cfg.bit_depth;
seq_params->color_primaries = color_cfg->color_primaries;
seq_params->transfer_characteristics = color_cfg->transfer_characteristics;
seq_params->matrix_coefficients = color_cfg->matrix_coefficients;
- seq_params->monochrome = oxcf->monochrome;
+ seq_params->monochrome = oxcf->tool_cfg.enable_monochrome;
seq_params->chroma_sample_position = oxcf->chroma_sample_position;
seq_params->color_range = color_cfg->color_range;
@@ -672,9 +673,10 @@
refresh_frame_flags->golden_frame = false;
refresh_frame_flags->bwd_ref_frame = false;
- cm->features.refresh_frame_context = (oxcf->frame_parallel_decoding_mode)
- ? REFRESH_FRAME_CONTEXT_DISABLED
- : REFRESH_FRAME_CONTEXT_BACKWARD;
+ cm->features.refresh_frame_context =
+ (oxcf->tool_cfg.frame_parallel_decoding_mode)
+ ? REFRESH_FRAME_CONTEXT_DISABLED
+ : REFRESH_FRAME_CONTEXT_BACKWARD;
if (oxcf->tile_cfg.enable_large_scale_tile)
cm->features.refresh_frame_context = REFRESH_FRAME_CONTEXT_DISABLED;
@@ -3306,9 +3308,10 @@
av1_set_high_precision_mv(cpi, 1, 0);
// Normal defaults
- cm->features.refresh_frame_context = oxcf->frame_parallel_decoding_mode
- ? REFRESH_FRAME_CONTEXT_DISABLED
- : REFRESH_FRAME_CONTEXT_BACKWARD;
+ cm->features.refresh_frame_context =
+ oxcf->tool_cfg.frame_parallel_decoding_mode
+ ? REFRESH_FRAME_CONTEXT_DISABLED
+ : REFRESH_FRAME_CONTEXT_BACKWARD;
if (oxcf->tile_cfg.enable_large_scale_tile)
cm->features.refresh_frame_context = REFRESH_FRAME_CONTEXT_DISABLED;
@@ -3589,9 +3592,9 @@
ext_refresh_frame_flags->update_pending = 0;
}
- ext_flags->use_ref_frame_mvs = cpi->oxcf.allow_ref_frame_mvs &
+ ext_flags->use_ref_frame_mvs = cpi->oxcf.tool_cfg.enable_ref_frame_mvs &
((flags & AOM_EFLAG_NO_REF_FRAME_MVS) == 0);
- ext_flags->use_error_resilient = cpi->oxcf.error_resilient_mode |
+ ext_flags->use_error_resilient = cpi->oxcf.tool_cfg.error_resilient_mode |
((flags & AOM_EFLAG_ERROR_RESILIENT) != 0);
ext_flags->use_s_frame =
cpi->oxcf.kf_cfg.enable_sframe | ((flags & AOM_EFLAG_SET_S_FRAME) != 0);
diff --git a/av1/encoder/encoder.h b/av1/encoder/encoder.h
index cc36a13..75732a6 100644
--- a/av1/encoder/encoder.h
+++ b/av1/encoder/encoder.h
@@ -635,6 +635,44 @@
bool enable_overlay;
} AlgoCfg;
+typedef struct {
+ // Indicates the codec bit-depth.
+ aom_bit_depth_t bit_depth;
+ // Indicates the superblock size that should be used by the encoder.
+ aom_superblock_size_t superblock_size;
+ // Indicates if loopfilter modulation should be enabled.
+ bool enable_deltalf_mode;
+ // Indicates if CDEF should be enabled.
+ bool enable_cdef;
+ // Indicates if loop restoration filter should be enabled.
+ bool enable_restoration;
+ // When enabled, video mode should be used even for single frame input.
+ bool force_video_mode;
+ // Indicates if the error resiliency features should be enabled.
+ bool error_resilient_mode;
+ // Indicates if frame parallel decoding feature should be enabled.
+ bool frame_parallel_decoding_mode;
+ // Indicates if the input should be encoded as monochrome.
+ bool enable_monochrome;
+ // When enabled, the encoder will use a full header even for still pictures.
+ // When disabled, a reduced header is used for still pictures.
+ bool full_still_picture_hdr;
+ // Indicates if dual interpolation filters should be enabled.
+ bool enable_dual_filter;
+ // Indicates if frame order hint should be enabled or not.
+ bool enable_order_hint;
+ // Indicates if ref_frame_mvs should be enabled at the sequence level.
+ bool ref_frame_mvs_present;
+ // Indicates if ref_frame_mvs should be enabled at the frame level.
+ bool enable_ref_frame_mvs;
+ // Indicates if interintra compound mode is enabled.
+ bool enable_interintra_comp;
+ // Indicates if global motion should be enabled.
+ bool enable_global_motion;
+ // Indicates if palette should be enabled.
+ bool enable_palette;
+} ToolCfg;
+
/*!\endcond */
/*!
* \brief Main encoder configuration data structure.
@@ -642,8 +680,7 @@
typedef struct AV1EncoderConfig {
/*!\cond */
BITSTREAM_PROFILE profile;
- aom_bit_depth_t bit_depth; // Codec bit-depth.
- int64_t target_bandwidth; // bandwidth to be used in bits per second
+ int64_t target_bandwidth; // bandwidth to be used in bits per second
// Configuration related to the input video.
InputCfg input_cfg;
@@ -685,11 +722,6 @@
// Frame drop threshold.
int drop_frames_water_mark;
- // controlling quality
- int deltalf_mode;
- int enable_cdef;
- int enable_restoration;
- int force_video_mode;
unsigned int vbr_corpus_complexity_lap; // 0 indicates corpus complexity vbr
// mode is disabled
@@ -708,17 +740,8 @@
// END DATARATE CONTROL OPTIONS
// ----------------------------------------------------------------
- /* Bitfield defining the error resiliency features to enable.
- * Can provide decodable frames after losses in previous
- * frames and decodable partitions after losses in the same frame.
- */
- unsigned int error_resilient_mode;
-
- /* Bitfield defining the parallel decoding mode where the
- * decoding in successive frames may be conducted in parallel
- * just by decoding the frame headers.
- */
- unsigned int frame_parallel_decoding_mode;
+ // Configuration related to encoder toolsets.
+ ToolCfg tool_cfg;
// Configuration related to Group of frames.
GFConfig gf_cfg;
@@ -750,16 +773,6 @@
// Configuration related to unit tests.
UnitTestCfg unit_test_cfg;
- aom_superblock_size_t superblock_size;
- uint8_t monochrome;
- unsigned int full_still_picture_hdr;
- int enable_dual_filter;
- int enable_order_hint;
- int enable_ref_frame_mvs;
- unsigned int allow_ref_frame_mvs;
- int enable_interintra_comp;
- int enable_global_motion;
- int enable_palette;
unsigned int save_as_annexb;
// Flags related to motion mode.
diff --git a/av1/encoder/encoder_utils.c b/av1/encoder/encoder_utils.c
index 98e6505..1cb09ee 100644
--- a/av1/encoder/encoder_utils.c
+++ b/av1/encoder/encoder_utils.c
@@ -607,7 +607,7 @@
memcpy(&cm->film_grain_params,
film_grain_test_vectors + oxcf->film_grain_test_vector - 1,
sizeof(cm->film_grain_params));
- if (oxcf->monochrome)
+ if (oxcf->tool_cfg.enable_monochrome)
reset_film_grain_chroma_params(&cm->film_grain_params);
cm->film_grain_params.bit_depth = cm->seq_params.bit_depth;
if (cm->seq_params.color_range == AOM_CR_FULL_RANGE) {
@@ -726,11 +726,12 @@
const AV1_COMMON *const cm = &cpi->common;
const AV1EncoderConfig *const oxcf = &cpi->oxcf;
- if (oxcf->superblock_size == AOM_SUPERBLOCK_SIZE_64X64) return BLOCK_64X64;
- if (oxcf->superblock_size == AOM_SUPERBLOCK_SIZE_128X128)
+ if (oxcf->tool_cfg.superblock_size == AOM_SUPERBLOCK_SIZE_64X64)
+ return BLOCK_64X64;
+ if (oxcf->tool_cfg.superblock_size == AOM_SUPERBLOCK_SIZE_128X128)
return BLOCK_128X128;
- assert(oxcf->superblock_size == AOM_SUPERBLOCK_SIZE_DYNAMIC);
+ assert(oxcf->tool_cfg.superblock_size == AOM_SUPERBLOCK_SIZE_DYNAMIC);
if (cpi->svc.number_spatial_layers > 1 ||
oxcf->resize_cfg.resize_mode != RESIZE_NONE) {
diff --git a/av1/encoder/global_motion_facade.c b/av1/encoder/global_motion_facade.c
index 958254b..2bfa7db 100644
--- a/av1/encoder/global_motion_facade.c
+++ b/av1/encoder/global_motion_facade.c
@@ -462,7 +462,7 @@
av1_zero(gm_info->params_cost);
if (cpi->common.current_frame.frame_type == INTER_FRAME && cpi->source &&
- cpi->oxcf.enable_global_motion && !gm_info->search_done) {
+ cpi->oxcf.tool_cfg.enable_global_motion && !gm_info->search_done) {
setup_global_motion_info_params(cpi);
if (cpi->mt_info.num_workers > 1)
av1_global_motion_estimation_mt(cpi);
diff --git a/av1/encoder/intra_mode_search.c b/av1/encoder/intra_mode_search.c
index de15b67..3cbb860 100644
--- a/av1/encoder/intra_mode_search.c
+++ b/av1/encoder/intra_mode_search.c
@@ -521,7 +521,7 @@
// Search palette mode
const int try_palette =
- cpi->oxcf.enable_palette &&
+ cpi->oxcf.tool_cfg.enable_palette &&
av1_allow_palette(cpi->common.features.allow_screen_content_tools,
mbmi->sb_type);
if (try_palette) {
@@ -909,7 +909,7 @@
// the one in av1_search_palette_mode.
PALETTE_MODE_INFO *const pmi = &mbmi->palette_mode_info;
const int try_palette =
- cpi->oxcf.enable_palette &&
+ cpi->oxcf.tool_cfg.enable_palette &&
av1_allow_palette(cm->features.allow_screen_content_tools,
mbmi->sb_type);
if (intra_search_state->rate_uv_intra == INT_MAX) {
@@ -1024,7 +1024,7 @@
const int *bmode_costs;
PALETTE_MODE_INFO *const pmi = &mbmi->palette_mode_info;
const int try_palette =
- cpi->oxcf.enable_palette &&
+ cpi->oxcf.tool_cfg.enable_palette &&
av1_allow_palette(cpi->common.features.allow_screen_content_tools,
mbmi->sb_type);
uint8_t *best_palette_color_map =
diff --git a/av1/encoder/ratectrl.c b/av1/encoder/ratectrl.c
index 1958c72..bb656e3 100644
--- a/av1/encoder/ratectrl.c
+++ b/av1/encoder/ratectrl.c
@@ -322,7 +322,8 @@
rc->ni_frames = 0;
rc->tot_q = 0.0;
- rc->avg_q = av1_convert_qindex_to_q(rc_cfg->worst_allowed_q, oxcf->bit_depth);
+ rc->avg_q = av1_convert_qindex_to_q(rc_cfg->worst_allowed_q,
+ oxcf->tool_cfg.bit_depth);
for (i = 0; i < RATE_FACTOR_LEVELS; ++i) {
rc->rate_correction_factors[i] = 0.7;
diff --git a/av1/encoder/rdopt.c b/av1/encoder/rdopt.c
index 197873c..f7e4aa1 100644
--- a/av1/encoder/rdopt.c
+++ b/av1/encoder/rdopt.c
@@ -5378,7 +5378,7 @@
// Only try palette mode when the best mode so far is an intra mode.
const int try_palette =
- cpi->oxcf.enable_palette &&
+ cpi->oxcf.tool_cfg.enable_palette &&
av1_allow_palette(features->allow_screen_content_tools, mbmi->sb_type) &&
!is_inter_mode(search_state.best_mbmode.mode);
RD_STATS this_rd_cost;
diff --git a/av1/encoder/var_based_part.c b/av1/encoder/var_based_part.c
index 56abf99..9a7d731 100644
--- a/av1/encoder/var_based_part.c
+++ b/av1/encoder/var_based_part.c
@@ -599,7 +599,7 @@
int i;
MACROBLOCKD *xd = &x->e_mbd;
- if (is_key_frame || cpi->oxcf.monochrome) return;
+ if (is_key_frame || cpi->oxcf.tool_cfg.enable_monochrome) return;
for (i = 1; i <= 2; ++i) {
unsigned int uv_sad = UINT_MAX;