1#[doc(alias = "VK_EXT_VIDEO_DECODE_H264_SPEC_VERSION")]
10pub const EXT_VIDEO_DECODE_H264_SPEC_VERSION: u32 = 5;
11#[doc(alias = "VK_EXT_VIDEO_DECODE_H264_EXTENSION_NAME")]
13pub const EXT_VIDEO_DECODE_H264_EXTENSION_NAME: *const std::os::raw::c_char = crate::cstr!(
14 "VK_EXT_video_decode_h264"
15);
16impl crate::vk1_0::StructureType {
18 pub const VIDEO_DECODE_H264_CAPABILITIES_EXT: Self = Self(1000040000);
19 pub const VIDEO_DECODE_H264_PICTURE_INFO_EXT: Self = Self(1000040001);
20 pub const VIDEO_DECODE_H264_MVC_EXT: Self = Self(1000040002);
21 pub const VIDEO_DECODE_H264_PROFILE_EXT: Self = Self(1000040003);
22 pub const VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT: Self = Self(
23 1000040004,
24 );
25 pub const VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT: Self = Self(1000040005);
26 pub const VIDEO_DECODE_H264_DPB_SLOT_INFO_EXT: Self = Self(1000040006);
27}
28impl crate::extensions::khr_video_queue::VideoCodecOperationFlagBitsKHR {
30 pub const DECODE_H264_EXT: Self = Self(1);
31}
32bitflags::bitflags! {
33 #[doc =
34 "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkVideoDecodeH264PictureLayoutFlagsEXT.html) · Bitmask of [`VideoDecodeH264PictureLayoutFlagBitsEXT`]"]
35 #[doc(alias = "VkVideoDecodeH264PictureLayoutFlagsEXT")] #[derive(Default)]
36 #[repr(transparent)] pub struct VideoDecodeH264PictureLayoutFlagsEXT : u32 { const
37 PROGRESSIVE_EXT = VideoDecodeH264PictureLayoutFlagBitsEXT::PROGRESSIVE_EXT.0; const
38 INTERLACED_INTERLEAVED_LINES_EXT =
39 VideoDecodeH264PictureLayoutFlagBitsEXT::INTERLACED_INTERLEAVED_LINES_EXT.0; const
40 INTERLACED_SEPARATE_PLANES_EXT =
41 VideoDecodeH264PictureLayoutFlagBitsEXT::INTERLACED_SEPARATE_PLANES_EXT.0; }
42}
43#[doc(alias = "VkVideoDecodeH264PictureLayoutFlagBitsEXT")]
45#[derive(Copy, Clone, PartialEq, Eq, Hash, Default, Ord, PartialOrd)]
46#[repr(transparent)]
47pub struct VideoDecodeH264PictureLayoutFlagBitsEXT(pub u32);
48impl VideoDecodeH264PictureLayoutFlagBitsEXT {
49 #[inline]
50 pub const fn bitmask(&self) -> VideoDecodeH264PictureLayoutFlagsEXT {
52 VideoDecodeH264PictureLayoutFlagsEXT::from_bits_truncate(self.0)
53 }
54}
55impl std::fmt::Debug for VideoDecodeH264PictureLayoutFlagBitsEXT {
56 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
57 f.write_str(
58 match self {
59 &Self::PROGRESSIVE_EXT => "PROGRESSIVE_EXT",
60 &Self::INTERLACED_INTERLEAVED_LINES_EXT => {
61 "INTERLACED_INTERLEAVED_LINES_EXT"
62 }
63 &Self::INTERLACED_SEPARATE_PLANES_EXT => "INTERLACED_SEPARATE_PLANES_EXT",
64 _ => "(unknown variant)",
65 },
66 )
67 }
68}
69impl crate::extensions::ext_video_decode_h264::VideoDecodeH264PictureLayoutFlagBitsEXT {
71 pub const PROGRESSIVE_EXT: Self = Self(0);
72 pub const INTERLACED_INTERLEAVED_LINES_EXT: Self = Self(1);
73 pub const INTERLACED_SEPARATE_PLANES_EXT: Self = Self(2);
74}
75impl<'a> crate::ExtendableFrom<'a, VideoDecodeH264ProfileEXT>
76for crate::vk1_0::BufferCreateInfoBuilder<'a> {}
77impl<'a> crate::ExtendableFrom<'a, VideoDecodeH264ProfileEXTBuilder<'_>>
78for crate::vk1_0::BufferCreateInfoBuilder<'a> {}
79impl<'a> crate::ExtendableFrom<'a, VideoDecodeH264ProfileEXT>
80for crate::vk1_0::ImageCreateInfoBuilder<'a> {}
81impl<'a> crate::ExtendableFrom<'a, VideoDecodeH264ProfileEXTBuilder<'_>>
82for crate::vk1_0::ImageCreateInfoBuilder<'a> {}
83impl<'a> crate::ExtendableFrom<'a, VideoDecodeH264ProfileEXT>
84for crate::vk1_0::ImageViewCreateInfoBuilder<'a> {}
85impl<'a> crate::ExtendableFrom<'a, VideoDecodeH264ProfileEXTBuilder<'_>>
86for crate::vk1_0::ImageViewCreateInfoBuilder<'a> {}
87impl<'a> crate::ExtendableFrom<'a, VideoDecodeH264ProfileEXT>
88for crate::vk1_0::QueryPoolCreateInfoBuilder<'a> {}
89impl<'a> crate::ExtendableFrom<'a, VideoDecodeH264ProfileEXTBuilder<'_>>
90for crate::vk1_0::QueryPoolCreateInfoBuilder<'a> {}
91impl<'a> crate::ExtendableFrom<'a, VideoDecodeH264ProfileEXT>
92for crate::vk1_1::FormatProperties2Builder<'a> {}
93impl<'a> crate::ExtendableFrom<'a, VideoDecodeH264ProfileEXTBuilder<'_>>
94for crate::vk1_1::FormatProperties2Builder<'a> {}
95impl<'a> crate::ExtendableFrom<'a, VideoDecodeH264ProfileEXT>
96for crate::extensions::khr_video_queue::VideoProfileKHRBuilder<'a> {}
97impl<'a> crate::ExtendableFrom<'a, VideoDecodeH264ProfileEXTBuilder<'_>>
98for crate::extensions::khr_video_queue::VideoProfileKHRBuilder<'a> {}
99impl<'a> crate::ExtendableFrom<'a, VideoDecodeH264DpbSlotInfoEXT>
100for crate::extensions::khr_video_queue::VideoReferenceSlotKHRBuilder<'a> {}
101impl<'a> crate::ExtendableFrom<'a, VideoDecodeH264DpbSlotInfoEXTBuilder<'_>>
102for crate::extensions::khr_video_queue::VideoReferenceSlotKHRBuilder<'a> {}
103impl<'a> crate::ExtendableFrom<'a, VideoDecodeH264CapabilitiesEXT>
104for crate::extensions::khr_video_decode_queue::VideoDecodeCapabilitiesKHRBuilder<'a> {}
105impl<'a> crate::ExtendableFrom<'a, VideoDecodeH264CapabilitiesEXTBuilder<'_>>
106for crate::extensions::khr_video_decode_queue::VideoDecodeCapabilitiesKHRBuilder<'a> {}
107impl<'a> crate::ExtendableFrom<'a, VideoDecodeH264PictureInfoEXT>
108for crate::extensions::khr_video_decode_queue::VideoDecodeInfoKHRBuilder<'a> {}
109impl<'a> crate::ExtendableFrom<'a, VideoDecodeH264PictureInfoEXTBuilder<'_>>
110for crate::extensions::khr_video_decode_queue::VideoDecodeInfoKHRBuilder<'a> {}
111#[doc(alias = "VkVideoDecodeH264ProfileEXT")]
113#[derive(Copy, Clone)]
114#[repr(C)]
115pub struct VideoDecodeH264ProfileEXT {
116 pub s_type: crate::vk1_0::StructureType,
117 pub p_next: *const std::ffi::c_void,
118 pub std_profile_idc: crate::external::vk_video::StdVideoH264ProfileIdc,
119 pub picture_layout: crate::extensions::ext_video_decode_h264::VideoDecodeH264PictureLayoutFlagsEXT,
120}
121impl VideoDecodeH264ProfileEXT {
122 pub const STRUCTURE_TYPE: crate::vk1_0::StructureType = crate::vk1_0::StructureType::VIDEO_DECODE_H264_PROFILE_EXT;
123}
124impl Default for VideoDecodeH264ProfileEXT {
125 fn default() -> Self {
126 Self {
127 s_type: Self::STRUCTURE_TYPE,
128 p_next: std::ptr::null(),
129 std_profile_idc: Default::default(),
130 picture_layout: Default::default(),
131 }
132 }
133}
134impl std::fmt::Debug for VideoDecodeH264ProfileEXT {
135 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
136 f.debug_struct("VideoDecodeH264ProfileEXT")
137 .field("s_type", &self.s_type)
138 .field("p_next", &self.p_next)
139 .field("std_profile_idc", &self.std_profile_idc)
140 .field("picture_layout", &self.picture_layout)
141 .finish()
142 }
143}
144impl VideoDecodeH264ProfileEXT {
145 #[inline]
146 pub fn into_builder<'a>(self) -> VideoDecodeH264ProfileEXTBuilder<'a> {
147 VideoDecodeH264ProfileEXTBuilder(self, std::marker::PhantomData)
148 }
149}
150#[derive(Copy, Clone)]
151#[repr(transparent)]
153pub struct VideoDecodeH264ProfileEXTBuilder<'a>(
154 VideoDecodeH264ProfileEXT,
155 std::marker::PhantomData<&'a ()>,
156);
157impl<'a> VideoDecodeH264ProfileEXTBuilder<'a> {
158 #[inline]
159 pub fn new() -> VideoDecodeH264ProfileEXTBuilder<'a> {
160 VideoDecodeH264ProfileEXTBuilder(Default::default(), std::marker::PhantomData)
161 }
162 #[inline]
163 #[must_use]
164 pub fn std_profile_idc(
165 mut self,
166 std_profile_idc: crate::external::vk_video::StdVideoH264ProfileIdc,
167 ) -> Self {
168 self.0.std_profile_idc = std_profile_idc as _;
169 self
170 }
171 #[inline]
172 #[must_use]
173 pub fn picture_layout(
174 mut self,
175 picture_layout: crate::extensions::ext_video_decode_h264::VideoDecodeH264PictureLayoutFlagsEXT,
176 ) -> Self {
177 self.0.picture_layout = picture_layout as _;
178 self
179 }
180 #[inline]
181 pub fn build_dangling(self) -> VideoDecodeH264ProfileEXT {
184 self.0
185 }
186}
187impl<'a> std::default::Default for VideoDecodeH264ProfileEXTBuilder<'a> {
188 fn default() -> VideoDecodeH264ProfileEXTBuilder<'a> {
189 Self::new()
190 }
191}
192impl<'a> std::fmt::Debug for VideoDecodeH264ProfileEXTBuilder<'a> {
193 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
194 std::fmt::Debug::fmt(&self.0, f)
195 }
196}
197impl<'a> std::ops::Deref for VideoDecodeH264ProfileEXTBuilder<'a> {
198 type Target = VideoDecodeH264ProfileEXT;
199 fn deref(&self) -> &Self::Target {
200 &self.0
201 }
202}
203impl<'a> std::ops::DerefMut for VideoDecodeH264ProfileEXTBuilder<'a> {
204 fn deref_mut(&mut self) -> &mut Self::Target {
205 &mut self.0
206 }
207}
208#[doc(alias = "VkVideoDecodeH264CapabilitiesEXT")]
210#[derive(Copy, Clone)]
211#[repr(C)]
212pub struct VideoDecodeH264CapabilitiesEXT {
213 pub s_type: crate::vk1_0::StructureType,
214 pub p_next: *mut std::ffi::c_void,
215 pub max_level: crate::external::vk_video::StdVideoH264Level,
216 pub field_offset_granularity: crate::vk1_0::Offset2D,
217}
218impl VideoDecodeH264CapabilitiesEXT {
219 pub const STRUCTURE_TYPE: crate::vk1_0::StructureType = crate::vk1_0::StructureType::VIDEO_DECODE_H264_CAPABILITIES_EXT;
220}
221impl Default for VideoDecodeH264CapabilitiesEXT {
222 fn default() -> Self {
223 Self {
224 s_type: Self::STRUCTURE_TYPE,
225 p_next: std::ptr::null_mut(),
226 max_level: Default::default(),
227 field_offset_granularity: Default::default(),
228 }
229 }
230}
231impl std::fmt::Debug for VideoDecodeH264CapabilitiesEXT {
232 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
233 f.debug_struct("VideoDecodeH264CapabilitiesEXT")
234 .field("s_type", &self.s_type)
235 .field("p_next", &self.p_next)
236 .field("max_level", &self.max_level)
237 .field("field_offset_granularity", &self.field_offset_granularity)
238 .finish()
239 }
240}
241impl VideoDecodeH264CapabilitiesEXT {
242 #[inline]
243 pub fn into_builder<'a>(self) -> VideoDecodeH264CapabilitiesEXTBuilder<'a> {
244 VideoDecodeH264CapabilitiesEXTBuilder(self, std::marker::PhantomData)
245 }
246}
247#[derive(Copy, Clone)]
248#[repr(transparent)]
250pub struct VideoDecodeH264CapabilitiesEXTBuilder<'a>(
251 VideoDecodeH264CapabilitiesEXT,
252 std::marker::PhantomData<&'a ()>,
253);
254impl<'a> VideoDecodeH264CapabilitiesEXTBuilder<'a> {
255 #[inline]
256 pub fn new() -> VideoDecodeH264CapabilitiesEXTBuilder<'a> {
257 VideoDecodeH264CapabilitiesEXTBuilder(
258 Default::default(),
259 std::marker::PhantomData,
260 )
261 }
262 #[inline]
263 #[must_use]
264 pub fn max_level(
265 mut self,
266 max_level: crate::external::vk_video::StdVideoH264Level,
267 ) -> Self {
268 self.0.max_level = max_level as _;
269 self
270 }
271 #[inline]
272 #[must_use]
273 pub fn field_offset_granularity(
274 mut self,
275 field_offset_granularity: crate::vk1_0::Offset2D,
276 ) -> Self {
277 self.0.field_offset_granularity = field_offset_granularity as _;
278 self
279 }
280 #[inline]
281 pub fn build_dangling(self) -> VideoDecodeH264CapabilitiesEXT {
284 self.0
285 }
286}
287impl<'a> std::default::Default for VideoDecodeH264CapabilitiesEXTBuilder<'a> {
288 fn default() -> VideoDecodeH264CapabilitiesEXTBuilder<'a> {
289 Self::new()
290 }
291}
292impl<'a> std::fmt::Debug for VideoDecodeH264CapabilitiesEXTBuilder<'a> {
293 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
294 std::fmt::Debug::fmt(&self.0, f)
295 }
296}
297impl<'a> std::ops::Deref for VideoDecodeH264CapabilitiesEXTBuilder<'a> {
298 type Target = VideoDecodeH264CapabilitiesEXT;
299 fn deref(&self) -> &Self::Target {
300 &self.0
301 }
302}
303impl<'a> std::ops::DerefMut for VideoDecodeH264CapabilitiesEXTBuilder<'a> {
304 fn deref_mut(&mut self) -> &mut Self::Target {
305 &mut self.0
306 }
307}
308#[doc(alias = "VkVideoDecodeH264SessionParametersAddInfoEXT")]
310#[derive(Copy, Clone)]
311#[repr(C)]
312pub struct VideoDecodeH264SessionParametersAddInfoEXT {
313 pub s_type: crate::vk1_0::StructureType,
314 pub p_next: *const std::ffi::c_void,
315 pub sps_std_count: u32,
316 pub p_sps_std: *const crate::external::vk_video::StdVideoH264SequenceParameterSet,
317 pub pps_std_count: u32,
318 pub p_pps_std: *const crate::external::vk_video::StdVideoH264PictureParameterSet,
319}
320impl VideoDecodeH264SessionParametersAddInfoEXT {
321 pub const STRUCTURE_TYPE: crate::vk1_0::StructureType = crate::vk1_0::StructureType::VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT;
322}
323impl Default for VideoDecodeH264SessionParametersAddInfoEXT {
324 fn default() -> Self {
325 Self {
326 s_type: Self::STRUCTURE_TYPE,
327 p_next: std::ptr::null(),
328 sps_std_count: Default::default(),
329 p_sps_std: std::ptr::null(),
330 pps_std_count: Default::default(),
331 p_pps_std: std::ptr::null(),
332 }
333 }
334}
335impl std::fmt::Debug for VideoDecodeH264SessionParametersAddInfoEXT {
336 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
337 f.debug_struct("VideoDecodeH264SessionParametersAddInfoEXT")
338 .field("s_type", &self.s_type)
339 .field("p_next", &self.p_next)
340 .field("sps_std_count", &self.sps_std_count)
341 .field("p_sps_std", &self.p_sps_std)
342 .field("pps_std_count", &self.pps_std_count)
343 .field("p_pps_std", &self.p_pps_std)
344 .finish()
345 }
346}
347impl VideoDecodeH264SessionParametersAddInfoEXT {
348 #[inline]
349 pub fn into_builder<'a>(
350 self,
351 ) -> VideoDecodeH264SessionParametersAddInfoEXTBuilder<'a> {
352 VideoDecodeH264SessionParametersAddInfoEXTBuilder(self, std::marker::PhantomData)
353 }
354}
355#[derive(Copy, Clone)]
356#[repr(transparent)]
358pub struct VideoDecodeH264SessionParametersAddInfoEXTBuilder<'a>(
359 VideoDecodeH264SessionParametersAddInfoEXT,
360 std::marker::PhantomData<&'a ()>,
361);
362impl<'a> VideoDecodeH264SessionParametersAddInfoEXTBuilder<'a> {
363 #[inline]
364 pub fn new() -> VideoDecodeH264SessionParametersAddInfoEXTBuilder<'a> {
365 VideoDecodeH264SessionParametersAddInfoEXTBuilder(
366 Default::default(),
367 std::marker::PhantomData,
368 )
369 }
370 #[inline]
371 #[must_use]
372 pub fn sps_std(
373 mut self,
374 sps_std: &'a [crate::external::vk_video::StdVideoH264SequenceParameterSetBuilder],
375 ) -> Self {
376 self.0.p_sps_std = sps_std.as_ptr() as _;
377 self.0.sps_std_count = sps_std.len() as _;
378 self
379 }
380 #[inline]
381 #[must_use]
382 pub fn pps_std(
383 mut self,
384 pps_std: &'a [crate::external::vk_video::StdVideoH264PictureParameterSetBuilder],
385 ) -> Self {
386 self.0.p_pps_std = pps_std.as_ptr() as _;
387 self.0.pps_std_count = pps_std.len() as _;
388 self
389 }
390 #[inline]
391 pub fn build_dangling(self) -> VideoDecodeH264SessionParametersAddInfoEXT {
394 self.0
395 }
396}
397impl<'a> std::default::Default
398for VideoDecodeH264SessionParametersAddInfoEXTBuilder<'a> {
399 fn default() -> VideoDecodeH264SessionParametersAddInfoEXTBuilder<'a> {
400 Self::new()
401 }
402}
403impl<'a> std::fmt::Debug for VideoDecodeH264SessionParametersAddInfoEXTBuilder<'a> {
404 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
405 std::fmt::Debug::fmt(&self.0, f)
406 }
407}
408impl<'a> std::ops::Deref for VideoDecodeH264SessionParametersAddInfoEXTBuilder<'a> {
409 type Target = VideoDecodeH264SessionParametersAddInfoEXT;
410 fn deref(&self) -> &Self::Target {
411 &self.0
412 }
413}
414impl<'a> std::ops::DerefMut for VideoDecodeH264SessionParametersAddInfoEXTBuilder<'a> {
415 fn deref_mut(&mut self) -> &mut Self::Target {
416 &mut self.0
417 }
418}
419#[doc(alias = "VkVideoDecodeH264SessionParametersCreateInfoEXT")]
421#[derive(Copy, Clone)]
422#[repr(C)]
423pub struct VideoDecodeH264SessionParametersCreateInfoEXT {
424 pub s_type: crate::vk1_0::StructureType,
425 pub p_next: *const std::ffi::c_void,
426 pub max_sps_std_count: u32,
427 pub max_pps_std_count: u32,
428 pub p_parameters_add_info: *const crate::extensions::ext_video_decode_h264::VideoDecodeH264SessionParametersAddInfoEXT,
429}
430impl VideoDecodeH264SessionParametersCreateInfoEXT {
431 pub const STRUCTURE_TYPE: crate::vk1_0::StructureType = crate::vk1_0::StructureType::VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT;
432}
433impl Default for VideoDecodeH264SessionParametersCreateInfoEXT {
434 fn default() -> Self {
435 Self {
436 s_type: Self::STRUCTURE_TYPE,
437 p_next: std::ptr::null(),
438 max_sps_std_count: Default::default(),
439 max_pps_std_count: Default::default(),
440 p_parameters_add_info: std::ptr::null(),
441 }
442 }
443}
444impl std::fmt::Debug for VideoDecodeH264SessionParametersCreateInfoEXT {
445 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
446 f.debug_struct("VideoDecodeH264SessionParametersCreateInfoEXT")
447 .field("s_type", &self.s_type)
448 .field("p_next", &self.p_next)
449 .field("max_sps_std_count", &self.max_sps_std_count)
450 .field("max_pps_std_count", &self.max_pps_std_count)
451 .field("p_parameters_add_info", &self.p_parameters_add_info)
452 .finish()
453 }
454}
455impl VideoDecodeH264SessionParametersCreateInfoEXT {
456 #[inline]
457 pub fn into_builder<'a>(
458 self,
459 ) -> VideoDecodeH264SessionParametersCreateInfoEXTBuilder<'a> {
460 VideoDecodeH264SessionParametersCreateInfoEXTBuilder(
461 self,
462 std::marker::PhantomData,
463 )
464 }
465}
466#[derive(Copy, Clone)]
467#[repr(transparent)]
469pub struct VideoDecodeH264SessionParametersCreateInfoEXTBuilder<'a>(
470 VideoDecodeH264SessionParametersCreateInfoEXT,
471 std::marker::PhantomData<&'a ()>,
472);
473impl<'a> VideoDecodeH264SessionParametersCreateInfoEXTBuilder<'a> {
474 #[inline]
475 pub fn new() -> VideoDecodeH264SessionParametersCreateInfoEXTBuilder<'a> {
476 VideoDecodeH264SessionParametersCreateInfoEXTBuilder(
477 Default::default(),
478 std::marker::PhantomData,
479 )
480 }
481 #[inline]
482 #[must_use]
483 pub fn max_sps_std_count(mut self, max_sps_std_count: u32) -> Self {
484 self.0.max_sps_std_count = max_sps_std_count as _;
485 self
486 }
487 #[inline]
488 #[must_use]
489 pub fn max_pps_std_count(mut self, max_pps_std_count: u32) -> Self {
490 self.0.max_pps_std_count = max_pps_std_count as _;
491 self
492 }
493 #[inline]
494 #[must_use]
495 pub fn parameters_add_info(
496 mut self,
497 parameters_add_info: &'a crate::extensions::ext_video_decode_h264::VideoDecodeH264SessionParametersAddInfoEXT,
498 ) -> Self {
499 self.0.p_parameters_add_info = parameters_add_info as _;
500 self
501 }
502 #[inline]
503 pub fn build_dangling(self) -> VideoDecodeH264SessionParametersCreateInfoEXT {
506 self.0
507 }
508}
509impl<'a> std::default::Default
510for VideoDecodeH264SessionParametersCreateInfoEXTBuilder<'a> {
511 fn default() -> VideoDecodeH264SessionParametersCreateInfoEXTBuilder<'a> {
512 Self::new()
513 }
514}
515impl<'a> std::fmt::Debug for VideoDecodeH264SessionParametersCreateInfoEXTBuilder<'a> {
516 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
517 std::fmt::Debug::fmt(&self.0, f)
518 }
519}
520impl<'a> std::ops::Deref for VideoDecodeH264SessionParametersCreateInfoEXTBuilder<'a> {
521 type Target = VideoDecodeH264SessionParametersCreateInfoEXT;
522 fn deref(&self) -> &Self::Target {
523 &self.0
524 }
525}
526impl<'a> std::ops::DerefMut
527for VideoDecodeH264SessionParametersCreateInfoEXTBuilder<'a> {
528 fn deref_mut(&mut self) -> &mut Self::Target {
529 &mut self.0
530 }
531}
532#[doc(alias = "VkVideoDecodeH264PictureInfoEXT")]
534#[derive(Copy, Clone)]
535#[repr(C)]
536pub struct VideoDecodeH264PictureInfoEXT {
537 pub s_type: crate::vk1_0::StructureType,
538 pub p_next: *const std::ffi::c_void,
539 pub p_std_picture_info: *const crate::external::vk_video::StdVideoDecodeH264PictureInfo,
540 pub slices_count: u32,
541 pub p_slices_data_offsets: *const u32,
542}
543impl VideoDecodeH264PictureInfoEXT {
544 pub const STRUCTURE_TYPE: crate::vk1_0::StructureType = crate::vk1_0::StructureType::VIDEO_DECODE_H264_PICTURE_INFO_EXT;
545}
546impl Default for VideoDecodeH264PictureInfoEXT {
547 fn default() -> Self {
548 Self {
549 s_type: Self::STRUCTURE_TYPE,
550 p_next: std::ptr::null(),
551 p_std_picture_info: std::ptr::null(),
552 slices_count: Default::default(),
553 p_slices_data_offsets: std::ptr::null(),
554 }
555 }
556}
557impl std::fmt::Debug for VideoDecodeH264PictureInfoEXT {
558 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
559 f.debug_struct("VideoDecodeH264PictureInfoEXT")
560 .field("s_type", &self.s_type)
561 .field("p_next", &self.p_next)
562 .field("p_std_picture_info", &self.p_std_picture_info)
563 .field("slices_count", &self.slices_count)
564 .field("p_slices_data_offsets", &self.p_slices_data_offsets)
565 .finish()
566 }
567}
568impl VideoDecodeH264PictureInfoEXT {
569 #[inline]
570 pub fn into_builder<'a>(self) -> VideoDecodeH264PictureInfoEXTBuilder<'a> {
571 VideoDecodeH264PictureInfoEXTBuilder(self, std::marker::PhantomData)
572 }
573}
574impl<'a> crate::ExtendableFrom<'a, VideoDecodeH264MvcEXT>
575for crate::extensions::ext_video_decode_h264::VideoDecodeH264PictureInfoEXTBuilder<'a> {}
576impl<'a> crate::ExtendableFrom<'a, VideoDecodeH264MvcEXTBuilder<'_>>
577for crate::extensions::ext_video_decode_h264::VideoDecodeH264PictureInfoEXTBuilder<'a> {}
578#[derive(Copy, Clone)]
579#[repr(transparent)]
581pub struct VideoDecodeH264PictureInfoEXTBuilder<'a>(
582 VideoDecodeH264PictureInfoEXT,
583 std::marker::PhantomData<&'a ()>,
584);
585impl<'a> VideoDecodeH264PictureInfoEXTBuilder<'a> {
586 #[inline]
587 pub fn new() -> VideoDecodeH264PictureInfoEXTBuilder<'a> {
588 VideoDecodeH264PictureInfoEXTBuilder(
589 Default::default(),
590 std::marker::PhantomData,
591 )
592 }
593 #[inline]
594 #[must_use]
595 pub fn std_picture_info(
596 mut self,
597 std_picture_info: &'a crate::external::vk_video::StdVideoDecodeH264PictureInfo,
598 ) -> Self {
599 self.0.p_std_picture_info = std_picture_info as _;
600 self
601 }
602 #[inline]
603 #[must_use]
604 pub fn slices_data_offsets(mut self, slices_data_offsets: &'a [u32]) -> Self {
605 self.0.p_slices_data_offsets = slices_data_offsets.as_ptr() as _;
606 self.0.slices_count = slices_data_offsets.len() as _;
607 self
608 }
609 #[inline]
610 pub fn build_dangling(self) -> VideoDecodeH264PictureInfoEXT {
613 self.0
614 }
615}
616impl<'a> std::default::Default for VideoDecodeH264PictureInfoEXTBuilder<'a> {
617 fn default() -> VideoDecodeH264PictureInfoEXTBuilder<'a> {
618 Self::new()
619 }
620}
621impl<'a> std::fmt::Debug for VideoDecodeH264PictureInfoEXTBuilder<'a> {
622 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
623 std::fmt::Debug::fmt(&self.0, f)
624 }
625}
626impl<'a> std::ops::Deref for VideoDecodeH264PictureInfoEXTBuilder<'a> {
627 type Target = VideoDecodeH264PictureInfoEXT;
628 fn deref(&self) -> &Self::Target {
629 &self.0
630 }
631}
632impl<'a> std::ops::DerefMut for VideoDecodeH264PictureInfoEXTBuilder<'a> {
633 fn deref_mut(&mut self) -> &mut Self::Target {
634 &mut self.0
635 }
636}
637#[doc(alias = "VkVideoDecodeH264DpbSlotInfoEXT")]
639#[derive(Copy, Clone)]
640#[repr(C)]
641pub struct VideoDecodeH264DpbSlotInfoEXT {
642 pub s_type: crate::vk1_0::StructureType,
643 pub p_next: *const std::ffi::c_void,
644 pub p_std_reference_info: *const crate::external::vk_video::StdVideoDecodeH264ReferenceInfo,
645}
646impl VideoDecodeH264DpbSlotInfoEXT {
647 pub const STRUCTURE_TYPE: crate::vk1_0::StructureType = crate::vk1_0::StructureType::VIDEO_DECODE_H264_DPB_SLOT_INFO_EXT;
648}
649impl Default for VideoDecodeH264DpbSlotInfoEXT {
650 fn default() -> Self {
651 Self {
652 s_type: Self::STRUCTURE_TYPE,
653 p_next: std::ptr::null(),
654 p_std_reference_info: std::ptr::null(),
655 }
656 }
657}
658impl std::fmt::Debug for VideoDecodeH264DpbSlotInfoEXT {
659 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
660 f.debug_struct("VideoDecodeH264DpbSlotInfoEXT")
661 .field("s_type", &self.s_type)
662 .field("p_next", &self.p_next)
663 .field("p_std_reference_info", &self.p_std_reference_info)
664 .finish()
665 }
666}
667impl VideoDecodeH264DpbSlotInfoEXT {
668 #[inline]
669 pub fn into_builder<'a>(self) -> VideoDecodeH264DpbSlotInfoEXTBuilder<'a> {
670 VideoDecodeH264DpbSlotInfoEXTBuilder(self, std::marker::PhantomData)
671 }
672}
673#[derive(Copy, Clone)]
674#[repr(transparent)]
676pub struct VideoDecodeH264DpbSlotInfoEXTBuilder<'a>(
677 VideoDecodeH264DpbSlotInfoEXT,
678 std::marker::PhantomData<&'a ()>,
679);
680impl<'a> VideoDecodeH264DpbSlotInfoEXTBuilder<'a> {
681 #[inline]
682 pub fn new() -> VideoDecodeH264DpbSlotInfoEXTBuilder<'a> {
683 VideoDecodeH264DpbSlotInfoEXTBuilder(
684 Default::default(),
685 std::marker::PhantomData,
686 )
687 }
688 #[inline]
689 #[must_use]
690 pub fn std_reference_info(
691 mut self,
692 std_reference_info: &'a crate::external::vk_video::StdVideoDecodeH264ReferenceInfo,
693 ) -> Self {
694 self.0.p_std_reference_info = std_reference_info as _;
695 self
696 }
697 #[inline]
698 pub fn build_dangling(self) -> VideoDecodeH264DpbSlotInfoEXT {
701 self.0
702 }
703}
704impl<'a> std::default::Default for VideoDecodeH264DpbSlotInfoEXTBuilder<'a> {
705 fn default() -> VideoDecodeH264DpbSlotInfoEXTBuilder<'a> {
706 Self::new()
707 }
708}
709impl<'a> std::fmt::Debug for VideoDecodeH264DpbSlotInfoEXTBuilder<'a> {
710 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
711 std::fmt::Debug::fmt(&self.0, f)
712 }
713}
714impl<'a> std::ops::Deref for VideoDecodeH264DpbSlotInfoEXTBuilder<'a> {
715 type Target = VideoDecodeH264DpbSlotInfoEXT;
716 fn deref(&self) -> &Self::Target {
717 &self.0
718 }
719}
720impl<'a> std::ops::DerefMut for VideoDecodeH264DpbSlotInfoEXTBuilder<'a> {
721 fn deref_mut(&mut self) -> &mut Self::Target {
722 &mut self.0
723 }
724}
725#[doc(alias = "VkVideoDecodeH264MvcEXT")]
727#[derive(Copy, Clone)]
728#[repr(C)]
729pub struct VideoDecodeH264MvcEXT {
730 pub s_type: crate::vk1_0::StructureType,
731 pub p_next: *const std::ffi::c_void,
732 pub p_std_mvc: *const crate::external::vk_video::StdVideoDecodeH264Mvc,
733}
734impl VideoDecodeH264MvcEXT {
735 pub const STRUCTURE_TYPE: crate::vk1_0::StructureType = crate::vk1_0::StructureType::VIDEO_DECODE_H264_MVC_EXT;
736}
737impl Default for VideoDecodeH264MvcEXT {
738 fn default() -> Self {
739 Self {
740 s_type: Self::STRUCTURE_TYPE,
741 p_next: std::ptr::null(),
742 p_std_mvc: std::ptr::null(),
743 }
744 }
745}
746impl std::fmt::Debug for VideoDecodeH264MvcEXT {
747 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
748 f.debug_struct("VideoDecodeH264MvcEXT")
749 .field("s_type", &self.s_type)
750 .field("p_next", &self.p_next)
751 .field("p_std_mvc", &self.p_std_mvc)
752 .finish()
753 }
754}
755impl VideoDecodeH264MvcEXT {
756 #[inline]
757 pub fn into_builder<'a>(self) -> VideoDecodeH264MvcEXTBuilder<'a> {
758 VideoDecodeH264MvcEXTBuilder(self, std::marker::PhantomData)
759 }
760}
761#[derive(Copy, Clone)]
762#[repr(transparent)]
764pub struct VideoDecodeH264MvcEXTBuilder<'a>(
765 VideoDecodeH264MvcEXT,
766 std::marker::PhantomData<&'a ()>,
767);
768impl<'a> VideoDecodeH264MvcEXTBuilder<'a> {
769 #[inline]
770 pub fn new() -> VideoDecodeH264MvcEXTBuilder<'a> {
771 VideoDecodeH264MvcEXTBuilder(Default::default(), std::marker::PhantomData)
772 }
773 #[inline]
774 #[must_use]
775 pub fn std_mvc(
776 mut self,
777 std_mvc: &'a crate::external::vk_video::StdVideoDecodeH264Mvc,
778 ) -> Self {
779 self.0.p_std_mvc = std_mvc as _;
780 self
781 }
782 #[inline]
783 pub fn build_dangling(self) -> VideoDecodeH264MvcEXT {
786 self.0
787 }
788}
789impl<'a> std::default::Default for VideoDecodeH264MvcEXTBuilder<'a> {
790 fn default() -> VideoDecodeH264MvcEXTBuilder<'a> {
791 Self::new()
792 }
793}
794impl<'a> std::fmt::Debug for VideoDecodeH264MvcEXTBuilder<'a> {
795 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
796 std::fmt::Debug::fmt(&self.0, f)
797 }
798}
799impl<'a> std::ops::Deref for VideoDecodeH264MvcEXTBuilder<'a> {
800 type Target = VideoDecodeH264MvcEXT;
801 fn deref(&self) -> &Self::Target {
802 &self.0
803 }
804}
805impl<'a> std::ops::DerefMut for VideoDecodeH264MvcEXTBuilder<'a> {
806 fn deref_mut(&mut self) -> &mut Self::Target {
807 &mut self.0
808 }
809}
810impl<'a> crate::ExtendableFrom<'a, VideoDecodeH264SessionParametersCreateInfoEXT>
811for crate::extensions::khr_video_queue::VideoSessionParametersCreateInfoKHRBuilder<'a> {}
812impl<
813 'a,
814> crate::ExtendableFrom<'a, VideoDecodeH264SessionParametersCreateInfoEXTBuilder<'_>>
815for crate::extensions::khr_video_queue::VideoSessionParametersCreateInfoKHRBuilder<'a> {}
816impl<'a> crate::ExtendableFrom<'a, VideoDecodeH264SessionParametersAddInfoEXT>
817for crate::extensions::khr_video_queue::VideoSessionParametersUpdateInfoKHRBuilder<'a> {}
818impl<'a> crate::ExtendableFrom<'a, VideoDecodeH264SessionParametersAddInfoEXTBuilder<'_>>
819for crate::extensions::khr_video_queue::VideoSessionParametersUpdateInfoKHRBuilder<'a> {}