target level API: remove the "Not enabled" option
Setting the target level as the maximum value(31) serves the purpose.
BUG=aomedia:2332
Change-Id: Ia80bf2412d778ef35425b3feff2b56bc372f40cb
diff --git a/apps/aomenc.c b/apps/aomenc.c
index bf01833..b16baa1 100644
--- a/apps/aomenc.c
+++ b/apps/aomenc.c
@@ -628,9 +628,9 @@
static const arg_def_t target_seq_level_idx =
ARG_DEF(NULL, "target-seq-level-idx", 1,
"Target sequence level index. "
- "(-1: Not enabled(default); "
- "0~23: Target for the given level index; "
- "31: Passively measure the level of the encoded bitstream.)");
+ "(0~23: Target for the given level index; "
+ "31(default): Maximum level parameter, no level-based "
+ "constraints.)");
static const struct arg_enum_list color_primaries_enum[] = {
{ "bt709", AOM_CICP_CP_BT_709 },
diff --git a/av1/av1_cx_iface.c b/av1/av1_cx_iface.c
index ecd596e..b71a15f 100644
--- a/av1/av1_cx_iface.c
+++ b/av1/av1_cx_iface.c
@@ -129,7 +129,7 @@
int use_inter_dct_only;
int use_intra_default_tx_only;
int quant_b_adapt;
- int target_seq_level_idx;
+ AV1_LEVEL target_seq_level_idx;
// Bit mask to specify which tier each of the 32 possible operating points
// conforms to.
unsigned int tier_mask;
@@ -234,7 +234,7 @@
0, // use_inter_dct_only
0, // use_intra_default_tx_only
0, // quant_b_adapt
- -1, // target_seq_level_idx
+ 31, // target_seq_level_idx
0, // tier_mask
COST_UPD_SB, // coeff_cost_upd_freq
COST_UPD_SB, // mode_cost_upd_freq
@@ -451,9 +451,7 @@
RANGE_CHECK(extra_cfg, coeff_cost_upd_freq, 0, 2);
RANGE_CHECK(extra_cfg, mode_cost_upd_freq, 0, 2);
- const int target_seq_level_idx = extra_cfg->target_seq_level_idx;
- if ((target_seq_level_idx > 23 && target_seq_level_idx != 31) ||
- target_seq_level_idx < -1)
+ if (!is_valid_seq_level_idx(extra_cfg->target_seq_level_idx))
ERROR("Target sequence level index is invalid");
return AOM_CODEC_OK;
diff --git a/av1/encoder/encoder.c b/av1/encoder/encoder.c
index 14f9ce3..b53e191 100644
--- a/av1/encoder/encoder.c
+++ b/av1/encoder/encoder.c
@@ -2394,7 +2394,7 @@
seq_params->bit_depth <= AOM_BITS_10));
cpi->target_seq_level_idx = oxcf->target_seq_level_idx;
- cpi->keep_level_stats = cpi->target_seq_level_idx >= 0;
+ cpi->keep_level_stats = cpi->target_seq_level_idx < SEQ_LEVELS;
cm->timing_info_present = oxcf->timing_info_present;
cm->timing_info.num_units_in_display_tick =
diff --git a/av1/encoder/encoder.h b/av1/encoder/encoder.h
index 323eb7d..4251b8d 100644
--- a/av1/encoder/encoder.h
+++ b/av1/encoder/encoder.h
@@ -392,7 +392,7 @@
COST_UPDATE_TYPE coeff_cost_upd_freq;
COST_UPDATE_TYPE mode_cost_upd_freq;
int border_in_pixels;
- int target_seq_level_idx;
+ AV1_LEVEL target_seq_level_idx;
// Bit mask to specify which tier each of the 32 possible operating points
// conforms to.
unsigned int tier_mask;
@@ -995,7 +995,7 @@
uint64_t frame_component_time[kTimingComponents];
#endif
// level info and flags
- int target_seq_level_idx;
+ AV1_LEVEL target_seq_level_idx;
int keep_level_stats;
AV1LevelInfo level_info;
} AV1_COMP;
diff --git a/av1/encoder/level.c b/av1/encoder/level.c
index 93b5005..686a914 100644
--- a/av1/encoder/level.c
+++ b/av1/encoder/level.c
@@ -30,8 +30,7 @@
static void check_level_constraints(AV1_COMP *cpi,
const AV1LevelSpec *level_spec) {
- if (cpi->target_seq_level_idx < 0) return;
- const AV1_LEVEL target_seq_level_idx = (AV1_LEVEL)cpi->target_seq_level_idx;
+ const AV1_LEVEL target_seq_level_idx = cpi->target_seq_level_idx;
if (target_seq_level_idx >= SEQ_LEVELS) return;
TARGET_LEVEL_FAIL_ID fail_id = TARGET_LEVEL_FAIL_IDS;
// Check level conformance