• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #ifndef VULKAN_VIDEO_CODEC_H264STD_ENCODE_H_
2 #define VULKAN_VIDEO_CODEC_H264STD_ENCODE_H_ 1
3 
4 /*
5 ** Copyright 2015-2023 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 #define vulkan_video_codec_h264std_encode 1
23 // Vulkan 0.9 provisional Vulkan video H.264 encode std specification version number
24 #define VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_API_VERSION_0_9_9 VK_MAKE_VIDEO_STD_VERSION(0, 9, 9)
25 
26 #define VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_SPEC_VERSION VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_API_VERSION_0_9_9
27 #define VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_EXTENSION_NAME "VK_STD_vulkan_video_codec_h264_encode"
28 typedef struct StdVideoEncodeH264WeightTableFlags {
29     uint32_t    luma_weight_l0_flag;
30     uint32_t    chroma_weight_l0_flag;
31     uint32_t    luma_weight_l1_flag;
32     uint32_t    chroma_weight_l1_flag;
33 } StdVideoEncodeH264WeightTableFlags;
34 
35 typedef struct StdVideoEncodeH264WeightTable {
36     StdVideoEncodeH264WeightTableFlags    flags;
37     uint8_t                               luma_log2_weight_denom;
38     uint8_t                               chroma_log2_weight_denom;
39     int8_t                                luma_weight_l0[STD_VIDEO_H264_MAX_NUM_LIST_REF];
40     int8_t                                luma_offset_l0[STD_VIDEO_H264_MAX_NUM_LIST_REF];
41     int8_t                                chroma_weight_l0[STD_VIDEO_H264_MAX_NUM_LIST_REF][STD_VIDEO_H264_MAX_CHROMA_PLANES];
42     int8_t                                chroma_offset_l0[STD_VIDEO_H264_MAX_NUM_LIST_REF][STD_VIDEO_H264_MAX_CHROMA_PLANES];
43     int8_t                                luma_weight_l1[STD_VIDEO_H264_MAX_NUM_LIST_REF];
44     int8_t                                luma_offset_l1[STD_VIDEO_H264_MAX_NUM_LIST_REF];
45     int8_t                                chroma_weight_l1[STD_VIDEO_H264_MAX_NUM_LIST_REF][STD_VIDEO_H264_MAX_CHROMA_PLANES];
46     int8_t                                chroma_offset_l1[STD_VIDEO_H264_MAX_NUM_LIST_REF][STD_VIDEO_H264_MAX_CHROMA_PLANES];
47 } StdVideoEncodeH264WeightTable;
48 
49 typedef struct StdVideoEncodeH264SliceHeaderFlags {
50     uint32_t    direct_spatial_mv_pred_flag : 1;
51     uint32_t    num_ref_idx_active_override_flag : 1;
52     uint32_t    no_output_of_prior_pics_flag : 1;
53     uint32_t    adaptive_ref_pic_marking_mode_flag : 1;
54     uint32_t    no_prior_references_available_flag : 1;
55 } StdVideoEncodeH264SliceHeaderFlags;
56 
57 typedef struct StdVideoEncodeH264PictureInfoFlags {
58     uint32_t    idr_flag : 1;
59     uint32_t    is_reference_flag : 1;
60     uint32_t    used_for_long_term_reference : 1;
61 } StdVideoEncodeH264PictureInfoFlags;
62 
63 typedef struct StdVideoEncodeH264ReferenceInfoFlags {
64     uint32_t    used_for_long_term_reference : 1;
65 } StdVideoEncodeH264ReferenceInfoFlags;
66 
67 typedef struct StdVideoEncodeH264ReferenceListsInfoFlags {
68     uint32_t    ref_pic_list_modification_flag_l0 : 1;
69     uint32_t    ref_pic_list_modification_flag_l1 : 1;
70 } StdVideoEncodeH264ReferenceListsInfoFlags;
71 
72 typedef struct StdVideoEncodeH264RefListModEntry {
73     StdVideoH264ModificationOfPicNumsIdc    modification_of_pic_nums_idc;
74     uint16_t                                abs_diff_pic_num_minus1;
75     uint16_t                                long_term_pic_num;
76 } StdVideoEncodeH264RefListModEntry;
77 
78 typedef struct StdVideoEncodeH264RefPicMarkingEntry {
79     StdVideoH264MemMgmtControlOp    operation;
80     uint16_t                        difference_of_pic_nums_minus1;
81     uint16_t                        long_term_pic_num;
82     uint16_t                        long_term_frame_idx;
83     uint16_t                        max_long_term_frame_idx_plus1;
84 } StdVideoEncodeH264RefPicMarkingEntry;
85 
86 typedef struct StdVideoEncodeH264ReferenceListsInfo {
87     StdVideoEncodeH264ReferenceListsInfoFlags      flags;
88     uint8_t                                        refPicList0EntryCount;
89     uint8_t                                        refPicList1EntryCount;
90     uint8_t                                        refList0ModOpCount;
91     uint8_t                                        refList1ModOpCount;
92     uint8_t                                        refPicMarkingOpCount;
93     uint8_t                                        reserved1[7];
94     const uint8_t*                                 pRefPicList0Entries;
95     const uint8_t*                                 pRefPicList1Entries;
96     const StdVideoEncodeH264RefListModEntry*       pRefList0ModOperations;
97     const StdVideoEncodeH264RefListModEntry*       pRefList1ModOperations;
98     const StdVideoEncodeH264RefPicMarkingEntry*    pRefPicMarkingOperations;
99 } StdVideoEncodeH264ReferenceListsInfo;
100 
101 typedef struct StdVideoEncodeH264PictureInfo {
102     StdVideoEncodeH264PictureInfoFlags    flags;
103     uint8_t                               seq_parameter_set_id;
104     uint8_t                               pic_parameter_set_id;
105     uint16_t                              reserved1;
106     StdVideoH264PictureType               pictureType;
107     uint32_t                              frame_num;
108     int32_t                               PicOrderCnt;
109 } StdVideoEncodeH264PictureInfo;
110 
111 typedef struct StdVideoEncodeH264ReferenceInfo {
112     StdVideoEncodeH264ReferenceInfoFlags    flags;
113     StdVideoH264PictureType                 pictureType;
114     uint32_t                                FrameNum;
115     int32_t                                 PicOrderCnt;
116     uint16_t                                long_term_pic_num;
117     uint16_t                                long_term_frame_idx;
118 } StdVideoEncodeH264ReferenceInfo;
119 
120 typedef struct StdVideoEncodeH264SliceHeader {
121     StdVideoEncodeH264SliceHeaderFlags        flags;
122     uint32_t                                  first_mb_in_slice;
123     StdVideoH264SliceType                     slice_type;
124     uint16_t                                  idr_pic_id;
125     uint8_t                                   num_ref_idx_l0_active_minus1;
126     uint8_t                                   num_ref_idx_l1_active_minus1;
127     StdVideoH264CabacInitIdc                  cabac_init_idc;
128     StdVideoH264DisableDeblockingFilterIdc    disable_deblocking_filter_idc;
129     int8_t                                    slice_alpha_c0_offset_div2;
130     int8_t                                    slice_beta_offset_div2;
131     uint16_t                                  reserved1;
132     uint32_t                                  reserved2;
133     const StdVideoEncodeH264WeightTable*      pWeightTable;
134 } StdVideoEncodeH264SliceHeader;
135 
136 
137 #ifdef __cplusplus
138 }
139 #endif
140 
141 #endif
142