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