#ifndef VULKAN_VIDEO_CODEC_AV1STD_H_ #define VULKAN_VIDEO_CODEC_AV1STD_H_ 1 /* ** Copyright 2015-2024 The Khronos Group Inc. ** ** SPDX-License-Identifier: Apache-2.0 */ /* ** This header is generated from the Khronos Vulkan XML API Registry. ** */ #ifdef __cplusplus extern "C" { #endif // vulkan_video_codec_av1std is a preprocessor guard. Do not pass it to API calls. #define vulkan_video_codec_av1std 1 #include "vulkan_video_codecs_common.h" #define STD_VIDEO_AV1_NUM_REF_FRAMES 8 #define STD_VIDEO_AV1_REFS_PER_FRAME 7 #define STD_VIDEO_AV1_TOTAL_REFS_PER_FRAME 8 #define STD_VIDEO_AV1_MAX_TILE_COLS 64 #define STD_VIDEO_AV1_MAX_TILE_ROWS 64 #define STD_VIDEO_AV1_MAX_SEGMENTS 8 #define STD_VIDEO_AV1_SEG_LVL_MAX 8 #define STD_VIDEO_AV1_PRIMARY_REF_NONE 7 #define STD_VIDEO_AV1_SELECT_INTEGER_MV 2 #define STD_VIDEO_AV1_SELECT_SCREEN_CONTENT_TOOLS 2 #define STD_VIDEO_AV1_SKIP_MODE_FRAMES 2 #define STD_VIDEO_AV1_MAX_LOOP_FILTER_STRENGTHS 4 #define STD_VIDEO_AV1_LOOP_FILTER_ADJUSTMENTS 2 #define STD_VIDEO_AV1_MAX_CDEF_FILTER_STRENGTHS 8 #define STD_VIDEO_AV1_MAX_NUM_PLANES 3 #define STD_VIDEO_AV1_GLOBAL_MOTION_PARAMS 6 #define STD_VIDEO_AV1_MAX_NUM_Y_POINTS 14 #define STD_VIDEO_AV1_MAX_NUM_CB_POINTS 10 #define STD_VIDEO_AV1_MAX_NUM_CR_POINTS 10 #define STD_VIDEO_AV1_MAX_NUM_POS_LUMA 24 #define STD_VIDEO_AV1_MAX_NUM_POS_CHROMA 25 typedef enum StdVideoAV1Profile { STD_VIDEO_AV1_PROFILE_MAIN = 0, STD_VIDEO_AV1_PROFILE_HIGH = 1, STD_VIDEO_AV1_PROFILE_PROFESSIONAL = 2, STD_VIDEO_AV1_PROFILE_INVALID = 0x7FFFFFFF, STD_VIDEO_AV1_PROFILE_MAX_ENUM = 0x7FFFFFFF } StdVideoAV1Profile; typedef enum StdVideoAV1Level { STD_VIDEO_AV1_LEVEL_2_0 = 0, STD_VIDEO_AV1_LEVEL_2_1 = 1, STD_VIDEO_AV1_LEVEL_2_2 = 2, STD_VIDEO_AV1_LEVEL_2_3 = 3, STD_VIDEO_AV1_LEVEL_3_0 = 4, STD_VIDEO_AV1_LEVEL_3_1 = 5, STD_VIDEO_AV1_LEVEL_3_2 = 6, STD_VIDEO_AV1_LEVEL_3_3 = 7, STD_VIDEO_AV1_LEVEL_4_0 = 8, STD_VIDEO_AV1_LEVEL_4_1 = 9, STD_VIDEO_AV1_LEVEL_4_2 = 10, STD_VIDEO_AV1_LEVEL_4_3 = 11, STD_VIDEO_AV1_LEVEL_5_0 = 12, STD_VIDEO_AV1_LEVEL_5_1 = 13, STD_VIDEO_AV1_LEVEL_5_2 = 14, STD_VIDEO_AV1_LEVEL_5_3 = 15, STD_VIDEO_AV1_LEVEL_6_0 = 16, STD_VIDEO_AV1_LEVEL_6_1 = 17, STD_VIDEO_AV1_LEVEL_6_2 = 18, STD_VIDEO_AV1_LEVEL_6_3 = 19, STD_VIDEO_AV1_LEVEL_7_0 = 20, STD_VIDEO_AV1_LEVEL_7_1 = 21, STD_VIDEO_AV1_LEVEL_7_2 = 22, STD_VIDEO_AV1_LEVEL_7_3 = 23, STD_VIDEO_AV1_LEVEL_INVALID = 0x7FFFFFFF, STD_VIDEO_AV1_LEVEL_MAX_ENUM = 0x7FFFFFFF } StdVideoAV1Level; typedef enum StdVideoAV1FrameType { STD_VIDEO_AV1_FRAME_TYPE_KEY = 0, STD_VIDEO_AV1_FRAME_TYPE_INTER = 1, STD_VIDEO_AV1_FRAME_TYPE_INTRA_ONLY = 2, STD_VIDEO_AV1_FRAME_TYPE_SWITCH = 3, STD_VIDEO_AV1_FRAME_TYPE_INVALID = 0x7FFFFFFF, STD_VIDEO_AV1_FRAME_TYPE_MAX_ENUM = 0x7FFFFFFF } StdVideoAV1FrameType; typedef enum StdVideoAV1ReferenceName { STD_VIDEO_AV1_REFERENCE_NAME_INTRA_FRAME = 0, STD_VIDEO_AV1_REFERENCE_NAME_LAST_FRAME = 1, STD_VIDEO_AV1_REFERENCE_NAME_LAST2_FRAME = 2, STD_VIDEO_AV1_REFERENCE_NAME_LAST3_FRAME = 3, STD_VIDEO_AV1_REFERENCE_NAME_GOLDEN_FRAME = 4, STD_VIDEO_AV1_REFERENCE_NAME_BWDREF_FRAME = 5, STD_VIDEO_AV1_REFERENCE_NAME_ALTREF2_FRAME = 6, STD_VIDEO_AV1_REFERENCE_NAME_ALTREF_FRAME = 7, STD_VIDEO_AV1_REFERENCE_NAME_INVALID = 0x7FFFFFFF, STD_VIDEO_AV1_REFERENCE_NAME_MAX_ENUM = 0x7FFFFFFF } StdVideoAV1ReferenceName; typedef enum StdVideoAV1InterpolationFilter { STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP = 0, STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH = 1, STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP_SHARP = 2, STD_VIDEO_AV1_INTERPOLATION_FILTER_BILINEAR = 3, STD_VIDEO_AV1_INTERPOLATION_FILTER_SWITCHABLE = 4, STD_VIDEO_AV1_INTERPOLATION_FILTER_INVALID = 0x7FFFFFFF, STD_VIDEO_AV1_INTERPOLATION_FILTER_MAX_ENUM = 0x7FFFFFFF } StdVideoAV1InterpolationFilter; typedef enum StdVideoAV1TxMode { STD_VIDEO_AV1_TX_MODE_ONLY_4X4 = 0, STD_VIDEO_AV1_TX_MODE_LARGEST = 1, STD_VIDEO_AV1_TX_MODE_SELECT = 2, STD_VIDEO_AV1_TX_MODE_INVALID = 0x7FFFFFFF, STD_VIDEO_AV1_TX_MODE_MAX_ENUM = 0x7FFFFFFF } StdVideoAV1TxMode; typedef enum StdVideoAV1FrameRestorationType { STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_NONE = 0, STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_WIENER = 1, STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_SGRPROJ = 2, STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_SWITCHABLE = 3, STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_INVALID = 0x7FFFFFFF, STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_MAX_ENUM = 0x7FFFFFFF } StdVideoAV1FrameRestorationType; typedef enum StdVideoAV1ColorPrimaries { STD_VIDEO_AV1_COLOR_PRIMARIES_BT_709 = 1, STD_VIDEO_AV1_COLOR_PRIMARIES_BT_UNSPECIFIED = 2, STD_VIDEO_AV1_COLOR_PRIMARIES_BT_470_M = 4, STD_VIDEO_AV1_COLOR_PRIMARIES_BT_470_B_G = 5, STD_VIDEO_AV1_COLOR_PRIMARIES_BT_601 = 6, STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_240 = 7, STD_VIDEO_AV1_COLOR_PRIMARIES_GENERIC_FILM = 8, STD_VIDEO_AV1_COLOR_PRIMARIES_BT_2020 = 9, STD_VIDEO_AV1_COLOR_PRIMARIES_XYZ = 10, STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_431 = 11, STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_432 = 12, STD_VIDEO_AV1_COLOR_PRIMARIES_EBU_3213 = 22, STD_VIDEO_AV1_COLOR_PRIMARIES_INVALID = 0x7FFFFFFF, STD_VIDEO_AV1_COLOR_PRIMARIES_MAX_ENUM = 0x7FFFFFFF } StdVideoAV1ColorPrimaries; typedef enum StdVideoAV1TransferCharacteristics { STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_RESERVED_0 = 0, STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_709 = 1, STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_UNSPECIFIED = 2, STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_RESERVED_3 = 3, STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_470_M = 4, STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_470_B_G = 5, STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_601 = 6, STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_240 = 7, STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LINEAR = 8, STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LOG_100 = 9, STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LOG_100_SQRT10 = 10, STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_IEC_61966 = 11, STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_1361 = 12, STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SRGB = 13, STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_2020_10_BIT = 14, STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_2020_12_BIT = 15, STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_2084 = 16, STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_428 = 17, STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_HLG = 18, STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_INVALID = 0x7FFFFFFF, STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_MAX_ENUM = 0x7FFFFFFF } StdVideoAV1TransferCharacteristics; typedef enum StdVideoAV1MatrixCoefficients { STD_VIDEO_AV1_MATRIX_COEFFICIENTS_IDENTITY = 0, STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_709 = 1, STD_VIDEO_AV1_MATRIX_COEFFICIENTS_UNSPECIFIED = 2, STD_VIDEO_AV1_MATRIX_COEFFICIENTS_RESERVED_3 = 3, STD_VIDEO_AV1_MATRIX_COEFFICIENTS_FCC = 4, STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_470_B_G = 5, STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_601 = 6, STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_240 = 7, STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_YCGCO = 8, STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_2020_NCL = 9, STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_2020_CL = 10, STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_2085 = 11, STD_VIDEO_AV1_MATRIX_COEFFICIENTS_CHROMAT_NCL = 12, STD_VIDEO_AV1_MATRIX_COEFFICIENTS_CHROMAT_CL = 13, STD_VIDEO_AV1_MATRIX_COEFFICIENTS_ICTCP = 14, STD_VIDEO_AV1_MATRIX_COEFFICIENTS_INVALID = 0x7FFFFFFF, STD_VIDEO_AV1_MATRIX_COEFFICIENTS_MAX_ENUM = 0x7FFFFFFF } StdVideoAV1MatrixCoefficients; typedef enum StdVideoAV1ChromaSamplePosition { STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_UNKNOWN = 0, STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_VERTICAL = 1, STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_COLOCATED = 2, STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_RESERVED = 3, STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_INVALID = 0x7FFFFFFF, STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_MAX_ENUM = 0x7FFFFFFF } StdVideoAV1ChromaSamplePosition; typedef struct StdVideoAV1ColorConfigFlags { uint32_t mono_chrome : 1; uint32_t color_range : 1; uint32_t separate_uv_delta_q : 1; uint32_t color_description_present_flag : 1; uint32_t reserved : 28; } StdVideoAV1ColorConfigFlags; typedef struct StdVideoAV1ColorConfig { StdVideoAV1ColorConfigFlags flags; uint8_t BitDepth; uint8_t subsampling_x; uint8_t subsampling_y; uint8_t reserved1; StdVideoAV1ColorPrimaries color_primaries; StdVideoAV1TransferCharacteristics transfer_characteristics; StdVideoAV1MatrixCoefficients matrix_coefficients; StdVideoAV1ChromaSamplePosition chroma_sample_position; } StdVideoAV1ColorConfig; typedef struct StdVideoAV1TimingInfoFlags { uint32_t equal_picture_interval : 1; uint32_t reserved : 31; } StdVideoAV1TimingInfoFlags; typedef struct StdVideoAV1TimingInfo { StdVideoAV1TimingInfoFlags flags; uint32_t num_units_in_display_tick; uint32_t time_scale; uint32_t num_ticks_per_picture_minus_1; } StdVideoAV1TimingInfo; typedef struct StdVideoAV1LoopFilterFlags { uint32_t loop_filter_delta_enabled : 1; uint32_t loop_filter_delta_update : 1; uint32_t reserved : 30; } StdVideoAV1LoopFilterFlags; typedef struct StdVideoAV1LoopFilter { StdVideoAV1LoopFilterFlags flags; uint8_t loop_filter_level[STD_VIDEO_AV1_MAX_LOOP_FILTER_STRENGTHS]; uint8_t loop_filter_sharpness; uint8_t update_ref_delta; int8_t loop_filter_ref_deltas[STD_VIDEO_AV1_TOTAL_REFS_PER_FRAME]; uint8_t update_mode_delta; int8_t loop_filter_mode_deltas[STD_VIDEO_AV1_LOOP_FILTER_ADJUSTMENTS]; } StdVideoAV1LoopFilter; typedef struct StdVideoAV1QuantizationFlags { uint32_t using_qmatrix : 1; uint32_t diff_uv_delta : 1; uint32_t reserved : 30; } StdVideoAV1QuantizationFlags; typedef struct StdVideoAV1Quantization { StdVideoAV1QuantizationFlags flags; uint8_t base_q_idx; int8_t DeltaQYDc; int8_t DeltaQUDc; int8_t DeltaQUAc; int8_t DeltaQVDc; int8_t DeltaQVAc; uint8_t qm_y; uint8_t qm_u; uint8_t qm_v; } StdVideoAV1Quantization; typedef struct StdVideoAV1Segmentation { uint8_t FeatureEnabled[STD_VIDEO_AV1_MAX_SEGMENTS]; int16_t FeatureData[STD_VIDEO_AV1_MAX_SEGMENTS][STD_VIDEO_AV1_SEG_LVL_MAX]; } StdVideoAV1Segmentation; typedef struct StdVideoAV1TileInfoFlags { uint32_t uniform_tile_spacing_flag : 1; uint32_t reserved : 31; } StdVideoAV1TileInfoFlags; typedef struct StdVideoAV1TileInfo { StdVideoAV1TileInfoFlags flags; uint8_t TileCols; uint8_t TileRows; uint16_t context_update_tile_id; uint8_t tile_size_bytes_minus_1; uint8_t reserved1[7]; const uint16_t* pMiColStarts; const uint16_t* pMiRowStarts; const uint16_t* pWidthInSbsMinus1; const uint16_t* pHeightInSbsMinus1; } StdVideoAV1TileInfo; typedef struct StdVideoAV1CDEF { uint8_t cdef_damping_minus_3; uint8_t cdef_bits; uint8_t cdef_y_pri_strength[STD_VIDEO_AV1_MAX_CDEF_FILTER_STRENGTHS]; uint8_t cdef_y_sec_strength[STD_VIDEO_AV1_MAX_CDEF_FILTER_STRENGTHS]; uint8_t cdef_uv_pri_strength[STD_VIDEO_AV1_MAX_CDEF_FILTER_STRENGTHS]; uint8_t cdef_uv_sec_strength[STD_VIDEO_AV1_MAX_CDEF_FILTER_STRENGTHS]; } StdVideoAV1CDEF; typedef struct StdVideoAV1LoopRestoration { StdVideoAV1FrameRestorationType FrameRestorationType[STD_VIDEO_AV1_MAX_NUM_PLANES]; uint16_t LoopRestorationSize[STD_VIDEO_AV1_MAX_NUM_PLANES]; } StdVideoAV1LoopRestoration; typedef struct StdVideoAV1GlobalMotion { uint8_t GmType[STD_VIDEO_AV1_NUM_REF_FRAMES]; int32_t gm_params[STD_VIDEO_AV1_NUM_REF_FRAMES][STD_VIDEO_AV1_GLOBAL_MOTION_PARAMS]; } StdVideoAV1GlobalMotion; typedef struct StdVideoAV1FilmGrainFlags { uint32_t chroma_scaling_from_luma : 1; uint32_t overlap_flag : 1; uint32_t clip_to_restricted_range : 1; uint32_t update_grain : 1; uint32_t reserved : 28; } StdVideoAV1FilmGrainFlags; typedef struct StdVideoAV1FilmGrain { StdVideoAV1FilmGrainFlags flags; uint8_t grain_scaling_minus_8; uint8_t ar_coeff_lag; uint8_t ar_coeff_shift_minus_6; uint8_t grain_scale_shift; uint16_t grain_seed; uint8_t film_grain_params_ref_idx; uint8_t num_y_points; uint8_t point_y_value[STD_VIDEO_AV1_MAX_NUM_Y_POINTS]; uint8_t point_y_scaling[STD_VIDEO_AV1_MAX_NUM_Y_POINTS]; uint8_t num_cb_points; uint8_t point_cb_value[STD_VIDEO_AV1_MAX_NUM_CB_POINTS]; uint8_t point_cb_scaling[STD_VIDEO_AV1_MAX_NUM_CB_POINTS]; uint8_t num_cr_points; uint8_t point_cr_value[STD_VIDEO_AV1_MAX_NUM_CR_POINTS]; uint8_t point_cr_scaling[STD_VIDEO_AV1_MAX_NUM_CR_POINTS]; int8_t ar_coeffs_y_plus_128[STD_VIDEO_AV1_MAX_NUM_POS_LUMA]; int8_t ar_coeffs_cb_plus_128[STD_VIDEO_AV1_MAX_NUM_POS_CHROMA]; int8_t ar_coeffs_cr_plus_128[STD_VIDEO_AV1_MAX_NUM_POS_CHROMA]; uint8_t cb_mult; uint8_t cb_luma_mult; uint16_t cb_offset; uint8_t cr_mult; uint8_t cr_luma_mult; uint16_t cr_offset; } StdVideoAV1FilmGrain; typedef struct StdVideoAV1SequenceHeaderFlags { uint32_t still_picture : 1; uint32_t reduced_still_picture_header : 1; uint32_t use_128x128_superblock : 1; uint32_t enable_filter_intra : 1; uint32_t enable_intra_edge_filter : 1; uint32_t enable_interintra_compound : 1; uint32_t enable_masked_compound : 1; uint32_t enable_warped_motion : 1; uint32_t enable_dual_filter : 1; uint32_t enable_order_hint : 1; uint32_t enable_jnt_comp : 1; uint32_t enable_ref_frame_mvs : 1; uint32_t frame_id_numbers_present_flag : 1; uint32_t enable_superres : 1; uint32_t enable_cdef : 1; uint32_t enable_restoration : 1; uint32_t film_grain_params_present : 1; uint32_t timing_info_present_flag : 1; uint32_t initial_display_delay_present_flag : 1; uint32_t reserved : 13; } StdVideoAV1SequenceHeaderFlags; typedef struct StdVideoAV1SequenceHeader { StdVideoAV1SequenceHeaderFlags flags; StdVideoAV1Profile seq_profile; uint8_t frame_width_bits_minus_1; uint8_t frame_height_bits_minus_1; uint16_t max_frame_width_minus_1; uint16_t max_frame_height_minus_1; uint8_t delta_frame_id_length_minus_2; uint8_t additional_frame_id_length_minus_1; uint8_t order_hint_bits_minus_1; uint8_t seq_force_integer_mv; uint8_t seq_force_screen_content_tools; uint8_t reserved1[5]; const StdVideoAV1ColorConfig* pColorConfig; const StdVideoAV1TimingInfo* pTimingInfo; } StdVideoAV1SequenceHeader; #ifdef __cplusplus } #endif #endif