1#ifndef VULKAN_VIDEO_CODEC_H264STD_ENCODE_H_
2#define VULKAN_VIDEO_CODEC_H264STD_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_h264std_encode is a preprocessor guard. Do not pass it to API calls.
23#define vulkan_video_codec_h264std_encode 1
24#include "vulkan_video_codec_h264std.h"
25
26#define VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_API_VERSION_1_0_0 VK_MAKE_VIDEO_STD_VERSION(1, 0, 0)
27
28#define VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_SPEC_VERSION VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_API_VERSION_1_0_0
29#define VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_EXTENSION_NAME "VK_STD_vulkan_video_codec_h264_encode"
30typedef struct StdVideoEncodeH264WeightTableFlags {
31 uint32_t luma_weight_l0_flag;
32 uint32_t chroma_weight_l0_flag;
33 uint32_t luma_weight_l1_flag;
34 uint32_t chroma_weight_l1_flag;
35} StdVideoEncodeH264WeightTableFlags;
36
37typedef struct StdVideoEncodeH264WeightTable {
38 StdVideoEncodeH264WeightTableFlags flags;
39 uint8_t luma_log2_weight_denom;
40 uint8_t chroma_log2_weight_denom;
41 int8_t luma_weight_l0[STD_VIDEO_H264_MAX_NUM_LIST_REF];
42 int8_t luma_offset_l0[STD_VIDEO_H264_MAX_NUM_LIST_REF];
43 int8_t chroma_weight_l0[STD_VIDEO_H264_MAX_NUM_LIST_REF][STD_VIDEO_H264_MAX_CHROMA_PLANES];
44 int8_t chroma_offset_l0[STD_VIDEO_H264_MAX_NUM_LIST_REF][STD_VIDEO_H264_MAX_CHROMA_PLANES];
45 int8_t luma_weight_l1[STD_VIDEO_H264_MAX_NUM_LIST_REF];
46 int8_t luma_offset_l1[STD_VIDEO_H264_MAX_NUM_LIST_REF];
47 int8_t chroma_weight_l1[STD_VIDEO_H264_MAX_NUM_LIST_REF][STD_VIDEO_H264_MAX_CHROMA_PLANES];
48 int8_t chroma_offset_l1[STD_VIDEO_H264_MAX_NUM_LIST_REF][STD_VIDEO_H264_MAX_CHROMA_PLANES];
49} StdVideoEncodeH264WeightTable;
50
51typedef struct StdVideoEncodeH264SliceHeaderFlags {
52 uint32_t direct_spatial_mv_pred_flag : 1;
53 uint32_t num_ref_idx_active_override_flag : 1;
54 uint32_t reserved : 30;
55} StdVideoEncodeH264SliceHeaderFlags;
56
57typedef struct StdVideoEncodeH264PictureInfoFlags {
58 uint32_t IdrPicFlag : 1;
59 uint32_t is_reference : 1;
60 uint32_t no_output_of_prior_pics_flag : 1;
61 uint32_t long_term_reference_flag : 1;
62 uint32_t adaptive_ref_pic_marking_mode_flag : 1;
63 uint32_t reserved : 27;
64} StdVideoEncodeH264PictureInfoFlags;
65
66typedef struct StdVideoEncodeH264ReferenceInfoFlags {
67 uint32_t used_for_long_term_reference : 1;
68 uint32_t reserved : 31;
69} StdVideoEncodeH264ReferenceInfoFlags;
70
71typedef struct StdVideoEncodeH264ReferenceListsInfoFlags {
72 uint32_t ref_pic_list_modification_flag_l0 : 1;
73 uint32_t ref_pic_list_modification_flag_l1 : 1;
74 uint32_t reserved : 30;
75} StdVideoEncodeH264ReferenceListsInfoFlags;
76
77typedef struct StdVideoEncodeH264RefListModEntry {
78 StdVideoH264ModificationOfPicNumsIdc modification_of_pic_nums_idc;
79 uint16_t abs_diff_pic_num_minus1;
80 uint16_t long_term_pic_num;
81} StdVideoEncodeH264RefListModEntry;
82
83typedef struct StdVideoEncodeH264RefPicMarkingEntry {
84 StdVideoH264MemMgmtControlOp memory_management_control_operation;
85 uint16_t difference_of_pic_nums_minus1;
86 uint16_t long_term_pic_num;
87 uint16_t long_term_frame_idx;
88 uint16_t max_long_term_frame_idx_plus1;
89} StdVideoEncodeH264RefPicMarkingEntry;
90
91typedef struct StdVideoEncodeH264ReferenceListsInfo {
92 StdVideoEncodeH264ReferenceListsInfoFlags 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_H264_MAX_NUM_LIST_REF];
96 uint8_t RefPicList1[STD_VIDEO_H264_MAX_NUM_LIST_REF];
97 uint8_t refList0ModOpCount;
98 uint8_t refList1ModOpCount;
99 uint8_t refPicMarkingOpCount;
100 uint8_t reserved1[7];
101 const StdVideoEncodeH264RefListModEntry* pRefList0ModOperations;
102 const StdVideoEncodeH264RefListModEntry* pRefList1ModOperations;
103 const StdVideoEncodeH264RefPicMarkingEntry* pRefPicMarkingOperations;
104} StdVideoEncodeH264ReferenceListsInfo;
105
106typedef struct StdVideoEncodeH264PictureInfo {
107 StdVideoEncodeH264PictureInfoFlags flags;
108 uint8_t seq_parameter_set_id;
109 uint8_t pic_parameter_set_id;
110 uint16_t idr_pic_id;
111 StdVideoH264PictureType primary_pic_type;
112 uint32_t frame_num;
113 int32_t PicOrderCnt;
114 uint8_t temporal_id;
115 uint8_t reserved1[3];
116 const StdVideoEncodeH264ReferenceListsInfo* pRefLists;
117} StdVideoEncodeH264PictureInfo;
118
119typedef struct StdVideoEncodeH264ReferenceInfo {
120 StdVideoEncodeH264ReferenceInfoFlags flags;
121 StdVideoH264PictureType primary_pic_type;
122 uint32_t FrameNum;
123 int32_t PicOrderCnt;
124 uint16_t long_term_pic_num;
125 uint16_t long_term_frame_idx;
126 uint8_t temporal_id;
127} StdVideoEncodeH264ReferenceInfo;
128
129typedef struct StdVideoEncodeH264SliceHeader {
130 StdVideoEncodeH264SliceHeaderFlags flags;
131 uint32_t first_mb_in_slice;
132 StdVideoH264SliceType slice_type;
133 int8_t slice_alpha_c0_offset_div2;
134 int8_t slice_beta_offset_div2;
135 int8_t slice_qp_delta;
136 uint8_t reserved1;
137 StdVideoH264CabacInitIdc cabac_init_idc;
138 StdVideoH264DisableDeblockingFilterIdc disable_deblocking_filter_idc;
139 const StdVideoEncodeH264WeightTable* pWeightTable;
140} StdVideoEncodeH264SliceHeader;
141
142
143#ifdef __cplusplus
144}
145#endif
146
147#endif
148