Rearrange control IDs for encoder, common, decoder Remove *_ID_MAX definition for decoder and common. They seem useless. Already broken ABI, so took this chance to clean up control ID definitions. Before: Ranges of control IDs for encoder and common are partially overlapped with each other. Now: control ID range is as follows: encoder: 7-229(max) common: 230-255(max) decoder: 256- Bug: aomedia:2977, aomedia:2671 Change-Id: I2670db19fa98cb9b208e66be3c958f76edddd7e1
diff --git a/aom/aom.h b/aom/aom.h index c591dc9..0650a11 100644 --- a/aom/aom.h +++ b/aom/aom.h
@@ -41,27 +41,45 @@ /*!\brief Control functions * * The set of macros define the control functions of AOM interface + * The range for common control IDs is 230-255(max). */ enum aom_com_control_id { - /* TODO(https://crbug.com/aomedia/2671): The encoder overlaps the range of - * these values for its control ids, see the NOTEs in aom/aomcx.h. These - * should be migrated to something like the AOM_DECODER_CTRL_ID_START range - * next time we're ready to break the ABI. + /*!\brief Codec control function to get a pointer to a reference frame + * + * av1_ref_frame_t* parameter */ - AV1_GET_REFERENCE = 128, /**< get a pointer to a reference frame, - av1_ref_frame_t* parameter */ - AV1_SET_REFERENCE = 129, /**< write a frame into a reference buffer, - av1_ref_frame_t* parameter */ - AV1_COPY_REFERENCE = 130, /**< get a copy of reference frame from the decoderm - av1_ref_frame_t* parameter */ - AOM_COMMON_CTRL_ID_MAX, + AV1_GET_REFERENCE = 230, - AV1_GET_NEW_FRAME_IMAGE = - 192, /**< get a pointer to the new frame, aom_image_t* parameter */ - AV1_COPY_NEW_FRAME_IMAGE = 193, /**< copy the new frame to an external buffer, - aom_image_t* parameter */ + /*!\brief Codec control function to write a frame into a reference buffer + * + * av1_ref_frame_t* parameter + */ + AV1_SET_REFERENCE = 231, + /*!\brief Codec control function to get a copy of reference frame from the + * decoder + * + * av1_ref_frame_t* parameter + */ + AV1_COPY_REFERENCE = 232, + + /*!\brief Codec control function to get a pointer to the new frame + * + * aom_image_t* parameter + */ + AV1_GET_NEW_FRAME_IMAGE = 233, + + /*!\brief Codec control function to copy the new frame to an external buffer + * + * aom_image_t* parameter + */ + AV1_COPY_NEW_FRAME_IMAGE = 234, + + /*!\brief Start point of control IDs for aom_dec_control_id. + * Any new common control IDs should be added above. + */ AOM_DECODER_CTRL_ID_START = 256 + // No common control IDs should be added after AOM_DECODER_CTRL_ID_START. }; /*!\brief AV1 specific reference frame data struct
diff --git a/aom/aomcx.h b/aom/aomcx.h index bf3212a..93ebad6 100644 --- a/aom/aomcx.h +++ b/aom/aomcx.h
@@ -167,6 +167,7 @@ * * This set of macros define the control functions available for AVx * encoder interface. + * The range of encode control ID is 7-229(max). * * \sa #aom_codec_control(aom_codec_ctx_t *ctx, int ctrl_id, ...) */ @@ -1202,9 +1203,6 @@ parameter */ AV1E_SET_REDUCED_REFERENCE_SET = 125, - /* NOTE: enums 126-139 unused */ - /* NOTE: Need a gap in enum values to avoud conflict with 128, 129, 130 */ - /*!\brief Control to set frequency of the cost updates for coefficients, * unsigned int parameter * @@ -1213,7 +1211,7 @@ * - 2 = update at tile level * - 3 = turn off */ - AV1E_SET_COEFF_COST_UPD_FREQ = 140, + AV1E_SET_COEFF_COST_UPD_FREQ = 126, /*!\brief Control to set frequency of the cost updates for mode, unsigned int * parameter @@ -1223,7 +1221,7 @@ * - 2 = update at tile level * - 3 = turn off */ - AV1E_SET_MODE_COST_UPD_FREQ = 141, + AV1E_SET_MODE_COST_UPD_FREQ = 127, /*!\brief Control to set frequency of the cost updates for motion vectors, * unsigned int parameter @@ -1233,7 +1231,7 @@ * - 2 = update at tile level * - 3 = turn off */ - AV1E_SET_MV_COST_UPD_FREQ = 142, + AV1E_SET_MV_COST_UPD_FREQ = 128, /*!\brief Control to set bit mask that specifies which tier each of the 32 * possible operating points conforms to, unsigned int parameter @@ -1241,37 +1239,37 @@ * - 0 = main tier (default) * - 1 = high tier */ - AV1E_SET_TIER_MASK = 143, + AV1E_SET_TIER_MASK = 129, /*!\brief Control to set minimum compression ratio, unsigned int parameter * Take integer values. If non-zero, encoder will try to keep the compression * ratio of each frame to be higher than the given value divided by 100. * E.g. 850 means minimum compression ratio of 8.5. */ - AV1E_SET_MIN_CR = 144, + AV1E_SET_MIN_CR = 130, /* NOTE: enums 145-149 unused */ /*!\brief Codec control function to set the layer id, aom_svc_layer_id_t* * parameter */ - AV1E_SET_SVC_LAYER_ID = 150, + AV1E_SET_SVC_LAYER_ID = 131, /*!\brief Codec control function to set SVC paramaeters, aom_svc_params_t* * parameter */ - AV1E_SET_SVC_PARAMS = 151, + AV1E_SET_SVC_PARAMS = 132, /*!\brief Codec control function to set reference frame config: * the ref_idx and the refresh flags for each buffer slot. * aom_svc_ref_frame_config_t* parameter */ - AV1E_SET_SVC_REF_FRAME_CONFIG = 152, + AV1E_SET_SVC_REF_FRAME_CONFIG = 133, /*!\brief Codec control function to set the path to the VMAF model used when * tuning the encoder for VMAF, const char* parameter */ - AV1E_SET_VMAF_MODEL_PATH = 153, + AV1E_SET_VMAF_MODEL_PATH = 134, /*!\brief Codec control function to enable EXT_TILE_DEBUG in AV1 encoder, * unsigned int parameter @@ -1281,7 +1279,7 @@ * * \note This is only used in lightfield example test. */ - AV1E_ENABLE_EXT_TILE_DEBUG = 154, + AV1E_ENABLE_EXT_TILE_DEBUG = 135, /*!\brief Codec control function to enable the superblock multipass unit test * in AV1 to ensure that the encoder does not leak state between different @@ -1292,30 +1290,34 @@ * * \note This is only used in sb_multipass unit test. */ - AV1E_ENABLE_SB_MULTIPASS_UNIT_TEST = 155, + AV1E_ENABLE_SB_MULTIPASS_UNIT_TEST = 136, /*!\brief Control to select minimum height for the GF group pyramid structure, * unsigned int parameter * * Valid values: 0..5 */ - AV1E_SET_GF_MIN_PYRAMID_HEIGHT = 156, + AV1E_SET_GF_MIN_PYRAMID_HEIGHT = 137, /*!\brief Control to set average complexity of the corpus in the case of * single pass vbr based on LAP, unsigned int parameter */ - AV1E_SET_VBR_CORPUS_COMPLEXITY_LAP = 157, + AV1E_SET_VBR_CORPUS_COMPLEXITY_LAP = 138, /*!\brief Control to get baseline gf interval */ - AV1E_GET_BASELINE_GF_INTERVAL = 158, + AV1E_GET_BASELINE_GF_INTERVAL = 139, /*\brief Control to set encoding the denoised frame from denoise-noise-level * * - 0 = disabled/encode the original frame * - 1 = enabled/encode the denoised frame (default) */ - AV1E_SET_ENABLE_DNL_DENOISING = 159, + AV1E_SET_ENABLE_DNL_DENOISING = 140, + + // Any new encoder control IDs should be added above. + // Maximum allowed encoder control ID is 229. + // No encoder control ID should be added below. }; /*!\brief aom 1-D scaling mode
diff --git a/aom/aomdx.h b/aom/aomdx.h index aa4f435..b3fd90e 100644 --- a/aom/aomdx.h +++ b/aom/aomdx.h
@@ -188,6 +188,7 @@ * * This set of macros define the control functions available for the AOM * decoder interface. + * The range for decoder control ID is >= 256. * * \sa #aom_codec_control(aom_codec_ctx_t *ctx, int ctrl_id, ...) */ @@ -381,8 +382,6 @@ */ AV1D_SET_SKIP_FILM_GRAIN, - AOM_DECODER_CTRL_ID_MAX, - /*!\brief Codec control function to check the presence of forward key frames */ AOMD_GET_FWD_KF_PRESENT,