hadamard: Add 4x4 test.
[aom.git] / aom / aomcx.h
blob5f950a5ecf9fedaa7a56f13771edc250cda18de2
1 /*
2 * Copyright (c) 2016, Alliance for Open Media. All rights reserved
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.
11 #ifndef AOM_AOM_AOMCX_H_
12 #define AOM_AOM_AOMCX_H_
14 /*!\defgroup aom_encoder AOMedia AOM/AV1 Encoder
15 * \ingroup aom
17 * @{
19 #include "aom/aom.h"
20 #include "aom/aom_encoder.h"
21 #include "aom/aom_external_partition.h"
23 /*!\file
24 * \brief Provides definitions for using AOM or AV1 encoder algorithm within the
25 * aom Codec Interface.
27 * Several interfaces are excluded with CONFIG_REALTIME_ONLY build:
28 * Global motion
29 * Warped motion
30 * OBMC
31 * TPL model
32 * Loop restoration
34 * The following features are also disabled with CONFIG_REALTIME_ONLY:
35 * CNN
36 * 4X rectangular blocks
37 * 4X rectangular transform in intra prediction
40 #ifdef __cplusplus
41 extern "C" {
42 #endif
44 /*!\name Algorithm interface for AV1
46 * This interface provides the capability to encode raw AV1 streams.
47 *@{
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().
54 extern aom_codec_iface_t aom_codec_av1_cx_algo;
56 /*!\brief The interface to the AV1 encoder.
58 extern aom_codec_iface_t *aom_codec_av1_cx(void);
59 /*!@} - end algorithm interface member group */
62 * Algorithm Flags
65 /*!\brief Don't reference the last frame
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.
71 #define AOM_EFLAG_NO_REF_LAST (1 << 16)
72 /*!\brief Don't reference the last2 frame
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.
78 #define AOM_EFLAG_NO_REF_LAST2 (1 << 17)
79 /*!\brief Don't reference the last3 frame
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.
85 #define AOM_EFLAG_NO_REF_LAST3 (1 << 18)
86 /*!\brief Don't reference the golden frame
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.
92 #define AOM_EFLAG_NO_REF_GF (1 << 19)
94 /*!\brief Don't reference the alternate reference frame
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.
100 #define AOM_EFLAG_NO_REF_ARF (1 << 20)
101 /*!\brief Don't reference the bwd reference frame
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.
107 #define AOM_EFLAG_NO_REF_BWD (1 << 21)
108 /*!\brief Don't reference the alt2 reference frame
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.
114 #define AOM_EFLAG_NO_REF_ARF2 (1 << 22)
116 /*!\brief Don't update the last frame
118 * When this flag is set, the encoder will not update the last frame with
119 * the contents of the current frame.
121 #define AOM_EFLAG_NO_UPD_LAST (1 << 23)
123 /*!\brief Don't update the golden frame
125 * When this flag is set, the encoder will not update the golden frame with
126 * the contents of the current frame.
128 #define AOM_EFLAG_NO_UPD_GF (1 << 24)
130 /*!\brief Don't update the alternate reference frame
132 * When this flag is set, the encoder will not update the alt ref frame with
133 * the contents of the current frame.
135 #define AOM_EFLAG_NO_UPD_ARF (1 << 25)
136 /*!\brief Disable entropy update
138 * When this flag is set, the encoder will not update its internal entropy
139 * model based on the entropy of this frame.
141 #define AOM_EFLAG_NO_UPD_ENTROPY (1 << 26)
142 /*!\brief Disable ref frame mvs
144 * When this flag is set, the encoder will not allow frames to
145 * be encoded using mfmv.
147 #define AOM_EFLAG_NO_REF_FRAME_MVS (1 << 27)
148 /*!\brief Enable error resilient frame
150 * When this flag is set, the encoder will code frames as error
151 * resilient.
153 #define AOM_EFLAG_ERROR_RESILIENT (1 << 28)
154 /*!\brief Enable s frame mode
156 * When this flag is set, the encoder will code frames as an
157 * s frame.
159 #define AOM_EFLAG_SET_S_FRAME (1 << 29)
160 /*!\brief Force primary_ref_frame to PRIMARY_REF_NONE
162 * When this flag is set, the encoder will set a frame's primary_ref_frame
163 * to PRIMARY_REF_NONE
165 #define AOM_EFLAG_SET_PRIMARY_REF_NONE (1 << 30)
167 /*!\brief AVx encoder control functions
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).
173 * \sa #aom_codec_control(aom_codec_ctx_t *ctx, int ctrl_id, ...)
175 enum aome_enc_control_id {
176 /*!\brief Codec control function to set which reference frame encoder can use,
177 * int parameter.
179 AOME_USE_REFERENCE = 7,
181 /*!\brief Codec control function to pass an ROI map to encoder, aom_roi_map_t*
182 * parameter.
184 AOME_SET_ROI_MAP = 8,
186 /*!\brief Codec control function to pass an Active map to encoder,
187 * aom_active_map_t* parameter.
189 AOME_SET_ACTIVEMAP = 9,
191 /* NOTE: enum 10 unused */
193 /*!\brief Codec control function to set encoder scaling mode,
194 * aom_scaling_mode_t* parameter.
196 AOME_SET_SCALEMODE = 11,
198 /*!\brief Codec control function to set encoder spatial layer id, unsigned int
199 * parameter.
201 AOME_SET_SPATIAL_LAYER_ID = 12,
203 /*!\brief Codec control function to set encoder internal speed settings,
204 * int parameter
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.
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).
214 AOME_SET_CPUUSED = 13,
216 /*!\brief Codec control function to enable automatic set and use alf frames,
217 * unsigned int parameter
219 * - 0 = disable
220 * - 1 = enable (default)
222 AOME_SET_ENABLEAUTOALTREF = 14,
224 /* NOTE: enum 15 unused */
226 /*!\brief Codec control function to set the sharpness parameter,
227 * unsigned int parameter.
229 * This parameter controls the level at which rate-distortion optimization of
230 * transform coefficients favours sharpness in the block.
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.
235 AOME_SET_SHARPNESS = AOME_SET_ENABLEAUTOALTREF + 2, // 16
237 /*!\brief Codec control function to set the threshold for MBs treated static,
238 * unsigned int parameter
240 AOME_SET_STATIC_THRESHOLD = 17,
242 /* NOTE: enum 18 unused */
244 /*!\brief Codec control function to get last quantizer chosen by the encoder,
245 * int* parameter
247 * Return value uses internal quantizer scale defined by the codec.
249 AOME_GET_LAST_QUANTIZER = AOME_SET_STATIC_THRESHOLD + 2, // 19
251 /*!\brief Codec control function to get last quantizer chosen by the encoder,
252 * int* parameter
254 * Return value uses the 0..63 scale as used by the rc_*_quantizer config
255 * parameters.
257 AOME_GET_LAST_QUANTIZER_64 = 20,
259 /*!\brief Codec control function to set the max no of frames to create arf,
260 * unsigned int parameter
262 AOME_SET_ARNR_MAXFRAMES = 21,
264 /*!\brief Codec control function to set the filter strength for the arf,
265 * unsigned int parameter
267 AOME_SET_ARNR_STRENGTH = 22,
269 /* NOTE: enum 23 unused */
271 /*!\brief Codec control function to set visual tuning, aom_tune_metric (int)
272 * parameter
274 * The default is AOM_TUNE_PSNR.
276 AOME_SET_TUNING = AOME_SET_ARNR_STRENGTH + 2, // 24
278 /*!\brief Codec control function to set constrained / constant quality level,
279 * unsigned int parameter
281 * Valid range: 0..63
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.
286 AOME_SET_CQ_LEVEL = 25,
288 /*!\brief Codec control function to set max data rate for intra frames,
289 * unsigned int parameter
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.
297 * For example, to allocate no more than 4.5 frames worth of bitrate
298 * to a keyframe, set this to 450.
300 AOME_SET_MAX_INTRA_BITRATE_PCT = 26,
302 /*!\brief Codec control function to set number of spatial layers, int
303 * parameter
305 AOME_SET_NUMBER_SPATIAL_LAYERS = 27,
307 /*!\brief Codec control function to set max data rate for inter frames,
308 * unsigned int parameter
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.
316 * For example, to allow no more than 4.5 frames worth of bitrate
317 * to an inter frame, set this to 450.
319 AV1E_SET_MAX_INTER_BITRATE_PCT = AOME_SET_MAX_INTRA_BITRATE_PCT + 2, // 28
321 /*!\brief Boost percentage for Golden Frame in CBR mode, unsigned int
322 * parameter
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.
330 * For example, to allow 100% more bits, i.e, 2X, in a golden frame
331 * than average frame, set this to 100.
333 AV1E_SET_GF_CBR_BOOST_PCT = 29,
335 /* NOTE: enum 30 unused */
337 /*!\brief Codec control function to set lossless encoding mode, unsigned int
338 * parameter
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.
344 * - 0 = normal coding mode, may be lossy (default)
345 * - 1 = lossless coding mode
347 AV1E_SET_LOSSLESS = AV1E_SET_GF_CBR_BOOST_PCT + 2, // 31
349 /*!\brief Codec control function to enable the row based multi-threading
350 * of the encoder, unsigned int parameter
352 * - 0 = disable
353 * - 1 = enable (default)
355 AV1E_SET_ROW_MT = 32,
357 /*!\brief Codec control function to set number of tile columns. unsigned int
358 * parameter
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.
374 AV1E_SET_TILE_COLUMNS = 33,
376 /*!\brief Codec control function to set number of tile rows, unsigned int
377 * parameter
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.
392 AV1E_SET_TILE_ROWS = 34,
394 /*!\brief Codec control function to enable RDO modulated by frame temporal
395 * dependency, unsigned int parameter
397 * - 0 = disable
398 * - 1 = enable (default)
400 * \note Excluded from CONFIG_REALTIME_ONLY build.
402 AV1E_SET_ENABLE_TPL_MODEL = 35,
404 /*!\brief Codec control function to enable temporal filtering on key frame,
405 * unsigned int parameter
407 * - 0 = disable
408 * - 1 = enable without overlay (default)
409 * - 2 = enable with overlay
411 AV1E_SET_ENABLE_KEYFRAME_FILTERING = 36,
413 /*!\brief Codec control function to enable frame parallel decoding feature,
414 * unsigned int parameter
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.
422 * - 0 = disable (default)
423 * - 1 = enable
425 AV1E_SET_FRAME_PARALLEL_DECODING = 37,
427 /*!\brief Codec control function to enable error_resilient_mode, int parameter
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.
433 * - 0 = disable (default)
434 * - 1 = enable
436 AV1E_SET_ERROR_RESILIENT_MODE = 38,
438 /*!\brief Codec control function to enable s_frame_mode, int parameter
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.
444 * - 0 = disable (default)
445 * - 1 = enable
447 AV1E_SET_S_FRAME_MODE = 39,
449 /*!\brief Codec control function to set adaptive quantization mode, unsigned
450 * int parameter
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.
457 * - 0 = disable (default)
458 * - 1 = variance
459 * - 2 = complexity
460 * - 3 = cyclic refresh
462 AV1E_SET_AQ_MODE = 40,
464 /*!\brief Codec control function to enable/disable periodic Q boost, unsigned
465 * int parameter
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.
471 * - 0 = disable (default)
472 * - 1 = enable
474 AV1E_SET_FRAME_PERIODIC_BOOST = 41,
476 /*!\brief Codec control function to set noise sensitivity, unsigned int
477 * parameter
479 * - 0 = disable (default)
480 * - 1 = enable (Y only)
482 AV1E_SET_NOISE_SENSITIVITY = 42,
484 /*!\brief Codec control function to set content type, aom_tune_content
485 * parameter
487 * - AOM_CONTENT_DEFAULT = Regular video content (default)
488 * - AOM_CONTENT_SCREEN = Screen capture content
489 * - AOM_CONTENT_FILM = Film content
491 AV1E_SET_TUNE_CONTENT = 43,
493 /*!\brief Codec control function to set CDF update mode, unsigned int
494 * parameter
496 * - 0: no update
497 * - 1: update on every frame (default)
498 * - 2: selectively update
500 AV1E_SET_CDF_UPDATE_MODE = 44,
502 /*!\brief Codec control function to set color space info, int parameter
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
521 AV1E_SET_COLOR_PRIMARIES = 45,
523 /*!\brief Codec control function to set transfer function info, int parameter
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
546 AV1E_SET_TRANSFER_CHARACTERISTICS = 46,
548 /*!\brief Codec control function to set transfer function info, int parameter
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
567 AV1E_SET_MATRIX_COEFFICIENTS = 47,
569 /*!\brief Codec control function to set chroma 4:2:0 sample position info,
570 * aom_chroma_sample_position_t parameter
572 * AOM_CSP_UNKNOWN is default
574 AV1E_SET_CHROMA_SAMPLE_POSITION = 48,
576 /*!\brief Codec control function to set minimum interval between GF/ARF
577 * frames, unsigned int parameter
579 * By default the value is set as 4.
581 AV1E_SET_MIN_GF_INTERVAL = 49,
583 /*!\brief Codec control function to set minimum interval between GF/ARF
584 * frames, unsigned int parameter
586 * By default the value is set as 16.
588 AV1E_SET_MAX_GF_INTERVAL = 50,
590 /*!\brief Codec control function to get an active map back from the encoder,
591 aom_active_map_t* parameter
593 AV1E_GET_ACTIVEMAP = 51,
595 /*!\brief Codec control function to set color range bit, int parameter
597 * - 0 = Limited range, 16..235 or HBD equivalent (default)
598 * - 1 = Full range, 0..255 or HBD equivalent
600 AV1E_SET_COLOR_RANGE = 52,
602 /*!\brief Codec control function to set intended rendering image size,
603 * int32_t[2] parameter
605 * By default, this is identical to the image size in pixels.
607 AV1E_SET_RENDER_SIZE = 53,
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).
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.
623 * If the target level is not specified for an OP, the maximum level parameter
624 * of 31 is used as default.
626 AV1E_SET_TARGET_SEQ_LEVEL_IDX = 54,
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.
633 AV1E_GET_SEQ_LEVEL_IDX = 55,
635 /*!\brief Codec control function to set intended superblock size, unsigned int
636 * parameter
638 * By default, the superblock size is determined separately for each
639 * frame by the encoder.
641 AV1E_SET_SUPERBLOCK_SIZE = 56,
643 /*!\brief Codec control function to enable automatic set and use of
644 * bwd-pred frames, unsigned int parameter
646 * - 0 = disable (default)
647 * - 1 = enable
649 AOME_SET_ENABLEAUTOBWDREF = 57,
651 /*!\brief Codec control function to encode with CDEF, unsigned int parameter
653 * CDEF is the constrained directional enhancement filter which is an
654 * in-loop filter aiming to remove coding artifacts
656 * - 0 = disable
657 * - 1 = enable for all frames (default)
658 * - 2 = disable for non-reference frames
660 AV1E_SET_ENABLE_CDEF = 58,
662 /*!\brief Codec control function to encode with Loop Restoration Filter,
663 * unsigned int parameter
665 * - 0 = disable
666 * - 1 = enable (default)
668 * \note Excluded from CONFIG_REALTIME_ONLY build.
670 AV1E_SET_ENABLE_RESTORATION = 59,
672 /*!\brief Codec control function to force video mode, unsigned int parameter
674 * - 0 = do not force video mode (default)
675 * - 1 = force video mode even for a single frame
677 AV1E_SET_FORCE_VIDEO_MODE = 60,
679 /*!\brief Codec control function to predict with OBMC mode, unsigned int
680 * parameter
682 * - 0 = disable
683 * - 1 = enable (default)
685 * \note Excluded from CONFIG_REALTIME_ONLY build.
687 AV1E_SET_ENABLE_OBMC = 61,
689 /*!\brief Codec control function to encode without trellis quantization,
690 * unsigned int parameter
692 * - 0 = apply trellis quantization (default)
693 * - 1 = do not apply trellis quantization
694 * - 2 = disable trellis quantization in rd search
695 * - 3 = disable trellis quantization in estimate yrd
697 AV1E_SET_DISABLE_TRELLIS_QUANT = 62,
699 /*!\brief Codec control function to encode with quantisation matrices,
700 * unsigned int parameter
702 * AOM can operate with default quantisation matrices dependent on
703 * quantisation level and block type.
705 * - 0 = disable (default)
706 * - 1 = enable
708 AV1E_SET_ENABLE_QM = 63,
710 /*!\brief Codec control function to set the min quant matrix flatness,
711 * unsigned int parameter
713 * AOM can operate with different ranges of quantisation matrices.
714 * As quantisation levels increase, the matrices get flatter. This
715 * control sets the minimum level of flatness from which the matrices
716 * are determined.
718 * By default, the encoder sets this minimum at half the available
719 * range.
721 AV1E_SET_QM_MIN = 64,
723 /*!\brief Codec control function to set the max quant matrix flatness,
724 * unsigned int parameter
726 * AOM can operate with different ranges of quantisation matrices.
727 * As quantisation levels increase, the matrices get flatter. This
728 * control sets the maximum level of flatness possible.
730 * By default, the encoder sets this maximum at the top of the
731 * available range.
733 AV1E_SET_QM_MAX = 65,
735 /*!\brief Codec control function to set the min quant matrix flatness,
736 * unsigned int parameter
738 * AOM can operate with different ranges of quantisation matrices.
739 * As quantisation levels increase, the matrices get flatter. This
740 * control sets the flatness for luma (Y).
742 * By default, the encoder sets this minimum at half the available
743 * range.
745 AV1E_SET_QM_Y = 66,
747 /*!\brief Codec control function to set the min quant matrix flatness,
748 * unsigned int parameter
750 * AOM can operate with different ranges of quantisation matrices.
751 * As quantisation levels increase, the matrices get flatter. This
752 * control sets the flatness for chroma (U).
754 * By default, the encoder sets this minimum at half the available
755 * range.
757 AV1E_SET_QM_U = 67,
759 /*!\brief Codec control function to set the min quant matrix flatness,
760 * unsigned int parameter
762 * AOM can operate with different ranges of quantisation matrices.
763 * As quantisation levels increase, the matrices get flatter. This
764 * control sets the flatness for chrome (V).
766 * By default, the encoder sets this minimum at half the available
767 * range.
769 AV1E_SET_QM_V = 68,
771 /* NOTE: enum 69 unused */
773 /*!\brief Codec control function to set a maximum number of tile groups,
774 * unsigned int parameter
776 * This will set the maximum number of tile groups. This will be
777 * overridden if an MTU size is set. The default value is 1.
779 AV1E_SET_NUM_TG = 70,
781 /*!\brief Codec control function to set an MTU size for a tile group, unsigned
782 * int parameter
784 * This will set the maximum number of bytes in a tile group. This can be
785 * exceeded only if a single tile is larger than this amount.
787 * By default, the value is 0, in which case a fixed number of tile groups
788 * is used.
790 AV1E_SET_MTU = 71,
792 /* NOTE: enum 72 unused */
794 /*!\brief Codec control function to enable/disable rectangular partitions, int
795 * parameter
797 * - 0 = disable
798 * - 1 = enable (default)
800 AV1E_SET_ENABLE_RECT_PARTITIONS = 73,
802 /*!\brief Codec control function to enable/disable AB partitions, int
803 * parameter
805 * - 0 = disable
806 * - 1 = enable (default)
808 AV1E_SET_ENABLE_AB_PARTITIONS = 74,
810 /*!\brief Codec control function to enable/disable 1:4 and 4:1 partitions, int
811 * parameter
813 * - 0 = disable
814 * - 1 = enable (default)
816 AV1E_SET_ENABLE_1TO4_PARTITIONS = 75,
818 /*!\brief Codec control function to set min partition size, int parameter
820 * min_partition_size is applied to both width and height of the partition.
821 * i.e, both width and height of a partition can not be smaller than
822 * the min_partition_size, except the partition at the picture boundary.
824 * Valid values: [4, 8, 16, 32, 64, 128]. The default value is 4 for
825 * 4x4.
827 AV1E_SET_MIN_PARTITION_SIZE = 76,
829 /*!\brief Codec control function to set max partition size, int parameter
831 * max_partition_size is applied to both width and height of the partition.
832 * i.e, both width and height of a partition can not be larger than
833 * the max_partition_size.
835 * Valid values:[4, 8, 16, 32, 64, 128] The default value is 128 for
836 * 128x128.
838 AV1E_SET_MAX_PARTITION_SIZE = 77,
840 /*!\brief Codec control function to turn on / off intra edge filter
841 * at sequence level, int parameter
843 * - 0 = disable
844 * - 1 = enable (default)
846 AV1E_SET_ENABLE_INTRA_EDGE_FILTER = 78,
848 /*!\brief Codec control function to turn on / off frame order hint (int
849 * parameter). Affects: joint compound mode, motion field motion vector,
850 * ref frame sign bias
852 * - 0 = disable
853 * - 1 = enable (default)
855 AV1E_SET_ENABLE_ORDER_HINT = 79,
857 /*!\brief Codec control function to turn on / off 64-length transforms, int
858 * parameter
860 * This will enable or disable usage of length 64 transforms in any
861 * direction.
863 * - 0 = disable
864 * - 1 = enable (default)
866 AV1E_SET_ENABLE_TX64 = 80,
868 /*!\brief Codec control function to turn on / off flip and identity
869 * transforms, int parameter
871 * This will enable or disable usage of flip and identity transform
872 * types in any direction. If enabled, this includes:
873 * - FLIPADST_DCT
874 * - DCT_FLIPADST
875 * - FLIPADST_FLIPADST
876 * - ADST_FLIPADST
877 * - FLIPADST_ADST
878 * - IDTX
879 * - V_DCT
880 * - H_DCT
881 * - V_ADST
882 * - H_ADST
883 * - V_FLIPADST
884 * - H_FLIPADST
886 * Valid values:
887 * - 0 = disable
888 * - 1 = enable (default)
890 AV1E_SET_ENABLE_FLIP_IDTX = 81,
892 /*!\brief Codec control function to turn on / off rectangular transforms, int
893 * parameter
895 * This will enable or disable usage of rectangular transforms. NOTE:
896 * Rectangular transforms only enabled when corresponding rectangular
897 * partitions are.
899 * - 0 = disable
900 * - 1 = enable (default)
902 AV1E_SET_ENABLE_RECT_TX = 82,
904 /*!\brief Codec control function to turn on / off dist-wtd compound mode
905 * at sequence level, int parameter
907 * This will enable or disable distance-weighted compound mode.
908 * \attention If AV1E_SET_ENABLE_ORDER_HINT is 0, then this flag is forced
909 * to 0.
911 * - 0 = disable
912 * - 1 = enable (default)
914 AV1E_SET_ENABLE_DIST_WTD_COMP = 83,
916 /*!\brief Codec control function to turn on / off ref frame mvs (mfmv) usage
917 * at sequence level, int parameter
919 * \attention If AV1E_SET_ENABLE_ORDER_HINT is 0, then this flag is forced
920 * to 0.
922 * - 0 = disable
923 * - 1 = enable (default)
925 AV1E_SET_ENABLE_REF_FRAME_MVS = 84,
927 /*!\brief Codec control function to set temporal mv prediction
928 * enabling/disabling at frame level, int parameter
930 * \attention If AV1E_SET_ENABLE_REF_FRAME_MVS is 0, then this flag is
931 * forced to 0.
933 * - 0 = disable
934 * - 1 = enable (default)
936 AV1E_SET_ALLOW_REF_FRAME_MVS = 85,
938 /*!\brief Codec control function to turn on / off dual interpolation filter
939 * for a sequence, int parameter
941 * - 0 = disable
942 * - 1 = enable
944 AV1E_SET_ENABLE_DUAL_FILTER = 86,
946 /*!\brief Codec control function to turn on / off delta quantization in chroma
947 * planes for a sequence, int parameter
949 * - 0 = disable (default)
950 * - 1 = enable
952 AV1E_SET_ENABLE_CHROMA_DELTAQ = 87,
954 /*!\brief Codec control function to turn on / off masked compound usage
955 * (wedge and diff-wtd compound modes) for a sequence, int parameter
957 * - 0 = disable
958 * - 1 = enable (default)
960 AV1E_SET_ENABLE_MASKED_COMP = 88,
962 /*!\brief Codec control function to turn on / off one sided compound usage
963 * for a sequence, int parameter
965 * - 0 = disable
966 * - 1 = enable (default)
968 AV1E_SET_ENABLE_ONESIDED_COMP = 89,
970 /*!\brief Codec control function to turn on / off interintra compound
971 * for a sequence, int parameter
973 * - 0 = disable
974 * - 1 = enable (default)
976 AV1E_SET_ENABLE_INTERINTRA_COMP = 90,
978 /*!\brief Codec control function to turn on / off smooth inter-intra
979 * mode for a sequence, int parameter
981 * - 0 = disable
982 * - 1 = enable (default)
984 AV1E_SET_ENABLE_SMOOTH_INTERINTRA = 91,
986 /*!\brief Codec control function to turn on / off difference weighted
987 * compound, int parameter
989 * - 0 = disable
990 * - 1 = enable (default)
992 AV1E_SET_ENABLE_DIFF_WTD_COMP = 92,
994 /*!\brief Codec control function to turn on / off interinter wedge
995 * compound, int parameter
997 * - 0 = disable
998 * - 1 = enable (default)
1000 AV1E_SET_ENABLE_INTERINTER_WEDGE = 93,
1002 /*!\brief Codec control function to turn on / off interintra wedge
1003 * compound, int parameter
1005 * - 0 = disable
1006 * - 1 = enable (default)
1008 AV1E_SET_ENABLE_INTERINTRA_WEDGE = 94,
1010 /*!\brief Codec control function to turn on / off global motion usage
1011 * for a sequence, int parameter
1013 * - 0 = disable
1014 * - 1 = enable (default)
1016 * \note Excluded from CONFIG_REALTIME_ONLY build.
1018 AV1E_SET_ENABLE_GLOBAL_MOTION = 95,
1020 /*!\brief Codec control function to turn on / off warped motion usage
1021 * at sequence level, int parameter
1023 * - 0 = disable
1024 * - 1 = enable (default)
1026 * \note Excluded from CONFIG_REALTIME_ONLY build.
1028 AV1E_SET_ENABLE_WARPED_MOTION = 96,
1030 /*!\brief Codec control function to turn on / off warped motion usage
1031 * at frame level, int parameter
1033 * \attention If AV1E_SET_ENABLE_WARPED_MOTION is 0, then this flag is
1034 * forced to 0.
1036 * - 0 = disable
1037 * - 1 = enable (default)
1039 * \note Excluded from CONFIG_REALTIME_ONLY build.
1041 AV1E_SET_ALLOW_WARPED_MOTION = 97,
1043 /*!\brief Codec control function to turn on / off filter intra usage at
1044 * sequence level, int parameter
1046 * - 0 = disable
1047 * - 1 = enable (default)
1049 AV1E_SET_ENABLE_FILTER_INTRA = 98,
1051 /*!\brief Codec control function to turn on / off smooth intra modes usage,
1052 * int parameter
1054 * This will enable or disable usage of smooth, smooth_h and smooth_v intra
1055 * modes.
1057 * - 0 = disable
1058 * - 1 = enable (default)
1060 AV1E_SET_ENABLE_SMOOTH_INTRA = 99,
1062 /*!\brief Codec control function to turn on / off Paeth intra mode usage, int
1063 * parameter
1065 * - 0 = disable
1066 * - 1 = enable (default)
1068 AV1E_SET_ENABLE_PAETH_INTRA = 100,
1070 /*!\brief Codec control function to turn on / off CFL uv intra mode usage, int
1071 * parameter
1073 * This will enable or disable usage of chroma-from-luma intra mode.
1075 * - 0 = disable
1076 * - 1 = enable (default)
1078 AV1E_SET_ENABLE_CFL_INTRA = 101,
1080 /*!\brief Codec control function to turn on / off frame superresolution, int
1081 * parameter
1083 * - 0 = disable
1084 * - 1 = enable (default)
1086 AV1E_SET_ENABLE_SUPERRES = 102,
1088 /*!\brief Codec control function to turn on / off overlay frames for
1089 * filtered ALTREF frames, int parameter
1091 * This will enable or disable coding of overlay frames for filtered ALTREF
1092 * frames. When set to 0, overlay frames are not used but show existing frame
1093 * is used to display the filtered ALTREF frame as is. As a result the decoded
1094 * frame rate remains the same as the display frame rate. The default is 1.
1096 AV1E_SET_ENABLE_OVERLAY = 103,
1098 /*!\brief Codec control function to turn on/off palette mode, int parameter */
1099 AV1E_SET_ENABLE_PALETTE = 104,
1101 /*!\brief Codec control function to turn on/off intra block copy mode, int
1102 parameter */
1103 AV1E_SET_ENABLE_INTRABC = 105,
1105 /*!\brief Codec control function to turn on/off intra angle delta, int
1106 parameter */
1107 AV1E_SET_ENABLE_ANGLE_DELTA = 106,
1109 /*!\brief Codec control function to set the delta q mode, unsigned int
1110 * parameter
1112 * AV1 supports a delta q mode feature, that allows modulating q per
1113 * superblock.
1115 * - 0 = deltaq signaling off
1116 * - 1 = use modulation to maximize objective quality (default)
1117 * - 2 = use modulation for local test
1118 * - 3 = use modulation for key frame perceptual quality optimization
1119 * - 4 = use modulation for user rating based perceptual quality optimization
1121 AV1E_SET_DELTAQ_MODE = 107,
1123 /*!\brief Codec control function to turn on/off loopfilter modulation
1124 * when delta q modulation is enabled, unsigned int parameter.
1126 * \attention AV1 only supports loopfilter modulation when delta q
1127 * modulation is enabled as well.
1129 AV1E_SET_DELTALF_MODE = 108,
1131 /*!\brief Codec control function to set the single tile decoding mode,
1132 * unsigned int parameter
1134 * \attention Only applicable if large scale tiling is on.
1136 * - 0 = single tile decoding is off
1137 * - 1 = single tile decoding is on (default)
1139 AV1E_SET_SINGLE_TILE_DECODING = 109,
1141 /*!\brief Codec control function to enable the extreme motion vector unit
1142 * test, unsigned int parameter
1144 * - 0 = off
1145 * - 1 = MAX_EXTREME_MV
1146 * - 2 = MIN_EXTREME_MV
1148 * \note This is only used in motion vector unit test.
1150 AV1E_ENABLE_MOTION_VECTOR_UNIT_TEST = 110,
1152 /*!\brief Codec control function to signal picture timing info in the
1153 * bitstream, aom_timing_info_type_t parameter. Default is
1154 * AOM_TIMING_UNSPECIFIED.
1156 AV1E_SET_TIMING_INFO_TYPE = 111,
1158 /*!\brief Codec control function to add film grain parameters (one of several
1159 * preset types) info in the bitstream, int parameter
1161 Valid range: 0..16, 0 is unknown, 1..16 are test vectors
1163 AV1E_SET_FILM_GRAIN_TEST_VECTOR = 112,
1165 /*!\brief Codec control function to set the path to the film grain parameters,
1166 * const char* parameter
1168 AV1E_SET_FILM_GRAIN_TABLE = 113,
1170 /*!\brief Sets the noise level, int parameter */
1171 AV1E_SET_DENOISE_NOISE_LEVEL = 114,
1173 /*!\brief Sets the denoisers block size, unsigned int parameter */
1174 AV1E_SET_DENOISE_BLOCK_SIZE = 115,
1176 /*!\brief Sets the chroma subsampling x value, unsigned int parameter */
1177 AV1E_SET_CHROMA_SUBSAMPLING_X = 116,
1179 /*!\brief Sets the chroma subsampling y value, unsigned int parameter */
1180 AV1E_SET_CHROMA_SUBSAMPLING_Y = 117,
1182 /*!\brief Control to use a reduced tx type set, int parameter */
1183 AV1E_SET_REDUCED_TX_TYPE_SET = 118,
1185 /*!\brief Control to use dct only for intra modes, int parameter */
1186 AV1E_SET_INTRA_DCT_ONLY = 119,
1188 /*!\brief Control to use dct only for inter modes, int parameter */
1189 AV1E_SET_INTER_DCT_ONLY = 120,
1191 /*!\brief Control to use default tx type only for intra modes, int parameter
1193 AV1E_SET_INTRA_DEFAULT_TX_ONLY = 121,
1195 /*!\brief Control to use adaptive quantize_b, int parameter */
1196 AV1E_SET_QUANT_B_ADAPT = 122,
1198 /*!\brief Control to select maximum height for the GF group pyramid structure,
1199 * unsigned int parameter
1201 * Valid range: 0..5
1203 AV1E_SET_GF_MAX_PYRAMID_HEIGHT = 123,
1205 /*!\brief Control to select maximum reference frames allowed per frame, int
1206 * parameter
1208 * Valid range: 3..7
1210 AV1E_SET_MAX_REFERENCE_FRAMES = 124,
1212 /*!\brief Control to use reduced set of single and compound references, int
1213 parameter */
1214 AV1E_SET_REDUCED_REFERENCE_SET = 125,
1216 /*!\brief Control to set frequency of the cost updates for coefficients,
1217 * unsigned int parameter
1219 * - 0 = update at SB level (default)
1220 * - 1 = update at SB row level in tile
1221 * - 2 = update at tile level
1222 * - 3 = turn off
1224 AV1E_SET_COEFF_COST_UPD_FREQ = 126,
1226 /*!\brief Control to set frequency of the cost updates for mode, unsigned int
1227 * parameter
1229 * - 0 = update at SB level (default)
1230 * - 1 = update at SB row level in tile
1231 * - 2 = update at tile level
1232 * - 3 = turn off
1234 AV1E_SET_MODE_COST_UPD_FREQ = 127,
1236 /*!\brief Control to set frequency of the cost updates for motion vectors,
1237 * unsigned int parameter
1239 * - 0 = update at SB level (default)
1240 * - 1 = update at SB row level in tile
1241 * - 2 = update at tile level
1242 * - 3 = turn off
1244 AV1E_SET_MV_COST_UPD_FREQ = 128,
1246 /*!\brief Control to set bit mask that specifies which tier each of the 32
1247 * possible operating points conforms to, unsigned int parameter
1249 * - 0 = main tier (default)
1250 * - 1 = high tier
1252 AV1E_SET_TIER_MASK = 129,
1254 /*!\brief Control to set minimum compression ratio, unsigned int parameter
1255 * Take integer values. If non-zero, encoder will try to keep the compression
1256 * ratio of each frame to be higher than the given value divided by 100.
1257 * E.g. 850 means minimum compression ratio of 8.5.
1259 AV1E_SET_MIN_CR = 130,
1261 /* NOTE: enums 145-149 unused */
1263 /*!\brief Codec control function to set the layer id, aom_svc_layer_id_t*
1264 * parameter
1266 AV1E_SET_SVC_LAYER_ID = 131,
1268 /*!\brief Codec control function to set SVC paramaeters, aom_svc_params_t*
1269 * parameter
1271 AV1E_SET_SVC_PARAMS = 132,
1273 /*!\brief Codec control function to set reference frame config:
1274 * the ref_idx and the refresh flags for each buffer slot.
1275 * aom_svc_ref_frame_config_t* parameter
1277 AV1E_SET_SVC_REF_FRAME_CONFIG = 133,
1279 /*!\brief Codec control function to set the path to the VMAF model used when
1280 * tuning the encoder for VMAF, const char* parameter
1282 AV1E_SET_VMAF_MODEL_PATH = 134,
1284 /*!\brief Codec control function to enable EXT_TILE_DEBUG in AV1 encoder,
1285 * unsigned int parameter
1287 * - 0 = disable (default)
1288 * - 1 = enable
1290 * \note This is only used in lightfield example test.
1292 AV1E_ENABLE_EXT_TILE_DEBUG = 135,
1294 /*!\brief Codec control function to enable the superblock multipass unit test
1295 * in AV1 to ensure that the encoder does not leak state between different
1296 * passes. unsigned int parameter.
1298 * - 0 = disable (default)
1299 * - 1 = enable
1301 * \note This is only used in sb_multipass unit test.
1303 AV1E_ENABLE_SB_MULTIPASS_UNIT_TEST = 136,
1305 /*!\brief Control to select minimum height for the GF group pyramid structure,
1306 * unsigned int parameter
1308 * Valid values: 0..5
1310 AV1E_SET_GF_MIN_PYRAMID_HEIGHT = 137,
1312 /*!\brief Control to set average complexity of the corpus in the case of
1313 * single pass vbr based on LAP, unsigned int parameter
1315 AV1E_SET_VBR_CORPUS_COMPLEXITY_LAP = 138,
1317 /*!\brief Control to get baseline gf interval
1319 AV1E_GET_BASELINE_GF_INTERVAL = 139,
1321 /*\brief Control to set encoding the denoised frame from denoise-noise-level
1323 * - 0 = disabled/encode the original frame
1324 * - 1 = enabled/encode the denoised frame (default)
1326 AV1E_SET_ENABLE_DNL_DENOISING = 140,
1328 /*!\brief Codec control function to turn on / off D45 to D203 intra mode
1329 * usage, int parameter
1331 * This will enable or disable usage of D45 to D203 intra modes, which are a
1332 * subset of directional modes. This control has no effect if directional
1333 * modes are disabled (AV1E_SET_ENABLE_DIRECTIONAL_INTRA set to 0).
1335 * - 0 = disable
1336 * - 1 = enable (default)
1338 AV1E_SET_ENABLE_DIAGONAL_INTRA = 141,
1340 /*!\brief Control to set frequency of the cost updates for intrabc motion
1341 * vectors, unsigned int parameter
1343 * - 0 = update at SB level (default)
1344 * - 1 = update at SB row level in tile
1345 * - 2 = update at tile level
1346 * - 3 = turn off
1348 AV1E_SET_DV_COST_UPD_FREQ = 142,
1350 /*!\brief Codec control to set the path for partition stats read and write.
1351 * const char * parameter.
1353 AV1E_SET_PARTITION_INFO_PATH = 143,
1355 /*!\brief Codec control to use an external partition model
1356 * A set of callback functions is passed through this control
1357 * to let the encoder encode with given partitions.
1359 AV1E_SET_EXTERNAL_PARTITION = 144,
1361 /*!\brief Codec control function to turn on / off directional intra mode
1362 * usage, int parameter
1364 * - 0 = disable
1365 * - 1 = enable (default)
1367 AV1E_SET_ENABLE_DIRECTIONAL_INTRA = 145,
1369 /*!\brief Control to turn on / off transform size search.
1371 * - 0 = disable, transforms always have the largest possible size
1372 * - 1 = enable, search for the best transform size for each block (default)
1374 AV1E_SET_ENABLE_TX_SIZE_SEARCH = 146,
1376 /*!\brief Codec control function to set reference frame compound prediction.
1377 * aom_svc_ref_frame_comp_pred_t* parameter
1379 AV1E_SET_SVC_REF_FRAME_COMP_PRED = 147,
1381 /*!\brief Set --deltaq-mode strength.
1383 * Valid range: [0, 1000]
1385 AV1E_SET_DELTAQ_STRENGTH = 148,
1387 /*!\brief Codec control to control loop filter
1389 * - 0 = Loop filter is disabled for all frames
1390 * - 1 = Loop filter is enabled for all frames
1391 * - 2 = Loop filter is disabled for non-reference frames
1392 * - 3 = Loop filter is disabled for the frames with low motion
1394 AV1E_SET_LOOPFILTER_CONTROL = 149,
1396 /*!\brief Codec control function to get the loopfilter chosen by the encoder,
1397 * int* parameter
1399 AOME_GET_LOOPFILTER_LEVEL = 150,
1401 /*!\brief Codec control to automatically turn off several intra coding tools
1402 * - 0 = do not use the feature
1403 * - 1 = enable the automatic decision to turn off several intra tools
1405 AV1E_SET_AUTO_INTRA_TOOLS_OFF = 151,
1407 /*!\brief Codec control function to set flag for rate control used by external
1408 * encoders.
1409 * - 1 = Enable rate control for external encoders. This will disable content
1410 * dependency in rate control and cyclic refresh.
1411 * - 0 = Default. Disable rate control for external encoders.
1413 AV1E_SET_RTC_EXTERNAL_RC = 152,
1415 /*!\brief Codec control function to enable frame parallel multi-threading
1416 * of the encoder, unsigned int parameter
1418 * - 0 = disable (default)
1419 * - 1 = enable
1421 AV1E_SET_FP_MT = 153,
1423 /*!\brief Codec control to enable actual frame parallel encode or
1424 * simulation of frame parallel encode in FPMT unit test, unsigned int
1425 * parameter
1427 * - 0 = simulate frame parallel encode
1428 * - 1 = actual frame parallel encode (default)
1430 * \note This is only used in FPMT unit test.
1432 AV1E_SET_FP_MT_UNIT_TEST = 154,
1434 // Any new encoder control IDs should be added above.
1435 // Maximum allowed encoder control ID is 229.
1436 // No encoder control ID should be added below.
1439 /*!\brief aom 1-D scaling mode
1441 * This set of constants define 1-D aom scaling modes
1443 typedef enum aom_scaling_mode_1d {
1444 AOME_NORMAL = 0,
1445 AOME_FOURFIVE = 1,
1446 AOME_THREEFIVE = 2,
1447 AOME_THREEFOUR = 3,
1448 AOME_ONEFOUR = 4,
1449 AOME_ONEEIGHT = 5,
1450 AOME_ONETWO = 6
1451 } AOM_SCALING_MODE;
1453 /*!\brief Max number of segments
1455 * This is the limit of number of segments allowed within a frame.
1457 * Currently same as "MAX_SEGMENTS" in AV1, the maximum that AV1 supports.
1460 #define AOM_MAX_SEGMENTS 8
1462 /*!\brief aom region of interest map
1464 * These defines the data structures for the region of interest map
1466 * TODO(yaowu): create a unit test for ROI map related APIs
1469 typedef struct aom_roi_map {
1470 /*! An id between 0 and 7 for each 8x8 region within a frame. */
1471 unsigned char *roi_map;
1472 unsigned int rows; /**< Number of rows. */
1473 unsigned int cols; /**< Number of columns. */
1474 int delta_q[AOM_MAX_SEGMENTS]; /**< Quantizer deltas. */
1475 int delta_lf[AOM_MAX_SEGMENTS]; /**< Loop filter deltas. */
1476 /*! Static breakout threshold for each segment. */
1477 unsigned int static_threshold[AOM_MAX_SEGMENTS];
1478 } aom_roi_map_t;
1480 /*!\brief aom active region map
1482 * These defines the data structures for active region map
1486 typedef struct aom_active_map {
1487 /*!\brief specify an on (1) or off (0) each 16x16 region within a frame */
1488 unsigned char *active_map;
1489 unsigned int rows; /**< number of rows */
1490 unsigned int cols; /**< number of cols */
1491 } aom_active_map_t;
1493 /*!\brief aom image scaling mode
1495 * This defines the data structure for image scaling mode
1498 typedef struct aom_scaling_mode {
1499 AOM_SCALING_MODE h_scaling_mode; /**< horizontal scaling mode */
1500 AOM_SCALING_MODE v_scaling_mode; /**< vertical scaling mode */
1501 } aom_scaling_mode_t;
1503 /*!brief AV1 encoder content type */
1504 typedef enum {
1505 AOM_CONTENT_DEFAULT,
1506 AOM_CONTENT_SCREEN,
1507 AOM_CONTENT_FILM,
1508 AOM_CONTENT_INVALID
1509 } aom_tune_content;
1511 /*!brief AV1 encoder timing info type signaling */
1512 typedef enum {
1513 AOM_TIMING_UNSPECIFIED,
1514 AOM_TIMING_EQUAL,
1515 AOM_TIMING_DEC_MODEL
1516 } aom_timing_info_type_t;
1518 /*!\brief Model tuning parameters
1520 * Changes the encoder to tune for certain types of input material.
1523 typedef enum {
1524 AOM_TUNE_PSNR = 0,
1525 AOM_TUNE_SSIM = 1,
1526 /* NOTE: enums 2 and 3 unused */
1527 AOM_TUNE_VMAF_WITH_PREPROCESSING = 4,
1528 AOM_TUNE_VMAF_WITHOUT_PREPROCESSING = 5,
1529 AOM_TUNE_VMAF_MAX_GAIN = 6,
1530 AOM_TUNE_VMAF_NEG_MAX_GAIN = 7,
1531 AOM_TUNE_BUTTERAUGLI = 8,
1532 } aom_tune_metric;
1534 #define AOM_MAX_LAYERS 32 /**< Max number of layers */
1535 #define AOM_MAX_SS_LAYERS 4 /**< Max number of spatial layers */
1536 #define AOM_MAX_TS_LAYERS 8 /**< Max number of temporal layers */
1538 /*!brief Struct for spatial and temporal layer ID */
1539 typedef struct aom_svc_layer_id {
1540 int spatial_layer_id; /**< Spatial layer ID */
1541 int temporal_layer_id; /**< Temporal layer ID */
1542 } aom_svc_layer_id_t;
1544 /*!brief Parameter type for SVC */
1545 typedef struct aom_svc_params {
1546 int number_spatial_layers; /**< Number of spatial layers */
1547 int number_temporal_layers; /**< Number of temporal layers */
1548 int max_quantizers[AOM_MAX_LAYERS]; /**< Max Q for each layer */
1549 int min_quantizers[AOM_MAX_LAYERS]; /**< Min Q for each layer */
1550 int scaling_factor_num[AOM_MAX_SS_LAYERS]; /**< Scaling factor-numerator */
1551 int scaling_factor_den[AOM_MAX_SS_LAYERS]; /**< Scaling factor-denominator */
1552 /*! Target bitrate for each layer */
1553 int layer_target_bitrate[AOM_MAX_LAYERS];
1554 /*! Frame rate factor for each temporal layer */
1555 int framerate_factor[AOM_MAX_TS_LAYERS];
1556 } aom_svc_params_t;
1558 /*!brief Parameters for setting ref frame config */
1559 typedef struct aom_svc_ref_frame_config {
1560 // 7 references: LAST_FRAME (0), LAST2_FRAME(1), LAST3_FRAME(2),
1561 // GOLDEN_FRAME(3), BWDREF_FRAME(4), ALTREF2_FRAME(5), ALTREF_FRAME(6).
1562 int reference[7]; /**< Reference flag for each of the 7 references. */
1563 /*! Buffer slot index for each of 7 references. */
1564 int ref_idx[7];
1565 int refresh[8]; /**< Refresh flag for each of the 8 slots. */
1566 } aom_svc_ref_frame_config_t;
1568 /*!brief Parameters for setting ref frame compound prediction */
1569 typedef struct aom_svc_ref_frame_comp_pred {
1570 // Use compound prediction for the ref_frame pairs GOLDEN_LAST (0),
1571 // LAST2_LAST (1), and ALTREF_LAST (2).
1572 int use_comp_pred[3]; /**<Compound reference flag. */
1573 } aom_svc_ref_frame_comp_pred_t;
1575 /*!\cond */
1576 /*!\brief Encoder control function parameter type
1578 * Defines the data types that AOME/AV1E control functions take.
1580 * \note Additional common controls are defined in aom.h.
1582 * \note For each control ID "X", a macro-define of
1583 * AOM_CTRL_X is provided. It is used at compile time to determine
1584 * if the control ID is supported by the libaom library available,
1585 * when the libaom version cannot be controlled.
1587 AOM_CTRL_USE_TYPE(AOME_USE_REFERENCE, int)
1588 #define AOM_CTRL_AOME_USE_REFERENCE
1590 AOM_CTRL_USE_TYPE(AOME_SET_ROI_MAP, aom_roi_map_t *)
1591 #define AOM_CTRL_AOME_SET_ROI_MAP
1593 AOM_CTRL_USE_TYPE(AOME_SET_ACTIVEMAP, aom_active_map_t *)
1594 #define AOM_CTRL_AOME_SET_ACTIVEMAP
1596 AOM_CTRL_USE_TYPE(AOME_SET_SCALEMODE, aom_scaling_mode_t *)
1597 #define AOM_CTRL_AOME_SET_SCALEMODE
1599 AOM_CTRL_USE_TYPE(AOME_SET_SPATIAL_LAYER_ID, unsigned int)
1600 #define AOM_CTRL_AOME_SET_SPATIAL_LAYER_ID
1602 AOM_CTRL_USE_TYPE(AOME_SET_CPUUSED, int)
1603 #define AOM_CTRL_AOME_SET_CPUUSED
1605 AOM_CTRL_USE_TYPE(AOME_SET_ENABLEAUTOALTREF, unsigned int)
1606 #define AOM_CTRL_AOME_SET_ENABLEAUTOALTREF
1608 AOM_CTRL_USE_TYPE(AOME_SET_ENABLEAUTOBWDREF, unsigned int)
1609 #define AOM_CTRL_AOME_SET_ENABLEAUTOBWDREF
1611 AOM_CTRL_USE_TYPE(AOME_SET_SHARPNESS, unsigned int)
1612 #define AOM_CTRL_AOME_SET_SHARPNESS
1614 AOM_CTRL_USE_TYPE(AOME_SET_STATIC_THRESHOLD, unsigned int)
1615 #define AOM_CTRL_AOME_SET_STATIC_THRESHOLD
1617 AOM_CTRL_USE_TYPE(AOME_SET_ARNR_MAXFRAMES, unsigned int)
1618 #define AOM_CTRL_AOME_SET_ARNR_MAXFRAMES
1620 AOM_CTRL_USE_TYPE(AOME_SET_ARNR_STRENGTH, unsigned int)
1621 #define AOM_CTRL_AOME_SET_ARNR_STRENGTH
1623 AOM_CTRL_USE_TYPE(AOME_SET_TUNING, int) /* aom_tune_metric */
1624 #define AOM_CTRL_AOME_SET_TUNING
1626 AOM_CTRL_USE_TYPE(AOME_SET_CQ_LEVEL, unsigned int)
1627 #define AOM_CTRL_AOME_SET_CQ_LEVEL
1629 AOM_CTRL_USE_TYPE(AV1E_SET_ROW_MT, unsigned int)
1630 #define AOM_CTRL_AV1E_SET_ROW_MT
1632 AOM_CTRL_USE_TYPE(AV1E_SET_TILE_COLUMNS, unsigned int)
1633 #define AOM_CTRL_AV1E_SET_TILE_COLUMNS
1635 AOM_CTRL_USE_TYPE(AV1E_SET_TILE_ROWS, unsigned int)
1636 #define AOM_CTRL_AV1E_SET_TILE_ROWS
1638 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_TPL_MODEL, unsigned int)
1639 #define AOM_CTRL_AV1E_SET_ENABLE_TPL_MODEL
1641 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_KEYFRAME_FILTERING, unsigned int)
1642 #define AOM_CTRL_AV1E_SET_ENABLE_KEYFRAME_FILTERING
1644 AOM_CTRL_USE_TYPE(AOME_GET_LAST_QUANTIZER, int *)
1645 #define AOM_CTRL_AOME_GET_LAST_QUANTIZER
1647 AOM_CTRL_USE_TYPE(AOME_GET_LAST_QUANTIZER_64, int *)
1648 #define AOM_CTRL_AOME_GET_LAST_QUANTIZER_64
1650 AOM_CTRL_USE_TYPE(AOME_SET_MAX_INTRA_BITRATE_PCT, unsigned int)
1651 #define AOM_CTRL_AOME_SET_MAX_INTRA_BITRATE_PCT
1653 AOM_CTRL_USE_TYPE(AOME_SET_MAX_INTER_BITRATE_PCT, unsigned int)
1654 #define AOM_CTRL_AOME_SET_MAX_INTER_BITRATE_PCT
1656 AOM_CTRL_USE_TYPE(AOME_SET_NUMBER_SPATIAL_LAYERS, int)
1657 #define AOME_CTRL_AOME_SET_NUMBER_SPATIAL_LAYERS
1659 AOM_CTRL_USE_TYPE(AV1E_SET_GF_CBR_BOOST_PCT, unsigned int)
1660 #define AOM_CTRL_AV1E_SET_GF_CBR_BOOST_PCT
1662 AOM_CTRL_USE_TYPE(AV1E_SET_LOSSLESS, unsigned int)
1663 #define AOM_CTRL_AV1E_SET_LOSSLESS
1665 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_CDEF, unsigned int)
1666 #define AOM_CTRL_AV1E_SET_ENABLE_CDEF
1668 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_RESTORATION, unsigned int)
1669 #define AOM_CTRL_AV1E_SET_ENABLE_RESTORATION
1671 AOM_CTRL_USE_TYPE(AV1E_SET_FORCE_VIDEO_MODE, unsigned int)
1672 #define AOM_CTRL_AV1E_SET_FORCE_VIDEO_MODE
1674 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_OBMC, unsigned int)
1675 #define AOM_CTRL_AV1E_SET_ENABLE_OBMC
1677 AOM_CTRL_USE_TYPE(AV1E_SET_DISABLE_TRELLIS_QUANT, unsigned int)
1678 #define AOM_CTRL_AV1E_SET_DISABLE_TRELLIS_QUANT
1680 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_QM, unsigned int)
1681 #define AOM_CTRL_AV1E_SET_ENABLE_QM
1683 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_DIST_8X8, unsigned int)
1684 #define AOM_CTRL_AV1E_SET_ENABLE_DIST_8X8
1686 AOM_CTRL_USE_TYPE(AV1E_SET_QM_MIN, unsigned int)
1687 #define AOM_CTRL_AV1E_SET_QM_MIN
1689 AOM_CTRL_USE_TYPE(AV1E_SET_QM_MAX, unsigned int)
1690 #define AOM_CTRL_AV1E_SET_QM_MAX
1692 AOM_CTRL_USE_TYPE(AV1E_SET_QM_Y, unsigned int)
1693 #define AOM_CTRL_AV1E_SET_QM_Y
1695 AOM_CTRL_USE_TYPE(AV1E_SET_QM_U, unsigned int)
1696 #define AOM_CTRL_AV1E_SET_QM_U
1698 AOM_CTRL_USE_TYPE(AV1E_SET_QM_V, unsigned int)
1699 #define AOM_CTRL_AV1E_SET_QM_V
1701 AOM_CTRL_USE_TYPE(AV1E_SET_NUM_TG, unsigned int)
1702 #define AOM_CTRL_AV1E_SET_NUM_TG
1704 AOM_CTRL_USE_TYPE(AV1E_SET_MTU, unsigned int)
1705 #define AOM_CTRL_AV1E_SET_MTU
1707 AOM_CTRL_USE_TYPE(AV1E_SET_TIMING_INFO_TYPE, int) /* aom_timing_info_type_t */
1708 #define AOM_CTRL_AV1E_SET_TIMING_INFO_TYPE
1710 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_RECT_PARTITIONS, int)
1711 #define AOM_CTRL_AV1E_SET_ENABLE_RECT_PARTITIONS
1713 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_AB_PARTITIONS, int)
1714 #define AOM_CTRL_AV1E_SET_ENABLE_AB_PARTITIONS
1716 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_1TO4_PARTITIONS, int)
1717 #define AOM_CTRL_AV1E_SET_ENABLE_1TO4_PARTITIONS
1719 AOM_CTRL_USE_TYPE(AV1E_SET_MIN_PARTITION_SIZE, int)
1720 #define AOM_CTRL_AV1E_SET_MIN_PARTITION_SIZE
1722 AOM_CTRL_USE_TYPE(AV1E_SET_MAX_PARTITION_SIZE, int)
1723 #define AOM_CTRL_AV1E_SET_MAX_PARTITION_SIZE
1725 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_INTRA_EDGE_FILTER, int)
1726 #define AOM_CTRL_AV1E_SET_ENABLE_INTRA_EDGE_FILTER
1728 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_ORDER_HINT, int)
1729 #define AOM_CTRL_AV1E_SET_ENABLE_ORDER_HINT
1731 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_TX64, int)
1732 #define AOM_CTRL_AV1E_SET_ENABLE_TX64
1734 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_FLIP_IDTX, int)
1735 #define AOM_CTRL_AV1E_SET_ENABLE_FLIP_IDTX
1737 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_RECT_TX, int)
1738 #define AOM_CTRL_AV1E_SET_ENABLE_RECT_TX
1740 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_DIST_WTD_COMP, int)
1741 #define AOM_CTRL_AV1E_SET_ENABLE_DIST_WTD_COMP
1743 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_REF_FRAME_MVS, int)
1744 #define AOM_CTRL_AV1E_SET_ENABLE_REF_FRAME_MVS
1746 AOM_CTRL_USE_TYPE(AV1E_SET_ALLOW_REF_FRAME_MVS, int)
1747 #define AOM_CTRL_AV1E_SET_ALLOW_REF_FRAME_MVS
1749 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_DUAL_FILTER, int)
1750 #define AOM_CTRL_AV1E_SET_ENABLE_DUAL_FILTER
1752 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_CHROMA_DELTAQ, int)
1753 #define AOM_CTRL_AV1E_SET_ENABLE_CHROMA_DELTAQ
1755 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_MASKED_COMP, int)
1756 #define AOM_CTRL_AV1E_SET_ENABLE_MASKED_COMP
1758 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_ONESIDED_COMP, int)
1759 #define AOM_CTRL_AV1E_SET_ENABLE_ONESIDED_COMP
1761 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_INTERINTRA_COMP, int)
1762 #define AOM_CTRL_AV1E_SET_ENABLE_INTERINTRA_COMP
1764 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_SMOOTH_INTERINTRA, int)
1765 #define AOM_CTRL_AV1E_SET_ENABLE_SMOOTH_INTERINTRA
1767 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_DIFF_WTD_COMP, int)
1768 #define AOM_CTRL_AV1E_SET_ENABLE_DIFF_WTD_COMP
1770 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_INTERINTER_WEDGE, int)
1771 #define AOM_CTRL_AV1E_SET_ENABLE_INTERINTER_WEDGE
1773 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_INTERINTRA_WEDGE, int)
1774 #define AOM_CTRL_AV1E_SET_ENABLE_INTERINTRA_WEDGE
1776 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_GLOBAL_MOTION, int)
1777 #define AOM_CTRL_AV1E_SET_ENABLE_GLOBAL_MOTION
1779 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_WARPED_MOTION, int)
1780 #define AOM_CTRL_AV1E_SET_ENABLE_WARPED_MOTION
1782 AOM_CTRL_USE_TYPE(AV1E_SET_ALLOW_WARPED_MOTION, int)
1783 #define AOM_CTRL_AV1E_SET_ALLOW_WARPED_MOTION
1785 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_FILTER_INTRA, int)
1786 #define AOM_CTRL_AV1E_SET_ENABLE_FILTER_INTRA
1788 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_SMOOTH_INTRA, int)
1789 #define AOM_CTRL_AV1E_SET_ENABLE_SMOOTH_INTRA
1791 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_PAETH_INTRA, int)
1792 #define AOM_CTRL_AV1E_SET_ENABLE_PAETH_INTRA
1794 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_CFL_INTRA, int)
1795 #define AOM_CTRL_AV1E_SET_ENABLE_CFL_INTRA
1797 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_DIAGONAL_INTRA, int)
1798 #define AOM_CTRL_AV1E_SET_ENABLE_DIAGONAL_INTRA
1800 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_SUPERRES, int)
1801 #define AOM_CTRL_AV1E_SET_ENABLE_SUPERRES
1803 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_OVERLAY, int)
1804 #define AOM_CTRL_AV1E_SET_ENABLE_OVERLAY
1806 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_PALETTE, int)
1807 #define AOM_CTRL_AV1E_SET_ENABLE_PALETTE
1809 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_INTRABC, int)
1810 #define AOM_CTRL_AV1E_SET_ENABLE_INTRABC
1812 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_ANGLE_DELTA, int)
1813 #define AOM_CTRL_AV1E_SET_ENABLE_ANGLE_DELTA
1815 AOM_CTRL_USE_TYPE(AV1E_SET_FRAME_PARALLEL_DECODING, unsigned int)
1816 #define AOM_CTRL_AV1E_SET_FRAME_PARALLEL_DECODING
1818 AOM_CTRL_USE_TYPE(AV1E_SET_ERROR_RESILIENT_MODE, int)
1819 #define AOM_CTRL_AV1E_SET_ERROR_RESILIENT_MODE
1821 AOM_CTRL_USE_TYPE(AV1E_SET_S_FRAME_MODE, int)
1822 #define AOM_CTRL_AV1E_SET_S_FRAME_MODE
1824 AOM_CTRL_USE_TYPE(AV1E_SET_AQ_MODE, unsigned int)
1825 #define AOM_CTRL_AV1E_SET_AQ_MODE
1827 AOM_CTRL_USE_TYPE(AV1E_SET_DELTAQ_MODE, unsigned int)
1828 #define AOM_CTRL_AV1E_SET_DELTAQ_MODE
1830 AOM_CTRL_USE_TYPE(AV1E_SET_DELTAQ_STRENGTH, unsigned int)
1831 #define AOM_CTRL_AV1E_SET_DELTAQ_STRENGTH
1833 AOM_CTRL_USE_TYPE(AV1E_SET_DELTALF_MODE, unsigned int)
1834 #define AOM_CTRL_AV1E_SET_DELTALF_MODE
1836 AOM_CTRL_USE_TYPE(AV1E_SET_FRAME_PERIODIC_BOOST, unsigned int)
1837 #define AOM_CTRL_AV1E_SET_FRAME_PERIODIC_BOOST
1839 AOM_CTRL_USE_TYPE(AV1E_SET_NOISE_SENSITIVITY, unsigned int)
1840 #define AOM_CTRL_AV1E_SET_NOISE_SENSITIVITY
1842 AOM_CTRL_USE_TYPE(AV1E_SET_TUNE_CONTENT, int) /* aom_tune_content */
1843 #define AOM_CTRL_AV1E_SET_TUNE_CONTENT
1845 AOM_CTRL_USE_TYPE(AV1E_SET_COLOR_PRIMARIES, int)
1846 #define AOM_CTRL_AV1E_SET_COLOR_PRIMARIES
1848 AOM_CTRL_USE_TYPE(AV1E_SET_TRANSFER_CHARACTERISTICS, int)
1849 #define AOM_CTRL_AV1E_SET_TRANSFER_CHARACTERISTICS
1851 AOM_CTRL_USE_TYPE(AV1E_SET_MATRIX_COEFFICIENTS, int)
1852 #define AOM_CTRL_AV1E_SET_MATRIX_COEFFICIENTS
1854 AOM_CTRL_USE_TYPE(AV1E_SET_CHROMA_SAMPLE_POSITION, int)
1855 #define AOM_CTRL_AV1E_SET_CHROMA_SAMPLE_POSITION
1857 AOM_CTRL_USE_TYPE(AV1E_SET_MIN_GF_INTERVAL, unsigned int)
1858 #define AOM_CTRL_AV1E_SET_MIN_GF_INTERVAL
1860 AOM_CTRL_USE_TYPE(AV1E_SET_MAX_GF_INTERVAL, unsigned int)
1861 #define AOM_CTRL_AV1E_SET_MAX_GF_INTERVAL
1863 AOM_CTRL_USE_TYPE(AV1E_GET_ACTIVEMAP, aom_active_map_t *)
1864 #define AOM_CTRL_AV1E_GET_ACTIVEMAP
1866 AOM_CTRL_USE_TYPE(AV1E_SET_COLOR_RANGE, int)
1867 #define AOM_CTRL_AV1E_SET_COLOR_RANGE
1869 #define AOM_CTRL_AV1E_SET_RENDER_SIZE
1870 AOM_CTRL_USE_TYPE(AV1E_SET_RENDER_SIZE, int *)
1872 AOM_CTRL_USE_TYPE(AV1E_SET_SUPERBLOCK_SIZE, unsigned int)
1873 #define AOM_CTRL_AV1E_SET_SUPERBLOCK_SIZE
1875 AOM_CTRL_USE_TYPE(AV1E_GET_SEQ_LEVEL_IDX, int *)
1876 #define AOM_CTRL_AV1E_GET_SEQ_LEVEL_IDX
1878 AOM_CTRL_USE_TYPE(AV1E_GET_BASELINE_GF_INTERVAL, int *)
1879 #define AOM_CTRL_AV1E_GET_BASELINE_GF_INTERVAL
1881 AOM_CTRL_USE_TYPE(AV1E_SET_SINGLE_TILE_DECODING, unsigned int)
1882 #define AOM_CTRL_AV1E_SET_SINGLE_TILE_DECODING
1884 AOM_CTRL_USE_TYPE(AV1E_ENABLE_MOTION_VECTOR_UNIT_TEST, unsigned int)
1885 #define AOM_CTRL_AV1E_ENABLE_MOTION_VECTOR_UNIT_TEST
1887 AOM_CTRL_USE_TYPE(AV1E_ENABLE_EXT_TILE_DEBUG, unsigned int)
1888 #define AOM_CTRL_AV1E_ENABLE_EXT_TILE_DEBUG
1890 AOM_CTRL_USE_TYPE(AV1E_SET_VMAF_MODEL_PATH, const char *)
1891 #define AOM_CTRL_AV1E_SET_VMAF_MODEL_PATH
1893 AOM_CTRL_USE_TYPE(AV1E_SET_FILM_GRAIN_TEST_VECTOR, int)
1894 #define AOM_CTRL_AV1E_SET_FILM_GRAIN_TEST_VECTOR
1896 AOM_CTRL_USE_TYPE(AV1E_SET_FILM_GRAIN_TABLE, const char *)
1897 #define AOM_CTRL_AV1E_SET_FILM_GRAIN_TABLE
1899 AOM_CTRL_USE_TYPE(AV1E_SET_CDF_UPDATE_MODE, unsigned int)
1900 #define AOM_CTRL_AV1E_SET_CDF_UPDATE_MODE
1902 AOM_CTRL_USE_TYPE(AV1E_SET_DENOISE_NOISE_LEVEL, int)
1903 #define AOM_CTRL_AV1E_SET_DENOISE_NOISE_LEVEL
1905 AOM_CTRL_USE_TYPE(AV1E_SET_DENOISE_BLOCK_SIZE, unsigned int)
1906 #define AOM_CTRL_AV1E_SET_DENOISE_BLOCK_SIZE
1908 AOM_CTRL_USE_TYPE(AV1E_SET_CHROMA_SUBSAMPLING_X, unsigned int)
1909 #define AOM_CTRL_AV1E_SET_CHROMA_SUBSAMPLING_X
1911 AOM_CTRL_USE_TYPE(AV1E_SET_CHROMA_SUBSAMPLING_Y, unsigned int)
1912 #define AOM_CTRL_AV1E_SET_CHROMA_SUBSAMPLING_Y
1914 AOM_CTRL_USE_TYPE(AV1E_SET_REDUCED_TX_TYPE_SET, int)
1915 #define AOM_CTRL_AV1E_SET_REDUCED_TX_TYPE_SET
1917 AOM_CTRL_USE_TYPE(AV1E_SET_INTRA_DCT_ONLY, int)
1918 #define AOM_CTRL_AV1E_SET_INTRA_DCT_ONLY
1920 AOM_CTRL_USE_TYPE(AV1E_SET_INTER_DCT_ONLY, int)
1921 #define AOM_CTRL_AV1E_SET_INTER_DCT_ONLY
1923 AOM_CTRL_USE_TYPE(AV1E_SET_INTRA_DEFAULT_TX_ONLY, int)
1924 #define AOM_CTRL_AV1E_SET_INTRA_DEFAULT_TX_ONLY
1926 AOM_CTRL_USE_TYPE(AV1E_SET_QUANT_B_ADAPT, int)
1927 #define AOM_CTRL_AV1E_SET_QUANT_B_ADAPT
1929 AOM_CTRL_USE_TYPE(AV1E_SET_GF_MIN_PYRAMID_HEIGHT, unsigned int)
1930 #define AOM_CTRL_AV1E_SET_GF_MIN_PYRAMID_HEIGHT
1932 AOM_CTRL_USE_TYPE(AV1E_SET_GF_MAX_PYRAMID_HEIGHT, unsigned int)
1933 #define AOM_CTRL_AV1E_SET_GF_MAX_PYRAMID_HEIGHT
1935 AOM_CTRL_USE_TYPE(AV1E_SET_MAX_REFERENCE_FRAMES, int)
1936 #define AOM_CTRL_AV1E_SET_MAX_REFERENCE_FRAMES
1938 AOM_CTRL_USE_TYPE(AV1E_SET_REDUCED_REFERENCE_SET, int)
1939 #define AOM_CTRL_AV1E_SET_REDUCED_REFERENCE_SET
1941 AOM_CTRL_USE_TYPE(AV1E_SET_COEFF_COST_UPD_FREQ, unsigned int)
1942 #define AOM_CTRL_AV1E_SET_COEFF_COST_UPD_FREQ
1944 AOM_CTRL_USE_TYPE(AV1E_SET_MODE_COST_UPD_FREQ, unsigned int)
1945 #define AOM_CTRL_AV1E_SET_MODE_COST_UPD_FREQ
1947 AOM_CTRL_USE_TYPE(AV1E_SET_MV_COST_UPD_FREQ, unsigned int)
1948 #define AOM_CTRL_AV1E_SET_MV_COST_UPD_FREQ
1950 AOM_CTRL_USE_TYPE(AV1E_SET_TARGET_SEQ_LEVEL_IDX, int)
1951 #define AOM_CTRL_AV1E_SET_TARGET_SEQ_LEVEL_IDX
1953 AOM_CTRL_USE_TYPE(AV1E_SET_TIER_MASK, unsigned int)
1954 #define AOM_CTRL_AV1E_SET_TIER_MASK
1956 AOM_CTRL_USE_TYPE(AV1E_SET_MIN_CR, unsigned int)
1957 #define AOM_CTRL_AV1E_SET_MIN_CR
1959 AOM_CTRL_USE_TYPE(AV1E_SET_SVC_LAYER_ID, aom_svc_layer_id_t *)
1960 #define AOME_CTRL_AV1E_SET_SVC_LAYER_ID
1962 AOM_CTRL_USE_TYPE(AV1E_SET_SVC_PARAMS, aom_svc_params_t *)
1963 #define AOME_CTRL_AV1E_SET_SVC_PARAMS
1965 AOM_CTRL_USE_TYPE(AV1E_SET_SVC_REF_FRAME_CONFIG, aom_svc_ref_frame_config_t *)
1966 #define AOME_CTRL_AV1E_SET_SVC_REF_FRAME_CONFIG
1968 AOM_CTRL_USE_TYPE(AV1E_ENABLE_SB_MULTIPASS_UNIT_TEST, unsigned int)
1969 #define AOM_CTRL_AV1E_ENABLE_SB_MULTIPASS_UNIT_TEST
1971 AOM_CTRL_USE_TYPE(AV1E_SET_VBR_CORPUS_COMPLEXITY_LAP, unsigned int)
1972 #define AOM_CTRL_AV1E_SET_VBR_CORPUS_COMPLEXITY_LAP
1974 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_DNL_DENOISING, int)
1975 #define AOM_CTRL_AV1E_SET_ENABLE_DNL_DENOISING
1977 AOM_CTRL_USE_TYPE(AV1E_SET_DV_COST_UPD_FREQ, unsigned int)
1978 #define AOM_CTRL_AV1E_SET_DV_COST_UPD_FREQ
1980 AOM_CTRL_USE_TYPE(AV1E_SET_PARTITION_INFO_PATH, const char *)
1981 #define AOM_CTRL_AV1E_SET_PARTITION_INFO_PATH
1983 AOM_CTRL_USE_TYPE(AV1E_SET_EXTERNAL_PARTITION, aom_ext_part_funcs_t *)
1984 #define AOM_CTRL_AV1E_SET_EXTERNAL_PARTITION
1986 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_DIRECTIONAL_INTRA, int)
1987 #define AOM_CTRL_AV1E_SET_ENABLE_DIRECTIONAL_INTRA
1989 AOM_CTRL_USE_TYPE(AV1E_SET_ENABLE_TX_SIZE_SEARCH, int)
1990 #define AOM_CTRL_AV1E_SET_ENABLE_TX_SIZE_SEARCH
1992 AOM_CTRL_USE_TYPE(AV1E_SET_SVC_REF_FRAME_COMP_PRED,
1993 aom_svc_ref_frame_comp_pred_t *)
1994 #define AOME_CTRL_AV1E_SET_SVC_REF_FRAME_COMP_PRED
1996 AOM_CTRL_USE_TYPE(AV1E_SET_LOOPFILTER_CONTROL, int)
1997 #define AOM_CTRL_AV1E_SET_LOOPFILTER_CONTROL
1999 AOM_CTRL_USE_TYPE(AOME_GET_LOOPFILTER_LEVEL, int *)
2000 #define AOM_CTRL_AOME_GET_LOOPFILTER_LEVEL
2002 AOM_CTRL_USE_TYPE(AV1E_SET_AUTO_INTRA_TOOLS_OFF, unsigned int)
2003 #define AOM_CTRL_AV1E_SET_AUTO_INTRA_TOOLS_OFF
2005 AOM_CTRL_USE_TYPE(AV1E_SET_RTC_EXTERNAL_RC, int)
2006 #define AOM_CTRL_AV1E_SET_RTC_EXTERNAL_RC
2008 AOM_CTRL_USE_TYPE(AV1E_SET_FP_MT, unsigned int)
2009 #define AOM_CTRL_AV1E_SET_FP_MT
2011 AOM_CTRL_USE_TYPE(AV1E_SET_FP_MT_UNIT_TEST, unsigned int)
2012 #define AOM_CTRL_AV1E_SET_FP_MT_UNIT_TEST
2014 /*!\endcond */
2015 /*! @} - end defgroup aom_encoder */
2016 #ifdef __cplusplus
2017 } // extern "C"
2018 #endif
2020 #endif // AOM_AOM_AOMCX_H_