Skip to main content

vulkan_headers/vk_video/
vulkan_video_codec_h265std_encode.rs

1use crate::prelude::*;
2use super::vulkan_video_codec_h265std::*;
3use super::vulkan_video_codecs_common::*;
4
5#[derive(Clone, Copy)]
6#[repr(C)]
7pub struct StdVideoEncodeH265LongTermRefPics {
8    pub num_long_term_sps: u8,
9    pub num_long_term_pics: u8,
10    pub lt_idx_sps: [u8; STD_VIDEO_H265_MAX_LONG_TERM_REF_PICS_SPS as usize],
11    pub poc_lsb_lt: [u8; STD_VIDEO_H265_MAX_LONG_TERM_PICS as usize],
12    pub used_by_curr_pic_lt_flag: u16,
13    pub delta_poc_msb_present_flag: [u8; STD_VIDEO_H265_MAX_DELTA_POC as usize],
14    pub delta_poc_msb_cycle_lt: [u8; STD_VIDEO_H265_MAX_DELTA_POC as usize],
15}
16
17#[derive(Clone, Copy)]
18#[repr(C)]
19pub struct StdVideoEncodeH265PictureInfo {
20    pub flags: StdVideoEncodeH265PictureInfoFlags,
21    pub pic_type: StdVideoH265PictureType,
22    pub sps_video_parameter_set_id: u8,
23    pub pps_seq_parameter_set_id: u8,
24    pub pps_pic_parameter_set_id: u8,
25    pub short_term_ref_pic_set_idx: u8,
26    pub PicOrderCntVal: i32,
27    pub TemporalId: u8,
28    pub reserved1: [u8; 7 as usize],
29    pub pRefLists: *const StdVideoEncodeH265ReferenceListsInfo,
30    pub pShortTermRefPicSet: *const StdVideoH265ShortTermRefPicSet,
31    pub pLongTermRefPics: *const StdVideoEncodeH265LongTermRefPics,
32}
33
34#[derive(Clone, Copy)]
35#[repr(C)]
36pub struct StdVideoEncodeH265PictureInfoFlags {
37    pub bitfields: u32,
38}
39
40#[derive(Clone, Copy)]
41#[repr(C)]
42pub struct StdVideoEncodeH265ReferenceInfo {
43    pub flags: StdVideoEncodeH265ReferenceInfoFlags,
44    pub pic_type: StdVideoH265PictureType,
45    pub PicOrderCntVal: i32,
46    pub TemporalId: u8,
47}
48
49#[derive(Clone, Copy)]
50#[repr(C)]
51pub struct StdVideoEncodeH265ReferenceInfoFlags {
52    pub bitfields: u32,
53}
54
55#[derive(Clone, Copy)]
56#[repr(C)]
57pub struct StdVideoEncodeH265ReferenceListsInfo {
58    pub flags: StdVideoEncodeH265ReferenceListsInfoFlags,
59    pub num_ref_idx_l0_active_minus1: u8,
60    pub num_ref_idx_l1_active_minus1: u8,
61    pub RefPicList0: [u8; STD_VIDEO_H265_MAX_NUM_LIST_REF as usize],
62    pub RefPicList1: [u8; STD_VIDEO_H265_MAX_NUM_LIST_REF as usize],
63    pub list_entry_l0: [u8; STD_VIDEO_H265_MAX_NUM_LIST_REF as usize],
64    pub list_entry_l1: [u8; STD_VIDEO_H265_MAX_NUM_LIST_REF as usize],
65}
66
67#[derive(Clone, Copy)]
68#[repr(C)]
69pub struct StdVideoEncodeH265ReferenceListsInfoFlags {
70    pub bitfields: u32,
71}
72
73#[derive(Clone, Copy)]
74#[repr(C)]
75pub struct StdVideoEncodeH265SliceSegmentHeader {
76    pub flags: StdVideoEncodeH265SliceSegmentHeaderFlags,
77    pub slice_type: StdVideoH265SliceType,
78    pub slice_segment_address: u32,
79    pub collocated_ref_idx: u8,
80    pub MaxNumMergeCand: u8,
81    pub slice_cb_qp_offset: i8,
82    pub slice_cr_qp_offset: i8,
83    pub slice_beta_offset_div2: i8,
84    pub slice_tc_offset_div2: i8,
85    pub slice_act_y_qp_offset: i8,
86    pub slice_act_cb_qp_offset: i8,
87    pub slice_act_cr_qp_offset: i8,
88    pub slice_qp_delta: i8,
89    pub reserved1: u16,
90    pub pWeightTable: *const StdVideoEncodeH265WeightTable,
91}
92
93#[derive(Clone, Copy)]
94#[repr(C)]
95pub struct StdVideoEncodeH265SliceSegmentHeaderFlags {
96    pub bitfields: u32,
97}
98
99#[derive(Clone, Copy)]
100#[repr(C)]
101pub struct StdVideoEncodeH265WeightTable {
102    pub flags: StdVideoEncodeH265WeightTableFlags,
103    pub luma_log2_weight_denom: u8,
104    pub delta_chroma_log2_weight_denom: i8,
105    pub delta_luma_weight_l0: [i8; STD_VIDEO_H265_MAX_NUM_LIST_REF as usize],
106    pub luma_offset_l0: [i8; STD_VIDEO_H265_MAX_NUM_LIST_REF as usize],
107    pub delta_chroma_weight_l0: [[i8; STD_VIDEO_H265_MAX_CHROMA_PLANES as usize]; STD_VIDEO_H265_MAX_NUM_LIST_REF as usize],
108    pub delta_chroma_offset_l0: [[i8; STD_VIDEO_H265_MAX_CHROMA_PLANES as usize]; STD_VIDEO_H265_MAX_NUM_LIST_REF as usize],
109    pub delta_luma_weight_l1: [i8; STD_VIDEO_H265_MAX_NUM_LIST_REF as usize],
110    pub luma_offset_l1: [i8; STD_VIDEO_H265_MAX_NUM_LIST_REF as usize],
111    pub delta_chroma_weight_l1: [[i8; STD_VIDEO_H265_MAX_CHROMA_PLANES as usize]; STD_VIDEO_H265_MAX_NUM_LIST_REF as usize],
112    pub delta_chroma_offset_l1: [[i8; STD_VIDEO_H265_MAX_CHROMA_PLANES as usize]; STD_VIDEO_H265_MAX_NUM_LIST_REF as usize],
113}
114
115#[derive(Clone, Copy)]
116#[repr(C)]
117pub struct StdVideoEncodeH265WeightTableFlags {
118    pub luma_weight_l0_flag: u16,
119    pub chroma_weight_l0_flag: u16,
120    pub luma_weight_l1_flag: u16,
121    pub chroma_weight_l1_flag: u16,
122}
123
124pub const VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_API_VERSION_1_0_0: u32 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0);
125pub const VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_EXTENSION_NAME: &CStr = c"VK_STD_vulkan_video_codec_h265_encode";
126pub const VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_SPEC_VERSION: u32 = VK_STD_VULKAN_VIDEO_CODEC_H265_ENCODE_API_VERSION_1_0_0;