LCOV - code coverage report
Current view: top level - third_party/aom/aom - aomcx.h (source / functions) Hit Total Coverage
Test: output.info Lines: 0 47 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 78 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*
       2             :  * Copyright (c) 2016, Alliance for Open Media. All rights reserved
       3             :  *
       4             :  * This source code is subject to the terms of the BSD 2 Clause License and
       5             :  * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
       6             :  * was not distributed with this source code in the LICENSE file, you can
       7             :  * obtain it at www.aomedia.org/license/software. If the Alliance for Open
       8             :  * Media Patent License 1.0 was not distributed with this source code in the
       9             :  * PATENTS file, you can obtain it at www.aomedia.org/license/patent.
      10             :  */
      11             : #ifndef AOM_AOMCX_H_
      12             : #define AOM_AOMCX_H_
      13             : 
      14             : /*!\defgroup aom_encoder AOMedia AOM/AV1 Encoder
      15             :  * \ingroup aom
      16             :  *
      17             :  * @{
      18             :  */
      19             : #include "./aom.h"
      20             : #include "./aom_encoder.h"
      21             : 
      22             : /*!\file
      23             :  * \brief Provides definitions for using AOM or AV1 encoder algorithm within the
      24             :  *        aom Codec Interface.
      25             :  */
      26             : 
      27             : #ifdef __cplusplus
      28             : extern "C" {
      29             : #endif
      30             : 
      31             : /*!\name Algorithm interface for AV1
      32             :  *
      33             :  * This interface provides the capability to encode raw AV1 streams.
      34             :  * @{
      35             :  */
      36             : extern aom_codec_iface_t aom_codec_av1_cx_algo;
      37             : extern aom_codec_iface_t *aom_codec_av1_cx(void);
      38             : /*!@} - end algorithm interface member group*/
      39             : 
      40             : /*
      41             :  * Algorithm Flags
      42             :  */
      43             : 
      44             : /*!\brief Don't reference the last frame
      45             :  *
      46             :  * When this flag is set, the encoder will not use the last frame as a
      47             :  * predictor. When not set, the encoder will choose whether to use the
      48             :  * last frame or not automatically.
      49             :  */
      50             : #define AOM_EFLAG_NO_REF_LAST (1 << 16)
      51             : 
      52             : /*!\brief Don't reference the golden frame
      53             :  *
      54             :  * When this flag is set, the encoder will not use the golden frame as a
      55             :  * predictor. When not set, the encoder will choose whether to use the
      56             :  * golden frame or not automatically.
      57             :  */
      58             : #define AOM_EFLAG_NO_REF_GF (1 << 17)
      59             : 
      60             : /*!\brief Don't reference the alternate reference frame
      61             :  *
      62             :  * When this flag is set, the encoder will not use the alt ref frame as a
      63             :  * predictor. When not set, the encoder will choose whether to use the
      64             :  * alt ref frame or not automatically.
      65             :  */
      66             : #define AOM_EFLAG_NO_REF_ARF (1 << 21)
      67             : 
      68             : /*!\brief Don't update the last frame
      69             :  *
      70             :  * When this flag is set, the encoder will not update the last frame with
      71             :  * the contents of the current frame.
      72             :  */
      73             : #define AOM_EFLAG_NO_UPD_LAST (1 << 18)
      74             : 
      75             : /*!\brief Don't update the golden frame
      76             :  *
      77             :  * When this flag is set, the encoder will not update the golden frame with
      78             :  * the contents of the current frame.
      79             :  */
      80             : #define AOM_EFLAG_NO_UPD_GF (1 << 22)
      81             : 
      82             : /*!\brief Don't update the alternate reference frame
      83             :  *
      84             :  * When this flag is set, the encoder will not update the alt ref frame with
      85             :  * the contents of the current frame.
      86             :  */
      87             : #define AOM_EFLAG_NO_UPD_ARF (1 << 23)
      88             : 
      89             : /*!\brief Force golden frame update
      90             :  *
      91             :  * When this flag is set, the encoder copy the contents of the current frame
      92             :  * to the golden frame buffer.
      93             :  */
      94             : #define AOM_EFLAG_FORCE_GF (1 << 19)
      95             : 
      96             : /*!\brief Force alternate reference frame update
      97             :  *
      98             :  * When this flag is set, the encoder copy the contents of the current frame
      99             :  * to the alternate reference frame buffer.
     100             :  */
     101             : #define AOM_EFLAG_FORCE_ARF (1 << 24)
     102             : 
     103             : /*!\brief Disable entropy update
     104             :  *
     105             :  * When this flag is set, the encoder will not update its internal entropy
     106             :  * model based on the entropy of this frame.
     107             :  */
     108             : #define AOM_EFLAG_NO_UPD_ENTROPY (1 << 20)
     109             : 
     110             : /*!\brief AVx encoder control functions
     111             :  *
     112             :  * This set of macros define the control functions available for AVx
     113             :  * encoder interface.
     114             :  *
     115             :  * \sa #aom_codec_control
     116             :  */
     117             : enum aome_enc_control_id {
     118             :   /*!\brief Codec control function to set which reference frame encoder can use.
     119             :    */
     120             :   AOME_USE_REFERENCE = 7,
     121             : 
     122             :   /*!\brief Codec control function to pass an ROI map to encoder.
     123             :    */
     124             :   AOME_SET_ROI_MAP = 8,
     125             : 
     126             :   /*!\brief Codec control function to pass an Active map to encoder.
     127             :    */
     128             :   AOME_SET_ACTIVEMAP,
     129             : 
     130             :   /*!\brief Codec control function to set encoder scaling mode.
     131             :    */
     132             :   AOME_SET_SCALEMODE = 11,
     133             : 
     134             :   /*!\brief Codec control function to set encoder internal speed settings.
     135             :    *
     136             :    * Changes in this value influences, among others, the encoder's selection
     137             :    * of motion estimation methods. Values greater than 0 will increase encoder
     138             :    * speed at the expense of quality.
     139             :    *
     140             :    * \note Valid range: 0..8
     141             :    */
     142             :   AOME_SET_CPUUSED = 13,
     143             : 
     144             :   /*!\brief Codec control function to enable automatic set and use alf frames.
     145             :    */
     146             :   AOME_SET_ENABLEAUTOALTREF,
     147             : 
     148             :   /*!\brief Codec control function to set sharpness.
     149             :    */
     150             :   AOME_SET_SHARPNESS = AOME_SET_ENABLEAUTOALTREF + 2,
     151             : 
     152             :   /*!\brief Codec control function to set the threshold for MBs treated static.
     153             :    */
     154             :   AOME_SET_STATIC_THRESHOLD,
     155             : 
     156             :   /*!\brief Codec control function to get last quantizer chosen by the encoder.
     157             :    *
     158             :    * Return value uses internal quantizer scale defined by the codec.
     159             :    */
     160             :   AOME_GET_LAST_QUANTIZER = AOME_SET_STATIC_THRESHOLD + 2,
     161             : 
     162             :   /*!\brief Codec control function to get last quantizer chosen by the encoder.
     163             :    *
     164             :    * Return value uses the 0..63 scale as used by the rc_*_quantizer config
     165             :    * parameters.
     166             :    */
     167             :   AOME_GET_LAST_QUANTIZER_64,
     168             : 
     169             :   /*!\brief Codec control function to set the max no of frames to create arf.
     170             :    */
     171             :   AOME_SET_ARNR_MAXFRAMES,
     172             : 
     173             :   /*!\brief Codec control function to set the filter strength for the arf.
     174             :    */
     175             :   AOME_SET_ARNR_STRENGTH,
     176             : 
     177             :   /*!\brief Codec control function to set visual tuning.
     178             :    */
     179             :   AOME_SET_TUNING = AOME_SET_ARNR_STRENGTH + 2,
     180             : 
     181             :   /*!\brief Codec control function to set constrained quality level.
     182             :    *
     183             :    * \attention For this value to be used aom_codec_enc_cfg_t::g_usage must be
     184             :    *            set to #AOM_CQ.
     185             :    * \note Valid range: 0..63
     186             :    */
     187             :   AOME_SET_CQ_LEVEL,
     188             : 
     189             :   /*!\brief Codec control function to set Max data rate for Intra frames.
     190             :    *
     191             :    * This value controls additional clamping on the maximum size of a
     192             :    * keyframe. It is expressed as a percentage of the average
     193             :    * per-frame bitrate, with the special (and default) value 0 meaning
     194             :    * unlimited, or no additional clamping beyond the codec's built-in
     195             :    * algorithm.
     196             :    *
     197             :    * For example, to allocate no more than 4.5 frames worth of bitrate
     198             :    * to a keyframe, set this to 450.
     199             :    */
     200             :   AOME_SET_MAX_INTRA_BITRATE_PCT,
     201             : 
     202             :   /*!\brief Codec control function to set max data rate for Inter frames.
     203             :    *
     204             :    * This value controls additional clamping on the maximum size of an
     205             :    * inter frame. It is expressed as a percentage of the average
     206             :    * per-frame bitrate, with the special (and default) value 0 meaning
     207             :    * unlimited, or no additional clamping beyond the codec's built-in
     208             :    * algorithm.
     209             :    *
     210             :    * For example, to allow no more than 4.5 frames worth of bitrate
     211             :    * to an inter frame, set this to 450.
     212             :    */
     213             :   AV1E_SET_MAX_INTER_BITRATE_PCT = AOME_SET_MAX_INTRA_BITRATE_PCT + 2,
     214             : 
     215             :   /*!\brief Boost percentage for Golden Frame in CBR mode.
     216             :    *
     217             :    * This value controls the amount of boost given to Golden Frame in
     218             :    * CBR mode. It is expressed as a percentage of the average
     219             :    * per-frame bitrate, with the special (and default) value 0 meaning
     220             :    * the feature is off, i.e., no golden frame boost in CBR mode and
     221             :    * average bitrate target is used.
     222             :    *
     223             :    * For example, to allow 100% more bits, i.e, 2X, in a golden frame
     224             :    * than average frame, set this to 100.
     225             :    */
     226             :   AV1E_SET_GF_CBR_BOOST_PCT,
     227             : 
     228             :   /*!\brief Codec control function to set lossless encoding mode.
     229             :    *
     230             :    * AV1 can operate in lossless encoding mode, in which the bitstream
     231             :    * produced will be able to decode and reconstruct a perfect copy of
     232             :    * input source. This control function provides a mean to switch encoder
     233             :    * into lossless coding mode(1) or normal coding mode(0) that may be lossy.
     234             :    *                          0 = lossy coding mode
     235             :    *                          1 = lossless coding mode
     236             :    *
     237             :    *  By default, encoder operates in normal coding mode (maybe lossy).
     238             :    */
     239             :   AV1E_SET_LOSSLESS = AV1E_SET_GF_CBR_BOOST_PCT + 2,
     240             : 
     241             :   /*!\brief Codec control function to set number of tile columns.
     242             :    *
     243             :    * In encoding and decoding, AV1 allows an input image frame be partitioned
     244             :    * into separated vertical tile columns, which can be encoded or decoded
     245             :    * independently. This enables easy implementation of parallel encoding and
     246             :    * decoding. This control requests the encoder to use column tiles in
     247             :    * encoding an input frame, with number of tile columns (in Log2 unit) as
     248             :    * the parameter:
     249             :    *             0 = 1 tile column
     250             :    *             1 = 2 tile columns
     251             :    *             2 = 4 tile columns
     252             :    *             .....
     253             :    *             n = 2**n tile columns
     254             :    * The requested tile columns will be capped by encoder based on image size
     255             :    * limitation (The minimum width of a tile column is 256 pixel, the maximum
     256             :    * is 4096).
     257             :    *
     258             :    * By default, the value is 0, i.e. one single column tile for entire image.
     259             :    */
     260             :   AV1E_SET_TILE_COLUMNS,
     261             : 
     262             :   /*!\brief Codec control function to set number of tile rows.
     263             :    *
     264             :    * In encoding and decoding, AV1 allows an input image frame be partitioned
     265             :    * into separated horizontal tile rows. Tile rows are encoded or decoded
     266             :    * sequentially. Even though encoding/decoding of later tile rows depends on
     267             :    * earlier ones, this allows the encoder to output data packets for tile rows
     268             :    * prior to completely processing all tile rows in a frame, thereby reducing
     269             :    * the latency in processing between input and output. The parameter
     270             :    * for this control describes the number of tile rows, which has a valid
     271             :    * range [0, 2]:
     272             :    *            0 = 1 tile row
     273             :    *            1 = 2 tile rows
     274             :    *            2 = 4 tile rows
     275             :    *
     276             :    * By default, the value is 0, i.e. one single row tile for entire image.
     277             :    */
     278             :   AV1E_SET_TILE_ROWS,
     279             : 
     280             :   /*!\brief Codec control function to enable frame parallel decoding feature.
     281             :    *
     282             :    * AV1 has a bitstream feature to reduce decoding dependency between frames
     283             :    * by turning off backward update of probability context used in encoding
     284             :    * and decoding. This allows staged parallel processing of more than one
     285             :    * video frames in the decoder. This control function provides a mean to
     286             :    * turn this feature on or off for bitstreams produced by encoder.
     287             :    *
     288             :    * By default, this feature is off.
     289             :    */
     290             :   AV1E_SET_FRAME_PARALLEL_DECODING,
     291             : 
     292             :   /*!\brief Codec control function to set adaptive quantization mode.
     293             :    *
     294             :    * AV1 has a segment based feature that allows encoder to adaptively change
     295             :    * quantization parameter for each segment within a frame to improve the
     296             :    * subjective quality. This control makes encoder operate in one of the
     297             :    * several AQ_modes supported.
     298             :    *
     299             :    * By default, encoder operates with AQ_Mode 0(adaptive quantization off).
     300             :    */
     301             :   AV1E_SET_AQ_MODE,
     302             : 
     303             :   /*!\brief Codec control function to enable/disable periodic Q boost.
     304             :    *
     305             :    * One AV1 encoder speed feature is to enable quality boost by lowering
     306             :    * frame level Q periodically. This control function provides a mean to
     307             :    * turn on/off this feature.
     308             :    *               0 = off
     309             :    *               1 = on
     310             :    *
     311             :    * By default, the encoder is allowed to use this feature for appropriate
     312             :    * encoding modes.
     313             :    */
     314             :   AV1E_SET_FRAME_PERIODIC_BOOST,
     315             : 
     316             :   /*!\brief Codec control function to set noise sensitivity.
     317             :    *
     318             :    *  0: off, 1: On(YOnly)
     319             :    */
     320             :   AV1E_SET_NOISE_SENSITIVITY,
     321             : 
     322             :   /*!\brief Codec control function to set content type.
     323             :    * \note Valid parameter range:
     324             :    *              AOM_CONTENT_DEFAULT = Regular video content (Default)
     325             :    *              AOM_CONTENT_SCREEN  = Screen capture content
     326             :    */
     327             :   AV1E_SET_TUNE_CONTENT,
     328             : 
     329             :   /*!\brief Codec control function to set color space info.
     330             :    * \note Valid ranges: 0..7, default is "UNKNOWN".
     331             :    *                     0 = UNKNOWN,
     332             :    *                     1 = BT_601
     333             :    *                     2 = BT_709
     334             :    *                     3 = SMPTE_170
     335             :    *                     4 = SMPTE_240
     336             :    *                     5 = BT_2020
     337             :    *                     6 = RESERVED
     338             :    *                     7 = SRGB
     339             :    */
     340             :   AV1E_SET_COLOR_SPACE,
     341             : 
     342             :   /*!\brief Codec control function to set minimum interval between GF/ARF frames
     343             :    *
     344             :    * By default the value is set as 4.
     345             :    */
     346             :   AV1E_SET_MIN_GF_INTERVAL,
     347             : 
     348             :   /*!\brief Codec control function to set minimum interval between GF/ARF frames
     349             :    *
     350             :    * By default the value is set as 16.
     351             :    */
     352             :   AV1E_SET_MAX_GF_INTERVAL,
     353             : 
     354             :   /*!\brief Codec control function to get an Active map back from the encoder.
     355             :    */
     356             :   AV1E_GET_ACTIVEMAP,
     357             : 
     358             :   /*!\brief Codec control function to set color range bit.
     359             :    * \note Valid ranges: 0..1, default is 0
     360             :    *                     0 = Limited range (16..235 or HBD equivalent)
     361             :    *                     1 = Full range (0..255 or HBD equivalent)
     362             :    */
     363             :   AV1E_SET_COLOR_RANGE,
     364             : 
     365             :   /*!\brief Codec control function to set intended rendering image size.
     366             :    *
     367             :    * By default, this is identical to the image size in pixels.
     368             :    */
     369             :   AV1E_SET_RENDER_SIZE,
     370             : 
     371             :   /*!\brief Codec control function to set target level.
     372             :    *
     373             :    * 255: off (default); 0: only keep level stats; 10: target for level 1.0;
     374             :    * 11: target for level 1.1; ... 62: target for level 6.2
     375             :    */
     376             :   AV1E_SET_TARGET_LEVEL,
     377             : 
     378             :   /*!\brief Codec control function to get bitstream level.
     379             :    */
     380             :   AV1E_GET_LEVEL,
     381             : 
     382             :   /*!\brief Codec control function to set intended superblock size.
     383             :    *
     384             :    * By default, the superblock size is determined separately for each
     385             :    * frame by the encoder.
     386             :    *
     387             :    * Experiment: EXT_PARTITION
     388             :    */
     389             :   AV1E_SET_SUPERBLOCK_SIZE,
     390             : 
     391             :   /*!\brief Codec control function to enable automatic set and use
     392             :    * bwd-pred frames.
     393             :    *
     394             :    * Experiment: EXT_REFS
     395             :    */
     396             :   AOME_SET_ENABLEAUTOBWDREF,
     397             : 
     398             :   /*!\brief Codec control function to encode with quantisation matrices.
     399             :    *
     400             :    * AOM can operate with default quantisation matrices dependent on
     401             :    * quantisation level and block type.
     402             :    *                          0 = do not use quantisation matrices
     403             :    *                          1 = use quantisation matrices
     404             :    *
     405             :    *  By default, the encoder operates without quantisation matrices.
     406             :    *
     407             :    * Experiment: AOM_QM
     408             :    */
     409             :   AV1E_SET_ENABLE_QM,
     410             : 
     411             :   /*!\brief Codec control function to set the min quant matrix flatness.
     412             :    *
     413             :    * AOM can operate with different ranges of quantisation matrices.
     414             :    * As quantisation levels increase, the matrices get flatter. This
     415             :    * control sets the minimum level of flatness from which the matrices
     416             :    * are determined.
     417             :    *
     418             :    *  By default, the encoder sets this minimum at half the available
     419             :    *  range.
     420             :    *
     421             :    * Experiment: AOM_QM
     422             :    */
     423             :   AV1E_SET_QM_MIN,
     424             : 
     425             :   /*!\brief Codec control function to set the max quant matrix flatness.
     426             :    *
     427             :    * AOM can operate with different ranges of quantisation matrices.
     428             :    * As quantisation levels increase, the matrices get flatter. This
     429             :    * control sets the maximum level of flatness possible.
     430             :    *
     431             :    * By default, the encoder sets this maximum at the top of the
     432             :    * available range.
     433             :    *
     434             :    * Experiment: AOM_QM
     435             :    */
     436             :   AV1E_SET_QM_MAX,
     437             : 
     438             :   /*!\brief Codec control function to set a maximum number of tile groups.
     439             :    *
     440             :    * This will set the maximum number of tile groups. This will be
     441             :    * overridden if an MTU size is set. The default value is 1.
     442             :    *
     443             :    * Experiment: TILE_GROUPS
     444             :    */
     445             :   AV1E_SET_NUM_TG,
     446             : 
     447             :   /*!\brief Codec control function to set an MTU size for a tile group.
     448             :    *
     449             :    * This will set the maximum number of bytes in a tile group. This can be
     450             :    * exceeded only if a single tile is larger than this amount.
     451             :    *
     452             :    * By default, the value is 0, in which case a fixed number of tile groups
     453             :    * is used.
     454             :    *
     455             :    * Experiment: TILE_GROUPS
     456             :    */
     457             :   AV1E_SET_MTU,
     458             : 
     459             :   /*!\brief Codec control function to set dependent_horz_tiles.
     460             :   *
     461             :   * In encoding and decoding, AV1 allows enabling dependent horizontal tile
     462             :   * The parameter for this control describes the value of this flag,
     463             :   * which has a valid range [0, 1]:
     464             :   *            0 = disable dependent horizontal tile
     465             :   *            1 = enable dependent horizontal tile,
     466             :   *
     467             :   * By default, the value is 0, i.e. disable dependent horizontal tile.
     468             :   */
     469             :   AV1E_SET_TILE_DEPENDENT_ROWS,
     470             : 
     471             :   /*!\brief Codec control function to set the number of symbols in an ANS data
     472             :    * window.
     473             :    *
     474             :    * The number of ANS symbols (both boolean and non-booleans alphabets) in an
     475             :    * ANS data window is set to 1 << value.
     476             :    *
     477             :    * \note Valid range: [8, 23]
     478             :    *
     479             :    * Experiment: ANS
     480             :    */
     481             :   AV1E_SET_ANS_WINDOW_SIZE_LOG2,
     482             : 
     483             :   /*!\brief Codec control function to set temporal mv prediction
     484             :   * enabling/disabling.
     485             :   *
     486             :   * This will enable or disable temporal mv predicton. The default value is 0.
     487             :   *
     488             :   * Experiment: TEMPMV_SIGNALING
     489             :   */
     490             :   AV1E_SET_DISABLE_TEMPMV,
     491             : 
     492             :   /*!\brief Codec control function to set loop_filter_across_tiles_enabled.
     493             :    *
     494             :    * In encoding and decoding, AV1 allows disabling loop filter across tile
     495             :    * boundary The parameter for this control describes the value of this flag,
     496             :    * which has a valid range [0, 1]:
     497             :    *            0 = disable loop filter across tile boundary
     498             :    *            1 = enable loop filter across tile boundary
     499             :    *
     500             :    * By default, the value is 1, i.e. enable loop filter across tile boundary.
     501             :    *
     502             :    * Experiment: LOOPFILTERING_ACROSS_TILES
     503             :    */
     504             :   AV1E_SET_TILE_LOOPFILTER,
     505             : 
     506             :   /*!\brief Codec control function to set the delta q mode
     507             :   *
     508             :   * AV1 has a segment based feature that allows encoder to adaptively change
     509             :   * quantization parameter for each segment within a frame to improve the
     510             :   * subjective quality. the delta q mode is added on top of segment based
     511             :   * feature, and allows control per 64x64 q and lf delta.This control makes
     512             :   * encoder operate in one of the several DELTA_Q_modes supported.
     513             :   *
     514             :   * By default, encoder operates with DELTAQ_Mode 0(deltaq signaling off).
     515             :   */
     516             :   AV1E_SET_DELTAQ_MODE,
     517             : 
     518             :   /*!\brief Codec control function to set the tile encoding mode to 0 or 1.
     519             :    *
     520             :    * 0 means that the tile encoding mode is TILE_NORMAL, and 1 means that the
     521             :    * tile encoding mode is TILE_VR.
     522             :    *
     523             :    * Experiment: EXT_TILE
     524             :    */
     525             :   AV1E_SET_TILE_ENCODING_MODE,
     526             : 
     527             :   /*!\brief Codec control function to enable the extreme motion vector unit test
     528             :    * in AV1. Please note that this is only used in motion vector unit test.
     529             :    *
     530             :    * 0 : off, 1 : MAX_EXTREME_MV, 2 : MIN_EXTREME_MV
     531             :    */
     532             :   AV1E_ENABLE_MOTION_VECTOR_UNIT_TEST,
     533             : };
     534             : 
     535             : /*!\brief aom 1-D scaling mode
     536             :  *
     537             :  * This set of constants define 1-D aom scaling modes
     538             :  */
     539             : typedef enum aom_scaling_mode_1d {
     540             :   AOME_NORMAL = 0,
     541             :   AOME_FOURFIVE = 1,
     542             :   AOME_THREEFIVE = 2,
     543             :   AOME_ONETWO = 3
     544             : } AOM_SCALING_MODE;
     545             : 
     546             : /*!\brief  aom region of interest map
     547             :  *
     548             :  * These defines the data structures for the region of interest map
     549             :  *
     550             :  */
     551             : 
     552             : typedef struct aom_roi_map {
     553             :   /*! An id between 0 and 3 for each 16x16 region within a frame. */
     554             :   unsigned char *roi_map;
     555             :   unsigned int rows; /**< Number of rows. */
     556             :   unsigned int cols; /**< Number of columns. */
     557             :   // TODO(paulwilkins): broken for AV1 which has 8 segments
     558             :   // q and loop filter deltas for each segment
     559             :   // (see MAX_MB_SEGMENTS)
     560             :   int delta_q[4];  /**< Quantizer deltas. */
     561             :   int delta_lf[4]; /**< Loop filter deltas. */
     562             :   /*! Static breakout threshold for each segment. */
     563             :   unsigned int static_threshold[4];
     564             : } aom_roi_map_t;
     565             : 
     566             : /*!\brief  aom active region map
     567             :  *
     568             :  * These defines the data structures for active region map
     569             :  *
     570             :  */
     571             : 
     572             : typedef struct aom_active_map {
     573             :   /*!\brief specify an on (1) or off (0) each 16x16 region within a frame */
     574             :   unsigned char *active_map;
     575             :   unsigned int rows; /**< number of rows */
     576             :   unsigned int cols; /**< number of cols */
     577             : } aom_active_map_t;
     578             : 
     579             : /*!\brief  aom image scaling mode
     580             :  *
     581             :  * This defines the data structure for image scaling mode
     582             :  *
     583             :  */
     584             : typedef struct aom_scaling_mode {
     585             :   AOM_SCALING_MODE h_scaling_mode; /**< horizontal scaling mode */
     586             :   AOM_SCALING_MODE v_scaling_mode; /**< vertical scaling mode   */
     587             : } aom_scaling_mode_t;
     588             : 
     589             : /*!brief AV1 encoder content type */
     590             : typedef enum {
     591             :   AOM_CONTENT_DEFAULT,
     592             :   AOM_CONTENT_SCREEN,
     593             :   AOM_CONTENT_INVALID
     594             : } aom_tune_content;
     595             : 
     596             : /*!\brief Model tuning parameters
     597             :  *
     598             :  * Changes the encoder to tune for certain types of input material.
     599             :  *
     600             :  */
     601             : typedef enum { AOM_TUNE_PSNR, AOM_TUNE_SSIM } aom_tune_metric;
     602             : 
     603             : /*!\cond */
     604             : /*!\brief Encoder control function parameter type
     605             :  *
     606             :  * Defines the data types that AOME/AV1E control functions take. Note that
     607             :  * additional common controls are defined in aom.h
     608             :  *
     609             :  */
     610             : 
     611           0 : AOM_CTRL_USE_TYPE_DEPRECATED(AOME_USE_REFERENCE, int)
     612             : #define AOM_CTRL_AOME_USE_REFERENCE
     613           0 : AOM_CTRL_USE_TYPE(AOME_SET_ROI_MAP, aom_roi_map_t *)
     614             : #define AOM_CTRL_AOME_SET_ROI_MAP
     615           0 : AOM_CTRL_USE_TYPE(AOME_SET_ACTIVEMAP, aom_active_map_t *)
     616             : #define AOM_CTRL_AOME_SET_ACTIVEMAP
     617           0 : AOM_CTRL_USE_TYPE(AOME_SET_SCALEMODE, aom_scaling_mode_t *)
     618             : #define AOM_CTRL_AOME_SET_SCALEMODE
     619             : 
     620           0 : AOM_CTRL_USE_TYPE(AOME_SET_CPUUSED, int)
     621             : #define AOM_CTRL_AOME_SET_CPUUSED
     622           0 : AOM_CTRL_USE_TYPE(AOME_SET_ENABLEAUTOALTREF, unsigned int)
     623             : #define AOM_CTRL_AOME_SET_ENABLEAUTOALTREF
     624             : 
     625           0 : AOM_CTRL_USE_TYPE(AOME_SET_ENABLEAUTOBWDREF, unsigned int)
     626             : #define AOM_CTRL_AOME_SET_ENABLEAUTOBWDREF
     627             : 
     628           0 : AOM_CTRL_USE_TYPE(AOME_SET_SHARPNESS, unsigned int)
     629             : #define AOM_CTRL_AOME_SET_SHARPNESS
     630           0 : AOM_CTRL_USE_TYPE(AOME_SET_STATIC_THRESHOLD, unsigned int)
     631             : #define AOM_CTRL_AOME_SET_STATIC_THRESHOLD
     632             : 
     633           0 : AOM_CTRL_USE_TYPE(AOME_SET_ARNR_MAXFRAMES, unsigned int)
     634             : #define AOM_CTRL_AOME_SET_ARNR_MAXFRAMES
     635           0 : AOM_CTRL_USE_TYPE(AOME_SET_ARNR_STRENGTH, unsigned int)
     636             : #define AOM_CTRL_AOME_SET_ARNR_STRENGTH
     637           0 : AOM_CTRL_USE_TYPE(AOME_SET_TUNING, int) /* aom_tune_metric */
     638             : #define AOM_CTRL_AOME_SET_TUNING
     639           0 : AOM_CTRL_USE_TYPE(AOME_SET_CQ_LEVEL, unsigned int)
     640             : #define AOM_CTRL_AOME_SET_CQ_LEVEL
     641             : 
     642           0 : AOM_CTRL_USE_TYPE(AV1E_SET_TILE_COLUMNS, int)
     643             : #define AOM_CTRL_AV1E_SET_TILE_COLUMNS
     644           0 : AOM_CTRL_USE_TYPE(AV1E_SET_TILE_ROWS, int)
     645             : #define AOM_CTRL_AV1E_SET_TILE_ROWS
     646             : 
     647           0 : AOM_CTRL_USE_TYPE(AV1E_SET_TILE_DEPENDENT_ROWS, int)
     648             : #define AOM_CTRL_AV1E_SET_TILE_DEPENDENT_ROWS
     649             : 
     650           0 : AOM_CTRL_USE_TYPE(AV1E_SET_TILE_LOOPFILTER, int)
     651             : #define AOM_CTRL_AV1E_SET_TILE_LOOPFILTER
     652             : 
     653           0 : AOM_CTRL_USE_TYPE(AOME_GET_LAST_QUANTIZER, int *)
     654             : #define AOM_CTRL_AOME_GET_LAST_QUANTIZER
     655           0 : AOM_CTRL_USE_TYPE(AOME_GET_LAST_QUANTIZER_64, int *)
     656             : #define AOM_CTRL_AOME_GET_LAST_QUANTIZER_64
     657             : 
     658           0 : AOM_CTRL_USE_TYPE(AOME_SET_MAX_INTRA_BITRATE_PCT, unsigned int)
     659             : #define AOM_CTRL_AOME_SET_MAX_INTRA_BITRATE_PCT
     660           0 : AOM_CTRL_USE_TYPE(AOME_SET_MAX_INTER_BITRATE_PCT, unsigned int)
     661             : #define AOM_CTRL_AOME_SET_MAX_INTER_BITRATE_PCT
     662             : 
     663           0 : AOM_CTRL_USE_TYPE(AV1E_SET_GF_CBR_BOOST_PCT, unsigned int)
     664             : #define AOM_CTRL_AV1E_SET_GF_CBR_BOOST_PCT
     665             : 
     666           0 : AOM_CTRL_USE_TYPE(AV1E_SET_LOSSLESS, unsigned int)
     667             : #define AOM_CTRL_AV1E_SET_LOSSLESS
     668             : 
     669           0 : AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_QM, unsigned int)
     670             : #define AOM_CTRL_AV1E_SET_ENABLE_QM
     671             : 
     672           0 : AOM_CTRL_USE_TYPE(AV1E_SET_QM_MIN, unsigned int)
     673             : #define AOM_CTRL_AV1E_SET_QM_MIN
     674             : 
     675           0 : AOM_CTRL_USE_TYPE(AV1E_SET_QM_MAX, unsigned int)
     676             : #define AOM_CTRL_AV1E_SET_QM_MAX
     677             : 
     678           0 : AOM_CTRL_USE_TYPE(AV1E_SET_NUM_TG, unsigned int)
     679             : #define AOM_CTRL_AV1E_SET_NUM_TG
     680           0 : AOM_CTRL_USE_TYPE(AV1E_SET_MTU, unsigned int)
     681             : #define AOM_CTRL_AV1E_SET_MTU
     682             : 
     683           0 : AOM_CTRL_USE_TYPE(AV1E_SET_DISABLE_TEMPMV, unsigned int)
     684             : #define AOM_CTRL_AV1E_SET_DISABLE_TEMPMV
     685             : 
     686           0 : AOM_CTRL_USE_TYPE(AV1E_SET_FRAME_PARALLEL_DECODING, unsigned int)
     687             : #define AOM_CTRL_AV1E_SET_FRAME_PARALLEL_DECODING
     688             : 
     689           0 : AOM_CTRL_USE_TYPE(AV1E_SET_AQ_MODE, unsigned int)
     690             : #define AOM_CTRL_AV1E_SET_AQ_MODE
     691             : 
     692           0 : AOM_CTRL_USE_TYPE(AV1E_SET_DELTAQ_MODE, unsigned int)
     693             : #define AOM_CTRL_AV1E_SET_DELTAQ_MODE
     694             : 
     695           0 : AOM_CTRL_USE_TYPE(AV1E_SET_FRAME_PERIODIC_BOOST, unsigned int)
     696             : #define AOM_CTRL_AV1E_SET_FRAME_PERIODIC_BOOST
     697             : 
     698           0 : AOM_CTRL_USE_TYPE(AV1E_SET_NOISE_SENSITIVITY, unsigned int)
     699             : #define AOM_CTRL_AV1E_SET_NOISE_SENSITIVITY
     700             : 
     701           0 : AOM_CTRL_USE_TYPE(AV1E_SET_TUNE_CONTENT, int) /* aom_tune_content */
     702             : #define AOM_CTRL_AV1E_SET_TUNE_CONTENT
     703             : 
     704           0 : AOM_CTRL_USE_TYPE(AV1E_SET_COLOR_SPACE, int)
     705             : #define AOM_CTRL_AV1E_SET_COLOR_SPACE
     706             : 
     707           0 : AOM_CTRL_USE_TYPE(AV1E_SET_MIN_GF_INTERVAL, unsigned int)
     708             : #define AOM_CTRL_AV1E_SET_MIN_GF_INTERVAL
     709             : 
     710           0 : AOM_CTRL_USE_TYPE(AV1E_SET_MAX_GF_INTERVAL, unsigned int)
     711             : #define AOM_CTRL_AV1E_SET_MAX_GF_INTERVAL
     712             : 
     713           0 : AOM_CTRL_USE_TYPE(AV1E_GET_ACTIVEMAP, aom_active_map_t *)
     714             : #define AOM_CTRL_AV1E_GET_ACTIVEMAP
     715             : 
     716           0 : AOM_CTRL_USE_TYPE(AV1E_SET_COLOR_RANGE, int)
     717             : #define AOM_CTRL_AV1E_SET_COLOR_RANGE
     718             : 
     719             : /*!\brief
     720             :  *
     721             :  * TODO(rbultje) : add support of the control in ffmpeg
     722             :  */
     723             : #define AOM_CTRL_AV1E_SET_RENDER_SIZE
     724           0 : AOM_CTRL_USE_TYPE(AV1E_SET_RENDER_SIZE, int *)
     725             : 
     726           0 : AOM_CTRL_USE_TYPE(AV1E_SET_SUPERBLOCK_SIZE, unsigned int)
     727             : #define AOM_CTRL_AV1E_SET_SUPERBLOCK_SIZE
     728             : 
     729           0 : AOM_CTRL_USE_TYPE(AV1E_SET_TARGET_LEVEL, unsigned int)
     730             : #define AOM_CTRL_AV1E_SET_TARGET_LEVEL
     731             : 
     732           0 : AOM_CTRL_USE_TYPE(AV1E_GET_LEVEL, int *)
     733             : #define AOM_CTRL_AV1E_GET_LEVEL
     734             : 
     735           0 : AOM_CTRL_USE_TYPE(AV1E_SET_ANS_WINDOW_SIZE_LOG2, unsigned int)
     736             : #define AOM_CTRL_AV1E_SET_ANS_WINDOW_SIZE_LOG2
     737             : 
     738           0 : AOM_CTRL_USE_TYPE(AV1E_SET_TILE_ENCODING_MODE, unsigned int)
     739             : #define AOM_CTRL_AV1E_SET_TILE_ENCODING_MODE
     740             : 
     741           0 : AOM_CTRL_USE_TYPE(AV1E_ENABLE_MOTION_VECTOR_UNIT_TEST, unsigned int)
     742             : #define AOM_CTRL_AV1E_ENABLE_MOTION_VECTOR_UNIT_TEST
     743             : 
     744             : /*!\endcond */
     745             : /*! @} - end defgroup aom_encoder */
     746             : #ifdef __cplusplus
     747             : }  // extern "C"
     748             : #endif
     749             : 
     750             : #endif  // AOM_AOMCX_H_

Generated by: LCOV version 1.13