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,