1 #ifndef VULKAN_VIDEO_CODEC_AV1STD_ENCODE_H_
2 #define VULKAN_VIDEO_CODEC_AV1STD_ENCODE_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_encode is a preprocessor guard. Do not pass it to API calls.
23 #define vulkan_video_codec_av1std_encode 1
24 #include "vulkan_video_codec_av1std.h"
25 
26 #define VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_API_VERSION_1_0_0 VK_MAKE_VIDEO_STD_VERSION(1, 0, 0)
27 
28 #define VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_SPEC_VERSION VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_API_VERSION_1_0_0
29 #define VK_STD_VULKAN_VIDEO_CODEC_AV1_ENCODE_EXTENSION_NAME "VK_STD_vulkan_video_codec_av1_encode"
30 typedef struct StdVideoEncodeAV1DecoderModelInfo {
31     uint8_t     buffer_delay_length_minus_1;
32     uint8_t     buffer_removal_time_length_minus_1;
33     uint8_t     frame_presentation_time_length_minus_1;
34     uint8_t     reserved1;
35     uint32_t    num_units_in_decoding_tick;
36 } StdVideoEncodeAV1DecoderModelInfo;
37 
38 typedef struct StdVideoEncodeAV1ExtensionHeader {
39     uint8_t    temporal_id;
40     uint8_t    spatial_id;
41 } StdVideoEncodeAV1ExtensionHeader;
42 
43 typedef struct StdVideoEncodeAV1OperatingPointInfoFlags {
44     uint32_t    decoder_model_present_for_this_op : 1;
45     uint32_t    low_delay_mode_flag : 1;
46     uint32_t    initial_display_delay_present_for_this_op : 1;
47     uint32_t    reserved : 29;
48 } StdVideoEncodeAV1OperatingPointInfoFlags;
49 
50 typedef struct StdVideoEncodeAV1OperatingPointInfo {
51     StdVideoEncodeAV1OperatingPointInfoFlags    flags;
52     uint16_t                                    operating_point_idc;
53     uint8_t                                     seq_level_idx;
54     uint8_t                                     seq_tier;
55     uint32_t                                    decoder_buffer_delay;
56     uint32_t                                    encoder_buffer_delay;
57     uint8_t                                     initial_display_delay_minus_1;
58 } StdVideoEncodeAV1OperatingPointInfo;
59 
60 typedef struct StdVideoEncodeAV1PictureInfoFlags {
61     uint32_t    error_resilient_mode : 1;
62     uint32_t    disable_cdf_update : 1;
63     uint32_t    use_superres : 1;
64     uint32_t    render_and_frame_size_different : 1;
65     uint32_t    allow_screen_content_tools : 1;
66     uint32_t    is_filter_switchable : 1;
67     uint32_t    force_integer_mv : 1;
68     uint32_t    frame_size_override_flag : 1;
69     uint32_t    buffer_removal_time_present_flag : 1;
70     uint32_t    allow_intrabc : 1;
71     uint32_t    frame_refs_short_signaling : 1;
72     uint32_t    allow_high_precision_mv : 1;
73     uint32_t    is_motion_mode_switchable : 1;
74     uint32_t    use_ref_frame_mvs : 1;
75     uint32_t    disable_frame_end_update_cdf : 1;
76     uint32_t    allow_warped_motion : 1;
77     uint32_t    reduced_tx_set : 1;
78     uint32_t    skip_mode_present : 1;
79     uint32_t    delta_q_present : 1;
80     uint32_t    delta_lf_present : 1;
81     uint32_t    delta_lf_multi : 1;
82     uint32_t    segmentation_enabled : 1;
83     uint32_t    segmentation_update_map : 1;
84     uint32_t    segmentation_temporal_update : 1;
85     uint32_t    segmentation_update_data : 1;
86     uint32_t    UsesLr : 1;
87     uint32_t    usesChromaLr : 1;
88     uint32_t    show_frame : 1;
89     uint32_t    showable_frame : 1;
90     uint32_t    reserved : 3;
91 } StdVideoEncodeAV1PictureInfoFlags;
92 
93 typedef struct StdVideoEncodeAV1PictureInfo {
94     StdVideoEncodeAV1PictureInfoFlags          flags;
95     StdVideoAV1FrameType                       frame_type;
96     uint32_t                                   frame_presentation_time;
97     uint32_t                                   current_frame_id;
98     uint8_t                                    order_hint;
99     uint8_t                                    primary_ref_frame;
100     uint8_t                                    refresh_frame_flags;
101     uint8_t                                    coded_denom;
102     uint16_t                                   render_width_minus_1;
103     uint16_t                                   render_height_minus_1;
104     StdVideoAV1InterpolationFilter             interpolation_filter;
105     StdVideoAV1TxMode                          TxMode;
106     uint8_t                                    delta_q_res;
107     uint8_t                                    delta_lf_res;
108     uint8_t                                    ref_order_hint[STD_VIDEO_AV1_NUM_REF_FRAMES];
109     int8_t                                     ref_frame_idx[STD_VIDEO_AV1_REFS_PER_FRAME];
110     uint8_t                                    reserved1[3];
111     uint32_t                                   delta_frame_id_minus_1[STD_VIDEO_AV1_REFS_PER_FRAME];
112     const StdVideoAV1TileInfo*                 pTileInfo;
113     const StdVideoAV1Quantization*             pQuantization;
114     const StdVideoAV1Segmentation*             pSegmentation;
115     const StdVideoAV1LoopFilter*               pLoopFilter;
116     const StdVideoAV1CDEF*                     pCDEF;
117     const StdVideoAV1LoopRestoration*          pLoopRestoration;
118     const StdVideoAV1GlobalMotion*             pGlobalMotion;
119     const StdVideoEncodeAV1ExtensionHeader*    pExtensionHeader;
120     const uint32_t*                            pBufferRemovalTimes;
121 } StdVideoEncodeAV1PictureInfo;
122 
123 typedef struct StdVideoEncodeAV1ReferenceInfoFlags {
124     uint32_t    disable_frame_end_update_cdf : 1;
125     uint32_t    segmentation_enabled : 1;
126     uint32_t    reserved : 30;
127 } StdVideoEncodeAV1ReferenceInfoFlags;
128 
129 typedef struct StdVideoEncodeAV1ReferenceInfo {
130     StdVideoEncodeAV1ReferenceInfoFlags        flags;
131     uint32_t                                   RefFrameId;
132     StdVideoAV1FrameType                       frame_type;
133     uint8_t                                    OrderHint;
134     uint8_t                                    reserved1[3];
135     const StdVideoEncodeAV1ExtensionHeader*    pExtensionHeader;
136 } StdVideoEncodeAV1ReferenceInfo;
137 
138 
139 #ifdef __cplusplus
140 }
141 #endif
142 
143 #endif
144