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