duckstation

duckstation, but archived from the revision just before upstream changed it to a proprietary software project, this version is the libre one
git clone https://git.neptards.moe/u3shit/duckstation.git
Log | Files | Refs | README | LICENSE

vulkan_video_codec_av1std.h (16507B)


      1 #ifndef VULKAN_VIDEO_CODEC_AV1STD_H_
      2 #define VULKAN_VIDEO_CODEC_AV1STD_H_ 1
      3 
      4 /*
      5 ** Copyright 2015-2024 The Khronos Group Inc.
      6 **
      7 ** SPDX-License-Identifier: Apache-2.0
      8 */
      9 
     10 /*
     11 ** This header is generated from the Khronos Vulkan XML API Registry.
     12 **
     13 */
     14 
     15 
     16 #ifdef __cplusplus
     17 extern "C" {
     18 #endif
     19 
     20 
     21 
     22 // vulkan_video_codec_av1std is a preprocessor guard. Do not pass it to API calls.
     23 #define vulkan_video_codec_av1std 1
     24 #include "vulkan_video_codecs_common.h"
     25 #define STD_VIDEO_AV1_NUM_REF_FRAMES      8
     26 #define STD_VIDEO_AV1_REFS_PER_FRAME      7
     27 #define STD_VIDEO_AV1_TOTAL_REFS_PER_FRAME 8
     28 #define STD_VIDEO_AV1_MAX_TILE_COLS       64
     29 #define STD_VIDEO_AV1_MAX_TILE_ROWS       64
     30 #define STD_VIDEO_AV1_MAX_SEGMENTS        8
     31 #define STD_VIDEO_AV1_SEG_LVL_MAX         8
     32 #define STD_VIDEO_AV1_PRIMARY_REF_NONE    7
     33 #define STD_VIDEO_AV1_SELECT_INTEGER_MV   2
     34 #define STD_VIDEO_AV1_SELECT_SCREEN_CONTENT_TOOLS 2
     35 #define STD_VIDEO_AV1_SKIP_MODE_FRAMES    2
     36 #define STD_VIDEO_AV1_MAX_LOOP_FILTER_STRENGTHS 4
     37 #define STD_VIDEO_AV1_LOOP_FILTER_ADJUSTMENTS 2
     38 #define STD_VIDEO_AV1_MAX_CDEF_FILTER_STRENGTHS 8
     39 #define STD_VIDEO_AV1_MAX_NUM_PLANES      3
     40 #define STD_VIDEO_AV1_GLOBAL_MOTION_PARAMS 6
     41 #define STD_VIDEO_AV1_MAX_NUM_Y_POINTS    14
     42 #define STD_VIDEO_AV1_MAX_NUM_CB_POINTS   10
     43 #define STD_VIDEO_AV1_MAX_NUM_CR_POINTS   10
     44 #define STD_VIDEO_AV1_MAX_NUM_POS_LUMA    24
     45 #define STD_VIDEO_AV1_MAX_NUM_POS_CHROMA  25
     46 
     47 typedef enum StdVideoAV1Profile {
     48     STD_VIDEO_AV1_PROFILE_MAIN = 0,
     49     STD_VIDEO_AV1_PROFILE_HIGH = 1,
     50     STD_VIDEO_AV1_PROFILE_PROFESSIONAL = 2,
     51     STD_VIDEO_AV1_PROFILE_INVALID = 0x7FFFFFFF,
     52     STD_VIDEO_AV1_PROFILE_MAX_ENUM = 0x7FFFFFFF
     53 } StdVideoAV1Profile;
     54 
     55 typedef enum StdVideoAV1Level {
     56     STD_VIDEO_AV1_LEVEL_2_0 = 0,
     57     STD_VIDEO_AV1_LEVEL_2_1 = 1,
     58     STD_VIDEO_AV1_LEVEL_2_2 = 2,
     59     STD_VIDEO_AV1_LEVEL_2_3 = 3,
     60     STD_VIDEO_AV1_LEVEL_3_0 = 4,
     61     STD_VIDEO_AV1_LEVEL_3_1 = 5,
     62     STD_VIDEO_AV1_LEVEL_3_2 = 6,
     63     STD_VIDEO_AV1_LEVEL_3_3 = 7,
     64     STD_VIDEO_AV1_LEVEL_4_0 = 8,
     65     STD_VIDEO_AV1_LEVEL_4_1 = 9,
     66     STD_VIDEO_AV1_LEVEL_4_2 = 10,
     67     STD_VIDEO_AV1_LEVEL_4_3 = 11,
     68     STD_VIDEO_AV1_LEVEL_5_0 = 12,
     69     STD_VIDEO_AV1_LEVEL_5_1 = 13,
     70     STD_VIDEO_AV1_LEVEL_5_2 = 14,
     71     STD_VIDEO_AV1_LEVEL_5_3 = 15,
     72     STD_VIDEO_AV1_LEVEL_6_0 = 16,
     73     STD_VIDEO_AV1_LEVEL_6_1 = 17,
     74     STD_VIDEO_AV1_LEVEL_6_2 = 18,
     75     STD_VIDEO_AV1_LEVEL_6_3 = 19,
     76     STD_VIDEO_AV1_LEVEL_7_0 = 20,
     77     STD_VIDEO_AV1_LEVEL_7_1 = 21,
     78     STD_VIDEO_AV1_LEVEL_7_2 = 22,
     79     STD_VIDEO_AV1_LEVEL_7_3 = 23,
     80     STD_VIDEO_AV1_LEVEL_INVALID = 0x7FFFFFFF,
     81     STD_VIDEO_AV1_LEVEL_MAX_ENUM = 0x7FFFFFFF
     82 } StdVideoAV1Level;
     83 
     84 typedef enum StdVideoAV1FrameType {
     85     STD_VIDEO_AV1_FRAME_TYPE_KEY = 0,
     86     STD_VIDEO_AV1_FRAME_TYPE_INTER = 1,
     87     STD_VIDEO_AV1_FRAME_TYPE_INTRA_ONLY = 2,
     88     STD_VIDEO_AV1_FRAME_TYPE_SWITCH = 3,
     89     STD_VIDEO_AV1_FRAME_TYPE_INVALID = 0x7FFFFFFF,
     90     STD_VIDEO_AV1_FRAME_TYPE_MAX_ENUM = 0x7FFFFFFF
     91 } StdVideoAV1FrameType;
     92 
     93 typedef enum StdVideoAV1ReferenceName {
     94     STD_VIDEO_AV1_REFERENCE_NAME_INTRA_FRAME = 0,
     95     STD_VIDEO_AV1_REFERENCE_NAME_LAST_FRAME = 1,
     96     STD_VIDEO_AV1_REFERENCE_NAME_LAST2_FRAME = 2,
     97     STD_VIDEO_AV1_REFERENCE_NAME_LAST3_FRAME = 3,
     98     STD_VIDEO_AV1_REFERENCE_NAME_GOLDEN_FRAME = 4,
     99     STD_VIDEO_AV1_REFERENCE_NAME_BWDREF_FRAME = 5,
    100     STD_VIDEO_AV1_REFERENCE_NAME_ALTREF2_FRAME = 6,
    101     STD_VIDEO_AV1_REFERENCE_NAME_ALTREF_FRAME = 7,
    102     STD_VIDEO_AV1_REFERENCE_NAME_INVALID = 0x7FFFFFFF,
    103     STD_VIDEO_AV1_REFERENCE_NAME_MAX_ENUM = 0x7FFFFFFF
    104 } StdVideoAV1ReferenceName;
    105 
    106 typedef enum StdVideoAV1InterpolationFilter {
    107     STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP = 0,
    108     STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH = 1,
    109     STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP_SHARP = 2,
    110     STD_VIDEO_AV1_INTERPOLATION_FILTER_BILINEAR = 3,
    111     STD_VIDEO_AV1_INTERPOLATION_FILTER_SWITCHABLE = 4,
    112     STD_VIDEO_AV1_INTERPOLATION_FILTER_INVALID = 0x7FFFFFFF,
    113     STD_VIDEO_AV1_INTERPOLATION_FILTER_MAX_ENUM = 0x7FFFFFFF
    114 } StdVideoAV1InterpolationFilter;
    115 
    116 typedef enum StdVideoAV1TxMode {
    117     STD_VIDEO_AV1_TX_MODE_ONLY_4X4 = 0,
    118     STD_VIDEO_AV1_TX_MODE_LARGEST = 1,
    119     STD_VIDEO_AV1_TX_MODE_SELECT = 2,
    120     STD_VIDEO_AV1_TX_MODE_INVALID = 0x7FFFFFFF,
    121     STD_VIDEO_AV1_TX_MODE_MAX_ENUM = 0x7FFFFFFF
    122 } StdVideoAV1TxMode;
    123 
    124 typedef enum StdVideoAV1FrameRestorationType {
    125     STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_NONE = 0,
    126     STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_WIENER = 1,
    127     STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_SGRPROJ = 2,
    128     STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_SWITCHABLE = 3,
    129     STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_INVALID = 0x7FFFFFFF,
    130     STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_MAX_ENUM = 0x7FFFFFFF
    131 } StdVideoAV1FrameRestorationType;
    132 
    133 typedef enum StdVideoAV1ColorPrimaries {
    134     STD_VIDEO_AV1_COLOR_PRIMARIES_BT_709 = 1,
    135     STD_VIDEO_AV1_COLOR_PRIMARIES_BT_UNSPECIFIED = 2,
    136     STD_VIDEO_AV1_COLOR_PRIMARIES_BT_470_M = 4,
    137     STD_VIDEO_AV1_COLOR_PRIMARIES_BT_470_B_G = 5,
    138     STD_VIDEO_AV1_COLOR_PRIMARIES_BT_601 = 6,
    139     STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_240 = 7,
    140     STD_VIDEO_AV1_COLOR_PRIMARIES_GENERIC_FILM = 8,
    141     STD_VIDEO_AV1_COLOR_PRIMARIES_BT_2020 = 9,
    142     STD_VIDEO_AV1_COLOR_PRIMARIES_XYZ = 10,
    143     STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_431 = 11,
    144     STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_432 = 12,
    145     STD_VIDEO_AV1_COLOR_PRIMARIES_EBU_3213 = 22,
    146     STD_VIDEO_AV1_COLOR_PRIMARIES_INVALID = 0x7FFFFFFF,
    147     STD_VIDEO_AV1_COLOR_PRIMARIES_MAX_ENUM = 0x7FFFFFFF
    148 } StdVideoAV1ColorPrimaries;
    149 
    150 typedef enum StdVideoAV1TransferCharacteristics {
    151     STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_RESERVED_0 = 0,
    152     STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_709 = 1,
    153     STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_UNSPECIFIED = 2,
    154     STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_RESERVED_3 = 3,
    155     STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_470_M = 4,
    156     STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_470_B_G = 5,
    157     STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_601 = 6,
    158     STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_240 = 7,
    159     STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LINEAR = 8,
    160     STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LOG_100 = 9,
    161     STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LOG_100_SQRT10 = 10,
    162     STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_IEC_61966 = 11,
    163     STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_1361 = 12,
    164     STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SRGB = 13,
    165     STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_2020_10_BIT = 14,
    166     STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_2020_12_BIT = 15,
    167     STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_2084 = 16,
    168     STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_428 = 17,
    169     STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_HLG = 18,
    170     STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_INVALID = 0x7FFFFFFF,
    171     STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_MAX_ENUM = 0x7FFFFFFF
    172 } StdVideoAV1TransferCharacteristics;
    173 
    174 typedef enum StdVideoAV1MatrixCoefficients {
    175     STD_VIDEO_AV1_MATRIX_COEFFICIENTS_IDENTITY = 0,
    176     STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_709 = 1,
    177     STD_VIDEO_AV1_MATRIX_COEFFICIENTS_UNSPECIFIED = 2,
    178     STD_VIDEO_AV1_MATRIX_COEFFICIENTS_RESERVED_3 = 3,
    179     STD_VIDEO_AV1_MATRIX_COEFFICIENTS_FCC = 4,
    180     STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_470_B_G = 5,
    181     STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_601 = 6,
    182     STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_240 = 7,
    183     STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_YCGCO = 8,
    184     STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_2020_NCL = 9,
    185     STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_2020_CL = 10,
    186     STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_2085 = 11,
    187     STD_VIDEO_AV1_MATRIX_COEFFICIENTS_CHROMAT_NCL = 12,
    188     STD_VIDEO_AV1_MATRIX_COEFFICIENTS_CHROMAT_CL = 13,
    189     STD_VIDEO_AV1_MATRIX_COEFFICIENTS_ICTCP = 14,
    190     STD_VIDEO_AV1_MATRIX_COEFFICIENTS_INVALID = 0x7FFFFFFF,
    191     STD_VIDEO_AV1_MATRIX_COEFFICIENTS_MAX_ENUM = 0x7FFFFFFF
    192 } StdVideoAV1MatrixCoefficients;
    193 
    194 typedef enum StdVideoAV1ChromaSamplePosition {
    195     STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_UNKNOWN = 0,
    196     STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_VERTICAL = 1,
    197     STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_COLOCATED = 2,
    198     STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_RESERVED = 3,
    199     STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_INVALID = 0x7FFFFFFF,
    200     STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_MAX_ENUM = 0x7FFFFFFF
    201 } StdVideoAV1ChromaSamplePosition;
    202 typedef struct StdVideoAV1ColorConfigFlags {
    203     uint32_t    mono_chrome : 1;
    204     uint32_t    color_range : 1;
    205     uint32_t    separate_uv_delta_q : 1;
    206     uint32_t    color_description_present_flag : 1;
    207     uint32_t    reserved : 28;
    208 } StdVideoAV1ColorConfigFlags;
    209 
    210 typedef struct StdVideoAV1ColorConfig {
    211     StdVideoAV1ColorConfigFlags           flags;
    212     uint8_t                               BitDepth;
    213     uint8_t                               subsampling_x;
    214     uint8_t                               subsampling_y;
    215     uint8_t                               reserved1;
    216     StdVideoAV1ColorPrimaries             color_primaries;
    217     StdVideoAV1TransferCharacteristics    transfer_characteristics;
    218     StdVideoAV1MatrixCoefficients         matrix_coefficients;
    219     StdVideoAV1ChromaSamplePosition       chroma_sample_position;
    220 } StdVideoAV1ColorConfig;
    221 
    222 typedef struct StdVideoAV1TimingInfoFlags {
    223     uint32_t    equal_picture_interval : 1;
    224     uint32_t    reserved : 31;
    225 } StdVideoAV1TimingInfoFlags;
    226 
    227 typedef struct StdVideoAV1TimingInfo {
    228     StdVideoAV1TimingInfoFlags    flags;
    229     uint32_t                      num_units_in_display_tick;
    230     uint32_t                      time_scale;
    231     uint32_t                      num_ticks_per_picture_minus_1;
    232 } StdVideoAV1TimingInfo;
    233 
    234 typedef struct StdVideoAV1LoopFilterFlags {
    235     uint32_t    loop_filter_delta_enabled : 1;
    236     uint32_t    loop_filter_delta_update : 1;
    237     uint32_t    reserved : 30;
    238 } StdVideoAV1LoopFilterFlags;
    239 
    240 typedef struct StdVideoAV1LoopFilter {
    241     StdVideoAV1LoopFilterFlags    flags;
    242     uint8_t                       loop_filter_level[STD_VIDEO_AV1_MAX_LOOP_FILTER_STRENGTHS];
    243     uint8_t                       loop_filter_sharpness;
    244     uint8_t                       update_ref_delta;
    245     int8_t                        loop_filter_ref_deltas[STD_VIDEO_AV1_TOTAL_REFS_PER_FRAME];
    246     uint8_t                       update_mode_delta;
    247     int8_t                        loop_filter_mode_deltas[STD_VIDEO_AV1_LOOP_FILTER_ADJUSTMENTS];
    248 } StdVideoAV1LoopFilter;
    249 
    250 typedef struct StdVideoAV1QuantizationFlags {
    251     uint32_t    using_qmatrix : 1;
    252     uint32_t    diff_uv_delta : 1;
    253     uint32_t    reserved : 30;
    254 } StdVideoAV1QuantizationFlags;
    255 
    256 typedef struct StdVideoAV1Quantization {
    257     StdVideoAV1QuantizationFlags    flags;
    258     uint8_t                         base_q_idx;
    259     int8_t                          DeltaQYDc;
    260     int8_t                          DeltaQUDc;
    261     int8_t                          DeltaQUAc;
    262     int8_t                          DeltaQVDc;
    263     int8_t                          DeltaQVAc;
    264     uint8_t                         qm_y;
    265     uint8_t                         qm_u;
    266     uint8_t                         qm_v;
    267 } StdVideoAV1Quantization;
    268 
    269 typedef struct StdVideoAV1Segmentation {
    270     uint8_t    FeatureEnabled[STD_VIDEO_AV1_MAX_SEGMENTS];
    271     int16_t    FeatureData[STD_VIDEO_AV1_MAX_SEGMENTS][STD_VIDEO_AV1_SEG_LVL_MAX];
    272 } StdVideoAV1Segmentation;
    273 
    274 typedef struct StdVideoAV1TileInfoFlags {
    275     uint32_t    uniform_tile_spacing_flag : 1;
    276     uint32_t    reserved : 31;
    277 } StdVideoAV1TileInfoFlags;
    278 
    279 typedef struct StdVideoAV1TileInfo {
    280     StdVideoAV1TileInfoFlags    flags;
    281     uint8_t                     TileCols;
    282     uint8_t                     TileRows;
    283     uint16_t                    context_update_tile_id;
    284     uint8_t                     tile_size_bytes_minus_1;
    285     uint8_t                     reserved1[7];
    286     const uint16_t*             pMiColStarts;
    287     const uint16_t*             pMiRowStarts;
    288     const uint16_t*             pWidthInSbsMinus1;
    289     const uint16_t*             pHeightInSbsMinus1;
    290 } StdVideoAV1TileInfo;
    291 
    292 typedef struct StdVideoAV1CDEF {
    293     uint8_t    cdef_damping_minus_3;
    294     uint8_t    cdef_bits;
    295     uint8_t    cdef_y_pri_strength[STD_VIDEO_AV1_MAX_CDEF_FILTER_STRENGTHS];
    296     uint8_t    cdef_y_sec_strength[STD_VIDEO_AV1_MAX_CDEF_FILTER_STRENGTHS];
    297     uint8_t    cdef_uv_pri_strength[STD_VIDEO_AV1_MAX_CDEF_FILTER_STRENGTHS];
    298     uint8_t    cdef_uv_sec_strength[STD_VIDEO_AV1_MAX_CDEF_FILTER_STRENGTHS];
    299 } StdVideoAV1CDEF;
    300 
    301 typedef struct StdVideoAV1LoopRestoration {
    302     StdVideoAV1FrameRestorationType    FrameRestorationType[STD_VIDEO_AV1_MAX_NUM_PLANES];
    303     uint16_t                           LoopRestorationSize[STD_VIDEO_AV1_MAX_NUM_PLANES];
    304 } StdVideoAV1LoopRestoration;
    305 
    306 typedef struct StdVideoAV1GlobalMotion {
    307     uint8_t    GmType[STD_VIDEO_AV1_NUM_REF_FRAMES];
    308     int32_t    gm_params[STD_VIDEO_AV1_NUM_REF_FRAMES][STD_VIDEO_AV1_GLOBAL_MOTION_PARAMS];
    309 } StdVideoAV1GlobalMotion;
    310 
    311 typedef struct StdVideoAV1FilmGrainFlags {
    312     uint32_t    chroma_scaling_from_luma : 1;
    313     uint32_t    overlap_flag : 1;
    314     uint32_t    clip_to_restricted_range : 1;
    315     uint32_t    update_grain : 1;
    316     uint32_t    reserved : 28;
    317 } StdVideoAV1FilmGrainFlags;
    318 
    319 typedef struct StdVideoAV1FilmGrain {
    320     StdVideoAV1FilmGrainFlags    flags;
    321     uint8_t                      grain_scaling_minus_8;
    322     uint8_t                      ar_coeff_lag;
    323     uint8_t                      ar_coeff_shift_minus_6;
    324     uint8_t                      grain_scale_shift;
    325     uint16_t                     grain_seed;
    326     uint8_t                      film_grain_params_ref_idx;
    327     uint8_t                      num_y_points;
    328     uint8_t                      point_y_value[STD_VIDEO_AV1_MAX_NUM_Y_POINTS];
    329     uint8_t                      point_y_scaling[STD_VIDEO_AV1_MAX_NUM_Y_POINTS];
    330     uint8_t                      num_cb_points;
    331     uint8_t                      point_cb_value[STD_VIDEO_AV1_MAX_NUM_CB_POINTS];
    332     uint8_t                      point_cb_scaling[STD_VIDEO_AV1_MAX_NUM_CB_POINTS];
    333     uint8_t                      num_cr_points;
    334     uint8_t                      point_cr_value[STD_VIDEO_AV1_MAX_NUM_CR_POINTS];
    335     uint8_t                      point_cr_scaling[STD_VIDEO_AV1_MAX_NUM_CR_POINTS];
    336     int8_t                       ar_coeffs_y_plus_128[STD_VIDEO_AV1_MAX_NUM_POS_LUMA];
    337     int8_t                       ar_coeffs_cb_plus_128[STD_VIDEO_AV1_MAX_NUM_POS_CHROMA];
    338     int8_t                       ar_coeffs_cr_plus_128[STD_VIDEO_AV1_MAX_NUM_POS_CHROMA];
    339     uint8_t                      cb_mult;
    340     uint8_t                      cb_luma_mult;
    341     uint16_t                     cb_offset;
    342     uint8_t                      cr_mult;
    343     uint8_t                      cr_luma_mult;
    344     uint16_t                     cr_offset;
    345 } StdVideoAV1FilmGrain;
    346 
    347 typedef struct StdVideoAV1SequenceHeaderFlags {
    348     uint32_t    still_picture : 1;
    349     uint32_t    reduced_still_picture_header : 1;
    350     uint32_t    use_128x128_superblock : 1;
    351     uint32_t    enable_filter_intra : 1;
    352     uint32_t    enable_intra_edge_filter : 1;
    353     uint32_t    enable_interintra_compound : 1;
    354     uint32_t    enable_masked_compound : 1;
    355     uint32_t    enable_warped_motion : 1;
    356     uint32_t    enable_dual_filter : 1;
    357     uint32_t    enable_order_hint : 1;
    358     uint32_t    enable_jnt_comp : 1;
    359     uint32_t    enable_ref_frame_mvs : 1;
    360     uint32_t    frame_id_numbers_present_flag : 1;
    361     uint32_t    enable_superres : 1;
    362     uint32_t    enable_cdef : 1;
    363     uint32_t    enable_restoration : 1;
    364     uint32_t    film_grain_params_present : 1;
    365     uint32_t    timing_info_present_flag : 1;
    366     uint32_t    initial_display_delay_present_flag : 1;
    367     uint32_t    reserved : 13;
    368 } StdVideoAV1SequenceHeaderFlags;
    369 
    370 typedef struct StdVideoAV1SequenceHeader {
    371     StdVideoAV1SequenceHeaderFlags    flags;
    372     StdVideoAV1Profile                seq_profile;
    373     uint8_t                           frame_width_bits_minus_1;
    374     uint8_t                           frame_height_bits_minus_1;
    375     uint16_t                          max_frame_width_minus_1;
    376     uint16_t                          max_frame_height_minus_1;
    377     uint8_t                           delta_frame_id_length_minus_2;
    378     uint8_t                           additional_frame_id_length_minus_1;
    379     uint8_t                           order_hint_bits_minus_1;
    380     uint8_t                           seq_force_integer_mv;
    381     uint8_t                           seq_force_screen_content_tools;
    382     uint8_t                           reserved1[5];
    383     const StdVideoAV1ColorConfig*     pColorConfig;
    384     const StdVideoAV1TimingInfo*      pTimingInfo;
    385 } StdVideoAV1SequenceHeader;
    386 
    387 
    388 #ifdef __cplusplus
    389 }
    390 #endif
    391 
    392 #endif