Merge "Removing lossless field from VP9EncoderConfig."
This commit is contained in:
commit
3a1625614d
@ -2369,22 +2369,6 @@ static void init_encode_frame_mb_context(VP9_COMP *cpi) {
|
||||
sizeof(*xd->above_seg_context) * aligned_mi_cols);
|
||||
}
|
||||
|
||||
static void switch_lossless_mode(VP9_COMP *cpi, int lossless) {
|
||||
if (lossless) {
|
||||
// printf("Switching to lossless\n");
|
||||
cpi->mb.fwd_txm4x4 = vp9_fwht4x4;
|
||||
cpi->mb.itxm_add = vp9_iwht4x4_add;
|
||||
cpi->mb.optimize = 0;
|
||||
cpi->common.lf.filter_level = 0;
|
||||
cpi->zbin_mode_boost_enabled = 0;
|
||||
cpi->common.tx_mode = ONLY_4X4;
|
||||
} else {
|
||||
// printf("Not lossless\n");
|
||||
cpi->mb.fwd_txm4x4 = vp9_fdct4x4;
|
||||
cpi->mb.itxm_add = vp9_idct4x4_add;
|
||||
}
|
||||
}
|
||||
|
||||
static int check_dual_ref_flags(VP9_COMP *cpi) {
|
||||
const int ref_flags = cpi->ref_frame_flags;
|
||||
|
||||
@ -2421,7 +2405,7 @@ static MV_REFERENCE_FRAME get_frame_type(const VP9_COMP *cpi) {
|
||||
}
|
||||
|
||||
static TX_MODE select_tx_mode(const VP9_COMP *cpi) {
|
||||
if (cpi->oxcf.lossless) {
|
||||
if (cpi->mb.e_mbd.lossless) {
|
||||
return ONLY_4X4;
|
||||
} else if (cpi->common.current_video_frame == 0) {
|
||||
return TX_MODE_SELECT;
|
||||
@ -3011,13 +2995,21 @@ static void encode_frame_internal(VP9_COMP *cpi) {
|
||||
vp9_zero(rd_opt->tx_select_diff);
|
||||
vp9_zero(rd_opt->tx_select_threshes);
|
||||
|
||||
cm->tx_mode = select_tx_mode(cpi);
|
||||
|
||||
cpi->mb.e_mbd.lossless = cm->base_qindex == 0 &&
|
||||
cm->y_dc_delta_q == 0 &&
|
||||
cm->uv_dc_delta_q == 0 &&
|
||||
cm->uv_ac_delta_q == 0;
|
||||
switch_lossless_mode(cpi, cpi->mb.e_mbd.lossless);
|
||||
|
||||
cm->tx_mode = select_tx_mode(cpi);
|
||||
|
||||
cpi->mb.fwd_txm4x4 = cpi->mb.e_mbd.lossless ? vp9_fwht4x4 : vp9_fdct4x4;
|
||||
cpi->mb.itxm_add = cpi->mb.e_mbd.lossless ? vp9_iwht4x4_add : vp9_idct4x4_add;
|
||||
|
||||
if (cpi->mb.e_mbd.lossless) {
|
||||
cpi->mb.optimize = 0;
|
||||
cpi->common.lf.filter_level = 0;
|
||||
cpi->zbin_mode_boost_enabled = 0;
|
||||
}
|
||||
|
||||
vp9_frame_init_quantizer(cpi);
|
||||
|
||||
|
@ -393,11 +393,6 @@ static void set_speed_features(VP9_COMP *cpi) {
|
||||
// Set rd thresholds based on mode and speed setting
|
||||
vp9_set_rd_speed_thresholds(cpi);
|
||||
vp9_set_rd_speed_thresholds_sub8x8(cpi);
|
||||
|
||||
cpi->mb.fwd_txm4x4 = vp9_fdct4x4;
|
||||
if (cpi->oxcf.lossless || cpi->mb.e_mbd.lossless) {
|
||||
cpi->mb.fwd_txm4x4 = vp9_fwht4x4;
|
||||
}
|
||||
}
|
||||
|
||||
static void alloc_raw_frame_buffers(VP9_COMP *cpi) {
|
||||
@ -596,16 +591,6 @@ void vp9_change_config(struct VP9_COMP *cpi, const VP9EncoderConfig *oxcf) {
|
||||
if (cpi->oxcf.mode == REALTIME)
|
||||
cpi->oxcf.play_alternate = 0;
|
||||
|
||||
cpi->oxcf.lossless = oxcf->lossless;
|
||||
if (cpi->oxcf.lossless) {
|
||||
// In lossless mode, make sure right quantizer range and correct transform
|
||||
// is set.
|
||||
cpi->oxcf.worst_allowed_q = 0;
|
||||
cpi->oxcf.best_allowed_q = 0;
|
||||
cpi->mb.itxm_add = vp9_iwht4x4_add;
|
||||
} else {
|
||||
cpi->mb.itxm_add = vp9_idct4x4_add;
|
||||
}
|
||||
rc->baseline_gf_interval = DEFAULT_GF_INTERVAL;
|
||||
cpi->ref_frame_flags = VP9_ALT_FLAG | VP9_GOLD_FLAG | VP9_LAST_FLAG;
|
||||
|
||||
@ -2629,6 +2614,9 @@ int vp9_get_compressed_data(VP9_COMP *cpi, unsigned int *frame_flags,
|
||||
|
||||
if (cpi->pass == 1 &&
|
||||
(!cpi->use_svc || cpi->svc.number_temporal_layers == 1)) {
|
||||
const int lossless = is_lossless_requested(&cpi->oxcf);
|
||||
cpi->mb.fwd_txm4x4 = lossless ? vp9_fwht4x4 : vp9_fdct4x4;
|
||||
cpi->mb.itxm_add = lossless ? vp9_iwht4x4_add : vp9_idct4x4_add;
|
||||
vp9_first_pass(cpi);
|
||||
} else if (cpi->pass == 2 &&
|
||||
(!cpi->use_svc || cpi->svc.number_temporal_layers == 1)) {
|
||||
|
@ -228,7 +228,6 @@ typedef struct VP9EncoderConfig {
|
||||
int worst_allowed_q;
|
||||
int best_allowed_q;
|
||||
int cq_level;
|
||||
int lossless;
|
||||
AQ_MODE aq_mode; // Adaptive Quantization mode
|
||||
|
||||
// Internal frame size scaling.
|
||||
@ -286,6 +285,10 @@ typedef struct VP9EncoderConfig {
|
||||
vp8e_tuning tuning;
|
||||
} VP9EncoderConfig;
|
||||
|
||||
static INLINE int is_lossless_requested(const VP9EncoderConfig *cfg) {
|
||||
return cfg->best_allowed_q == 0 && cfg->worst_allowed_q == 0;
|
||||
}
|
||||
|
||||
static INLINE int is_best_mode(MODE mode) {
|
||||
return mode == ONE_PASS_BEST || mode == TWO_PASS_SECOND_BEST;
|
||||
}
|
||||
|
@ -291,7 +291,7 @@ void vp9_set_speed_features(VP9_COMP *cpi) {
|
||||
sf->subpel_search_method = SUBPEL_TREE;
|
||||
sf->subpel_iters_per_step = 2;
|
||||
sf->subpel_force_stop = 0;
|
||||
sf->optimize_coefficients = !oxcf->lossless;
|
||||
sf->optimize_coefficients = !is_lossless_requested(&cpi->oxcf);
|
||||
sf->reduce_first_step_size = 0;
|
||||
sf->auto_mv_step_size = 0;
|
||||
sf->max_step_search_steps = MAX_MVSEARCH_STEPS;
|
||||
|
@ -331,8 +331,10 @@ static vpx_codec_err_t set_encoder_config(
|
||||
oxcf->target_bandwidth = 1000 * cfg->rc_target_bitrate;
|
||||
oxcf->rc_max_intra_bitrate_pct = extra_cfg->rc_max_intra_bitrate_pct;
|
||||
|
||||
oxcf->best_allowed_q = vp9_quantizer_to_qindex(cfg->rc_min_quantizer);
|
||||
oxcf->worst_allowed_q = vp9_quantizer_to_qindex(cfg->rc_max_quantizer);
|
||||
oxcf->best_allowed_q =
|
||||
extra_cfg->lossless ? 0 : vp9_quantizer_to_qindex(cfg->rc_min_quantizer);
|
||||
oxcf->worst_allowed_q =
|
||||
extra_cfg->lossless ? 0 : vp9_quantizer_to_qindex(cfg->rc_max_quantizer);
|
||||
oxcf->cq_level = vp9_quantizer_to_qindex(extra_cfg->cq_level);
|
||||
oxcf->fixed_q = -1;
|
||||
|
||||
@ -376,8 +378,6 @@ static vpx_codec_err_t set_encoder_config(
|
||||
oxcf->tile_columns = extra_cfg->tile_columns;
|
||||
oxcf->tile_rows = extra_cfg->tile_rows;
|
||||
|
||||
oxcf->lossless = extra_cfg->lossless;
|
||||
|
||||
oxcf->error_resilient_mode = cfg->g_error_resilient;
|
||||
oxcf->frame_parallel_decoding_mode = extra_cfg->frame_parallel_decoding_mode;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user