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