Fix command line option to disable tpl model
Change-Id: I8ca358ca44bfc2b9f5d2bec2cfd26daceb879916
diff --git a/apps/aomenc.c b/apps/aomenc.c
index 9c487c2..a2baf9ce 100644
--- a/apps/aomenc.c
+++ b/apps/aomenc.c
@@ -416,7 +416,8 @@
static const arg_def_t enable_tpl_model =
ARG_DEF(NULL, "enable-tpl-model", 1,
"RDO based on frame temporal dependency "
- "(0: off, 1: backward source based, 2: forward 2-pass");
+ "(0: off, 1: backward source based, 2: forward 2-pass). "
+ "This is required for deltaq mode.");
static const arg_def_t enable_keyframe_filtering =
ARG_DEF(NULL, "enable-keyframe-filtering", 1,
"Apply temporal filtering on key frame "
@@ -449,7 +450,7 @@
static const arg_def_t min_partition_size =
ARG_DEF(NULL, "min-partition-size", 4,
"Set min partition size "
- "(4:4x4, 8:8x8, 16:16x16, 32:32x32, 64:64x64, 128:128x128)."
+ "(4:4x4, 8:8x8, 16:16x16, 32:32x32, 64:64x64, 128:128x128). "
"On frame with 4k+ resolutions or higher speed settings, the min "
"partition size will have a minimum of 8.");
static const arg_def_t max_partition_size =
@@ -646,8 +647,9 @@
"3: cyclic refresh)");
static const arg_def_t deltaq_mode =
ARG_DEF(NULL, "deltaq-mode", 1,
- "Delta qindex mode (0: off, 1: deltaq pred efficiency (default), "
- "2: deltaq perceptual)");
+ "Delta qindex mode (0: off, 1: deltaq objective (default), "
+ "2: deltaq perceptual). "
+ "Currently this requires enable-tpl-model as a prerequisite.");
static const arg_def_t deltalf_mode = ARG_DEF(
NULL, "delta-lf-mode", 1, "Enable delta-lf-mode (0: off (default), 1: on)");
static const arg_def_t frame_periodic_boost =
diff --git a/av1/av1_cx_iface.c b/av1/av1_cx_iface.c
index 427e017..ed85cf5 100644
--- a/av1/av1_cx_iface.c
+++ b/av1/av1_cx_iface.c
@@ -937,12 +937,6 @@
oxcf->enable_chroma_deltaq = extra_cfg->enable_chroma_deltaq;
oxcf->aq_mode = extra_cfg->aq_mode;
oxcf->deltaq_mode = extra_cfg->deltaq_mode;
- // Turn on tpl model for deltaq_mode == DELTA_Q_OBJECTIVE and no
- // superres. If superres is being used on the other hand, turn
- // delta_q off.
- if (oxcf->deltaq_mode == DELTA_Q_OBJECTIVE && !oxcf->enable_tpl_model) {
- oxcf->enable_tpl_model = 1;
- }
oxcf->deltalf_mode =
(oxcf->deltaq_mode != NO_DELTA_Q) && extra_cfg->deltalf_mode;
diff --git a/av1/encoder/encodeframe.c b/av1/encoder/encodeframe.c
index 2974a7e..dad696d 100644
--- a/av1/encoder/encodeframe.c
+++ b/av1/encoder/encodeframe.c
@@ -3898,15 +3898,21 @@
current_qindex =
av1_compute_q_from_energy_level_deltaq_mode(cpi, block_var_level);
}
- } else if (cpi->oxcf.deltaq_mode == DELTA_Q_OBJECTIVE) {
- assert(cpi->oxcf.enable_tpl_model);
+ } else if (cpi->oxcf.deltaq_mode == DELTA_Q_OBJECTIVE &&
+ cpi->oxcf.enable_tpl_model) {
// Setup deltaq based on tpl stats
current_qindex = get_q_for_deltaq_objective(cpi, sb_size, mi_row, mi_col);
}
const int delta_q_res = delta_q_info->delta_q_res;
- current_qindex =
- clamp(current_qindex, delta_q_res, 256 - delta_q_info->delta_q_res);
+ // Right now aq only works with tpl model. So if tpl is disabled, we set the
+ // current_qindex to base_qindex.
+ if (cpi->oxcf.enable_tpl_model && cpi->oxcf.deltaq_mode != NO_DELTA_Q) {
+ current_qindex =
+ clamp(current_qindex, delta_q_res, 256 - delta_q_info->delta_q_res);
+ } else {
+ current_qindex = cm->base_qindex;
+ }
MACROBLOCKD *const xd = &x->e_mbd;
const int sign_deltaq_index =