• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
17 extern "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"
30 typedef 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 
37 typedef 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 
51 typedef 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 
67 typedef 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 
85 typedef 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 
91 typedef 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 
101 typedef 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 
114 typedef 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 
124 typedef 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 
139 typedef 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 
145 typedef 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