1#ifndef VULKAN_VIDEO_CODEC_AV1STD_ENCODE_H_
2#define VULKAN_VIDEO_CODEC_AV1STD_ENCODE_H_ 1
3
4/*
5** Copyright 2015-2025 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
17extern "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"
30typedef 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
38typedef struct StdVideoEncodeAV1ExtensionHeader {
39 uint8_t temporal_id;
40 uint8_t spatial_id;
41} StdVideoEncodeAV1ExtensionHeader;
42
43typedef 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
50typedef 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
60typedef 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
93typedef 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
123typedef 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
129typedef 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