1#ifndef VULKAN_VIDEO_CODEC_H265STD_ENCODE_H_
2#define VULKAN_VIDEO_CODEC_H265STD_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
17extern "C" {
18#endif
19
20
21
22// vulkan_video_codec_h265std_encode is a preprocessor guard. Do not pass it to API calls.
23#define vulkan_video_codec_h265std_encode 1
24#include "vulkan_video_codec_h265std.h"
25
26#define VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_API_VERSION_1_0_0 VK_MAKE_VIDEO_STD_VERSION(1, 0, 0)
27
28#define VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_SPEC_VERSION VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_API_VERSION_1_0_0
29#define VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_EXTENSION_NAME "VK_STD_vulkan_video_codec_h265_encode"
30typedef struct StdVideoEncodeH265WeightTableFlags {
31 uint16_t luma_weight_l0_flag;
32 uint16_t chroma_weight_l0_flag;
33 uint16_t luma_weight_l1_flag;
34 uint16_t chroma_weight_l1_flag;
35} StdVideoEncodeH265WeightTableFlags;
36
37typedef struct StdVideoEncodeH265WeightTable {
38 StdVideoEncodeH265WeightTableFlags flags;
39 uint8_t luma_log2_weight_denom;
40 int8_t delta_chroma_log2_weight_denom;
41 int8_t delta_luma_weight_l0[STD_VIDEO_H265_MAX_NUM_LIST_REF];
42 int8_t luma_offset_l0[STD_VIDEO_H265_MAX_NUM_LIST_REF];
43 int8_t delta_chroma_weight_l0[STD_VIDEO_H265_MAX_NUM_LIST_REF][STD_VIDEO_H265_MAX_CHROMA_PLANES];
44 int8_t delta_chroma_offset_l0[STD_VIDEO_H265_MAX_NUM_LIST_REF][STD_VIDEO_H265_MAX_CHROMA_PLANES];
45 int8_t delta_luma_weight_l1[STD_VIDEO_H265_MAX_NUM_LIST_REF];
46 int8_t luma_offset_l1[STD_VIDEO_H265_MAX_NUM_LIST_REF];
47 int8_t delta_chroma_weight_l1[STD_VIDEO_H265_MAX_NUM_LIST_REF][STD_VIDEO_H265_MAX_CHROMA_PLANES];
48 int8_t delta_chroma_offset_l1[STD_VIDEO_H265_MAX_NUM_LIST_REF][STD_VIDEO_H265_MAX_CHROMA_PLANES];
49} StdVideoEncodeH265WeightTable;
50
51typedef struct StdVideoEncodeH265SliceSegmentHeaderFlags {
52 uint32_t first_slice_segment_in_pic_flag : 1;
53 uint32_t dependent_slice_segment_flag : 1;
54 uint32_t slice_sao_luma_flag : 1;
55 uint32_t slice_sao_chroma_flag : 1;
56 uint32_t num_ref_idx_active_override_flag : 1;
57 uint32_t mvd_l1_zero_flag : 1;
58 uint32_t cabac_init_flag : 1;
59 uint32_t cu_chroma_qp_offset_enabled_flag : 1;
60 uint32_t deblocking_filter_override_flag : 1;
61 uint32_t slice_deblocking_filter_disabled_flag : 1;
62 uint32_t collocated_from_l0_flag : 1;
63 uint32_t slice_loop_filter_across_slices_enabled_flag : 1;
64 uint32_t reserved : 20;
65} StdVideoEncodeH265SliceSegmentHeaderFlags;
66
67typedef struct StdVideoEncodeH265SliceSegmentHeader {
68 StdVideoEncodeH265SliceSegmentHeaderFlags flags;
69 StdVideoH265SliceType slice_type;
70 uint32_t slice_segment_address;
71 uint8_t collocated_ref_idx;
72 uint8_t MaxNumMergeCand;
73 int8_t slice_cb_qp_offset;
74 int8_t slice_cr_qp_offset;
75 int8_t slice_beta_offset_div2;
76 int8_t slice_tc_offset_div2;
77 int8_t slice_act_y_qp_offset;
78 int8_t slice_act_cb_qp_offset;
79 int8_t slice_act_cr_qp_offset;
80 int8_t slice_qp_delta;
81 uint16_t reserved1;
82 const StdVideoEncodeH265WeightTable* pWeightTable;
83} StdVideoEncodeH265SliceSegmentHeader;
84
85typedef struct StdVideoEncodeH265ReferenceListsInfoFlags {
86 uint32_t ref_pic_list_modification_flag_l0 : 1;
87 uint32_t ref_pic_list_modification_flag_l1 : 1;
88 uint32_t reserved : 30;
89} StdVideoEncodeH265ReferenceListsInfoFlags;
90
91typedef struct StdVideoEncodeH265ReferenceListsInfo {
92 StdVideoEncodeH265ReferenceListsInfoFlags flags;
93 uint8_t num_ref_idx_l0_active_minus1;
94 uint8_t num_ref_idx_l1_active_minus1;
95 uint8_t RefPicList0[STD_VIDEO_H265_MAX_NUM_LIST_REF];
96 uint8_t RefPicList1[STD_VIDEO_H265_MAX_NUM_LIST_REF];
97 uint8_t list_entry_l0[STD_VIDEO_H265_MAX_NUM_LIST_REF];
98 uint8_t list_entry_l1[STD_VIDEO_H265_MAX_NUM_LIST_REF];
99} StdVideoEncodeH265ReferenceListsInfo;
100
101typedef struct StdVideoEncodeH265PictureInfoFlags {
102 uint32_t is_reference : 1;
103 uint32_t IrapPicFlag : 1;
104 uint32_t used_for_long_term_reference : 1;
105 uint32_t discardable_flag : 1;
106 uint32_t cross_layer_bla_flag : 1;
107 uint32_t pic_output_flag : 1;
108 uint32_t no_output_of_prior_pics_flag : 1;
109 uint32_t short_term_ref_pic_set_sps_flag : 1;
110 uint32_t slice_temporal_mvp_enabled_flag : 1;
111 uint32_t reserved : 23;
112} StdVideoEncodeH265PictureInfoFlags;
113
114typedef struct StdVideoEncodeH265LongTermRefPics {
115 uint8_t num_long_term_sps;
116 uint8_t num_long_term_pics;
117 uint8_t lt_idx_sps[STD_VIDEO_H265_MAX_LONG_TERM_REF_PICS_SPS];
118 uint8_t poc_lsb_lt[STD_VIDEO_H265_MAX_LONG_TERM_PICS];
119 uint16_t used_by_curr_pic_lt_flag;
120 uint8_t delta_poc_msb_present_flag[STD_VIDEO_H265_MAX_DELTA_POC];
121 uint8_t delta_poc_msb_cycle_lt[STD_VIDEO_H265_MAX_DELTA_POC];
122} StdVideoEncodeH265LongTermRefPics;
123
124typedef struct StdVideoEncodeH265PictureInfo {
125 StdVideoEncodeH265PictureInfoFlags flags;
126 StdVideoH265PictureType pic_type;
127 uint8_t sps_video_parameter_set_id;
128 uint8_t pps_seq_parameter_set_id;
129 uint8_t pps_pic_parameter_set_id;
130 uint8_t short_term_ref_pic_set_idx;
131 int32_t PicOrderCntVal;
132 uint8_t TemporalId;
133 uint8_t reserved1[7];
134 const StdVideoEncodeH265ReferenceListsInfo* pRefLists;
135 const StdVideoH265ShortTermRefPicSet* pShortTermRefPicSet;
136 const StdVideoEncodeH265LongTermRefPics* pLongTermRefPics;
137} StdVideoEncodeH265PictureInfo;
138
139typedef struct StdVideoEncodeH265ReferenceInfoFlags {
140 uint32_t used_for_long_term_reference : 1;
141 uint32_t unused_for_reference : 1;
142 uint32_t reserved : 30;
143} StdVideoEncodeH265ReferenceInfoFlags;
144
145typedef struct StdVideoEncodeH265ReferenceInfo {
146 StdVideoEncodeH265ReferenceInfoFlags flags;
147 StdVideoH265PictureType pic_type;
148 int32_t PicOrderCntVal;
149 uint8_t TemporalId;
150} StdVideoEncodeH265ReferenceInfo;
151
152
153#ifdef __cplusplus
154}
155#endif
156
157#endif
158