Provide information on codec controls
authorYaowu Xu <yaowu@google.com>
Fri, 13 Mar 2015 16:42:57 +0000 (09:42 -0700)
committerYaowu Xu <yaowu@google.com>
Fri, 13 Mar 2015 18:56:35 +0000 (11:56 -0700)
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
vpx/vp8cx.h
vpxenc.c

index fb6aac7..1908ffc 100644 (file)
@@ -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},
index 6e984d7..5f06384 100644 (file)
@@ -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,  /**<control function to set encoder screen content mode */
+  /*!\brief Codec control function to set encoder screen content mode.
+   *
+   * Supported in codecs: VP8
+   */
+  VP8E_SET_SCREEN_CONTENT_MODE,
 
-  /*!\brief Codec control function to set lossless encoding mode
+  /*!\brief Codec control function to set lossless encoding mode.
    *
    * VP9 can operate in lossless encoding mode, in which the bitstream
    * produced will be able to decode and reconstruct a perfect copy of
@@ -253,7 +345,7 @@ enum vp8e_enc_control_id {
    */
   VP9E_SET_LOSSLESS,
 
-  /*!\brief Codec control function to set number of tile columns
+  /*!\brief Codec control function to set number of tile columns.
    *
    * In encoding and decoding, VP9 allows an input image frame be partitioned
    * into separated vertical tile columns, which can be encoded or decoded
@@ -276,7 +368,7 @@ enum vp8e_enc_control_id {
    */
   VP9E_SET_TILE_COLUMNS,
 
-  /*!\brief Codec control function to set number of tile rows
+  /*!\brief Codec control function to set number of tile rows.
    *
    * In encoding and decoding, VP9 allows an input image frame be partitioned
    * into separated horizontal tile rows. Tile rows are encoded or decoded
@@ -296,7 +388,7 @@ enum vp8e_enc_control_id {
    */
   VP9E_SET_TILE_ROWS,
 
-  /*!\brief Codec control function to enable frame parallel decoding feature
+  /*!\brief Codec control function to enable frame parallel decoding feature.
    *
    * VP9 has a bitstream feature to reduce decoding dependency between frames
    * by turning off backward update of probability context used in encoding
@@ -310,7 +402,7 @@ enum vp8e_enc_control_id {
    */
   VP9E_SET_FRAME_PARALLEL_DECODING,
 
-  /*!\brief Codec control function to set adaptive quantization mode
+  /*!\brief Codec control function to set adaptive quantization mode.
    *
    * VP9 has a segment based feature that allows encoder to adaptively change
    * quantization parameter for each segment within a frame to improve the
@@ -323,7 +415,7 @@ enum vp8e_enc_control_id {
    */
   VP9E_SET_AQ_MODE,
 
-  /*!\brief Codec control function to enable/disable periodic Q boost
+  /*!\brief Codec control function to enable/disable periodic Q boost.
    *
    * One VP9 encoder speed feature is to enable quality boost by lowering
    * frame level Q periodically. This control function provides a mean to
@@ -338,15 +430,15 @@ enum vp8e_enc_control_id {
    */
   VP9E_SET_FRAME_PERIODIC_BOOST,
 
-  /*!\brief control function to set noise sensitivity
+  /*!\brief Codec control function to set noise sensitivity.
    *
-   *  0: off, 1: OnYOnly
+   *  0: off, 1: On(YOnly)
    *
    * Supported in codecs: VP9
    */
   VP9E_SET_NOISE_SENSITIVITY,
 
-  /*!\brief control function to turn on/off SVC in encoder.
+  /*!\brief Codec control function to turn on/off SVC in encoder.
    * \note Return value is VPX_CODEC_INVALID_PARAM if the encoder does not
    *       support SVC in its current encoding mode
    *  0: off, 1: on
@@ -355,7 +447,7 @@ enum vp8e_enc_control_id {
    */
   VP9E_SET_SVC,
 
-  /*!\brief control function to set parameters for SVC.
+  /*!\brief Codec control function to set parameters for SVC.
    * \note Parameters contain min_q, max_q, scaling factor for each of the
    *       SVC layers.
    *
@@ -363,7 +455,7 @@ enum vp8e_enc_control_id {
    */
   VP9E_SET_SVC_PARAMETERS,
 
-  /*!\brief control function to set svc layer for spatial and temporal.
+  /*!\brief Codec control function to set svc layer for spatial and temporal.
    * \note Valid ranges: 0..#vpx_codec_enc_cfg::ss_number_layers for spatial
    *                     layer and 0..#vpx_codec_enc_cfg::ts_number_layers for
    *                     temporal layer.
@@ -372,7 +464,7 @@ enum vp8e_enc_control_id {
    */
   VP9E_SET_SVC_LAYER_ID,
 
-  /*!\brief control function to set content type.
+  /*!\brief Codec control function to set content type.
    * \note Valid parameter range:
    *              VP9E_CONTENT_DEFAULT = Regular video content (Default)
    *              VP9E_CONTENT_SCREEN  = Screen capture content
@@ -381,7 +473,7 @@ enum vp8e_enc_control_id {
    */
   VP9E_SET_TUNE_CONTENT,
 
-  /*!\brief control function to get svc layer ID.
+  /*!\brief Codec control function to get svc layer ID.
    * \note The layer ID returned is for the data packet from the registered
    *       callback function.
    *
@@ -389,13 +481,15 @@ enum vp8e_enc_control_id {
    */
   VP9E_GET_SVC_LAYER_ID,
 
-  /*!\brief control function to register callback for getting per layer packet.
+  /*!\brief Codec control function to register callback to get per layer packet.
    * \note Parameter for this control function is a structure with a callback
    *       function and a pointer to private data used by the callback.
+   *
+   * Supported in codecs: VP9
    */
   VP9E_REGISTER_CX_CALLBACK,
 
-  /*!\brief control function to set color space info.
+  /*!\brief Codec control function to set color space info.
    * \note Valid ranges: 0..7, default is "UNKNOWN".
    *                     0 = UNKNOWN,
    *                     1 = BT_601
index ad504b1..851d432 100644 (file)
--- a/vpxenc.c
+++ b/vpxenc.c
@@ -457,7 +457,7 @@ static const int vp9_arg_ctrl_map[] = {
   VP9E_SET_TILE_COLUMNS, VP9E_SET_TILE_ROWS,
   VP8E_SET_ARNR_MAXFRAMES, VP8E_SET_ARNR_STRENGTH, VP8E_SET_ARNR_TYPE,
   VP8E_SET_TUNING, VP8E_SET_CQ_LEVEL, VP8E_SET_MAX_INTRA_BITRATE_PCT,
-  VP8E_SET_MAX_INTER_BITRATE_PCT, VP9E_SET_GF_CBR_BOOST_PCT,
+  VP9E_SET_MAX_INTER_BITRATE_PCT, VP9E_SET_GF_CBR_BOOST_PCT,
   VP9E_SET_LOSSLESS, VP9E_SET_FRAME_PARALLEL_DECODING, VP9E_SET_AQ_MODE,
   VP9E_SET_FRAME_PERIODIC_BOOST, VP9E_SET_NOISE_SENSITIVITY,
   VP9E_SET_TUNE_CONTENT, VP9E_SET_COLOR_SPACE,