• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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_AOM_AOMCX_H_
12 #define AOM_AOM_AOMCX_H_
13 
14 /*!\defgroup aom_encoder AOMedia AOM/AV1 Encoder
15  * \ingroup aom
16  *
17  * @{
18  */
19 #include "aom/aom.h"
20 #include "aom/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 /*!\brief Don't reference the last2 frame
52  *
53  * When this flag is set, the encoder will not use the last2 frame as a
54  * predictor. When not set, the encoder will choose whether to use the
55  * last2 frame or not automatically.
56  */
57 #define AOM_EFLAG_NO_REF_LAST2 (1 << 17)
58 /*!\brief Don't reference the last3 frame
59  *
60  * When this flag is set, the encoder will not use the last3 frame as a
61  * predictor. When not set, the encoder will choose whether to use the
62  * last3 frame or not automatically.
63  */
64 #define AOM_EFLAG_NO_REF_LAST3 (1 << 18)
65 /*!\brief Don't reference the golden frame
66  *
67  * When this flag is set, the encoder will not use the golden frame as a
68  * predictor. When not set, the encoder will choose whether to use the
69  * golden frame or not automatically.
70  */
71 #define AOM_EFLAG_NO_REF_GF (1 << 19)
72 
73 /*!\brief Don't reference the alternate reference frame
74  *
75  * When this flag is set, the encoder will not use the alt ref frame as a
76  * predictor. When not set, the encoder will choose whether to use the
77  * alt ref frame or not automatically.
78  */
79 #define AOM_EFLAG_NO_REF_ARF (1 << 20)
80 /*!\brief Don't reference the bwd reference frame
81  *
82  * When this flag is set, the encoder will not use the bwd ref frame as a
83  * predictor. When not set, the encoder will choose whether to use the
84  * bwd ref frame or not automatically.
85  */
86 #define AOM_EFLAG_NO_REF_BWD (1 << 21)
87 /*!\brief Don't reference the alt2 reference frame
88  *
89  * When this flag is set, the encoder will not use the alt2 ref frame as a
90  * predictor. When not set, the encoder will choose whether to use the
91  * alt2 ref frame or not automatically.
92  */
93 #define AOM_EFLAG_NO_REF_ARF2 (1 << 22)
94 
95 /*!\brief Don't update the last frame
96  *
97  * When this flag is set, the encoder will not update the last frame with
98  * the contents of the current frame.
99  */
100 #define AOM_EFLAG_NO_UPD_LAST (1 << 23)
101 
102 /*!\brief Don't update the golden frame
103  *
104  * When this flag is set, the encoder will not update the golden frame with
105  * the contents of the current frame.
106  */
107 #define AOM_EFLAG_NO_UPD_GF (1 << 24)
108 
109 /*!\brief Don't update the alternate reference frame
110  *
111  * When this flag is set, the encoder will not update the alt ref frame with
112  * the contents of the current frame.
113  */
114 #define AOM_EFLAG_NO_UPD_ARF (1 << 25)
115 /*!\brief Disable entropy update
116  *
117  * When this flag is set, the encoder will not update its internal entropy
118  * model based on the entropy of this frame.
119  */
120 #define AOM_EFLAG_NO_UPD_ENTROPY (1 << 26)
121 /*!\brief Disable ref frame mvs
122  *
123  * When this flag is set, the encoder will not allow frames to
124  * be encoded using mfmv.
125  */
126 #define AOM_EFLAG_NO_REF_FRAME_MVS (1 << 27)
127 /*!\brief Enable error resilient frame
128  *
129  * When this flag is set, the encoder will code frames as error
130  * resilient.
131  */
132 #define AOM_EFLAG_ERROR_RESILIENT (1 << 28)
133 /*!\brief Enable s frame mode
134  *
135  * When this flag is set, the encoder will code frames as an
136  * s frame.
137  */
138 #define AOM_EFLAG_SET_S_FRAME (1 << 29)
139 /*!\brief Force primary_ref_frame to PRIMARY_REF_NONE
140  *
141  * When this flag is set, the encoder will set a frame's primary_ref_frame
142  * to PRIMARY_REF_NONE
143  */
144 #define AOM_EFLAG_SET_PRIMARY_REF_NONE (1 << 30)
145 
146 /*!\brief AVx encoder control functions
147  *
148  * This set of macros define the control functions available for AVx
149  * encoder interface.
150  *
151  * \sa #aom_codec_control
152  */
153 enum aome_enc_control_id {
154   /*!\brief Codec control function to set which reference frame encoder can use.
155    */
156   AOME_USE_REFERENCE = 7,
157 
158   /*!\brief Codec control function to pass an ROI map to encoder.
159    */
160   AOME_SET_ROI_MAP = 8,
161 
162   /*!\brief Codec control function to pass an Active map to encoder.
163    */
164   AOME_SET_ACTIVEMAP,
165 
166   /*!\brief Codec control function to set encoder scaling mode.
167    */
168   AOME_SET_SCALEMODE = 11,
169 
170   /*!\brief Codec control function to set encoder spatial layer id.
171    */
172   AOME_SET_SPATIAL_LAYER_ID = 12,
173 
174   /*!\brief Codec control function to set encoder internal speed settings.
175    *
176    * Changes in this value influences, among others, the encoder's selection
177    * of motion estimation methods. Values greater than 0 will increase encoder
178    * speed at the expense of quality.
179    *
180    * \note Valid range: 0..8
181    */
182   AOME_SET_CPUUSED = 13,
183 
184   /*!\brief Codec control function to enable automatic set and use alf frames.
185    */
186   AOME_SET_ENABLEAUTOALTREF,
187 
188   /*!\brief Codec control function to set sharpness.
189    */
190   AOME_SET_SHARPNESS = AOME_SET_ENABLEAUTOALTREF + 2,
191 
192   /*!\brief Codec control function to set the threshold for MBs treated static.
193    */
194   AOME_SET_STATIC_THRESHOLD,
195 
196   /*!\brief Codec control function to get last quantizer chosen by the encoder.
197    *
198    * Return value uses internal quantizer scale defined by the codec.
199    */
200   AOME_GET_LAST_QUANTIZER = AOME_SET_STATIC_THRESHOLD + 2,
201 
202   /*!\brief Codec control function to get last quantizer chosen by the encoder.
203    *
204    * Return value uses the 0..63 scale as used by the rc_*_quantizer config
205    * parameters.
206    */
207   AOME_GET_LAST_QUANTIZER_64,
208 
209   /*!\brief Codec control function to set the max no of frames to create arf.
210    */
211   AOME_SET_ARNR_MAXFRAMES,
212 
213   /*!\brief Codec control function to set the filter strength for the arf.
214    */
215   AOME_SET_ARNR_STRENGTH,
216 
217   /*!\brief Codec control function to set visual tuning.
218    */
219   AOME_SET_TUNING = AOME_SET_ARNR_STRENGTH + 2,
220 
221   /*!\brief Codec control function to set constrained quality level.
222    *
223    * \attention For this value to be used aom_codec_enc_cfg_t::g_usage must be
224    *            set to #AOM_CQ.
225    * \note Valid range: 0..63
226    */
227   AOME_SET_CQ_LEVEL,
228 
229   /*!\brief Codec control function to set Max data rate for Intra frames.
230    *
231    * This value controls additional clamping on the maximum size of a
232    * keyframe. It is expressed as a percentage of the average
233    * per-frame bitrate, with the special (and default) value 0 meaning
234    * unlimited, or no additional clamping beyond the codec's built-in
235    * algorithm.
236    *
237    * For example, to allocate no more than 4.5 frames worth of bitrate
238    * to a keyframe, set this to 450.
239    */
240   AOME_SET_MAX_INTRA_BITRATE_PCT,
241 
242   /*!\brief Codec control function to set number of spatial layers.
243    */
244   AOME_SET_NUMBER_SPATIAL_LAYERS,
245 
246   /*!\brief Codec control function to set max data rate for Inter frames.
247    *
248    * This value controls additional clamping on the maximum size of an
249    * inter frame. It is expressed as a percentage of the average
250    * per-frame bitrate, with the special (and default) value 0 meaning
251    * unlimited, or no additional clamping beyond the codec's built-in
252    * algorithm.
253    *
254    * For example, to allow no more than 4.5 frames worth of bitrate
255    * to an inter frame, set this to 450.
256    */
257   AV1E_SET_MAX_INTER_BITRATE_PCT = AOME_SET_MAX_INTRA_BITRATE_PCT + 2,
258 
259   /*!\brief Boost percentage for Golden Frame in CBR mode.
260    *
261    * This value controls the amount of boost given to Golden Frame in
262    * CBR mode. It is expressed as a percentage of the average
263    * per-frame bitrate, with the special (and default) value 0 meaning
264    * the feature is off, i.e., no golden frame boost in CBR mode and
265    * average bitrate target is used.
266    *
267    * For example, to allow 100% more bits, i.e, 2X, in a golden frame
268    * than average frame, set this to 100.
269    */
270   AV1E_SET_GF_CBR_BOOST_PCT,
271 
272   /*!\brief Codec control function to set lossless encoding mode.
273    *
274    * AV1 can operate in lossless encoding mode, in which the bitstream
275    * produced will be able to decode and reconstruct a perfect copy of
276    * input source. This control function provides a mean to switch encoder
277    * into lossless coding mode(1) or normal coding mode(0) that may be lossy.
278    *                          0 = lossy coding mode
279    *                          1 = lossless coding mode
280    *
281    *  By default, encoder operates in normal coding mode (maybe lossy).
282    */
283   AV1E_SET_LOSSLESS = AV1E_SET_GF_CBR_BOOST_PCT + 2,
284 
285   /** control function to enable the row based multi-threading of encoder. A
286    * value that is equal to 1 indicates that row based multi-threading is
287    * enabled.
288    */
289   AV1E_SET_ROW_MT,
290 
291   /*!\brief Codec control function to set number of tile columns.
292    *
293    * In encoding and decoding, AV1 allows an input image frame be partitioned
294    * into separate vertical tile columns, which can be encoded or decoded
295    * independently. This enables easy implementation of parallel encoding and
296    * decoding. The parameter for this control describes the number of tile
297    * columns (in log2 units), which has a valid range of [0, 6]:
298    *             0 = 1 tile column
299    *             1 = 2 tile columns
300    *             2 = 4 tile columns
301    *             .....
302    *             n = 2**n tile columns
303    *
304    * By default, the value is 0, i.e. one single column tile for entire image.
305    */
306   AV1E_SET_TILE_COLUMNS,
307 
308   /*!\brief Codec control function to set number of tile rows.
309    *
310    * In encoding and decoding, AV1 allows an input image frame be partitioned
311    * into separate horizontal tile rows, which can be encoded or decoded
312    * independently. The parameter for this control describes the number of tile
313    * rows (in log2 units), which has a valid range of [0, 6]:
314    *            0 = 1 tile row
315    *            1 = 2 tile rows
316    *            2 = 4 tile rows
317    *            .....
318    *            n = 2**n tile rows
319    *
320    * By default, the value is 0, i.e. one single row tile for entire image.
321    */
322   AV1E_SET_TILE_ROWS,
323 
324   /*!\brief Codec control function to enable RDO modulated by frame temporal
325    * dependency.
326    *
327    * By default, this feature is off.
328    */
329   AV1E_SET_ENABLE_TPL_MODEL,
330 
331   /*!\brief Codec control function to enable frame parallel decoding feature.
332    *
333    * AV1 has a bitstream feature to reduce decoding dependency between frames
334    * by turning off backward update of probability context used in encoding
335    * and decoding. This allows staged parallel processing of more than one
336    * video frames in the decoder. This control function provides a mean to
337    * turn this feature on or off for bitstreams produced by encoder.
338    *
339    * By default, this feature is off.
340    */
341   AV1E_SET_FRAME_PARALLEL_DECODING,
342 
343   /*!\brief Codec control function to enable error_resilient_mode
344    *
345    * AV1 has a bitstream feature to guarantee parseability of a frame
346    * by turning on the error_resilient_decoding mode, even though the
347    * reference buffers are unreliable or not received.
348    *
349    * By default, this feature is off.
350    */
351   AV1E_SET_ERROR_RESILIENT_MODE,
352 
353   /*!\brief Codec control function to enable s_frame_mode
354    *
355    * AV1 has a bitstream feature to designate certain frames as S-frames,
356    * from where we can switch to a different stream,
357    * even though the reference buffers may not be exactly identical.
358    *
359    * By default, this feature is off.
360    */
361   AV1E_SET_S_FRAME_MODE,
362 
363   /*!\brief Codec control function to set adaptive quantization mode.
364    *
365    * AV1 has a segment based feature that allows encoder to adaptively change
366    * quantization parameter for each segment within a frame to improve the
367    * subjective quality. This control makes encoder operate in one of the
368    * several AQ_modes supported.
369    *
370    * By default, encoder operates with AQ_Mode 0(adaptive quantization off).
371    */
372   AV1E_SET_AQ_MODE,
373 
374   /*!\brief Codec control function to enable/disable periodic Q boost.
375    *
376    * One AV1 encoder speed feature is to enable quality boost by lowering
377    * frame level Q periodically. This control function provides a mean to
378    * turn on/off this feature.
379    *               0 = off
380    *               1 = on
381    *
382    * By default, the encoder is allowed to use this feature for appropriate
383    * encoding modes.
384    */
385   AV1E_SET_FRAME_PERIODIC_BOOST,
386 
387   /*!\brief Codec control function to set noise sensitivity.
388    *
389    *  0: off, 1: On(YOnly)
390    */
391   AV1E_SET_NOISE_SENSITIVITY,
392 
393   /*!\brief Codec control function to set content type.
394    * \note Valid parameter range:
395    *              AOM_CONTENT_DEFAULT = Regular video content (Default)
396    *              AOM_CONTENT_SCREEN  = Screen capture content
397    */
398   AV1E_SET_TUNE_CONTENT,
399 
400   /*!\brief Codec control function to set CDF update mode.
401    *
402    *  0: no update          1: update on every frame
403    *  2: selectively update
404    */
405   AV1E_SET_CDF_UPDATE_MODE,
406 
407   /*!\brief Codec control function to set color space info.
408    * \note Valid ranges: 0..23, default is "Unspecified".
409    *                     0 = For future use
410    *                     1 = BT.709
411    *                     2 = Unspecified
412    *                     3 = For future use
413    *                     4 = BT.470 System M (historical)
414    *                     5 = BT.470 System B, G (historical)
415    *                     6 = BT.601
416    *                     7 = SMPTE 240
417    *                     8 = Generic film (color filters using illuminant C)
418    *                     9 = BT.2020, BT.2100
419    *                     10 = SMPTE 428 (CIE 1921 XYZ)
420    *                     11 = SMPTE RP 431-2
421    *                     12 = SMPTE EG 432-1
422    *                     13 = For future use (values 13 - 21)
423    *                     22 = EBU Tech. 3213-E
424    *                     23 = For future use
425    *
426    */
427   AV1E_SET_COLOR_PRIMARIES,
428 
429   /*!\brief Codec control function to set transfer function info.
430    * \note Valid ranges: 0..19, default is "Unspecified".
431    *                     0 = For future use
432    *                     1 = BT.709
433    *                     2 = Unspecified
434    *                     3 = For future use
435    *                     4 = BT.470 System M (historical)
436    *                     5 = BT.470 System B, G (historical)
437    *                     6 = BT.601
438    *                     7 = SMPTE 240 M
439    *                     8 = Linear
440    *                     9 = Logarithmic (100 : 1 range)
441    *                     10 = Logarithmic (100 * Sqrt(10) : 1 range)
442    *                     11 = IEC 61966-2-4
443    *                     12 = BT.1361
444    *                     13 = sRGB or sYCC
445    *                     14 = BT.2020 10-bit systems
446    *                     15 = BT.2020 12-bit systems
447    *                     16 = SMPTE ST 2084, ITU BT.2100 PQ
448    *                     17 = SMPTE ST 428
449    *                     18 = BT.2100 HLG, ARIB STD-B67
450    *                     19 = For future use
451    *
452    */
453   AV1E_SET_TRANSFER_CHARACTERISTICS,
454 
455   /*!\brief Codec control function to set transfer function info.
456    * \note Valid ranges: 0..15, default is "Unspecified".
457    *                     0 = Identity matrix
458    *                     1 = BT.709
459    *                     2 = Unspecified
460    *                     3 = For future use
461    *                     4 = US FCC 73.628
462    *                     5 = BT.470 System B, G (historical)
463    *                     6 = BT.601
464    *                     7 = SMPTE 240 M
465    *                     8 = YCgCo
466    *                     9 = BT.2020 non-constant luminance, BT.2100 YCbCr
467    *                     10 = BT.2020 constant luminance
468    *                     11 = SMPTE ST 2085 YDzDx
469    *                     12 = Chromaticity-derived non-constant luminance
470    *                     13 = Chromaticity-derived constant luminance
471    *                     14 = BT.2100 ICtCp
472    *                     15 = For future use
473    *
474    */
475   AV1E_SET_MATRIX_COEFFICIENTS,
476 
477   /*!\brief Codec control function to set chroma 4:2:0 sample position info.
478    * \note Valid ranges: 0..3, default is "UNKNOWN".
479    *                     0 = UNKNOWN,
480    *                     1 = VERTICAL
481    *                     2 = COLOCATED
482    *                     3 = RESERVED
483    */
484   AV1E_SET_CHROMA_SAMPLE_POSITION,
485 
486   /*!\brief Codec control function to set minimum interval between GF/ARF frames
487    *
488    * By default the value is set as 4.
489    */
490   AV1E_SET_MIN_GF_INTERVAL,
491 
492   /*!\brief Codec control function to set minimum interval between GF/ARF frames
493    *
494    * By default the value is set as 16.
495    */
496   AV1E_SET_MAX_GF_INTERVAL,
497 
498   /*!\brief Codec control function to get an Active map back from the encoder.
499    */
500   AV1E_GET_ACTIVEMAP,
501 
502   /*!\brief Codec control function to set color range bit.
503    * \note Valid ranges: 0..1, default is 0
504    *                     0 = Limited range (16..235 or HBD equivalent)
505    *                     1 = Full range (0..255 or HBD equivalent)
506    */
507   AV1E_SET_COLOR_RANGE,
508 
509   /*!\brief Codec control function to set intended rendering image size.
510    *
511    * By default, this is identical to the image size in pixels.
512    */
513   AV1E_SET_RENDER_SIZE,
514 
515   /*!\brief Control to set target sequence level index for a certain operating
516    * point(OP).
517    * Possible values are in the form of "ABxy"(pad leading zeros if less than
518    * 4 digits).
519    *   AB: OP index.
520    *   xy: Target level index for the OP. Can be values 0~23(corresponding to
521    *   level 2.0 ~ 7.3) or 31(maximum level parameter, no level-based
522    *   constraints).
523    * E.g. "0" means target level index 0 for the 0th OP;
524    *      "111" means target level index 11 for the 1st OP;
525    *      "1021" means target level index 21 for the 10th OP.
526    * If the target level is not specified for an OP, the maximum level parameter
527    * of 31 is used as default.
528    */
529   AV1E_SET_TARGET_SEQ_LEVEL_IDX,
530 
531   /*!\brief Codec control function to get sequence level index.
532    */
533   AV1E_GET_SEQ_LEVEL_IDX,
534 
535   /*!\brief Codec control function to set intended superblock size.
536    *
537    * By default, the superblock size is determined separately for each
538    * frame by the encoder.
539    *
540    * Experiment: EXT_PARTITION
541    */
542   AV1E_SET_SUPERBLOCK_SIZE,
543 
544   /*!\brief Codec control function to enable automatic set and use
545    * bwd-pred frames.
546    *
547    */
548   AOME_SET_ENABLEAUTOBWDREF,
549 
550   /*!\brief Codec control function to encode with CDEF.
551    *
552    * CDEF is the constrained directional enhancement filter which is an
553    * in-loop filter aiming to remove coding artifacts
554    *                          0 = do not apply CDEF
555    *                          1 = apply CDEF
556    *
557    *  By default, the encoder applies CDEF.
558    *
559    * Experiment: AOM_CDEF
560    */
561   AV1E_SET_ENABLE_CDEF,
562 
563   /*!\brief Codec control function to encode with Loop Restoration Filter.
564    *
565    *                          0 = do not apply Restoration Filter
566    *                          1 = apply Restoration Filter
567    *
568    *  By default, the encoder applies Restoration Filter.
569    *
570    */
571   AV1E_SET_ENABLE_RESTORATION,
572 
573   /*!\brief Codec control function to predict with OBMC mode.
574    *
575    *                          0 = do not allow OBMC mode
576    *                          1 = allow OBMC mode
577    *
578    *  By default, the encoder allows OBMC prediction mode.
579    *
580    */
581   AV1E_SET_ENABLE_OBMC,
582 
583   /*!\brief Codec control function to encode without trellis quantization.
584    *
585    *                          0 = apply trellis quantization
586    *                          1 = do not apply trellis quantization
587    *                          2 = disable trellis quantization partially
588    *
589    *  By default, the encoder applies optimization on quantized
590    *  coefficients.
591    *
592    */
593   AV1E_SET_DISABLE_TRELLIS_QUANT,
594 
595   /*!\brief Codec control function to encode with quantisation matrices.
596    *
597    * AOM can operate with default quantisation matrices dependent on
598    * quantisation level and block type.
599    *                          0 = do not use quantisation matrices
600    *                          1 = use quantisation matrices
601    *
602    *  By default, the encoder operates without quantisation matrices.
603    *
604    * Experiment: AOM_QM
605    */
606 
607   AV1E_SET_ENABLE_QM,
608 
609   /*!\brief Codec control function to set the min quant matrix flatness.
610    *
611    * AOM can operate with different ranges of quantisation matrices.
612    * As quantisation levels increase, the matrices get flatter. This
613    * control sets the minimum level of flatness from which the matrices
614    * are determined.
615    *
616    *  By default, the encoder sets this minimum at half the available
617    *  range.
618    *
619    * Experiment: AOM_QM
620    */
621   AV1E_SET_QM_MIN,
622 
623   /*!\brief Codec control function to set the max quant matrix flatness.
624    *
625    * AOM can operate with different ranges of quantisation matrices.
626    * As quantisation levels increase, the matrices get flatter. This
627    * control sets the maximum level of flatness possible.
628    *
629    * By default, the encoder sets this maximum at the top of the
630    * available range.
631    *
632    * Experiment: AOM_QM
633    */
634   AV1E_SET_QM_MAX,
635 
636   /*!\brief Codec control function to set the min quant matrix flatness.
637    *
638    * AOM can operate with different ranges of quantisation matrices.
639    * As quantisation levels increase, the matrices get flatter. This
640    * control sets the flatness for luma (Y).
641    *
642    *  By default, the encoder sets this minimum at half the available
643    *  range.
644    *
645    * Experiment: AOM_QM
646    */
647   AV1E_SET_QM_Y,
648 
649   /*!\brief Codec control function to set the min quant matrix flatness.
650    *
651    * AOM can operate with different ranges of quantisation matrices.
652    * As quantisation levels increase, the matrices get flatter. This
653    * control sets the flatness for chroma (U).
654    *
655    *  By default, the encoder sets this minimum at half the available
656    *  range.
657    *
658    * Experiment: AOM_QM
659    */
660   AV1E_SET_QM_U,
661 
662   /*!\brief Codec control function to set the min quant matrix flatness.
663    *
664    * AOM can operate with different ranges of quantisation matrices.
665    * As quantisation levels increase, the matrices get flatter. This
666    * control sets the flatness for chrome (V).
667    *
668    *  By default, the encoder sets this minimum at half the available
669    *  range.
670    *
671    * Experiment: AOM_QM
672    */
673   AV1E_SET_QM_V,
674 
675   /*!\brief Codec control function to encode with dist_8x8.
676    *
677    *  The dist_8x8 is enabled automatically for model tuning parameters that
678    *  require measuring distortion at the 8x8 level. This control also allows
679    *  measuring distortion at the 8x8 level for other tuning options
680    *  (e.g., PSNR), for testing purposes.
681    *                          0 = do not use dist_8x8
682    *                          1 = use dist_8x8
683    *
684    *  By default, the encoder does not use dist_8x8
685    *
686    * Experiment: DIST_8X8
687    */
688   AV1E_SET_ENABLE_DIST_8X8,
689 
690   /*!\brief Codec control function to set a maximum number of tile groups.
691    *
692    * This will set the maximum number of tile groups. This will be
693    * overridden if an MTU size is set. The default value is 1.
694    *
695    * Experiment: TILE_GROUPS
696    */
697   AV1E_SET_NUM_TG,
698 
699   /*!\brief Codec control function to set an MTU size for a tile group.
700    *
701    * This will set the maximum number of bytes in a tile group. This can be
702    * exceeded only if a single tile is larger than this amount.
703    *
704    * By default, the value is 0, in which case a fixed number of tile groups
705    * is used.
706    *
707    * Experiment: TILE_GROUPS
708    */
709   AV1E_SET_MTU,
710 
711   /*!\brief Codec control function to set the number of symbols in an ANS data
712    * window.
713    *
714    * The number of ANS symbols (both boolean and non-booleans alphabets) in an
715    * ANS data window is set to 1 << value.
716    *
717    * \note Valid range: [8, 23]
718    *
719    * Experiment: ANS
720    */
721   AV1E_SET_ANS_WINDOW_SIZE_LOG2,
722 
723   /*!\brief Codec control function to enable/disable rectangular partitions.
724    *
725    * This will enable or disable usage of rectangular partitions. The default
726    * value is 1.
727    *
728    */
729   AV1E_SET_ENABLE_RECT_PARTITIONS,
730 
731   /*!\brief Codec control function to enable/disable AB partitions.
732    *
733    * This will enable or disable usage of AB partitions. The default
734    * value is 1.
735    *
736    */
737   AV1E_SET_ENABLE_AB_PARTITIONS,
738 
739   /*!\brief Codec control function to enable/disable 1:4 and 4:1 partitions.
740    *
741    * This will enable or disable usage of 1:4 and 4:1 partitions. The default
742    * value is 1.
743    *
744    */
745   AV1E_SET_ENABLE_1TO4_PARTITIONS,
746 
747   /*!\brief Codec control function to set min partition size.
748    *
749    * This will set min partition size. The default value is 4 for 4x4.
750    * valid values are [4, 8, 16, 32, 64, 128]
751    * min_partition_size is applied to both width and height of the partition.
752    * i.e, both width and height of a partition can not be smaller than
753    * the min_partition_size, except the partition at the picture boundary.
754    *
755    */
756   AV1E_SET_MIN_PARTITION_SIZE,
757 
758   /*!\brief Codec control function to set max partition size.
759    *
760    * This will set max partition size. The default value is 128 for 128x128.
761    * valid values are [4, 8, 16, 32, 64, 128]
762    * max_partition_size is applied to both width and height of the partition.
763    * i.e, both width and height of a partition can not be larger than
764    * the max_partition_size.
765    */
766   AV1E_SET_MAX_PARTITION_SIZE,
767 
768   /*!\brief Codec control function to turn on / off intra edge filter
769    * at sequence level.
770    *
771    * This will enable or disable usage of intra-edge filtering. The default
772    * value is 1.
773    *
774    */
775   AV1E_SET_ENABLE_INTRA_EDGE_FILTER,
776 
777   /*!\brief Codec control function to turn on / off frame order hint for a
778    * few tools:
779    *
780    * joint compound mode
781    * motion field motion vector
782    * ref frame sign bias
783    *
784    * The default value is 1.
785    *
786    */
787   AV1E_SET_ENABLE_ORDER_HINT,
788 
789   /*!\brief Codec control function to turn on / off 64-length transforms.
790    *
791    * This will enable or disable usage of length 64 transforms in any
792    * direction. The default value is 1.
793    *
794    */
795   AV1E_SET_ENABLE_TX64,
796 
797   /*!\brief Codec control function to turn on / off flip and identity
798    * transforms.
799    *
800    * This will enable or disable usage of flip and identity transform
801    * types in any direction. The default value is 1. Including:
802    * FLIPADST_DCT, DCT_FLIPADST, FLIPADST_FLIPADST, ADST_FLIPADST,
803    * FLIPADST_ADST, IDTX, V_DCT, H_DCT, V_ADST, H_ADST, V_FLIPADST,
804    * H_FLIPADST
805    */
806   AV1E_SET_ENABLE_FLIP_IDTX,
807 
808   /*!\brief Codec control function to set transform block size search method.
809    *
810    * This will set the transform block size search method.
811    * 0: use Full RD search, 1: use Fast RD search, 2: always use largest
812    * allowed transform block size based on partition size.
813    */
814   AV1E_SET_TX_SIZE_SEARCH_METHOD,
815 
816   /*!\brief Codec control function to turn on / off dist-wtd compound mode
817    * at sequence level.
818    *
819    * This will enable or disable distance-weighted compound mode. The default
820    * value is 1. If AV1E_SET_ENABLE_ORDER_HINT is 0, then this flag is forced
821    * to 0.
822    *
823    */
824   AV1E_SET_ENABLE_DIST_WTD_COMP,
825 
826   /*!\brief Codec control function to turn on / off ref frame mvs (mfmv) usage
827    * at sequence level.
828    *
829    * This will enable or disable usage of MFMV. The default value is 1.
830    * If AV1E_SET_ENABLE_ORDER_HINT is 0, then this flag is forced to 0.
831    *
832    */
833   AV1E_SET_ENABLE_REF_FRAME_MVS,
834 
835   /*!\brief Codec control function to set temporal mv prediction
836    * enabling/disabling at frame level.
837    *
838    * This will enable or disable temporal mv predicton. The default value is 1.
839    * If AV1E_SET_ENABLE_REF_FRAME_MVS is 0, then this flag is forced to 0.
840    *
841    */
842   AV1E_SET_ALLOW_REF_FRAME_MVS,
843 
844   /*!\brief Codec control function to turn on / off dual filter usage
845    * for a sequence.
846    *
847    * This will enable or disable use of dual interpolation filter.
848    * The default value is 1.
849    *
850    */
851   AV1E_SET_ENABLE_DUAL_FILTER,
852 
853   /*!\brief Codec control function to turn on / off masked compound usage
854    * for a sequence.
855    *
856    * This will enable or disable usage of wedge and diff-wtd compound
857    * modes. The default value is 1.
858    *
859    */
860   AV1E_SET_ENABLE_MASKED_COMP,
861 
862   /*!\brief Codec control function to turn on / off one sided compound usage
863    * for a sequence.
864    *
865    * This will enable or disable usage of one sided compound
866    * modes. The default value is 1.
867    *
868    */
869   AV1E_SET_ENABLE_ONESIDED_COMP,
870 
871   /*!\brief Codec control function to turn on / off interintra compound
872    * for a sequence.
873    *
874    * This will enable or disable usage of inter-intra compound modes.
875    * The default value is 1.
876    *
877    */
878   AV1E_SET_ENABLE_INTERINTRA_COMP,
879 
880   /*!\brief Codec control function to turn on / off smooth inter-intra
881    * mode for a sequence.
882    *
883    * This will enable or disable usage of smooth inter-intra mode.
884    * The default value is 1.
885    *
886    */
887   AV1E_SET_ENABLE_SMOOTH_INTERINTRA,
888 
889   /*!\brief Codec control function to turn on / off difference weighted
890    * compound.
891    *
892    * This will enable or disable usage of difference weighted compound.
893    * The default value is 1.
894    *
895    */
896   AV1E_SET_ENABLE_DIFF_WTD_COMP,
897 
898   /*!\brief Codec control function to turn on / off interinter wedge
899    * compound.
900    *
901    * This will enable or disable usage of interinter wedge compound.
902    * The default value is 1.
903    *
904    */
905   AV1E_SET_ENABLE_INTERINTER_WEDGE,
906 
907   /*!\brief Codec control function to turn on / off interintra wedge
908    * compound.
909    *
910    * This will enable or disable usage of interintra wedge compound.
911    * The default value is 1.
912    *
913    */
914   AV1E_SET_ENABLE_INTERINTRA_WEDGE,
915 
916   /*!\brief Codec control function to turn on / off global motion usage
917    * for a sequence.
918    *
919    * This will enable or disable usage of global motion. The default value is 1.
920    *
921    */
922   AV1E_SET_ENABLE_GLOBAL_MOTION,
923 
924   /*!\brief Codec control function to turn on / off warped motion usage
925    * at sequence level.
926    *
927    * This will enable or disable usage of warped motion. The default value is 1.
928    *
929    */
930   AV1E_SET_ENABLE_WARPED_MOTION,
931 
932   /*!\brief Codec control function to turn on / off warped motion usage
933    * at frame level.
934    *
935    * This will enable or disable usage of warped motion. The default value is 1.
936    * If AV1E_SET_ENABLE_WARPED_MOTION is 0, then this flag is forced to 0.
937    *
938    */
939   AV1E_SET_ALLOW_WARPED_MOTION,
940 
941   /*!\brief Codec control function to turn on / off filter intra usage at
942    * sequence level.
943    *
944    * This will enable or disable usage of filter intra. The default value is 1.
945    * If AV1E_SET_ENABLE_FILTER_INTRA is 0, then this flag is forced to 0.
946    *
947    */
948   AV1E_SET_ENABLE_FILTER_INTRA,
949 
950   /*!\brief Codec control function to turn on / off smooth intra modes usage.
951    *
952    * This will enable or disable usage of smooth, smooth_h and smooth_v intra
953    * modes. The default value is 1.
954    *
955    */
956   AV1E_SET_ENABLE_SMOOTH_INTRA,
957 
958   /*!\brief Codec control function to turn on / off Paeth intra mode usage.
959    *
960    * This will enable or disable usage of Paeth intra mode. The default value
961    * is 1.
962    *
963    */
964   AV1E_SET_ENABLE_PAETH_INTRA,
965 
966   /*!\brief Codec control function to turn on / off CFL uv intra mode usage.
967    *
968    * This will enable or disable usage of chroma-from-luma intra mode. The
969    * default value is 1.
970    *
971    */
972   AV1E_SET_ENABLE_CFL_INTRA,
973 
974   /*!\brief Codec control function to turn on / off frame superresolution.
975    *
976    * This will enable or disable frame superresolution. The default value is 1
977    * If AV1E_SET_ENABLE_SUPERRES is 0, then this flag is forced to 0.
978    */
979   AV1E_SET_ENABLE_SUPERRES,
980 
981   /*!\brief Codec control function to turn on/off palette mode */
982   AV1E_SET_ENABLE_PALETTE,
983 
984   /*!\brief Codec control function to turn on/off intra block copy mode */
985   AV1E_SET_ENABLE_INTRABC,
986 
987   /*!\brief Codec control function to turn on/off intra angle delta */
988   AV1E_SET_ENABLE_ANGLE_DELTA,
989 
990   /*!\brief Codec control function to set the delta q mode
991    *
992    * AV1 has a segment based feature that allows encoder to adaptively change
993    * quantization parameter for each segment within a frame to improve the
994    * subjective quality. the delta q mode is added on top of segment based
995    * feature, and allows control per 64x64 q and lf delta.This control makes
996    * encoder operate in one of the several DELTA_Q_modes supported.
997    *
998    * By default, encoder operates with DELTAQ_Mode 0(deltaq signaling off).
999    */
1000   AV1E_SET_DELTAQ_MODE,
1001 
1002   /*!\brief Codec control function to set the single tile decoding mode to 0 or
1003    * 1.
1004    *
1005    * 0 means that the single tile decoding is off, and 1 means that the single
1006    * tile decoding is on.
1007    *
1008    * Experiment: EXT_TILE
1009    */
1010   AV1E_SET_SINGLE_TILE_DECODING,
1011 
1012   /*!\brief Codec control function to enable the extreme motion vector unit test
1013    * in AV1. Please note that this is only used in motion vector unit test.
1014    *
1015    * 0 : off, 1 : MAX_EXTREME_MV, 2 : MIN_EXTREME_MV
1016    */
1017   AV1E_ENABLE_MOTION_VECTOR_UNIT_TEST,
1018 
1019   /*!\brief Codec control function to signal picture timing info in the
1020    * bitstream. \note Valid ranges: 0..1, default is "UNKNOWN". 0 = UNKNOWN, 1 =
1021    * EQUAL
1022    */
1023   AV1E_SET_TIMING_INFO_TYPE,
1024 
1025   /*!\brief Codec control function to add film grain parameters (one of several
1026    * preset types) info in the bitstream.
1027    * \note Valid ranges: 0..11, default is "0". 0 = UNKNOWN,
1028    * 1..16 = different test vectors for grain
1029    */
1030   AV1E_SET_FILM_GRAIN_TEST_VECTOR,
1031 
1032   /*!\brief Codec control function to set the path to the film grain parameters
1033    */
1034   AV1E_SET_FILM_GRAIN_TABLE,
1035 
1036   /*!\brief Sets the noise level */
1037   AV1E_SET_DENOISE_NOISE_LEVEL,
1038 
1039   /*!\brief Sets the denoisers block size */
1040   AV1E_SET_DENOISE_BLOCK_SIZE,
1041 
1042   /*!\brief Sets the chroma subsampling x value */
1043   AV1E_SET_CHROMA_SUBSAMPLING_X,
1044 
1045   /*!\brief Sets the chroma subsampling y value */
1046   AV1E_SET_CHROMA_SUBSAMPLING_Y,
1047 
1048   /*!\brief Control to use a reduced tx type set */
1049   AV1E_SET_REDUCED_TX_TYPE_SET,
1050 
1051   /*!\brief Control to use dct only for intra modes */
1052   AV1E_SET_INTRA_DCT_ONLY,
1053 
1054   /*!\brief Control to use dct only for inter modes */
1055   AV1E_SET_INTER_DCT_ONLY,
1056 
1057   /*!\brief Control to use default tx type only for intra modes */
1058   AV1E_SET_INTRA_DEFAULT_TX_ONLY,
1059 
1060   /*!\brief Control to use adaptive quantize_b */
1061   AV1E_SET_QUANT_B_ADAPT,
1062 
1063   /*!\brief Control to select maximum height for the GF group pyramid structure
1064    * (valid values: 0 - 4) */
1065   AV1E_SET_GF_MAX_PYRAMID_HEIGHT,
1066 
1067   /*!\brief Control to select maximum reference frames allowed per frame
1068    * (valid values: 3 - 7) */
1069   AV1E_SET_MAX_REFERENCE_FRAMES,
1070 
1071   /*!\brief Control to use reduced set of single and compound references. */
1072   AV1E_SET_REDUCED_REFERENCE_SET,
1073 
1074   /*!\brief Control to set frequency of the cost updates for coefficients
1075    * Possible values are:
1076    * 0: Update at SB level (default)
1077    * 1: Update at SB row level in tile
1078    * 2: Update at tile level
1079    */
1080   AV1E_SET_COEFF_COST_UPD_FREQ,
1081 
1082   /*!\brief Control to set frequency of the cost updates for mode
1083    * Possible values are:
1084    * 0: Update at SB level (default)
1085    * 1: Update at SB row level in tile
1086    * 2: Update at tile level
1087    */
1088   AV1E_SET_MODE_COST_UPD_FREQ,
1089 
1090   /*!\brief Control to set bit mask that specifies which tier each of the 32
1091    * possible operating points conforms to.
1092    * Bit value 0: Main Tier; 1: High Tier.
1093    */
1094   AV1E_SET_TIER_MASK,
1095 };
1096 
1097 /*!\brief aom 1-D scaling mode
1098  *
1099  * This set of constants define 1-D aom scaling modes
1100  */
1101 typedef enum aom_scaling_mode_1d {
1102   AOME_NORMAL = 0,
1103   AOME_FOURFIVE = 1,
1104   AOME_THREEFIVE = 2,
1105   AOME_ONETWO = 3
1106 } AOM_SCALING_MODE;
1107 
1108 /*!\brief Max number of segments
1109  *
1110  * This is the limit of number of segments allowed within a frame.
1111  *
1112  * Currently same as "MAX_SEGMENTS" in AV1, the maximum that AV1 supports.
1113  *
1114  */
1115 #define AOM_MAX_SEGMENTS 8
1116 
1117 /*!\brief  aom region of interest map
1118  *
1119  * These defines the data structures for the region of interest map
1120  *
1121  * TODO(yaowu): create a unit test for ROI map related APIs
1122  *
1123  */
1124 typedef struct aom_roi_map {
1125   /*! An id between 0 and 7 for each 8x8 region within a frame. */
1126   unsigned char *roi_map;
1127   unsigned int rows;              /**< Number of rows. */
1128   unsigned int cols;              /**< Number of columns. */
1129   int delta_q[AOM_MAX_SEGMENTS];  /**< Quantizer deltas. */
1130   int delta_lf[AOM_MAX_SEGMENTS]; /**< Loop filter deltas. */
1131   /*! Static breakout threshold for each segment. */
1132   unsigned int static_threshold[AOM_MAX_SEGMENTS];
1133 } aom_roi_map_t;
1134 
1135 /*!\brief  aom active region map
1136  *
1137  * These defines the data structures for active region map
1138  *
1139  */
1140 
1141 typedef struct aom_active_map {
1142   /*!\brief specify an on (1) or off (0) each 16x16 region within a frame */
1143   unsigned char *active_map;
1144   unsigned int rows; /**< number of rows */
1145   unsigned int cols; /**< number of cols */
1146 } aom_active_map_t;
1147 
1148 /*!\brief  aom image scaling mode
1149  *
1150  * This defines the data structure for image scaling mode
1151  *
1152  */
1153 typedef struct aom_scaling_mode {
1154   AOM_SCALING_MODE h_scaling_mode; /**< horizontal scaling mode */
1155   AOM_SCALING_MODE v_scaling_mode; /**< vertical scaling mode   */
1156 } aom_scaling_mode_t;
1157 
1158 /*!brief AV1 encoder content type */
1159 typedef enum {
1160   AOM_CONTENT_DEFAULT,
1161   AOM_CONTENT_SCREEN,
1162   AOM_CONTENT_INVALID
1163 } aom_tune_content;
1164 
1165 /*!brief AV1 encoder timing info type signaling */
1166 typedef enum {
1167   AOM_TIMING_UNSPECIFIED,
1168   AOM_TIMING_EQUAL,
1169   AOM_TIMING_DEC_MODEL
1170 } aom_timing_info_type_t;
1171 
1172 /*!\brief Model tuning parameters
1173  *
1174  * Changes the encoder to tune for certain types of input material.
1175  *
1176  */
1177 typedef enum {
1178   AOM_TUNE_PSNR,
1179   AOM_TUNE_SSIM,
1180   AOM_TUNE_CDEF_DIST,
1181   AOM_TUNE_DAALA_DIST
1182 } aom_tune_metric;
1183 
1184 /*!\cond */
1185 /*!\brief Encoder control function parameter type
1186  *
1187  * Defines the data types that AOME/AV1E control functions take. Note that
1188  * additional common controls are defined in aom.h
1189  *
1190  */
1191 
1192 AOM_CTRL_USE_TYPE(AOME_USE_REFERENCE, int)
1193 #define AOM_CTRL_AOME_USE_REFERENCE
1194 AOM_CTRL_USE_TYPE(AOME_SET_ROI_MAP, aom_roi_map_t *)
1195 #define AOM_CTRL_AOME_SET_ROI_MAP
1196 AOM_CTRL_USE_TYPE(AOME_SET_ACTIVEMAP, aom_active_map_t *)
1197 #define AOM_CTRL_AOME_SET_ACTIVEMAP
1198 AOM_CTRL_USE_TYPE(AOME_SET_SCALEMODE, aom_scaling_mode_t *)
1199 #define AOM_CTRL_AOME_SET_SCALEMODE
1200 
1201 AOM_CTRL_USE_TYPE(AOME_SET_SPATIAL_LAYER_ID, unsigned int)
1202 #define AOM_CTRL_AOME_SET_SPATIAL_LAYER_ID
1203 
1204 AOM_CTRL_USE_TYPE(AOME_SET_CPUUSED, int)
1205 #define AOM_CTRL_AOME_SET_CPUUSED
1206 AOM_CTRL_USE_TYPE(AOME_SET_ENABLEAUTOALTREF, unsigned int)
1207 #define AOM_CTRL_AOME_SET_ENABLEAUTOALTREF
1208 
1209 AOM_CTRL_USE_TYPE(AOME_SET_ENABLEAUTOBWDREF, unsigned int)
1210 #define AOM_CTRL_AOME_SET_ENABLEAUTOBWDREF
1211 
1212 AOM_CTRL_USE_TYPE(AOME_SET_SHARPNESS, unsigned int)
1213 #define AOM_CTRL_AOME_SET_SHARPNESS
1214 AOM_CTRL_USE_TYPE(AOME_SET_STATIC_THRESHOLD, unsigned int)
1215 #define AOM_CTRL_AOME_SET_STATIC_THRESHOLD
1216 
1217 AOM_CTRL_USE_TYPE(AOME_SET_ARNR_MAXFRAMES, unsigned int)
1218 #define AOM_CTRL_AOME_SET_ARNR_MAXFRAMES
1219 AOM_CTRL_USE_TYPE(AOME_SET_ARNR_STRENGTH, unsigned int)
1220 #define AOM_CTRL_AOME_SET_ARNR_STRENGTH
1221 AOM_CTRL_USE_TYPE(AOME_SET_TUNING, int) /* aom_tune_metric */
1222 #define AOM_CTRL_AOME_SET_TUNING
1223 AOM_CTRL_USE_TYPE(AOME_SET_CQ_LEVEL, unsigned int)
1224 #define AOM_CTRL_AOME_SET_CQ_LEVEL
1225 
1226 AOM_CTRL_USE_TYPE(AV1E_SET_ROW_MT, unsigned int)
1227 #define AOM_CTRL_AV1E_SET_ROW_MT
1228 
1229 AOM_CTRL_USE_TYPE(AV1E_SET_TILE_COLUMNS, unsigned int)
1230 #define AOM_CTRL_AV1E_SET_TILE_COLUMNS
1231 AOM_CTRL_USE_TYPE(AV1E_SET_TILE_ROWS, unsigned int)
1232 #define AOM_CTRL_AV1E_SET_TILE_ROWS
1233 
1234 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_TPL_MODEL, unsigned int)
1235 #define AOM_CTRL_AV1E_SET_ENABLE_TPL_MODEL
1236 
1237 AOM_CTRL_USE_TYPE(AOME_GET_LAST_QUANTIZER, int *)
1238 #define AOM_CTRL_AOME_GET_LAST_QUANTIZER
1239 AOM_CTRL_USE_TYPE(AOME_GET_LAST_QUANTIZER_64, int *)
1240 #define AOM_CTRL_AOME_GET_LAST_QUANTIZER_64
1241 
1242 AOM_CTRL_USE_TYPE(AOME_SET_MAX_INTRA_BITRATE_PCT, unsigned int)
1243 #define AOM_CTRL_AOME_SET_MAX_INTRA_BITRATE_PCT
1244 AOM_CTRL_USE_TYPE(AOME_SET_MAX_INTER_BITRATE_PCT, unsigned int)
1245 #define AOM_CTRL_AOME_SET_MAX_INTER_BITRATE_PCT
1246 
1247 AOM_CTRL_USE_TYPE(AOME_SET_NUMBER_SPATIAL_LAYERS, int)
1248 #define AOME_CTRL_AOME_SET_NUMBER_SPATIAL_LAYERS
1249 
1250 AOM_CTRL_USE_TYPE(AV1E_SET_GF_CBR_BOOST_PCT, unsigned int)
1251 #define AOM_CTRL_AV1E_SET_GF_CBR_BOOST_PCT
1252 
1253 AOM_CTRL_USE_TYPE(AV1E_SET_LOSSLESS, unsigned int)
1254 #define AOM_CTRL_AV1E_SET_LOSSLESS
1255 
1256 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_CDEF, unsigned int)
1257 #define AOM_CTRL_AV1E_SET_ENABLE_CDEF
1258 
1259 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_RESTORATION, unsigned int)
1260 #define AOM_CTRL_AV1E_SET_ENABLE_RESTORATION
1261 
1262 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_OBMC, unsigned int)
1263 #define AOM_CTRL_AV1E_SET_ENABLE_OBMC
1264 
1265 AOM_CTRL_USE_TYPE(AV1E_SET_DISABLE_TRELLIS_QUANT, unsigned int)
1266 #define AOM_CTRL_AV1E_SET_DISABLE_TRELLIS_QUANT
1267 
1268 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_QM, unsigned int)
1269 #define AOM_CTRL_AV1E_SET_ENABLE_QM
1270 
1271 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_DIST_8X8, unsigned int)
1272 #define AOM_CTRL_AV1E_SET_ENABLE_DIST_8X8
1273 
1274 AOM_CTRL_USE_TYPE(AV1E_SET_QM_MIN, unsigned int)
1275 #define AOM_CTRL_AV1E_SET_QM_MIN
1276 
1277 AOM_CTRL_USE_TYPE(AV1E_SET_QM_MAX, unsigned int)
1278 #define AOM_CTRL_AV1E_SET_QM_MAX
1279 
1280 AOM_CTRL_USE_TYPE(AV1E_SET_QM_Y, unsigned int)
1281 #define AOM_CTRL_AV1E_SET_QM_Y
1282 
1283 AOM_CTRL_USE_TYPE(AV1E_SET_QM_U, unsigned int)
1284 #define AOM_CTRL_AV1E_SET_QM_U
1285 
1286 AOM_CTRL_USE_TYPE(AV1E_SET_QM_V, unsigned int)
1287 #define AOM_CTRL_AV1E_SET_QM_V
1288 
1289 AOM_CTRL_USE_TYPE(AV1E_SET_NUM_TG, unsigned int)
1290 #define AOM_CTRL_AV1E_SET_NUM_TG
1291 AOM_CTRL_USE_TYPE(AV1E_SET_MTU, unsigned int)
1292 #define AOM_CTRL_AV1E_SET_MTU
1293 
1294 AOM_CTRL_USE_TYPE(AV1E_SET_TIMING_INFO_TYPE, int) /* aom_timing_info_type_t */
1295 #define AOM_CTRL_AV1E_SET_TIMING_INFO_TYPE
1296 
1297 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_RECT_PARTITIONS, int)
1298 #define AOM_CTRL_AV1E_SET_ENABLE_RECT_PARTITIONS
1299 
1300 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_AB_PARTITIONS, int)
1301 #define AOM_CTRL_AV1E_SET_ENABLE_AB_PARTITIONS
1302 
1303 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_1TO4_PARTITIONS, int)
1304 #define AOM_CTRL_AV1E_SET_ENABLE_1TO4_PARTITIONS
1305 
1306 AOM_CTRL_USE_TYPE(AV1E_SET_MIN_PARTITION_SIZE, int)
1307 #define AOM_CTRL_AV1E_SET_MIN_PARTITION_SIZE
1308 
1309 AOM_CTRL_USE_TYPE(AV1E_SET_MAX_PARTITION_SIZE, int)
1310 #define AOM_CTRL_AV1E_SET_MAX_PARTITION_SIZE
1311 
1312 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_INTRA_EDGE_FILTER, int)
1313 #define AOM_CTRL_AV1E_SET_ENABLE_INTRA_EDGE_FILTER
1314 
1315 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_ORDER_HINT, int)
1316 #define AOM_CTRL_AV1E_SET_ENABLE_ORDER_HINT
1317 
1318 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_TX64, int)
1319 #define AOM_CTRL_AV1E_SET_ENABLE_TX64
1320 
1321 AOM_CTRL_USE_TYPE(AV1E_SET_TX_SIZE_SEARCH_METHOD, int)
1322 #define AOM_CTRL_AV1E_SET_TXSIZE_SEARCH_METHOD
1323 
1324 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_FLIP_IDTX, int)
1325 #define AOM_CTRL_AV1E_SET_ENABLE_FLIP_IDTX
1326 
1327 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_DIST_WTD_COMP, int)
1328 #define AOM_CTRL_AV1E_SET_ENABLE_DIST_WTD_COMP
1329 
1330 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_REF_FRAME_MVS, int)
1331 #define AOM_CTRL_AV1E_SET_ENABLE_REF_FRAME_MVS
1332 
1333 AOM_CTRL_USE_TYPE(AV1E_SET_ALLOW_REF_FRAME_MVS, int)
1334 #define AOM_CTRL_AV1E_SET_ALLOW_REF_FRAME_MVS
1335 
1336 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_DUAL_FILTER, int)
1337 #define AOM_CTRL_AV1E_SET_ENABLE_DUAL_FILTER
1338 
1339 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_MASKED_COMP, int)
1340 #define AOM_CTRL_AV1E_SET_ENABLE_MASKED_COMP
1341 
1342 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_ONESIDED_COMP, int)
1343 #define AOM_CTRL_AV1E_SET_ENABLE_ONESIDED_COMP
1344 
1345 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_INTERINTRA_COMP, int)
1346 #define AOM_CTRL_AV1E_SET_ENABLE_INTERINTRA_COMP
1347 
1348 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_SMOOTH_INTERINTRA, int)
1349 #define AOM_CTRL_AV1E_SET_ENABLE_SMOOTH_INTERINTRA
1350 
1351 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_DIFF_WTD_COMP, int)
1352 #define AOM_CTRL_AV1E_SET_ENABLE_DIFF_WTD_COMP
1353 
1354 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_INTERINTER_WEDGE, int)
1355 #define AOM_CTRL_AV1E_SET_ENABLE_INTERINTER_WEDGE
1356 
1357 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_INTERINTRA_WEDGE, int)
1358 #define AOM_CTRL_AV1E_SET_ENABLE_INTERINTRA_WEDGE
1359 
1360 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_GLOBAL_MOTION, int)
1361 #define AOM_CTRL_AV1E_SET_ENABLE_GLOBAL_MOTION
1362 
1363 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_WARPED_MOTION, int)
1364 #define AOM_CTRL_AV1E_SET_ENABLE_WARPED_MOTION
1365 
1366 AOM_CTRL_USE_TYPE(AV1E_SET_ALLOW_WARPED_MOTION, int)
1367 #define AOM_CTRL_AV1E_SET_ALLOW_WARPED_MOTION
1368 
1369 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_FILTER_INTRA, int)
1370 #define AOM_CTRL_AV1E_SET_ENABLE_FILTER_INTRA
1371 
1372 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_SMOOTH_INTRA, int)
1373 #define AOM_CTRL_AV1E_SET_ENABLE_SMOOTH_INTRA
1374 
1375 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_PAETH_INTRA, int)
1376 #define AOM_CTRL_AV1E_SET_ENABLE_PAETH_INTRA
1377 
1378 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_CFL_INTRA, int)
1379 #define AOM_CTRL_AV1E_SET_ENABLE_CFL_INTRA
1380 
1381 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_SUPERRES, int)
1382 #define AOM_CTRL_AV1E_SET_ENABLE_SUPERRES
1383 
1384 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_PALETTE, int)
1385 #define AOM_CTRL_AV1E_SET_ENABLE_PALETTE
1386 
1387 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_INTRABC, int)
1388 #define AOM_CTRL_AV1E_SET_ENABLE_INTRABC
1389 
1390 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_ANGLE_DELTA, int)
1391 #define AOM_CTRL_AV1E_SET_ENABLE_ANGLE_DELTA
1392 
1393 AOM_CTRL_USE_TYPE(AV1E_SET_FRAME_PARALLEL_DECODING, unsigned int)
1394 #define AOM_CTRL_AV1E_SET_FRAME_PARALLEL_DECODING
1395 
1396 AOM_CTRL_USE_TYPE(AV1E_SET_ERROR_RESILIENT_MODE, int)
1397 #define AOM_CTRL_AV1E_SET_ERROR_RESILIENT_MODE
1398 
1399 AOM_CTRL_USE_TYPE(AV1E_SET_S_FRAME_MODE, int)
1400 #define AOM_CTRL_AV1E_SET_S_FRAME_MODE
1401 
1402 AOM_CTRL_USE_TYPE(AV1E_SET_AQ_MODE, unsigned int)
1403 #define AOM_CTRL_AV1E_SET_AQ_MODE
1404 
1405 AOM_CTRL_USE_TYPE(AV1E_SET_DELTAQ_MODE, unsigned int)
1406 #define AOM_CTRL_AV1E_SET_DELTAQ_MODE
1407 
1408 AOM_CTRL_USE_TYPE(AV1E_SET_FRAME_PERIODIC_BOOST, unsigned int)
1409 #define AOM_CTRL_AV1E_SET_FRAME_PERIODIC_BOOST
1410 
1411 AOM_CTRL_USE_TYPE(AV1E_SET_NOISE_SENSITIVITY, unsigned int)
1412 #define AOM_CTRL_AV1E_SET_NOISE_SENSITIVITY
1413 
1414 AOM_CTRL_USE_TYPE(AV1E_SET_TUNE_CONTENT, int) /* aom_tune_content */
1415 #define AOM_CTRL_AV1E_SET_TUNE_CONTENT
1416 
1417 AOM_CTRL_USE_TYPE(AV1E_SET_COLOR_PRIMARIES, int)
1418 #define AOM_CTRL_AV1E_SET_COLOR_PRIMARIES
1419 
1420 AOM_CTRL_USE_TYPE(AV1E_SET_TRANSFER_CHARACTERISTICS, int)
1421 #define AOM_CTRL_AV1E_SET_TRANSFER_CHARACTERISTICS
1422 
1423 AOM_CTRL_USE_TYPE(AV1E_SET_MATRIX_COEFFICIENTS, int)
1424 #define AOM_CTRL_AV1E_SET_MATRIX_COEFFICIENTS
1425 
1426 AOM_CTRL_USE_TYPE(AV1E_SET_CHROMA_SAMPLE_POSITION, int)
1427 #define AOM_CTRL_AV1E_SET_CHROMA_SAMPLE_POSITION
1428 
1429 AOM_CTRL_USE_TYPE(AV1E_SET_MIN_GF_INTERVAL, unsigned int)
1430 #define AOM_CTRL_AV1E_SET_MIN_GF_INTERVAL
1431 
1432 AOM_CTRL_USE_TYPE(AV1E_SET_MAX_GF_INTERVAL, unsigned int)
1433 #define AOM_CTRL_AV1E_SET_MAX_GF_INTERVAL
1434 
1435 AOM_CTRL_USE_TYPE(AV1E_GET_ACTIVEMAP, aom_active_map_t *)
1436 #define AOM_CTRL_AV1E_GET_ACTIVEMAP
1437 
1438 AOM_CTRL_USE_TYPE(AV1E_SET_COLOR_RANGE, int)
1439 #define AOM_CTRL_AV1E_SET_COLOR_RANGE
1440 
1441 #define AOM_CTRL_AV1E_SET_RENDER_SIZE
1442 AOM_CTRL_USE_TYPE(AV1E_SET_RENDER_SIZE, int *)
1443 
1444 AOM_CTRL_USE_TYPE(AV1E_SET_SUPERBLOCK_SIZE, unsigned int)
1445 #define AOM_CTRL_AV1E_SET_SUPERBLOCK_SIZE
1446 
1447 AOM_CTRL_USE_TYPE(AV1E_GET_SEQ_LEVEL_IDX, int *)
1448 #define AOM_CTRL_AV1E_GET_SEQ_LEVEL_IDX
1449 
1450 AOM_CTRL_USE_TYPE(AV1E_SET_SINGLE_TILE_DECODING, unsigned int)
1451 #define AOM_CTRL_AV1E_SET_SINGLE_TILE_DECODING
1452 
1453 AOM_CTRL_USE_TYPE(AV1E_ENABLE_MOTION_VECTOR_UNIT_TEST, unsigned int)
1454 #define AOM_CTRL_AV1E_ENABLE_MOTION_VECTOR_UNIT_TEST
1455 
1456 AOM_CTRL_USE_TYPE(AV1E_SET_FILM_GRAIN_TEST_VECTOR, int)
1457 #define AOM_CTRL_AV1E_SET_FILM_GRAIN_TEST_VECTOR
1458 
1459 AOM_CTRL_USE_TYPE(AV1E_SET_FILM_GRAIN_TABLE, const char *)
1460 #define AOM_CTRL_AV1E_SET_FILM_GRAIN_TABLE
1461 
1462 AOM_CTRL_USE_TYPE(AV1E_SET_CDF_UPDATE_MODE, unsigned int)
1463 #define AOM_CTRL_AV1E_SET_CDF_UPDATE_MODE
1464 
1465 #ifdef CONFIG_DENOISE
1466 AOM_CTRL_USE_TYPE(AV1E_SET_DENOISE_NOISE_LEVEL, int);
1467 #define AOM_CTRL_AV1E_SET_DENOISE_NOISE_LEVEL
1468 
1469 AOM_CTRL_USE_TYPE(AV1E_SET_DENOISE_BLOCK_SIZE, unsigned int);
1470 #define AOM_CTRL_AV1E_SET_DENOISE_BLOCK_SIZE
1471 #endif
1472 
1473 AOM_CTRL_USE_TYPE(AV1E_SET_CHROMA_SUBSAMPLING_X, unsigned int)
1474 #define AOM_CTRL_AV1E_SET_CHROMA_SUBSAMPLING_X
1475 
1476 AOM_CTRL_USE_TYPE(AV1E_SET_CHROMA_SUBSAMPLING_Y, unsigned int)
1477 #define AOM_CTRL_AV1E_SET_CHROMA_SUBSAMPLING_Y
1478 
1479 AOM_CTRL_USE_TYPE(AV1E_SET_REDUCED_TX_TYPE_SET, int)
1480 #define AOM_CTRL_AV1E_SET_REDUCED_TX_TYPE_SET
1481 
1482 AOM_CTRL_USE_TYPE(AV1E_SET_INTRA_DCT_ONLY, int)
1483 #define AOM_CTRL_AV1E_SET_INTRA_DCT_ONLY
1484 
1485 AOM_CTRL_USE_TYPE(AV1E_SET_INTER_DCT_ONLY, int)
1486 #define AOM_CTRL_AV1E_SET_INTER_DCT_ONLY
1487 
1488 AOM_CTRL_USE_TYPE(AV1E_SET_INTRA_DEFAULT_TX_ONLY, int)
1489 #define AOM_CTRL_AV1E_SET_INTRA_DEFAULT_TX_ONLY
1490 
1491 AOM_CTRL_USE_TYPE(AV1E_SET_QUANT_B_ADAPT, int)
1492 #define AOM_CTRL_AV1E_SET_QUANT_B_ADAPT
1493 
1494 AOM_CTRL_USE_TYPE(AV1E_SET_GF_MAX_PYRAMID_HEIGHT, unsigned int)
1495 #define AOM_CTRL_AV1E_SET_GF_MAX_PYRAMID_HEIGHT
1496 
1497 AOM_CTRL_USE_TYPE(AV1E_SET_MAX_REFERENCE_FRAMES, int)
1498 #define AOM_CTRL_AV1E_SET_MAX_REFERENCE_FRAMES
1499 
1500 AOM_CTRL_USE_TYPE(AV1E_SET_REDUCED_REFERENCE_SET, int)
1501 #define AOM_CTRL_AV1E_SET_REDUCED_REFERENCE_SET
1502 
1503 AOM_CTRL_USE_TYPE(AV1E_SET_COEFF_COST_UPD_FREQ, unsigned int)
1504 #define AOM_CTRL_AV1E_SET_COEFF_COST_UPD_FREQ
1505 
1506 AOM_CTRL_USE_TYPE(AV1E_SET_MODE_COST_UPD_FREQ, unsigned int)
1507 #define AOM_CTRL_AV1E_SET_MODE_COST_UPD_FREQ
1508 
1509 AOM_CTRL_USE_TYPE(AV1E_SET_TARGET_SEQ_LEVEL_IDX, int)
1510 #define AOM_CTRL_AV1E_SET_TARGET_SEQ_LEVEL_IDX
1511 
1512 AOM_CTRL_USE_TYPE(AV1E_SET_TIER_MASK, unsigned int)
1513 #define AOM_CTRL_AV1E_SET_TIER_MASK
1514 
1515 /*!\endcond */
1516 /*! @} - end defgroup aom_encoder */
1517 #ifdef __cplusplus
1518 }  // extern "C"
1519 #endif
1520 
1521 #endif  // AOM_AOM_AOMCX_H_
1522