Add control function to get sequence level index
Add interface only; implementations to come.
BUG=aomedia:2332
Change-Id: Ib01396b8ae5509532c6d73c68e37993c5ab0aa7d
diff --git a/av1/av1_cx_iface.c b/av1/av1_cx_iface.c
index d765242..df9d73b 100644
--- a/av1/av1_cx_iface.c
+++ b/av1/av1_cx_iface.c
@@ -2121,6 +2121,13 @@
return update_extra_cfg(ctx, &extra_cfg);
}
+static aom_codec_err_t ctrl_get_seq_level_idx(aom_codec_alg_priv_t *ctx,
+ va_list args) {
+ int *const arg = va_arg(args, int *);
+ if (arg == NULL) return AOM_CODEC_INVALID_PARAM;
+ return av1_get_seq_level_idx(ctx->cpi, arg);
+}
+
static aom_codec_ctrl_fn_map_t encoder_ctrl_maps[] = {
{ AV1_COPY_REFERENCE, ctrl_copy_reference },
{ AOME_USE_REFERENCE, ctrl_use_reference },
@@ -2245,6 +2252,7 @@
{ AV1_COPY_NEW_FRAME_IMAGE, ctrl_copy_new_frame_image },
{ AV1E_SET_CHROMA_SUBSAMPLING_X, ctrl_set_chroma_subsampling_x },
{ AV1E_SET_CHROMA_SUBSAMPLING_Y, ctrl_set_chroma_subsampling_y },
+ { AV1E_GET_SEQ_LEVEL_IDX, ctrl_get_seq_level_idx },
{ -1, NULL },
};
diff --git a/av1/encoder/level.c b/av1/encoder/level.c
index 3a5f937..0e8b34b 100644
--- a/av1/encoder/level.c
+++ b/av1/encoder/level.c
@@ -355,3 +355,13 @@
check_level_constraints(cpi, i, level_spec);
}
}
+
+aom_codec_err_t av1_get_seq_level_idx(const AV1_COMP *cpi, int *seq_level_idx) {
+ // TODO(chiyotsai@, kyslov@, huisu@): put in real implementations.
+ (void)cpi;
+ for (int i = 0; i < MAX_NUM_OPERATING_POINTS; ++i) {
+ seq_level_idx[i] = (int)SEQ_LEVEL_MAX;
+ }
+
+ return AOM_CODEC_OK;
+}
diff --git a/av1/encoder/level.h b/av1/encoder/level.h
index 09ffe49..32c7088 100644
--- a/av1/encoder/level.h
+++ b/av1/encoder/level.h
@@ -47,4 +47,8 @@
void av1_update_level_info(struct AV1_COMP *cpi, size_t size, int64_t ts_start,
int64_t ts_end);
+// Return sequence level indices in seq_level_idx[MAX_NUM_OPERATING_POINTS].
+aom_codec_err_t av1_get_seq_level_idx(const struct AV1_COMP *cpi,
+ int *seq_level_idx);
+
#endif // AOM_AV1_ENCODER_LEVEL_H_