From 268f10669a700bb7b7ece3ae06490bd9e99b8a6f Mon Sep 17 00:00:00 2001 From: Yaowu Xu Date: Fri, 13 Mar 2015 09:42:57 -0700 Subject: [PATCH] Provide information on codec controls The commit updates the comments in vp8cx.h to make it clear which codec support each of codec control functions. Change-Id: Ibf876e289d4325bbb61ce19311da60d384624c2f --- vp9/vp9_cx_iface.c | 2 +- vpx/vp8cx.h | 196 +++++++++++++++++++++++++++++++++------------ vpxenc.c | 2 +- 3 files changed, 147 insertions(+), 53 deletions(-) diff --git a/vp9/vp9_cx_iface.c b/vp9/vp9_cx_iface.c index fb6aac721..1908ffc7f 100644 --- a/vp9/vp9_cx_iface.c +++ b/vp9/vp9_cx_iface.c @@ -1386,7 +1386,7 @@ static vpx_codec_ctrl_fn_map_t encoder_ctrl_maps[] = { {VP8E_SET_TUNING, ctrl_set_tuning}, {VP8E_SET_CQ_LEVEL, ctrl_set_cq_level}, {VP8E_SET_MAX_INTRA_BITRATE_PCT, ctrl_set_rc_max_intra_bitrate_pct}, - {VP8E_SET_MAX_INTER_BITRATE_PCT, ctrl_set_rc_max_inter_bitrate_pct}, + {VP9E_SET_MAX_INTER_BITRATE_PCT, ctrl_set_rc_max_inter_bitrate_pct}, {VP9E_SET_GF_CBR_BOOST_PCT, ctrl_set_rc_gf_cbr_boost_pct}, {VP9E_SET_LOSSLESS, ctrl_set_lossless}, {VP9E_SET_FRAME_PARALLEL_DECODING, ctrl_set_frame_parallel_decoding_mode}, diff --git a/vpx/vp8cx.h b/vpx/vp8cx.h index 6e984d788..5f063846c 100644 --- a/vpx/vp8cx.h +++ b/vpx/vp8cx.h @@ -132,58 +132,137 @@ extern vpx_codec_iface_t *vpx_codec_vp9_cx(void); * \sa #vpx_codec_control */ enum vp8e_enc_control_id { - VP8E_UPD_ENTROPY = 5, /**< control function to set mode of entropy update in encoder */ - VP8E_UPD_REFERENCE, /**< control function to set reference update mode in encoder */ - VP8E_USE_REFERENCE, /**< control function to set which reference frame encoder can use */ - VP8E_SET_ROI_MAP, /**< control function to pass an ROI map to encoder */ - VP8E_SET_ACTIVEMAP, /**< control function to pass an Active map to encoder */ - VP8E_SET_SCALEMODE = 11, /**< control function to set encoder scaling mode */ - /*!\brief control function to set vp8 encoder cpuused + /*!\brief Codec control function to set mode of entropy update in encoder. + * + * Supported in codecs: VP8, VP9 + */ + VP8E_UPD_ENTROPY = 5, + + /*!\brief Codec control function to set reference update mode in encoder. + * + * Supported in codecs: VP8, VP9 + */ + VP8E_UPD_REFERENCE, + + /*!\brief Codec control function to set which reference frame encoder can use. + * + * Supported in codecs: VP8, VP9 + */ + VP8E_USE_REFERENCE, + + /*!\brief Codec control function to pass an ROI map to encoder. + * + * Supported in codecs: VP8, VP9 + */ + VP8E_SET_ROI_MAP, + + /*!\brief Codec control function to pass an Active map to encoder. + * + * Supported in codecs: VP8, VP9 + */ + VP8E_SET_ACTIVEMAP, + + /*!\brief Codec control function to set encoder scaling mode. + * + * Supported in codecs: VP8, VP9 + */ + VP8E_SET_SCALEMODE = 11, + + /*!\brief Codec control function to set encoder internal speed settings. * * Changes in this value influences, among others, the encoder's selection * of motion estimation methods. Values greater than 0 will increase encoder * speed at the expense of quality. - * The full set of adjustments can be found in - * onyx_if.c:vp8_set_speed_features(). - * \todo List highlights of the changes at various levels. * - * \note Valid range: -16..16 + * \note Valid range for VP8: -16..16 + * \note Valid range for VP9: -8..8 + * + * Supported in codecs: VP8, VP9 */ VP8E_SET_CPUUSED = 13, - VP8E_SET_ENABLEAUTOALTREF, /**< control function to enable vp8 to automatic set and use altref frame */ + + /*!\brief Codec control function to enable automatic set and use alf frames. + * + * Supported in codecs: VP8, VP9 + */ + VP8E_SET_ENABLEAUTOALTREF, + /*!\brief control function to set noise sensitivity * * 0: off, 1: OnYOnly, 2: OnYUV, * 3: OnYUVAggressive, 4: Adaptive + * + * Supported in codecs: VP8 */ VP8E_SET_NOISE_SENSITIVITY, - VP8E_SET_SHARPNESS, /**< control function to set sharpness */ - VP8E_SET_STATIC_THRESHOLD, /**< control function to set the threshold for macroblocks treated static */ - VP8E_SET_TOKEN_PARTITIONS, /**< control function to set the number of token partitions */ - VP8E_GET_LAST_QUANTIZER, /**< return the quantizer chosen by the - encoder for the last frame using the internal - scale */ - VP8E_GET_LAST_QUANTIZER_64, /**< return the quantizer chosen by the - encoder for the last frame, using the 0..63 - scale as used by the rc_*_quantizer config - parameters */ - VP8E_SET_ARNR_MAXFRAMES, /**< control function to set the max number of frames blurred creating arf*/ - VP8E_SET_ARNR_STRENGTH, //!< control function to set the filter - //!< strength for the arf - - /*!\deprecated control function to set the filter type to use for the arf */ + + /*!\brief Codec control function to set sharpness. + * + * Supported in codecs: VP8, VP9 + */ + VP8E_SET_SHARPNESS, + + /*!\brief Codec control function to set the threshold for MBs treated static. + * + * Supported in codecs: VP8, VP9 + */ + VP8E_SET_STATIC_THRESHOLD, + + /*!\brief Codec control function to set the number of token partitions. + * + * Supported in codecs: VP8 + */ + VP8E_SET_TOKEN_PARTITIONS, + + /*!\brief Codec control function to get last quantizer chosen by the encoder. + * + * Return value uses internal quantizer scale defined by the codec. + * + * Supported in codecs: VP8, VP9 + */ + VP8E_GET_LAST_QUANTIZER, + + /*!\brief Codec control function to get last quantizer chosen by the encoder. + * + * Return value uses the 0..63 scale as used by the rc_*_quantizer config + * parameters. + * + * Supported in codecs: VP8, VP9 + */ + VP8E_GET_LAST_QUANTIZER_64, + + /*!\brief Codec control function to set the max no of frames to create arf. + * + * Supported in codecs: VP8, VP9 + */ + VP8E_SET_ARNR_MAXFRAMES, + + /*!\brief Codec control function to set the filter strength for the arf. + * + * Supported in codecs: VP8, VP9 + */ + VP8E_SET_ARNR_STRENGTH, + + /*!\deprecated control function to set the filter type to use for the arf. */ VP8E_SET_ARNR_TYPE, - VP8E_SET_TUNING, /**< control function to set visual tuning */ - /*!\brief control function to set constrained quality level + /*!\brief Codec control function to set visual tuning. + * + * Supported in codecs: VP8, VP9 + */ + VP8E_SET_TUNING, + + /*!\brief Codec control function to set constrained quality level. * * \attention For this value to be used vpx_codec_enc_cfg_t::g_usage must be * set to #VPX_CQ. * \note Valid range: 0..63 + * + * Supported in codecs: VP8, VP9 */ VP8E_SET_CQ_LEVEL, - /*!\brief Max data rate for Intra frames + /*!\brief Codec control function to set Max data rate for Intra frames. * * This value controls additional clamping on the maximum size of a * keyframe. It is expressed as a percentage of the average @@ -194,11 +273,17 @@ enum vp8e_enc_control_id { * For example, to allocate no more than 4.5 frames worth of bitrate * to a keyframe, set this to 450. * + * Supported in codecs: VP8, VP9 */ VP8E_SET_MAX_INTRA_BITRATE_PCT, - VP8E_SET_FRAME_FLAGS, /**< control function to set reference and update frame flags */ - /*!\brief Max data rate for Inter frames + /*!\brief Codec control function to set reference and update frame flags. + * + * Supported in codecs: VP8 + */ + VP8E_SET_FRAME_FLAGS, + + /*!\brief Codec control function to set max data rate for Inter frames. * * This value controls additional clamping on the maximum size of an * inter frame. It is expressed as a percentage of the average @@ -209,10 +294,11 @@ enum vp8e_enc_control_id { * For example, to allow no more than 4.5 frames worth of bitrate * to an inter frame, set this to 450. * + * Supported in codecs: VP9 */ - VP8E_SET_MAX_INTER_BITRATE_PCT, + VP9E_SET_MAX_INTER_BITRATE_PCT, - /*!\brief Boost percentage for Golden Frame in CBR mode + /*!\brief Boost percentage for Golden Frame in CBR mode. * * This value controls the amount of boost given to Golden Frame in * CBR mode. It is expressed as a percentage of the average @@ -227,18 +313,24 @@ enum vp8e_enc_control_id { */ VP9E_SET_GF_CBR_BOOST_PCT, - /*!\brief Codec control function to set the temporal layer id + /*!\brief Codec control function to set the temporal layer id. * * For temporal scalability: this control allows the application to set the * layer id for each frame to be encoded. Note that this control must be set * for every frame prior to encoding. The usage of this control function * supersedes the internal temporal pattern counter, which is now deprecated. + * + * Supported in codecs: VP8 */ VP8E_SET_TEMPORAL_LAYER_ID, - VP8E_SET_SCREEN_CONTENT_MODE, /**