Skip to main content

vulkan_headers/vk_video/
vulkan_video_codec_h264std_encode.rs

1use crate::prelude::*;
2use super::vulkan_video_codec_h264std::*;
3use super::vulkan_video_codecs_common::*;
4
5#[derive(Clone, Copy)]
6#[repr(C)]
7pub struct StdVideoEncodeH264PictureInfo {
8    pub flags: StdVideoEncodeH264PictureInfoFlags,
9    pub seq_parameter_set_id: u8,
10    pub pic_parameter_set_id: u8,
11    pub idr_pic_id: u16,
12    pub primary_pic_type: StdVideoH264PictureType,
13    pub frame_num: u32,
14    pub PicOrderCnt: i32,
15    pub temporal_id: u8,
16    pub reserved1: [u8; 3 as usize],
17    pub pRefLists: *const StdVideoEncodeH264ReferenceListsInfo,
18}
19
20#[derive(Clone, Copy)]
21#[repr(C)]
22pub struct StdVideoEncodeH264PictureInfoFlags {
23    pub bitfields: u32,
24}
25
26#[derive(Clone, Copy)]
27#[repr(C)]
28pub struct StdVideoEncodeH264RefListModEntry {
29    pub modification_of_pic_nums_idc: StdVideoH264ModificationOfPicNumsIdc,
30    pub abs_diff_pic_num_minus1: u16,
31    pub long_term_pic_num: u16,
32}
33
34#[derive(Clone, Copy)]
35#[repr(C)]
36pub struct StdVideoEncodeH264RefPicMarkingEntry {
37    pub memory_management_control_operation: StdVideoH264MemMgmtControlOp,
38    pub difference_of_pic_nums_minus1: u16,
39    pub long_term_pic_num: u16,
40    pub long_term_frame_idx: u16,
41    pub max_long_term_frame_idx_plus1: u16,
42}
43
44#[derive(Clone, Copy)]
45#[repr(C)]
46pub struct StdVideoEncodeH264ReferenceInfo {
47    pub flags: StdVideoEncodeH264ReferenceInfoFlags,
48    pub primary_pic_type: StdVideoH264PictureType,
49    pub FrameNum: u32,
50    pub PicOrderCnt: i32,
51    pub long_term_pic_num: u16,
52    pub long_term_frame_idx: u16,
53    pub temporal_id: u8,
54}
55
56#[derive(Clone, Copy)]
57#[repr(C)]
58pub struct StdVideoEncodeH264ReferenceInfoFlags {
59    pub bitfields: u32,
60}
61
62#[derive(Clone, Copy)]
63#[repr(C)]
64pub struct StdVideoEncodeH264ReferenceListsInfo {
65    pub flags: StdVideoEncodeH264ReferenceListsInfoFlags,
66    pub num_ref_idx_l0_active_minus1: u8,
67    pub num_ref_idx_l1_active_minus1: u8,
68    pub RefPicList0: [u8; STD_VIDEO_H264_MAX_NUM_LIST_REF as usize],
69    pub RefPicList1: [u8; STD_VIDEO_H264_MAX_NUM_LIST_REF as usize],
70    pub refList0ModOpCount: u8,
71    pub refList1ModOpCount: u8,
72    pub refPicMarkingOpCount: u8,
73    pub reserved1: [u8; 7 as usize],
74    pub pRefList0ModOperations: *const StdVideoEncodeH264RefListModEntry,
75    pub pRefList1ModOperations: *const StdVideoEncodeH264RefListModEntry,
76    pub pRefPicMarkingOperations: *const StdVideoEncodeH264RefPicMarkingEntry,
77}
78
79#[derive(Clone, Copy)]
80#[repr(C)]
81pub struct StdVideoEncodeH264ReferenceListsInfoFlags {
82    pub bitfields: u32,
83}
84
85#[derive(Clone, Copy)]
86#[repr(C)]
87pub struct StdVideoEncodeH264SliceHeader {
88    pub flags: StdVideoEncodeH264SliceHeaderFlags,
89    pub first_mb_in_slice: u32,
90    pub slice_type: StdVideoH264SliceType,
91    pub slice_alpha_c0_offset_div2: i8,
92    pub slice_beta_offset_div2: i8,
93    pub slice_qp_delta: i8,
94    pub reserved1: u8,
95    pub cabac_init_idc: StdVideoH264CabacInitIdc,
96    pub disable_deblocking_filter_idc: StdVideoH264DisableDeblockingFilterIdc,
97    pub pWeightTable: *const StdVideoEncodeH264WeightTable,
98}
99
100#[derive(Clone, Copy)]
101#[repr(C)]
102pub struct StdVideoEncodeH264SliceHeaderFlags {
103    pub bitfields: u32,
104}
105
106#[derive(Clone, Copy)]
107#[repr(C)]
108pub struct StdVideoEncodeH264WeightTable {
109    pub flags: StdVideoEncodeH264WeightTableFlags,
110    pub luma_log2_weight_denom: u8,
111    pub chroma_log2_weight_denom: u8,
112    pub luma_weight_l0: [i8; STD_VIDEO_H264_MAX_NUM_LIST_REF as usize],
113    pub luma_offset_l0: [i8; STD_VIDEO_H264_MAX_NUM_LIST_REF as usize],
114    pub chroma_weight_l0: [[i8; STD_VIDEO_H264_MAX_CHROMA_PLANES as usize]; STD_VIDEO_H264_MAX_NUM_LIST_REF as usize],
115    pub chroma_offset_l0: [[i8; STD_VIDEO_H264_MAX_CHROMA_PLANES as usize]; STD_VIDEO_H264_MAX_NUM_LIST_REF as usize],
116    pub luma_weight_l1: [i8; STD_VIDEO_H264_MAX_NUM_LIST_REF as usize],
117    pub luma_offset_l1: [i8; STD_VIDEO_H264_MAX_NUM_LIST_REF as usize],
118    pub chroma_weight_l1: [[i8; STD_VIDEO_H264_MAX_CHROMA_PLANES as usize]; STD_VIDEO_H264_MAX_NUM_LIST_REF as usize],
119    pub chroma_offset_l1: [[i8; STD_VIDEO_H264_MAX_CHROMA_PLANES as usize]; STD_VIDEO_H264_MAX_NUM_LIST_REF as usize],
120}
121
122#[derive(Clone, Copy)]
123#[repr(C)]
124pub struct StdVideoEncodeH264WeightTableFlags {
125    pub luma_weight_l0_flag: u32,
126    pub chroma_weight_l0_flag: u32,
127    pub luma_weight_l1_flag: u32,
128    pub chroma_weight_l1_flag: u32,
129}
130
131pub const VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_API_VERSION_1_0_0: u32 = VK_MAKE_VIDEO_STD_VERSION(1, 0, 0);
132pub const VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_EXTENSION_NAME: &CStr = c"VK_STD_vulkan_video_codec_h264_encode";
133pub const VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_SPEC_VERSION: u32 = VK_STD_VULKAN_VIDEO_CODEC_H264_ENCODE_API_VERSION_1_0_0;