AOMedia Codec SDK
|
Files | |
file | aomcx.h |
Provides definitions for using AOM or AV1 encoder algorithm within the aom Codec Interface. | |
Data Structures | |
struct | aom_roi_map |
aom region of interest map More... | |
struct | aom_active_map |
aom active region map More... | |
struct | aom_scaling_mode |
aom image scaling mode More... | |
Macros | |
#define | AOM_EFLAG_NO_REF_LAST (1 << 16) |
Don't reference the last frame. More... | |
#define | AOM_EFLAG_NO_REF_LAST2 (1 << 17) |
Don't reference the last2 frame. More... | |
#define | AOM_EFLAG_NO_REF_LAST3 (1 << 18) |
Don't reference the last3 frame. More... | |
#define | AOM_EFLAG_NO_REF_GF (1 << 19) |
Don't reference the golden frame. More... | |
#define | AOM_EFLAG_NO_REF_ARF (1 << 20) |
Don't reference the alternate reference frame. More... | |
#define | AOM_EFLAG_NO_REF_BWD (1 << 21) |
Don't reference the bwd reference frame. More... | |
#define | AOM_EFLAG_NO_REF_ARF2 (1 << 22) |
Don't reference the alt2 reference frame. More... | |
#define | AOM_EFLAG_NO_UPD_LAST (1 << 23) |
Don't update the last frame. More... | |
#define | AOM_EFLAG_NO_UPD_GF (1 << 24) |
Don't update the golden frame. More... | |
#define | AOM_EFLAG_NO_UPD_ARF (1 << 25) |
Don't update the alternate reference frame. More... | |
#define | AOM_EFLAG_NO_UPD_ENTROPY (1 << 26) |
Disable entropy update. More... | |
#define | AOM_EFLAG_NO_REF_FRAME_MVS (1 << 27) |
Disable ref frame mvs. More... | |
#define | AOM_EFLAG_ERROR_RESILIENT (1 << 28) |
Enable error resilient frame. More... | |
#define | AOM_EFLAG_SET_S_FRAME (1 << 29) |
Enable s frame mode. More... | |
#define | AOM_EFLAG_SET_PRIMARY_REF_NONE (1 << 30) |
Force primary_ref_frame to PRIMARY_REF_NONE. More... | |
#define | AOM_MAX_SEGMENTS 8 |
Max number of segments. More... | |
Typedefs | |
typedef enum aom_scaling_mode_1d | AOM_SCALING_MODE |
aom 1-D scaling mode More... | |
typedef struct aom_roi_map | aom_roi_map_t |
aom region of interest map More... | |
typedef struct aom_active_map | aom_active_map_t |
aom active region map More... | |
typedef struct aom_scaling_mode | aom_scaling_mode_t |
aom image scaling mode More... | |
Algorithm interface for AV1 | |
This interface provides the capability to encode raw AV1 streams. | |
aom_codec_iface_t | aom_codec_av1_cx_algo |
aom_codec_iface_t * | aom_codec_av1_cx (void) |
#define AOM_EFLAG_NO_REF_LAST (1 << 16) |
Don't reference the last frame.
When this flag is set, the encoder will not use the last frame as a predictor. When not set, the encoder will choose whether to use the last frame or not automatically.
#define AOM_EFLAG_NO_REF_LAST2 (1 << 17) |
Don't reference the last2 frame.
When this flag is set, the encoder will not use the last2 frame as a predictor. When not set, the encoder will choose whether to use the last2 frame or not automatically.
#define AOM_EFLAG_NO_REF_LAST3 (1 << 18) |
Don't reference the last3 frame.
When this flag is set, the encoder will not use the last3 frame as a predictor. When not set, the encoder will choose whether to use the last3 frame or not automatically.
#define AOM_EFLAG_NO_REF_GF (1 << 19) |
Don't reference the golden frame.
When this flag is set, the encoder will not use the golden frame as a predictor. When not set, the encoder will choose whether to use the golden frame or not automatically.
#define AOM_EFLAG_NO_REF_ARF (1 << 20) |
Don't reference the alternate reference frame.
When this flag is set, the encoder will not use the alt ref frame as a predictor. When not set, the encoder will choose whether to use the alt ref frame or not automatically.
#define AOM_EFLAG_NO_REF_BWD (1 << 21) |
Don't reference the bwd reference frame.
When this flag is set, the encoder will not use the bwd ref frame as a predictor. When not set, the encoder will choose whether to use the bwd ref frame or not automatically.
#define AOM_EFLAG_NO_REF_ARF2 (1 << 22) |
Don't reference the alt2 reference frame.
When this flag is set, the encoder will not use the alt2 ref frame as a predictor. When not set, the encoder will choose whether to use the alt2 ref frame or not automatically.
#define AOM_EFLAG_NO_UPD_LAST (1 << 23) |
Don't update the last frame.
When this flag is set, the encoder will not update the last frame with the contents of the current frame.
#define AOM_EFLAG_NO_UPD_GF (1 << 24) |
Don't update the golden frame.
When this flag is set, the encoder will not update the golden frame with the contents of the current frame.
#define AOM_EFLAG_NO_UPD_ARF (1 << 25) |
Don't update the alternate reference frame.
When this flag is set, the encoder will not update the alt ref frame with the contents of the current frame.
#define AOM_EFLAG_NO_UPD_ENTROPY (1 << 26) |
Disable entropy update.
When this flag is set, the encoder will not update its internal entropy model based on the entropy of this frame.
#define AOM_EFLAG_NO_REF_FRAME_MVS (1 << 27) |
Disable ref frame mvs.
When this flag is set, the encoder will not allow frames to be encoded using mfmv.
#define AOM_EFLAG_ERROR_RESILIENT (1 << 28) |
Enable error resilient frame.
When this flag is set, the encoder will code frames as error resilient.
#define AOM_EFLAG_SET_S_FRAME (1 << 29) |
Enable s frame mode.
When this flag is set, the encoder will code frames as an s frame.
#define AOM_EFLAG_SET_PRIMARY_REF_NONE (1 << 30) |
Force primary_ref_frame to PRIMARY_REF_NONE.
When this flag is set, the encoder will set a frame's primary_ref_frame to PRIMARY_REF_NONE
#define AOM_MAX_SEGMENTS 8 |
Max number of segments.
This is the limit of number of segments allowed within a frame.
Currently same as "MAX_SEGMENTS" in AV1, the maximum that AV1 supports.
typedef enum aom_scaling_mode_1d AOM_SCALING_MODE |
aom 1-D scaling mode
This set of constants define 1-D aom scaling modes
typedef struct aom_roi_map aom_roi_map_t |
aom region of interest map
These defines the data structures for the region of interest map
TODO(yaowu): create a unit test for ROI map related APIs
typedef struct aom_active_map aom_active_map_t |
aom active region map
These defines the data structures for active region map
typedef struct aom_scaling_mode aom_scaling_mode_t |
aom image scaling mode
This defines the data structure for image scaling mode
enum aome_enc_control_id |
AVx encoder control functions.
This set of macros define the control functions available for AVx encoder interface.
Enumerator | |
---|---|
AOME_USE_REFERENCE | Codec control function to set which reference frame encoder can use. |
AOME_SET_ROI_MAP | Codec control function to pass an ROI map to encoder. |
AOME_SET_ACTIVEMAP | Codec control function to pass an Active map to encoder. |
AOME_SET_SCALEMODE | Codec control function to set encoder scaling mode. |
AOME_SET_SPATIAL_LAYER_ID | Codec control function to set encoder spatial layer id. |
AOME_SET_CPUUSED | Codec control function to set encoder internal speed settings. Changes in this value influences, among others, the encoder's selection of motion estimation methods. Values greater than 0 will increase encoder speed at the expense of quality.
|
AOME_SET_DEVSF | Speed features for codec development. |
AOME_SET_ENABLEAUTOALTREF | Codec control function to enable automatic set and use alf frames. |
AOME_SET_SHARPNESS | Codec control function to set sharpness. |
AOME_SET_STATIC_THRESHOLD | Codec control function to set the threshold for MBs treated static. |
AOME_GET_LAST_QUANTIZER | Codec control function to get last quantizer chosen by the encoder. Return value uses internal quantizer scale defined by the codec. |
AOME_GET_LAST_QUANTIZER_64 | Codec control function to get last quantizer chosen by the encoder. Return value uses the 0..63 scale as used by the rc_*_quantizer config parameters. |
AOME_SET_ARNR_MAXFRAMES | Codec control function to set the max no of frames to create arf. |
AOME_SET_ARNR_STRENGTH | Codec control function to set the filter strength for the arf. |
AOME_SET_TUNING | Codec control function to set visual tuning. |
AOME_SET_CQ_LEVEL | Codec control function to set constrained quality level.
|
AOME_SET_MAX_INTRA_BITRATE_PCT | Codec control function to set Max data rate for Intra frames. This value controls additional clamping on the maximum size of a keyframe. It is expressed as a percentage of the average per-frame bitrate, with the special (and default) value 0 meaning unlimited, or no additional clamping beyond the codec's built-in algorithm. For example, to allocate no more than 4.5 frames worth of bitrate to a keyframe, set this to 450. |
AOME_SET_NUMBER_SPATIAL_LAYERS | Codec control function to set number of spatial layers. |
AV1E_SET_MAX_INTER_BITRATE_PCT | Codec control function to set max data rate for Inter frames. This value controls additional clamping on the maximum size of an inter frame. It is expressed as a percentage of the average per-frame bitrate, with the special (and default) value 0 meaning unlimited, or no additional clamping beyond the codec's built-in algorithm. For example, to allow no more than 4.5 frames worth of bitrate to an inter frame, set this to 450. |
AV1E_SET_GF_CBR_BOOST_PCT | Boost percentage for Golden Frame in CBR mode. This value controls the amount of boost given to Golden Frame in CBR mode. It is expressed as a percentage of the average per-frame bitrate, with the special (and default) value 0 meaning the feature is off, i.e., no golden frame boost in CBR mode and average bitrate target is used. For example, to allow 100% more bits, i.e, 2X, in a golden frame than average frame, set this to 100. |
AV1E_SET_LOSSLESS | Codec control function to set lossless encoding mode. AV1 can operate in lossless encoding mode, in which the bitstream produced will be able to decode and reconstruct a perfect copy of input source. This control function provides a mean to switch encoder into lossless coding mode(1) or normal coding mode(0) that may be lossy. 0 = lossy coding mode 1 = lossless coding mode By default, encoder operates in normal coding mode (maybe lossy). |
AV1E_SET_TILE_COLUMNS | Codec control function to set number of tile columns. In encoding and decoding, AV1 allows an input image frame be partitioned into separated vertical tile columns, which can be encoded or decoded independently. This enables easy implementation of parallel encoding and decoding. This control requests the encoder to use column tiles in encoding an input frame, with number of tile columns (in Log2 unit) as the parameter: 0 = 1 tile column 1 = 2 tile columns 2 = 4 tile columns ..... n = 2**n tile columns The requested tile columns will be capped by encoder based on image size limitation (The minimum width of a tile column is 256 pixel, the maximum is 4096). By default, the value is 0, i.e. one single column tile for entire image. |
AV1E_SET_TILE_ROWS | Codec control function to set number of tile rows. In encoding and decoding, AV1 allows an input image frame be partitioned into separated horizontal tile rows. Tile rows are encoded or decoded sequentially. Even though encoding/decoding of later tile rows depends on earlier ones, this allows the encoder to output data packets for tile rows prior to completely processing all tile rows in a frame, thereby reducing the latency in processing between input and output. The parameter for this control describes the number of tile rows, which has a valid range [0, 2]: 0 = 1 tile row 1 = 2 tile rows 2 = 4 tile rows By default, the value is 0, i.e. one single row tile for entire image. |
AV1E_SET_FRAME_PARALLEL_DECODING | Codec control function to enable frame parallel decoding feature. AV1 has a bitstream feature to reduce decoding dependency between frames by turning off backward update of probability context used in encoding and decoding. This allows staged parallel processing of more than one video frames in the decoder. This control function provides a mean to turn this feature on or off for bitstreams produced by encoder. By default, this feature is off. |
AV1E_SET_ERROR_RESILIENT_MODE | Codec control function to enable error_resilient_mode. AV1 has a bitstream feature to guarantee parseability of a frame by turning on the error_resilient_decoding mode, even though the reference buffers are unreliable or not received. By default, this feature is off. |
AV1E_SET_S_FRAME_MODE | Codec control function to enable s_frame_mode. AV1 has a bitstream feature to designate certain frames as S-frames, from where we can switch to a different stream, even though the reference buffers may not be exactly identical. By default, this feature is off. |
AV1E_SET_AQ_MODE | Codec control function to set adaptive quantization mode. AV1 has a segment based feature that allows encoder to adaptively change quantization parameter for each segment within a frame to improve the subjective quality. This control makes encoder operate in one of the several AQ_modes supported. By default, encoder operates with AQ_Mode 0(adaptive quantization off). |
AV1E_SET_FRAME_PERIODIC_BOOST | Codec control function to enable/disable periodic Q boost. One AV1 encoder speed feature is to enable quality boost by lowering frame level Q periodically. This control function provides a mean to turn on/off this feature. 0 = off 1 = on By default, the encoder is allowed to use this feature for appropriate encoding modes. |
AV1E_SET_NOISE_SENSITIVITY | Codec control function to set noise sensitivity. 0: off, 1: On(YOnly) |
AV1E_SET_TUNE_CONTENT | Codec control function to set content type.
|
AV1E_SET_CDF_UPDATE_MODE | Codec control function to set CDF update mode. 0: no update 1: update on every frame 2: selectively update |
AV1E_SET_COLOR_PRIMARIES | Codec control function to set color space info.
|
AV1E_SET_TRANSFER_CHARACTERISTICS | Codec control function to set transfer function info.
|
AV1E_SET_MATRIX_COEFFICIENTS | Codec control function to set transfer function info.
|
AV1E_SET_CHROMA_SAMPLE_POSITION | Codec control function to set chroma 4:2:0 sample position info.
|
AV1E_SET_MIN_GF_INTERVAL | Codec control function to set minimum interval between GF/ARF frames. By default the value is set as 4. |
AV1E_SET_MAX_GF_INTERVAL | Codec control function to set minimum interval between GF/ARF frames. By default the value is set as 16. |
AV1E_GET_ACTIVEMAP | Codec control function to get an Active map back from the encoder. |
AV1E_SET_COLOR_RANGE | Codec control function to set color range bit.
|
AV1E_SET_RENDER_SIZE | Codec control function to set intended rendering image size. By default, this is identical to the image size in pixels. |
AV1E_SET_TARGET_LEVEL | Codec control function to set target level. 255: off (default); 0: only keep level stats; 10: target for level 1.0; 11: target for level 1.1; ... 62: target for level 6.2 |
AV1E_GET_LEVEL | Codec control function to get bitstream level. |
AV1E_SET_SUPERBLOCK_SIZE | Codec control function to set intended superblock size. By default, the superblock size is determined separately for each frame by the encoder. Experiment: EXT_PARTITION |
AOME_SET_ENABLEAUTOBWDREF | Codec control function to enable automatic set and use bwd-pred frames. |
AV1E_SET_ENABLE_CDEF | Codec control function to encode with CDEF. CDEF is the constrained directional enhancement filter which is an in-loop filter aiming to remove coding artifacts 0 = do not apply CDEF 1 = apply CDEF By default, the encoder applies CDEF. Experiment: AOM_CDEF |
AV1E_SET_ENABLE_RESTORATION | Codec control function to encode with Loop Restoration Filter. 0 = do not apply Restoration Filter 1 = apply Restoration Filter By default, the encoder applies Restoration Filter. |
AV1E_SET_DISABLE_TRELLIS_QUANT | Codec control function to encode without trellis quantization. 0 = apply trellis quantization 1 = do not apply trellis quantization By default, the encoder applies trellis optimization on quantized coefficients. |
AV1E_SET_ENABLE_QM | Codec control function to encode with quantisation matrices. AOM can operate with default quantisation matrices dependent on quantisation level and block type. 0 = do not use quantisation matrices 1 = use quantisation matrices By default, the encoder operates without quantisation matrices. Experiment: AOM_QM |
AV1E_SET_QM_MIN | Codec control function to set the min quant matrix flatness. AOM can operate with different ranges of quantisation matrices. As quantisation levels increase, the matrices get flatter. This control sets the minimum level of flatness from which the matrices are determined. By default, the encoder sets this minimum at half the available range. Experiment: AOM_QM |
AV1E_SET_QM_MAX | Codec control function to set the max quant matrix flatness. AOM can operate with different ranges of quantisation matrices. As quantisation levels increase, the matrices get flatter. This control sets the maximum level of flatness possible. By default, the encoder sets this maximum at the top of the available range. Experiment: AOM_QM |
AV1E_SET_QM_Y | Codec control function to set the min quant matrix flatness. AOM can operate with different ranges of quantisation matrices. As quantisation levels increase, the matrices get flatter. This control sets the flatness for luma (Y). By default, the encoder sets this minimum at half the available range. Experiment: AOM_QM |
AV1E_SET_QM_U | Codec control function to set the min quant matrix flatness. AOM can operate with different ranges of quantisation matrices. As quantisation levels increase, the matrices get flatter. This control sets the flatness for chroma (U). By default, the encoder sets this minimum at half the available range. Experiment: AOM_QM |
AV1E_SET_QM_V | Codec control function to set the min quant matrix flatness. AOM can operate with different ranges of quantisation matrices. As quantisation levels increase, the matrices get flatter. This control sets the flatness for chrome (V). By default, the encoder sets this minimum at half the available range. Experiment: AOM_QM |
AV1E_SET_ENABLE_DIST_8X8 | Codec control function to encode with dist_8x8. The dist_8x8 is enabled automatically for model tuning parameters that require measuring distortion at the 8x8 level. This control also allows measuring distortion at the 8x8 level for other tuning options (e.g., PSNR), for testing purposes. 0 = do not use dist_8x8 1 = use dist_8x8 By default, the encoder does not use dist_8x8 Experiment: DIST_8X8 |
AV1E_SET_NUM_TG | Codec control function to set a maximum number of tile groups. This will set the maximum number of tile groups. This will be overridden if an MTU size is set. The default value is 1. Experiment: TILE_GROUPS |
AV1E_SET_MTU | Codec control function to set an MTU size for a tile group. This will set the maximum number of bytes in a tile group. This can be exceeded only if a single tile is larger than this amount. By default, the value is 0, in which case a fixed number of tile groups is used. Experiment: TILE_GROUPS |
AV1E_SET_TILE_DEPENDENT_ROWS | Codec control function to set dependent_horz_tiles. In encoding and decoding, AV1 allows enabling dependent horizontal tile The parameter for this control describes the value of this flag, which has a valid range [0, 1]: 0 = disable dependent horizontal tile 1 = enable dependent horizontal tile, By default, the value is 0, i.e. disable dependent horizontal tile. |
AV1E_SET_ANS_WINDOW_SIZE_LOG2 | Codec control function to set the number of symbols in an ANS data window. The number of ANS symbols (both boolean and non-booleans alphabets) in an ANS data window is set to 1 << value.
Experiment: ANS |
AV1E_SET_ENABLE_DF | Codec control function to turn on / off dual filter enabling/disabling. This will enable or disable dual filter. The default value is 1 |
AV1E_SET_ENABLE_ORDER_HINT | Codec control function to turn on / off frame order hint for a few tools: joint compound mode motion field motion vector ref frame sign bias The default value is 1. |
AV1E_SET_ENABLE_JNT_COMP | Codec control function to turn on / off joint compound mode at sequence level. This will enable or disable joint compound mode. The default value is 1. If AV1E_SET_ENABLE_ORDER_HINT is 0, then this flag is forced to 0. |
AV1E_SET_ENABLE_REF_FRAME_MVS | Codec control function to turn on / off ref frame mvs (mfmv) usage at sequence level. This will enable or disable usage of MFMV. The default value is 1. If AV1E_SET_ENABLE_ORDER_HINT is 0, then this flag is forced to 0. |
AV1E_SET_ALLOW_REF_FRAME_MVS | Codec control function to set temporal mv prediction enabling/disabling at frame level. This will enable or disable temporal mv predicton. The default value is 1. If AV1E_SET_ENABLE_REF_FRAME_MVS is 0, then this flag is forced to 0. |
AV1E_SET_ENABLE_WARPED_MOTION | Codec control function to turn on / off warped motion usage at sequence level. This will enable or disable usage of warped motion. The default value is 1. |
AV1E_SET_ALLOW_WARPED_MOTION | Codec control function to turn on / off warped motion usage at frame level. This will enable or disable usage of warped motion. The default value is 1. If AV1E_SET_ENABLE_WARPED_MOTION is 0, then this flag is forced to 0. |
AV1E_SET_ENABLE_SUPERRES | Codec control function to turn on / off frame superresolution. This will enable or disable frame superresolution. The default value is 1 If AV1E_SET_ENABLE_SUPERRES is 0, then this flag is forced to 0. |
AV1E_SET_TILE_LOOPFILTER_V | Codec control function to set loop_filter_across_tiles_v_enabled and loop_filter_across_tiles_h_enabled. In encoding and decoding, AV1 allows disabling loop filter across tile boundary The parameter for this control describes the value of this flag, which has a valid range [0, 1]: 0 = disable loop filter across tile boundary 1 = enable loop filter across tile boundary. By default, the value is 1, i.e. enable loop filter across tile boundary. Experiment: LOOPFILTERING_ACROSS_TILES_EXT |
AV1E_SET_TILE_LOOPFILTER | Codec control function to set loop_filter_across_tiles_enabled. In encoding and decoding, AV1 allows disabling loop filter across tile boundary The parameter for this control describes the value of this flag, which has a valid range [0, 1]: 0 = disable loop filter across tile boundary 1 = enable loop filter across tile boundary By default, the value is 1, i.e. enable loop filter across tile boundary. Experiment: LOOPFILTERING_ACROSS_TILES |
AV1E_SET_DELTAQ_MODE | Codec control function to set the delta q mode. AV1 has a segment based feature that allows encoder to adaptively change quantization parameter for each segment within a frame to improve the subjective quality. the delta q mode is added on top of segment based feature, and allows control per 64x64 q and lf delta.This control makes encoder operate in one of the several DELTA_Q_modes supported. By default, encoder operates with DELTAQ_Mode 0(deltaq signaling off). |
AV1E_SET_SINGLE_TILE_DECODING | Codec control function to set the single tile decoding mode to 0 or 1. 0 means that the single tile decoding is off, and 1 means that the single tile decoding is on. Experiment: EXT_TILE |
AV1E_ENABLE_MOTION_VECTOR_UNIT_TEST | Codec control function to enable the extreme motion vector unit test in AV1. Please note that this is only used in motion vector unit test. 0 : off, 1 : MAX_EXTREME_MV, 2 : MIN_EXTREME_MV |
AV1E_SET_TIMING_INFO_TYPE | Codec control function to signal picture timing info in the bitstream.
|
AV1E_SET_FILM_GRAIN_TEST_VECTOR | Codec control function to add film grain parameters (one of several preset types) info in the bitstream.
|
AV1E_SET_FILM_GRAIN_TABLE | Codec control function to set the path to the film grain parameters. |
enum aom_scaling_mode_1d |
aom 1-D scaling mode
This set of constants define 1-D aom scaling modes
enum aom_tune_content |
brief AV1 encoder content type
brief AV1 encoder timing info type signaling
enum aom_tune_metric |
Model tuning parameters.
Changes the encoder to tune for certain types of input material.