• 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-2022 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_8 VK_MAKE_VIDEO_STD_VERSION(0, 9, 8)
25 
26 #define VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_SPEC_VERSION VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_API_VERSION_0_9_8
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 StdVideoEncodeH264RefMgmtFlags {
68     uint32_t    ref_pic_list_modification_l0_flag : 1;
69     uint32_t    ref_pic_list_modification_l1_flag : 1;
70 } StdVideoEncodeH264RefMgmtFlags;
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 StdVideoEncodeH264RefMemMgmtCtrlOperations {
87     StdVideoEncodeH264RefMgmtFlags                 flags;
88     uint8_t                                        refList0ModOpCount;
89     const StdVideoEncodeH264RefListModEntry*       pRefList0ModOperations;
90     uint8_t                                        refList1ModOpCount;
91     const StdVideoEncodeH264RefListModEntry*       pRefList1ModOperations;
92     uint8_t                                        refPicMarkingOpCount;
93     const StdVideoEncodeH264RefPicMarkingEntry*    pRefPicMarkingOperations;
94 } StdVideoEncodeH264RefMemMgmtCtrlOperations;
95 
96 typedef struct StdVideoEncodeH264PictureInfo {
97     StdVideoEncodeH264PictureInfoFlags    flags;
98     uint8_t                               seq_parameter_set_id;
99     uint8_t                               pic_parameter_set_id;
100     StdVideoH264PictureType               pictureType;
101     uint32_t                              frame_num;
102     int32_t                               PicOrderCnt;
103 } StdVideoEncodeH264PictureInfo;
104 
105 typedef struct StdVideoEncodeH264ReferenceInfo {
106     StdVideoEncodeH264ReferenceInfoFlags    flags;
107     uint32_t                                FrameNum;
108     int32_t                                 PicOrderCnt;
109     uint16_t                                long_term_pic_num;
110     uint16_t                                long_term_frame_idx;
111 } StdVideoEncodeH264ReferenceInfo;
112 
113 typedef struct StdVideoEncodeH264SliceHeader {
114     StdVideoEncodeH264SliceHeaderFlags        flags;
115     uint32_t                                  first_mb_in_slice;
116     StdVideoH264SliceType                     slice_type;
117     uint16_t                                  idr_pic_id;
118     uint8_t                                   num_ref_idx_l0_active_minus1;
119     uint8_t                                   num_ref_idx_l1_active_minus1;
120     StdVideoH264CabacInitIdc                  cabac_init_idc;
121     StdVideoH264DisableDeblockingFilterIdc    disable_deblocking_filter_idc;
122     int8_t                                    slice_alpha_c0_offset_div2;
123     int8_t                                    slice_beta_offset_div2;
124     const StdVideoEncodeH264WeightTable*      pWeightTable;
125 } StdVideoEncodeH264SliceHeader;
126 
127 
128 #ifdef __cplusplus
129 }
130 #endif
131 
132 #endif
133