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