Add codec control to get CDEF strengths for LUMA Manually tested with aomenc Bug: b/283122279 Change-Id: I3045c5de257026879a8c14c28fa5d83a986d4fac
diff --git a/aom/aomcx.h b/aom/aomcx.h index 8887e9a..783f56a 100644 --- a/aom/aomcx.h +++ b/aom/aomcx.h
@@ -1513,6 +1513,11 @@ */ AV1E_SET_RATE_DISTRIBUTION_INFO = 161, + /*!\brief Codec control to get the CDEF strength for Y / luma plane. + * Returns an array of CDEF_MAX_STRENGTHS. + */ + AV1E_GET_LUMA_CDEF_STRENGTH = 162, + // Any new encoder control IDs should be added above. // Maximum allowed encoder control ID is 229. // No encoder control ID should be added below. @@ -2152,6 +2157,9 @@ AOM_CTRL_USE_TYPE(AV1E_SET_RATE_DISTRIBUTION_INFO, const char *) #define AOM_CTRL_AV1E_SET_RATE_DISTRIBUTION_INFO +AOM_CTRL_USE_TYPE(AV1E_GET_LUMA_CDEF_STRENGTH, int *) +#define AOM_CTRL_AV1E_GET_LUMA_CDEF_STRENGTH + /*!\endcond */ /*! @} - end defgroup aom_encoder */ #ifdef __cplusplus
diff --git a/av1/av1_cx_iface.c b/av1/av1_cx_iface.c index 3b62e00..c469ad5 100644 --- a/av1/av1_cx_iface.c +++ b/av1/av1_cx_iface.c
@@ -4178,6 +4178,16 @@ return AOM_CODEC_OK; } +static aom_codec_err_t ctrl_get_luma_cdef_strength(aom_codec_alg_priv_t *ctx, + va_list args) { + int *arg = va_arg(args, int *); + AV1_COMMON const *cm = &ctx->ppi->cpi->common; + if (arg == NULL) return AOM_CODEC_INVALID_PARAM; + memcpy(arg, cm->cdef_info.cdef_strengths, CDEF_MAX_STRENGTHS * sizeof(*arg)); + + return AOM_CODEC_OK; +} + static aom_codec_ctrl_fn_map_t encoder_ctrl_maps[] = { { AV1_COPY_REFERENCE, ctrl_copy_reference }, { AOME_USE_REFERENCE, ctrl_use_reference }, @@ -4336,6 +4346,7 @@ { AV1E_GET_BASELINE_GF_INTERVAL, ctrl_get_baseline_gf_interval }, { AV1E_GET_TARGET_SEQ_LEVEL_IDX, ctrl_get_target_seq_level_idx }, { AV1E_GET_NUM_OPERATING_POINTS, ctrl_get_num_operating_points }, + { AV1E_GET_LUMA_CDEF_STRENGTH, ctrl_get_luma_cdef_strength }, CTRL_MAP_END, };