gstreamer_vulkan_sys/
lib.rs

1// This file was generated by gir (https://github.com/gtk-rs/gir)
2// from gir-files (https://github.com/gtk-rs/gir-files)
3// from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git)
4// DO NOT EDIT
5
6#![allow(non_camel_case_types, non_upper_case_globals, non_snake_case)]
7#![allow(
8    clippy::approx_constant,
9    clippy::type_complexity,
10    clippy::unreadable_literal,
11    clippy::upper_case_acronyms
12)]
13#![cfg_attr(docsrs, feature(doc_cfg))]
14
15use glib_sys as glib;
16use gstreamer_base_sys as gst_base;
17use gstreamer_sys as gst;
18use gstreamer_video_sys as gst_video;
19
20mod manual;
21
22pub use manual::*;
23
24#[cfg(unix)]
25#[allow(unused_imports)]
26use libc::{dev_t, gid_t, pid_t, socklen_t, uid_t};
27#[allow(unused_imports)]
28use libc::{intptr_t, off_t, size_t, ssize_t, time_t, uintptr_t, FILE};
29#[allow(unused_imports)]
30use std::ffi::{
31    c_char, c_double, c_float, c_int, c_long, c_short, c_uchar, c_uint, c_ulong, c_ushort, c_void,
32};
33
34#[allow(unused_imports)]
35use glib::{gboolean, gconstpointer, gpointer, GType};
36
37// Aliases
38pub type GstVulkanHandleTypedef = u64;
39
40// Enums
41pub type GstVulkanBarrierFlags = c_int;
42pub const GST_VULKAN_BARRIER_FLAG_NONE: GstVulkanBarrierFlags = 0;
43
44pub type GstVulkanBarrierType = c_int;
45pub const GST_VULKAN_BARRIER_NONE: GstVulkanBarrierType = 0;
46pub const GST_VULKAN_BARRIER_TYPE_MEMORY: GstVulkanBarrierType = 1;
47pub const GST_VULKAN_BARRIER_TYPE_BUFFER: GstVulkanBarrierType = 2;
48pub const GST_VULKAN_BARRIER_TYPE_IMAGE: GstVulkanBarrierType = 3;
49
50pub type GstVulkanError = c_int;
51pub const GST_VULKAN_FAILED: GstVulkanError = 0;
52
53pub type GstVulkanFormatScaling = c_int;
54pub const GST_VULKAN_FORMAT_SCALING_UNORM: GstVulkanFormatScaling = 1;
55pub const GST_VULKAN_FORMAT_SCALING_SNORM: GstVulkanFormatScaling = 2;
56pub const GST_VULKAN_FORMAT_SCALING_USCALED: GstVulkanFormatScaling = 3;
57pub const GST_VULKAN_FORMAT_SCALING_SSCALED: GstVulkanFormatScaling = 4;
58pub const GST_VULKAN_FORMAT_SCALING_UINT: GstVulkanFormatScaling = 5;
59pub const GST_VULKAN_FORMAT_SCALING_SINT: GstVulkanFormatScaling = 6;
60pub const GST_VULKAN_FORMAT_SCALING_SRGB: GstVulkanFormatScaling = 7;
61
62pub type GstVulkanHandleType = c_int;
63pub const GST_VULKAN_HANDLE_TYPE_DESCRIPTOR_SET_LAYOUT: GstVulkanHandleType = 1;
64pub const GST_VULKAN_HANDLE_TYPE_PIPELINE_LAYOUT: GstVulkanHandleType = 2;
65pub const GST_VULKAN_HANDLE_TYPE_PIPELINE: GstVulkanHandleType = 3;
66pub const GST_VULKAN_HANDLE_TYPE_RENDER_PASS: GstVulkanHandleType = 4;
67pub const GST_VULKAN_HANDLE_TYPE_SAMPLER: GstVulkanHandleType = 5;
68pub const GST_VULKAN_HANDLE_TYPE_FRAMEBUFFER: GstVulkanHandleType = 6;
69pub const GST_VULKAN_HANDLE_TYPE_SHADER: GstVulkanHandleType = 7;
70#[cfg(feature = "v1_24")]
71#[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
72pub const GST_VULKAN_HANDLE_TYPE_VIDEO_SESSION: GstVulkanHandleType = 8;
73#[cfg(feature = "v1_24")]
74#[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
75pub const GST_VULKAN_HANDLE_TYPE_VIDEO_SESSION_PARAMETERS: GstVulkanHandleType = 9;
76#[cfg(feature = "v1_24")]
77#[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
78pub const GST_VULKAN_HANDLE_TYPE_SAMPLER_YCBCR_CONVERSION: GstVulkanHandleType = 10;
79
80pub type GstVulkanWindowError = c_int;
81pub const GST_VULKAN_WINDOW_ERROR_FAILED: GstVulkanWindowError = 0;
82pub const GST_VULKAN_WINDOW_ERROR_OLD_LIBS: GstVulkanWindowError = 1;
83pub const GST_VULKAN_WINDOW_ERROR_RESOURCE_UNAVAILABLE: GstVulkanWindowError = 2;
84
85// Constants
86pub const GST_CAPS_FEATURE_MEMORY_VULKAN_BUFFER: &[u8] = b"memory:VulkanBuffer\0";
87pub const GST_CAPS_FEATURE_MEMORY_VULKAN_IMAGE: &[u8] = b"memory:VulkanImage\0";
88pub const GST_VULKAN_BUFFER_MEMORY_ALLOCATOR_NAME: &[u8] = b"VulkanBuffer\0";
89pub const GST_VULKAN_DEVICE_CONTEXT_TYPE_STR: &[u8] = b"gst.vulkan.device\0";
90pub const GST_VULKAN_DISPLAY_CONTEXT_TYPE_STR: &[u8] = b"gst.vulkan.display\0";
91pub const GST_VULKAN_IMAGE_MEMORY_ALLOCATOR_NAME: &[u8] = b"VulkanImage\0";
92pub const GST_VULKAN_INSTANCE_CONTEXT_TYPE_STR: &[u8] = b"gst.vulkan.instance\0";
93pub const GST_VULKAN_MAX_COMPONENTS: c_int = 4;
94pub const GST_VULKAN_MEMORY_ALLOCATOR_NAME: &[u8] = b"Vulkan\0";
95pub const GST_VULKAN_QUEUE_CONTEXT_TYPE_STR: &[u8] = b"gst.vulkan.queue\0";
96pub const GST_VULKAN_SWAPPER_VIDEO_FORMATS: &[u8] = b" { RGBA, BGRA, RGB, BGR } \0";
97
98// Flags
99pub type GstVulkanDisplayType = c_uint;
100pub const GST_VULKAN_DISPLAY_TYPE_NONE: GstVulkanDisplayType = 0;
101pub const GST_VULKAN_DISPLAY_TYPE_XCB: GstVulkanDisplayType = 1;
102pub const GST_VULKAN_DISPLAY_TYPE_WAYLAND: GstVulkanDisplayType = 2;
103pub const GST_VULKAN_DISPLAY_TYPE_COCOA: GstVulkanDisplayType = 4;
104pub const GST_VULKAN_DISPLAY_TYPE_IOS: GstVulkanDisplayType = 8;
105pub const GST_VULKAN_DISPLAY_TYPE_WIN32: GstVulkanDisplayType = 16;
106pub const GST_VULKAN_DISPLAY_TYPE_ANDROID: GstVulkanDisplayType = 32;
107pub const GST_VULKAN_DISPLAY_TYPE_ANY: GstVulkanDisplayType = 4294967295;
108
109pub type GstVulkanFormatFlags = c_uint;
110pub const GST_VULKAN_FORMAT_FLAG_YUV: GstVulkanFormatFlags = 1;
111pub const GST_VULKAN_FORMAT_FLAG_RGB: GstVulkanFormatFlags = 2;
112pub const GST_VULKAN_FORMAT_FLAG_ALPHA: GstVulkanFormatFlags = 4;
113pub const GST_VULKAN_FORMAT_FLAG_LE: GstVulkanFormatFlags = 8;
114pub const GST_VULKAN_FORMAT_FLAG_COMPLEX: GstVulkanFormatFlags = 16;
115
116// Callbacks
117pub type GstVulkanDeviceForEachQueueFunc =
118    Option<unsafe extern "C" fn(*mut GstVulkanDevice, *mut GstVulkanQueue, gpointer) -> gboolean>;
119pub type GstVulkanHandleDestroyNotify =
120    Option<unsafe extern "C" fn(*mut GstVulkanHandle, gpointer)>;
121pub type GstVulkanImageMemoryFindViewFunc =
122    Option<unsafe extern "C" fn(*mut GstVulkanImageView, gpointer) -> gboolean>;
123pub type GstVulkanTrashListAdd =
124    Option<unsafe extern "C" fn(*mut GstVulkanTrashList, *mut GstVulkanTrash) -> gboolean>;
125pub type GstVulkanTrashListGC = Option<unsafe extern "C" fn(*mut GstVulkanTrashList)>;
126pub type GstVulkanTrashListWait =
127    Option<unsafe extern "C" fn(*mut GstVulkanTrashList, u64) -> gboolean>;
128pub type GstVulkanTrashNotify = Option<unsafe extern "C" fn(*mut GstVulkanDevice, gpointer)>;
129
130// Records
131#[repr(C)]
132#[allow(dead_code)]
133pub struct GstVulkanBarrierBufferInfo {
134    _truncated_record_marker: c_void,
135    // /*Ignored*/field parent has incomplete type
136}
137
138impl ::std::fmt::Debug for GstVulkanBarrierBufferInfo {
139    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
140        f.debug_struct(&format!("GstVulkanBarrierBufferInfo @ {self:p}"))
141            .finish()
142    }
143}
144
145#[repr(C)]
146#[allow(dead_code)]
147pub struct GstVulkanBarrierImageInfo {
148    _truncated_record_marker: c_void,
149    // /*Ignored*/field parent has incomplete type
150}
151
152impl ::std::fmt::Debug for GstVulkanBarrierImageInfo {
153    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
154        f.debug_struct(&format!("GstVulkanBarrierImageInfo @ {self:p}"))
155            .finish()
156    }
157}
158
159#[repr(C)]
160#[allow(dead_code)]
161pub struct GstVulkanBarrierMemoryInfo {
162    pub type_: GstVulkanBarrierType,
163    pub flags: GstVulkanBarrierFlags,
164    pub queue: *mut GstVulkanQueue,
165    pub pipeline_stages: u64,
166    pub access_flags: u64,
167    _truncated_record_marker: c_void,
168    // /*Ignored*/field semaphore has incomplete type
169}
170
171impl ::std::fmt::Debug for GstVulkanBarrierMemoryInfo {
172    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
173        f.debug_struct(&format!("GstVulkanBarrierMemoryInfo @ {self:p}"))
174            .field("type_", &self.type_)
175            .field("flags", &self.flags)
176            .field("queue", &self.queue)
177            .field("pipeline_stages", &self.pipeline_stages)
178            .field("access_flags", &self.access_flags)
179            .finish()
180    }
181}
182
183#[repr(C)]
184#[allow(dead_code)]
185pub struct GstVulkanBufferMemory {
186    pub parent: gst::GstMemory,
187    pub device: *mut GstVulkanDevice,
188    _truncated_record_marker: c_void,
189    // /*Ignored*/field buffer has incomplete type
190}
191
192impl ::std::fmt::Debug for GstVulkanBufferMemory {
193    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
194        f.debug_struct(&format!("GstVulkanBufferMemory @ {self:p}"))
195            .field("parent", &self.parent)
196            .field("device", &self.device)
197            .finish()
198    }
199}
200
201#[derive(Copy, Clone)]
202#[repr(C)]
203pub struct GstVulkanBufferMemoryAllocatorClass {
204    pub parent_class: gst::GstAllocatorClass,
205    pub _reserved: [gpointer; 4],
206}
207
208impl ::std::fmt::Debug for GstVulkanBufferMemoryAllocatorClass {
209    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
210        f.debug_struct(&format!("GstVulkanBufferMemoryAllocatorClass @ {self:p}"))
211            .field("parent_class", &self.parent_class)
212            .finish()
213    }
214}
215
216#[derive(Copy, Clone)]
217#[repr(C)]
218pub struct GstVulkanBufferPoolClass {
219    pub parent_class: gst::GstBufferPoolClass,
220    pub _padding: [gpointer; 4],
221}
222
223impl ::std::fmt::Debug for GstVulkanBufferPoolClass {
224    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
225        f.debug_struct(&format!("GstVulkanBufferPoolClass @ {self:p}"))
226            .field("parent_class", &self.parent_class)
227            .finish()
228    }
229}
230
231#[repr(C)]
232#[allow(dead_code)]
233pub struct _GstVulkanBufferPoolPrivate {
234    _data: [u8; 0],
235    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
236}
237
238pub type GstVulkanBufferPoolPrivate = _GstVulkanBufferPoolPrivate;
239
240#[repr(C)]
241#[allow(dead_code)]
242pub struct GstVulkanCommandBuffer {
243    pub parent: gst::GstMiniObject,
244    _truncated_record_marker: c_void,
245    // /*Ignored*/field cmd has incomplete type
246}
247
248impl ::std::fmt::Debug for GstVulkanCommandBuffer {
249    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
250        f.debug_struct(&format!("GstVulkanCommandBuffer @ {self:p}"))
251            .field("parent", &self.parent)
252            .finish()
253    }
254}
255
256#[derive(Copy, Clone)]
257#[repr(C)]
258pub struct GstVulkanCommandPoolClass {
259    pub parent_class: gst::GstObjectClass,
260    pub _reserved: [gpointer; 4],
261}
262
263impl ::std::fmt::Debug for GstVulkanCommandPoolClass {
264    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
265        f.debug_struct(&format!("GstVulkanCommandPoolClass @ {self:p}"))
266            .field("parent_class", &self.parent_class)
267            .finish()
268    }
269}
270
271#[repr(C)]
272#[allow(dead_code)]
273pub struct _GstVulkanCommandPoolPrivate {
274    _data: [u8; 0],
275    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
276}
277
278pub type GstVulkanCommandPoolPrivate = _GstVulkanCommandPoolPrivate;
279
280#[derive(Copy, Clone)]
281#[repr(C)]
282pub struct GstVulkanDescriptorCacheClass {
283    pub parent_class: GstVulkanHandlePoolClass,
284    pub _reserved: [gpointer; 4],
285}
286
287impl ::std::fmt::Debug for GstVulkanDescriptorCacheClass {
288    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
289        f.debug_struct(&format!("GstVulkanDescriptorCacheClass @ {self:p}"))
290            .field("parent_class", &self.parent_class)
291            .finish()
292    }
293}
294
295#[repr(C)]
296#[allow(dead_code)]
297pub struct _GstVulkanDescriptorCachePrivate {
298    _data: [u8; 0],
299    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
300}
301
302pub type GstVulkanDescriptorCachePrivate = _GstVulkanDescriptorCachePrivate;
303
304#[derive(Copy, Clone)]
305#[repr(C)]
306pub struct GstVulkanDescriptorPoolClass {
307    pub parent_class: gst::GstObjectClass,
308    pub _reserved: [gpointer; 4],
309}
310
311impl ::std::fmt::Debug for GstVulkanDescriptorPoolClass {
312    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
313        f.debug_struct(&format!("GstVulkanDescriptorPoolClass @ {self:p}"))
314            .field("parent_class", &self.parent_class)
315            .finish()
316    }
317}
318
319#[repr(C)]
320#[allow(dead_code)]
321pub struct _GstVulkanDescriptorPoolPrivate {
322    _data: [u8; 0],
323    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
324}
325
326pub type GstVulkanDescriptorPoolPrivate = _GstVulkanDescriptorPoolPrivate;
327
328#[repr(C)]
329#[allow(dead_code)]
330pub struct GstVulkanDescriptorSet {
331    pub parent: gst::GstMiniObject,
332    _truncated_record_marker: c_void,
333    // /*Ignored*/field set has incomplete type
334}
335
336impl ::std::fmt::Debug for GstVulkanDescriptorSet {
337    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
338        f.debug_struct(&format!("GstVulkanDescriptorSet @ {self:p}"))
339            .field("parent", &self.parent)
340            .finish()
341    }
342}
343
344#[derive(Copy, Clone)]
345#[repr(C)]
346pub struct GstVulkanDeviceClass {
347    pub parent_class: gst::GstObjectClass,
348    pub _reserved: [gpointer; 4],
349}
350
351impl ::std::fmt::Debug for GstVulkanDeviceClass {
352    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
353        f.debug_struct(&format!("GstVulkanDeviceClass @ {self:p}"))
354            .field("parent_class", &self.parent_class)
355            .finish()
356    }
357}
358
359#[repr(C)]
360#[allow(dead_code)]
361pub struct _GstVulkanDevicePrivate {
362    _data: [u8; 0],
363    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
364}
365
366pub type GstVulkanDevicePrivate = _GstVulkanDevicePrivate;
367
368#[derive(Copy, Clone)]
369#[repr(C)]
370pub struct GstVulkanDisplayClass {
371    pub object_class: gst::GstObjectClass,
372    pub get_handle: Option<unsafe extern "C" fn(*mut GstVulkanDisplay) -> gpointer>,
373    pub create_window: Option<unsafe extern "C" fn(*mut GstVulkanDisplay) -> *mut GstVulkanWindow>,
374    pub _reserved: [gpointer; 4],
375}
376
377impl ::std::fmt::Debug for GstVulkanDisplayClass {
378    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
379        f.debug_struct(&format!("GstVulkanDisplayClass @ {self:p}"))
380            .field("object_class", &self.object_class)
381            .field("get_handle", &self.get_handle)
382            .field("create_window", &self.create_window)
383            .finish()
384    }
385}
386
387#[repr(C)]
388#[allow(dead_code)]
389pub struct _GstVulkanDisplayPrivate {
390    _data: [u8; 0],
391    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
392}
393
394pub type GstVulkanDisplayPrivate = _GstVulkanDisplayPrivate;
395
396#[derive(Copy, Clone)]
397#[repr(C)]
398pub struct GstVulkanEncodeQueryResult {
399    pub offset: u32,
400    pub data_size: u32,
401    pub status: u32,
402}
403
404impl ::std::fmt::Debug for GstVulkanEncodeQueryResult {
405    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
406        f.debug_struct(&format!("GstVulkanEncodeQueryResult @ {self:p}"))
407            .field("offset", &self.offset)
408            .field("data_size", &self.data_size)
409            .field("status", &self.status)
410            .finish()
411    }
412}
413
414#[repr(C)]
415#[allow(dead_code)]
416pub struct GstVulkanFence {
417    pub parent: gst::GstMiniObject,
418    pub device: *mut GstVulkanDevice,
419    pub cache: *mut GstVulkanFenceCache,
420    _truncated_record_marker: c_void,
421    // /*Ignored*/field fence has incomplete type
422}
423
424impl ::std::fmt::Debug for GstVulkanFence {
425    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
426        f.debug_struct(&format!("GstVulkanFence @ {self:p}"))
427            .field("parent", &self.parent)
428            .field("device", &self.device)
429            .field("cache", &self.cache)
430            .finish()
431    }
432}
433
434#[derive(Copy, Clone)]
435#[repr(C)]
436pub struct GstVulkanFenceCacheClass {
437    pub parent_class: GstVulkanHandlePoolClass,
438    pub _reserved: [gpointer; 4],
439}
440
441impl ::std::fmt::Debug for GstVulkanFenceCacheClass {
442    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
443        f.debug_struct(&format!("GstVulkanFenceCacheClass @ {self:p}"))
444            .field("parent_class", &self.parent_class)
445            .finish()
446    }
447}
448
449#[repr(C)]
450#[allow(dead_code)]
451pub struct GstVulkanFormatInfo {
452    _truncated_record_marker: c_void,
453    // /*Ignored*/field format has incomplete type
454}
455
456impl ::std::fmt::Debug for GstVulkanFormatInfo {
457    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
458        f.debug_struct(&format!("GstVulkanFormatInfo @ {self:p}"))
459            .finish()
460    }
461}
462
463#[repr(C)]
464#[allow(dead_code)]
465pub struct GstVulkanFormatMap {
466    pub format: gst_video::GstVideoFormat,
467    _truncated_record_marker: c_void,
468    // /*Ignored*/field vkfrmt has incomplete type
469}
470
471impl ::std::fmt::Debug for GstVulkanFormatMap {
472    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
473        f.debug_struct(&format!("GstVulkanFormatMap @ {self:p}"))
474            .field("format", &self.format)
475            .finish()
476    }
477}
478
479#[derive(Copy, Clone)]
480#[repr(C)]
481pub struct GstVulkanFullScreenQuadClass {
482    pub parent_class: gst::GstObjectClass,
483    pub _reserved: [gpointer; 4],
484}
485
486impl ::std::fmt::Debug for GstVulkanFullScreenQuadClass {
487    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
488        f.debug_struct(&format!("GstVulkanFullScreenQuadClass @ {self:p}"))
489            .field("parent_class", &self.parent_class)
490            .finish()
491    }
492}
493
494#[repr(C)]
495#[allow(dead_code)]
496pub struct _GstVulkanFullScreenQuadPrivate {
497    _data: [u8; 0],
498    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
499}
500
501pub type GstVulkanFullScreenQuadPrivate = _GstVulkanFullScreenQuadPrivate;
502
503#[derive(Copy, Clone)]
504#[repr(C)]
505pub struct GstVulkanHandle {
506    pub parent: gst::GstMiniObject,
507    pub device: *mut GstVulkanDevice,
508    pub type_: GstVulkanHandleType,
509    pub handle: GstVulkanHandleTypedef,
510    pub notify: GstVulkanHandleDestroyNotify,
511    pub user_data: gpointer,
512    pub _reserved: [gpointer; 4],
513}
514
515impl ::std::fmt::Debug for GstVulkanHandle {
516    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
517        f.debug_struct(&format!("GstVulkanHandle @ {self:p}"))
518            .field("parent", &self.parent)
519            .field("device", &self.device)
520            .field("type_", &self.type_)
521            .field("handle", &self.handle)
522            .field("notify", &self.notify)
523            .field("user_data", &self.user_data)
524            .finish()
525    }
526}
527
528#[derive(Copy, Clone)]
529#[repr(C)]
530pub struct GstVulkanHandlePoolClass {
531    pub parent: gst::GstObjectClass,
532    pub alloc:
533        Option<unsafe extern "C" fn(*mut GstVulkanHandlePool, *mut *mut glib::GError) -> gpointer>,
534    pub acquire:
535        Option<unsafe extern "C" fn(*mut GstVulkanHandlePool, *mut *mut glib::GError) -> gpointer>,
536    pub release: Option<unsafe extern "C" fn(*mut GstVulkanHandlePool, gpointer)>,
537    pub free: Option<unsafe extern "C" fn(*mut GstVulkanHandlePool, gpointer)>,
538    pub _padding: [gpointer; 4],
539}
540
541impl ::std::fmt::Debug for GstVulkanHandlePoolClass {
542    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
543        f.debug_struct(&format!("GstVulkanHandlePoolClass @ {self:p}"))
544            .field("parent", &self.parent)
545            .field("alloc", &self.alloc)
546            .field("acquire", &self.acquire)
547            .field("release", &self.release)
548            .field("free", &self.free)
549            .finish()
550    }
551}
552
553#[derive(Copy, Clone)]
554#[repr(C)]
555pub struct GstVulkanImageBufferPoolClass {
556    pub parent_class: gst::GstBufferPoolClass,
557    pub _reserved: [gpointer; 4],
558}
559
560impl ::std::fmt::Debug for GstVulkanImageBufferPoolClass {
561    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
562        f.debug_struct(&format!("GstVulkanImageBufferPoolClass @ {self:p}"))
563            .field("parent_class", &self.parent_class)
564            .finish()
565    }
566}
567
568#[repr(C)]
569#[allow(dead_code)]
570pub struct _GstVulkanImageBufferPoolPrivate {
571    _data: [u8; 0],
572    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
573}
574
575pub type GstVulkanImageBufferPoolPrivate = _GstVulkanImageBufferPoolPrivate;
576
577#[repr(C)]
578#[allow(dead_code)]
579pub struct GstVulkanImageMemory {
580    pub parent: gst::GstMemory,
581    pub device: *mut GstVulkanDevice,
582    _truncated_record_marker: c_void,
583    // /*Ignored*/field image has incomplete type
584}
585
586impl ::std::fmt::Debug for GstVulkanImageMemory {
587    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
588        f.debug_struct(&format!("GstVulkanImageMemory @ {self:p}"))
589            .field("parent", &self.parent)
590            .field("device", &self.device)
591            .finish()
592    }
593}
594
595#[derive(Copy, Clone)]
596#[repr(C)]
597pub struct GstVulkanImageMemoryAllocatorClass {
598    pub parent_class: gst::GstAllocatorClass,
599    pub _reserved: [gpointer; 4],
600}
601
602impl ::std::fmt::Debug for GstVulkanImageMemoryAllocatorClass {
603    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
604        f.debug_struct(&format!("GstVulkanImageMemoryAllocatorClass @ {self:p}"))
605            .field("parent_class", &self.parent_class)
606            .finish()
607    }
608}
609
610#[repr(C)]
611#[allow(dead_code)]
612pub struct GstVulkanImageView {
613    pub parent: gst::GstMiniObject,
614    pub device: *mut GstVulkanDevice,
615    pub image: *mut GstVulkanImageMemory,
616    _truncated_record_marker: c_void,
617    // /*Ignored*/field view has incomplete type
618}
619
620impl ::std::fmt::Debug for GstVulkanImageView {
621    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
622        f.debug_struct(&format!("GstVulkanImageView @ {self:p}"))
623            .field("parent", &self.parent)
624            .field("device", &self.device)
625            .field("image", &self.image)
626            .finish()
627    }
628}
629
630#[derive(Copy, Clone)]
631#[repr(C)]
632pub struct GstVulkanInstanceClass {
633    pub parent_class: gst::GstObjectClass,
634    pub _reserved: [gpointer; 4],
635}
636
637impl ::std::fmt::Debug for GstVulkanInstanceClass {
638    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
639        f.debug_struct(&format!("GstVulkanInstanceClass @ {self:p}"))
640            .field("parent_class", &self.parent_class)
641            .finish()
642    }
643}
644
645#[repr(C)]
646#[allow(dead_code)]
647pub struct _GstVulkanInstancePrivate {
648    _data: [u8; 0],
649    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
650}
651
652pub type GstVulkanInstancePrivate = _GstVulkanInstancePrivate;
653
654#[repr(C)]
655#[allow(dead_code)]
656pub struct GstVulkanMemory {
657    pub mem: gst::GstMemory,
658    pub device: *mut GstVulkanDevice,
659    _truncated_record_marker: c_void,
660    // /*Ignored*/field mem_ptr has incomplete type
661}
662
663impl ::std::fmt::Debug for GstVulkanMemory {
664    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
665        f.debug_struct(&format!("GstVulkanMemory @ {self:p}"))
666            .field("mem", &self.mem)
667            .field("device", &self.device)
668            .finish()
669    }
670}
671
672#[derive(Copy, Clone)]
673#[repr(C)]
674pub struct GstVulkanMemoryAllocatorClass {
675    pub parent_class: gst::GstAllocatorClass,
676    pub _reserved: [gpointer; 4],
677}
678
679impl ::std::fmt::Debug for GstVulkanMemoryAllocatorClass {
680    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
681        f.debug_struct(&format!("GstVulkanMemoryAllocatorClass @ {self:p}"))
682            .field("parent_class", &self.parent_class)
683            .finish()
684    }
685}
686
687#[derive(Copy, Clone)]
688#[repr(C)]
689pub struct GstVulkanOperationClass {
690    pub parent_class: gst::GstObjectClass,
691    pub _reserved: [gpointer; 4],
692}
693
694impl ::std::fmt::Debug for GstVulkanOperationClass {
695    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
696        f.debug_struct(&format!("GstVulkanOperationClass @ {self:p}"))
697            .field("parent_class", &self.parent_class)
698            .finish()
699    }
700}
701
702#[repr(C)]
703#[allow(dead_code)]
704pub struct _GstVulkanOperationPrivate {
705    _data: [u8; 0],
706    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
707}
708
709pub type GstVulkanOperationPrivate = _GstVulkanOperationPrivate;
710
711#[derive(Copy, Clone)]
712#[repr(C)]
713pub struct GstVulkanPhysicalDeviceClass {
714    pub parent_class: gst::GstObjectClass,
715    pub _reserved: [gpointer; 4],
716}
717
718impl ::std::fmt::Debug for GstVulkanPhysicalDeviceClass {
719    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
720        f.debug_struct(&format!("GstVulkanPhysicalDeviceClass @ {self:p}"))
721            .field("parent_class", &self.parent_class)
722            .finish()
723    }
724}
725
726#[repr(C)]
727#[allow(dead_code)]
728pub struct _GstVulkanPhysicalDevicePrivate {
729    _data: [u8; 0],
730    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
731}
732
733pub type GstVulkanPhysicalDevicePrivate = _GstVulkanPhysicalDevicePrivate;
734
735#[derive(Copy, Clone)]
736#[repr(C)]
737pub struct GstVulkanQueueClass {
738    pub parent_class: gst::GstObjectClass,
739    pub _reserved: [gpointer; 4],
740}
741
742impl ::std::fmt::Debug for GstVulkanQueueClass {
743    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
744        f.debug_struct(&format!("GstVulkanQueueClass @ {self:p}"))
745            .field("parent_class", &self.parent_class)
746            .finish()
747    }
748}
749
750#[derive(Copy, Clone)]
751#[repr(C)]
752pub struct GstVulkanQueueFamilyOps {
753    pub video: u32,
754    pub query_result_status: gboolean,
755}
756
757impl ::std::fmt::Debug for GstVulkanQueueFamilyOps {
758    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
759        f.debug_struct(&format!("GstVulkanQueueFamilyOps @ {self:p}"))
760            .field("video", &self.video)
761            .field("query_result_status", &self.query_result_status)
762            .finish()
763    }
764}
765
766#[repr(C)]
767#[allow(dead_code)]
768pub struct _GstVulkanQueuePrivate {
769    _data: [u8; 0],
770    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
771}
772
773pub type GstVulkanQueuePrivate = _GstVulkanQueuePrivate;
774
775#[derive(Copy, Clone)]
776#[repr(C)]
777pub struct GstVulkanSwapperClass {
778    pub parent_class: gst::GstObjectClass,
779    pub _reserved: [gpointer; 4],
780}
781
782impl ::std::fmt::Debug for GstVulkanSwapperClass {
783    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
784        f.debug_struct(&format!("GstVulkanSwapperClass @ {self:p}"))
785            .field("parent_class", &self.parent_class)
786            .finish()
787    }
788}
789
790#[repr(C)]
791#[allow(dead_code)]
792pub struct _GstVulkanSwapperPrivate {
793    _data: [u8; 0],
794    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
795}
796
797pub type GstVulkanSwapperPrivate = _GstVulkanSwapperPrivate;
798
799#[derive(Copy, Clone)]
800#[repr(C)]
801pub struct GstVulkanTrash {
802    pub parent: gst::GstMiniObject,
803    pub cache: *mut GstVulkanTrashList,
804    pub fence: *mut GstVulkanFence,
805    pub notify: GstVulkanTrashNotify,
806    pub user_data: gpointer,
807    pub _padding: [gpointer; 4],
808}
809
810impl ::std::fmt::Debug for GstVulkanTrash {
811    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
812        f.debug_struct(&format!("GstVulkanTrash @ {self:p}"))
813            .field("parent", &self.parent)
814            .field("cache", &self.cache)
815            .field("fence", &self.fence)
816            .field("notify", &self.notify)
817            .field("user_data", &self.user_data)
818            .finish()
819    }
820}
821
822#[derive(Copy, Clone)]
823#[repr(C)]
824pub struct GstVulkanTrashFenceListClass {
825    pub parent_class: GstVulkanTrashListClass,
826}
827
828impl ::std::fmt::Debug for GstVulkanTrashFenceListClass {
829    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
830        f.debug_struct(&format!("GstVulkanTrashFenceListClass @ {self:p}"))
831            .field("parent_class", &self.parent_class)
832            .finish()
833    }
834}
835
836#[derive(Copy, Clone)]
837#[repr(C)]
838pub struct GstVulkanTrashListClass {
839    pub parent_class: GstVulkanHandlePoolClass,
840    pub add_func: GstVulkanTrashListAdd,
841    pub gc_func: GstVulkanTrashListGC,
842    pub wait_func: GstVulkanTrashListWait,
843    pub _reserved: [gpointer; 4],
844}
845
846impl ::std::fmt::Debug for GstVulkanTrashListClass {
847    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
848        f.debug_struct(&format!("GstVulkanTrashListClass @ {self:p}"))
849            .field("parent_class", &self.parent_class)
850            .field("add_func", &self.add_func)
851            .field("gc_func", &self.gc_func)
852            .field("wait_func", &self.wait_func)
853            .finish()
854    }
855}
856
857#[derive(Copy, Clone)]
858#[repr(C)]
859pub struct GstVulkanVideoFilterClass {
860    pub parent_class: gst_base::GstBaseTransformClass,
861    pub _reserved: [gpointer; 4],
862}
863
864impl ::std::fmt::Debug for GstVulkanVideoFilterClass {
865    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
866        f.debug_struct(&format!("GstVulkanVideoFilterClass @ {self:p}"))
867            .field("parent_class", &self.parent_class)
868            .finish()
869    }
870}
871
872#[derive(Copy, Clone)]
873#[repr(C)]
874pub struct GstVulkanWindowClass {
875    pub parent_class: gst::GstObjectClass,
876    pub open:
877        Option<unsafe extern "C" fn(*mut GstVulkanWindow, *mut *mut glib::GError) -> gboolean>,
878    pub close: Option<unsafe extern "C" fn(*mut GstVulkanWindow)>,
879    pub get_surface: Option<
880        unsafe extern "C" fn(*mut GstVulkanWindow, *mut *mut glib::GError) -> vulkan::VkSurfaceKHR,
881    >,
882    pub get_presentation_support:
883        Option<unsafe extern "C" fn(*mut GstVulkanWindow, *mut GstVulkanDevice, u32) -> gboolean>,
884    pub set_window_handle: Option<unsafe extern "C" fn(*mut GstVulkanWindow, uintptr_t)>,
885    pub get_surface_dimensions:
886        Option<unsafe extern "C" fn(*mut GstVulkanWindow, *mut c_uint, *mut c_uint)>,
887    pub handle_events: Option<unsafe extern "C" fn(*mut GstVulkanWindow, gboolean)>,
888    pub _reserved: [gpointer; 4],
889}
890
891impl ::std::fmt::Debug for GstVulkanWindowClass {
892    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
893        f.debug_struct(&format!("GstVulkanWindowClass @ {self:p}"))
894            .field("parent_class", &self.parent_class)
895            .field("open", &self.open)
896            .field("close", &self.close)
897            .field("get_surface", &self.get_surface)
898            .field("get_presentation_support", &self.get_presentation_support)
899            .field("set_window_handle", &self.set_window_handle)
900            .field("get_surface_dimensions", &self.get_surface_dimensions)
901            .field("handle_events", &self.handle_events)
902            .finish()
903    }
904}
905
906#[repr(C)]
907#[allow(dead_code)]
908pub struct _GstVulkanWindowPrivate {
909    _data: [u8; 0],
910    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
911}
912
913pub type GstVulkanWindowPrivate = _GstVulkanWindowPrivate;
914
915// Classes
916#[derive(Copy, Clone)]
917#[repr(C)]
918pub struct GstVulkanBufferMemoryAllocator {
919    pub parent: gst::GstAllocator,
920    pub _reserved: [gpointer; 4],
921}
922
923impl ::std::fmt::Debug for GstVulkanBufferMemoryAllocator {
924    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
925        f.debug_struct(&format!("GstVulkanBufferMemoryAllocator @ {self:p}"))
926            .field("parent", &self.parent)
927            .finish()
928    }
929}
930
931#[derive(Copy, Clone)]
932#[repr(C)]
933pub struct GstVulkanBufferPool {
934    pub bufferpool: gst::GstBufferPool,
935    pub device: *mut GstVulkanDevice,
936    pub _padding: [gpointer; 4],
937}
938
939impl ::std::fmt::Debug for GstVulkanBufferPool {
940    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
941        f.debug_struct(&format!("GstVulkanBufferPool @ {self:p}"))
942            .field("bufferpool", &self.bufferpool)
943            .field("device", &self.device)
944            .finish()
945    }
946}
947
948#[repr(C)]
949#[allow(dead_code)]
950pub struct GstVulkanCommandPool {
951    pub parent: gst::GstObject,
952    pub queue: *mut GstVulkanQueue,
953    _truncated_record_marker: c_void,
954    // /*Ignored*/field pool has incomplete type
955}
956
957impl ::std::fmt::Debug for GstVulkanCommandPool {
958    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
959        f.debug_struct(&format!("GstVulkanCommandPool @ {self:p}"))
960            .field("parent", &self.parent)
961            .field("queue", &self.queue)
962            .finish()
963    }
964}
965
966#[derive(Copy, Clone)]
967#[repr(C)]
968pub struct GstVulkanDescriptorCache {
969    pub parent: GstVulkanHandlePool,
970    pub pool: *mut GstVulkanDescriptorPool,
971    pub _reserved: [gpointer; 4],
972}
973
974impl ::std::fmt::Debug for GstVulkanDescriptorCache {
975    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
976        f.debug_struct(&format!("GstVulkanDescriptorCache @ {self:p}"))
977            .field("parent", &self.parent)
978            .field("pool", &self.pool)
979            .finish()
980    }
981}
982
983#[repr(C)]
984#[allow(dead_code)]
985pub struct GstVulkanDescriptorPool {
986    pub parent: gst::GstObject,
987    pub device: *mut GstVulkanDevice,
988    _truncated_record_marker: c_void,
989    // /*Ignored*/field pool has incomplete type
990}
991
992impl ::std::fmt::Debug for GstVulkanDescriptorPool {
993    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
994        f.debug_struct(&format!("GstVulkanDescriptorPool @ {self:p}"))
995            .field("parent", &self.parent)
996            .field("device", &self.device)
997            .finish()
998    }
999}
1000
1001#[repr(C)]
1002#[allow(dead_code)]
1003pub struct GstVulkanDevice {
1004    pub parent: gst::GstObject,
1005    pub instance: *mut GstVulkanInstance,
1006    pub physical_device: *mut GstVulkanPhysicalDevice,
1007    _truncated_record_marker: c_void,
1008    // /*Ignored*/field device has incomplete type
1009}
1010
1011impl ::std::fmt::Debug for GstVulkanDevice {
1012    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1013        f.debug_struct(&format!("GstVulkanDevice @ {self:p}"))
1014            .field("parent", &self.parent)
1015            .field("instance", &self.instance)
1016            .field("physical_device", &self.physical_device)
1017            .finish()
1018    }
1019}
1020
1021#[derive(Copy, Clone)]
1022#[repr(C)]
1023pub struct GstVulkanDisplay {
1024    pub object: gst::GstObject,
1025    pub type_: GstVulkanDisplayType,
1026    pub instance: *mut GstVulkanInstance,
1027    pub windows: *mut glib::GList,
1028    pub main_context: *mut glib::GMainContext,
1029    pub main_loop: *mut glib::GMainLoop,
1030    pub event_source: *mut glib::GSource,
1031    pub _reserved: [gpointer; 4],
1032}
1033
1034impl ::std::fmt::Debug for GstVulkanDisplay {
1035    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1036        f.debug_struct(&format!("GstVulkanDisplay @ {self:p}"))
1037            .finish()
1038    }
1039}
1040
1041#[derive(Copy, Clone)]
1042#[repr(C)]
1043pub struct GstVulkanFenceCache {
1044    pub parent: GstVulkanHandlePool,
1045    pub _reserved: [gpointer; 4],
1046}
1047
1048impl ::std::fmt::Debug for GstVulkanFenceCache {
1049    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1050        f.debug_struct(&format!("GstVulkanFenceCache @ {self:p}"))
1051            .field("parent", &self.parent)
1052            .finish()
1053    }
1054}
1055
1056#[derive(Copy, Clone)]
1057#[repr(C)]
1058pub struct GstVulkanFullScreenQuad {
1059    pub parent: gst::GstObject,
1060    pub out_info: gst_video::GstVideoInfo,
1061    pub in_info: gst_video::GstVideoInfo,
1062    pub queue: *mut GstVulkanQueue,
1063    pub render_pass: *mut GstVulkanHandle,
1064    pub pipeline_layout: *mut GstVulkanHandle,
1065    pub graphics_pipeline: *mut GstVulkanHandle,
1066    pub descriptor_set_layout: *mut GstVulkanHandle,
1067    pub descriptor_cache: *mut GstVulkanDescriptorCache,
1068    pub descriptor_set: *mut GstVulkanDescriptorSet,
1069    pub framebuffer: *mut GstVulkanHandle,
1070    pub sampler: *mut GstVulkanHandle,
1071    pub cmd_pool: *mut GstVulkanCommandPool,
1072    pub trash_list: *mut GstVulkanTrashList,
1073    pub last_fence: *mut GstVulkanFence,
1074    pub _reserved: [gpointer; 4],
1075}
1076
1077impl ::std::fmt::Debug for GstVulkanFullScreenQuad {
1078    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1079        f.debug_struct(&format!("GstVulkanFullScreenQuad @ {self:p}"))
1080            .field("parent", &self.parent)
1081            .field("out_info", &self.out_info)
1082            .field("in_info", &self.in_info)
1083            .field("queue", &self.queue)
1084            .field("render_pass", &self.render_pass)
1085            .field("pipeline_layout", &self.pipeline_layout)
1086            .field("graphics_pipeline", &self.graphics_pipeline)
1087            .field("descriptor_set_layout", &self.descriptor_set_layout)
1088            .field("descriptor_cache", &self.descriptor_cache)
1089            .field("descriptor_set", &self.descriptor_set)
1090            .field("framebuffer", &self.framebuffer)
1091            .field("sampler", &self.sampler)
1092            .field("cmd_pool", &self.cmd_pool)
1093            .field("trash_list", &self.trash_list)
1094            .field("last_fence", &self.last_fence)
1095            .finish()
1096    }
1097}
1098
1099#[derive(Copy, Clone)]
1100#[repr(C)]
1101pub struct GstVulkanHandlePool {
1102    pub parent: gst::GstObject,
1103    pub device: *mut GstVulkanDevice,
1104    pub outstanding: *mut glib::GPtrArray,
1105    pub available: *mut glib::GPtrArray,
1106    pub _padding: [gpointer; 4],
1107}
1108
1109impl ::std::fmt::Debug for GstVulkanHandlePool {
1110    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1111        f.debug_struct(&format!("GstVulkanHandlePool @ {self:p}"))
1112            .field("parent", &self.parent)
1113            .field("device", &self.device)
1114            .field("outstanding", &self.outstanding)
1115            .field("available", &self.available)
1116            .finish()
1117    }
1118}
1119
1120#[derive(Copy, Clone)]
1121#[repr(C)]
1122pub struct GstVulkanImageBufferPool {
1123    pub bufferpool: gst::GstBufferPool,
1124    pub device: *mut GstVulkanDevice,
1125    pub _reserved: [gpointer; 4],
1126}
1127
1128impl ::std::fmt::Debug for GstVulkanImageBufferPool {
1129    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1130        f.debug_struct(&format!("GstVulkanImageBufferPool @ {self:p}"))
1131            .field("bufferpool", &self.bufferpool)
1132            .field("device", &self.device)
1133            .finish()
1134    }
1135}
1136
1137#[derive(Copy, Clone)]
1138#[repr(C)]
1139pub struct GstVulkanImageMemoryAllocator {
1140    pub parent: gst::GstAllocator,
1141    pub _reserved: [gpointer; 4],
1142}
1143
1144impl ::std::fmt::Debug for GstVulkanImageMemoryAllocator {
1145    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1146        f.debug_struct(&format!("GstVulkanImageMemoryAllocator @ {self:p}"))
1147            .field("parent", &self.parent)
1148            .finish()
1149    }
1150}
1151
1152#[repr(C)]
1153#[allow(dead_code)]
1154pub struct GstVulkanInstance {
1155    pub parent: gst::GstObject,
1156    _truncated_record_marker: c_void,
1157    // /*Ignored*/field instance has incomplete type
1158}
1159
1160impl ::std::fmt::Debug for GstVulkanInstance {
1161    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1162        f.debug_struct(&format!("GstVulkanInstance @ {self:p}"))
1163            .field("parent", &self.parent)
1164            .finish()
1165    }
1166}
1167
1168#[derive(Copy, Clone)]
1169#[repr(C)]
1170pub struct GstVulkanMemoryAllocator {
1171    pub parent: gst::GstAllocator,
1172    pub _reserved: [gpointer; 4],
1173}
1174
1175impl ::std::fmt::Debug for GstVulkanMemoryAllocator {
1176    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1177        f.debug_struct(&format!("GstVulkanMemoryAllocator @ {self:p}"))
1178            .field("parent", &self.parent)
1179            .finish()
1180    }
1181}
1182
1183#[derive(Copy, Clone)]
1184#[repr(C)]
1185pub struct GstVulkanOperation {
1186    pub parent: gst::GstObject,
1187    pub cmd_buf: *mut GstVulkanCommandBuffer,
1188    pub _reserved: [gpointer; 4],
1189}
1190
1191impl ::std::fmt::Debug for GstVulkanOperation {
1192    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1193        f.debug_struct(&format!("GstVulkanOperation @ {self:p}"))
1194            .field("parent", &self.parent)
1195            .field("cmd_buf", &self.cmd_buf)
1196            .finish()
1197    }
1198}
1199
1200#[repr(C)]
1201#[allow(dead_code)]
1202pub struct GstVulkanPhysicalDevice {
1203    pub parent: gst::GstObject,
1204    pub instance: *mut GstVulkanInstance,
1205    pub device_index: c_uint,
1206    _truncated_record_marker: c_void,
1207    // /*Ignored*/field device has incomplete type
1208}
1209
1210impl ::std::fmt::Debug for GstVulkanPhysicalDevice {
1211    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1212        f.debug_struct(&format!("GstVulkanPhysicalDevice @ {self:p}"))
1213            .field("parent", &self.parent)
1214            .field("instance", &self.instance)
1215            .field("device_index", &self.device_index)
1216            .finish()
1217    }
1218}
1219
1220#[repr(C)]
1221#[allow(dead_code)]
1222pub struct GstVulkanQueue {
1223    pub parent: gst::GstObject,
1224    pub device: *mut GstVulkanDevice,
1225    _truncated_record_marker: c_void,
1226    // /*Ignored*/field queue has incomplete type
1227}
1228
1229impl ::std::fmt::Debug for GstVulkanQueue {
1230    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1231        f.debug_struct(&format!("GstVulkanQueue @ {self:p}"))
1232            .field("parent", &self.parent)
1233            .field("device", &self.device)
1234            .finish()
1235    }
1236}
1237
1238#[derive(Copy, Clone)]
1239#[repr(C)]
1240pub struct GstVulkanSwapper {
1241    pub parent: gst::GstObject,
1242    pub device: *mut GstVulkanDevice,
1243    pub window: *mut GstVulkanWindow,
1244    pub queue: *mut GstVulkanQueue,
1245    pub cmd_pool: *mut GstVulkanCommandPool,
1246    pub _reserved: [gpointer; 4],
1247}
1248
1249impl ::std::fmt::Debug for GstVulkanSwapper {
1250    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1251        f.debug_struct(&format!("GstVulkanSwapper @ {self:p}"))
1252            .field("parent", &self.parent)
1253            .field("device", &self.device)
1254            .field("window", &self.window)
1255            .field("queue", &self.queue)
1256            .field("cmd_pool", &self.cmd_pool)
1257            .finish()
1258    }
1259}
1260
1261#[repr(C)]
1262#[allow(dead_code)]
1263pub struct GstVulkanTrashFenceList {
1264    _data: [u8; 0],
1265    _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
1266}
1267
1268impl ::std::fmt::Debug for GstVulkanTrashFenceList {
1269    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1270        f.debug_struct(&format!("GstVulkanTrashFenceList @ {self:p}"))
1271            .finish()
1272    }
1273}
1274
1275#[derive(Copy, Clone)]
1276#[repr(C)]
1277pub struct GstVulkanTrashList {
1278    pub parent: GstVulkanHandlePool,
1279    pub _reserved: [gpointer; 4],
1280}
1281
1282impl ::std::fmt::Debug for GstVulkanTrashList {
1283    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1284        f.debug_struct(&format!("GstVulkanTrashList @ {self:p}"))
1285            .field("parent", &self.parent)
1286            .finish()
1287    }
1288}
1289
1290#[derive(Copy, Clone)]
1291#[repr(C)]
1292pub struct GstVulkanVideoFilter {
1293    pub parent: gst_base::GstBaseTransform,
1294    pub instance: *mut GstVulkanInstance,
1295    pub device: *mut GstVulkanDevice,
1296    pub queue: *mut GstVulkanQueue,
1297    pub in_caps: *mut gst::GstCaps,
1298    pub in_info: gst_video::GstVideoInfo,
1299    pub out_caps: *mut gst::GstCaps,
1300    pub out_info: gst_video::GstVideoInfo,
1301    pub _reserved: [gpointer; 4],
1302}
1303
1304impl ::std::fmt::Debug for GstVulkanVideoFilter {
1305    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1306        f.debug_struct(&format!("GstVulkanVideoFilter @ {self:p}"))
1307            .field("parent", &self.parent)
1308            .field("instance", &self.instance)
1309            .field("device", &self.device)
1310            .field("queue", &self.queue)
1311            .field("in_caps", &self.in_caps)
1312            .field("in_info", &self.in_info)
1313            .field("out_caps", &self.out_caps)
1314            .field("out_info", &self.out_info)
1315            .finish()
1316    }
1317}
1318
1319#[derive(Copy, Clone)]
1320#[repr(C)]
1321pub struct GstVulkanWindow {
1322    pub parent: gst::GstObject,
1323    pub display: *mut GstVulkanDisplay,
1324    pub _reserved: [gpointer; 4],
1325}
1326
1327impl ::std::fmt::Debug for GstVulkanWindow {
1328    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
1329        f.debug_struct(&format!("GstVulkanWindow @ {self:p}"))
1330            .finish()
1331    }
1332}
1333
1334extern "C" {
1335
1336    //=========================================================================
1337    // GstVulkanBarrierFlags
1338    //=========================================================================
1339    pub fn gst_vulkan_barrier_flags_get_type() -> GType;
1340
1341    //=========================================================================
1342    // GstVulkanBarrierType
1343    //=========================================================================
1344    pub fn gst_vulkan_barrier_type_get_type() -> GType;
1345
1346    //=========================================================================
1347    // GstVulkanError
1348    //=========================================================================
1349    pub fn gst_vulkan_error_get_type() -> GType;
1350    pub fn gst_vulkan_error_quark() -> glib::GQuark;
1351    pub fn gst_vulkan_error_to_g_error(
1352        result: vulkan::VkResult,
1353        error: *mut *mut glib::GError,
1354        format: *const c_char,
1355        ...
1356    ) -> vulkan::VkResult;
1357
1358    //=========================================================================
1359    // GstVulkanFormatScaling
1360    //=========================================================================
1361    pub fn gst_vulkan_format_scaling_get_type() -> GType;
1362
1363    //=========================================================================
1364    // GstVulkanHandleType
1365    //=========================================================================
1366    pub fn gst_vulkan_handle_type_get_type() -> GType;
1367
1368    //=========================================================================
1369    // GstVulkanWindowError
1370    //=========================================================================
1371    pub fn gst_vulkan_window_error_get_type() -> GType;
1372    pub fn gst_vulkan_window_error_quark() -> glib::GQuark;
1373
1374    //=========================================================================
1375    // GstVulkanDisplayType
1376    //=========================================================================
1377    pub fn gst_vulkan_display_type_get_type() -> GType;
1378    pub fn gst_vulkan_display_type_to_extension_string(
1379        type_: GstVulkanDisplayType,
1380    ) -> *const c_char;
1381
1382    //=========================================================================
1383    // GstVulkanFormatFlags
1384    //=========================================================================
1385    pub fn gst_vulkan_format_flags_get_type() -> GType;
1386
1387    //=========================================================================
1388    // GstVulkanBufferMemory
1389    //=========================================================================
1390    pub fn gst_vulkan_buffer_memory_alloc(
1391        device: *mut GstVulkanDevice,
1392        size: size_t,
1393        usage: vulkan::VkBufferUsageFlags,
1394        mem_prop_flags: vulkan::VkMemoryPropertyFlags,
1395    ) -> *mut gst::GstMemory;
1396    #[cfg(feature = "v1_24")]
1397    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
1398    pub fn gst_vulkan_buffer_memory_alloc_with_buffer_info(
1399        device: *mut GstVulkanDevice,
1400        buffer_info: *const vulkan::VkBufferCreateInfo,
1401        mem_prop_flags: vulkan::VkMemoryPropertyFlags,
1402    ) -> *mut gst::GstMemory;
1403    pub fn gst_vulkan_buffer_memory_init_once();
1404    pub fn gst_vulkan_buffer_memory_wrapped(
1405        device: *mut GstVulkanDevice,
1406        buffer: vulkan::VkBuffer,
1407        usage: vulkan::VkBufferUsageFlags,
1408        user_data: gpointer,
1409        notify: glib::GDestroyNotify,
1410    ) -> *mut gst::GstMemory;
1411
1412    //=========================================================================
1413    // GstVulkanCommandBuffer
1414    //=========================================================================
1415    pub fn gst_vulkan_command_buffer_get_type() -> GType;
1416    pub fn gst_vulkan_command_buffer_new_wrapped(
1417        cmd: vulkan::VkCommandBuffer,
1418        level: vulkan::VkCommandBufferLevel,
1419    ) -> *mut GstVulkanCommandBuffer;
1420    pub fn gst_vulkan_command_buffer_ref(
1421        cmd: *mut GstVulkanCommandBuffer,
1422    ) -> *mut GstVulkanCommandBuffer;
1423
1424    //=========================================================================
1425    // GstVulkanDescriptorSet
1426    //=========================================================================
1427    pub fn gst_vulkan_descriptor_set_get_type() -> GType;
1428    pub fn gst_vulkan_descriptor_set_new_wrapped(
1429        pool: *mut GstVulkanDescriptorPool,
1430        set: vulkan::VkDescriptorSet,
1431        n_layouts: c_uint,
1432        layouts: *mut *mut GstVulkanHandle,
1433    ) -> *mut GstVulkanDescriptorSet;
1434    pub fn gst_vulkan_descriptor_set_ref(
1435        set: *mut GstVulkanDescriptorSet,
1436    ) -> *mut GstVulkanDescriptorSet;
1437
1438    //=========================================================================
1439    // GstVulkanFence
1440    //=========================================================================
1441    pub fn gst_vulkan_fence_get_type() -> GType;
1442    pub fn gst_vulkan_fence_new(
1443        device: *mut GstVulkanDevice,
1444        error: *mut *mut glib::GError,
1445    ) -> *mut GstVulkanFence;
1446    pub fn gst_vulkan_fence_new_always_signalled(
1447        device: *mut GstVulkanDevice,
1448    ) -> *mut GstVulkanFence;
1449    pub fn gst_vulkan_fence_is_signaled(fence: *mut GstVulkanFence) -> gboolean;
1450    pub fn gst_vulkan_fence_reset(fence: *mut GstVulkanFence);
1451
1452    //=========================================================================
1453    // GstVulkanHandle
1454    //=========================================================================
1455    pub fn gst_vulkan_handle_get_type() -> GType;
1456    pub fn gst_vulkan_handle_new_wrapped(
1457        device: *mut GstVulkanDevice,
1458        type_: GstVulkanHandleType,
1459        handle: GstVulkanHandleTypedef,
1460        notify: GstVulkanHandleDestroyNotify,
1461        user_data: gpointer,
1462    ) -> *mut GstVulkanHandle;
1463    pub fn gst_vulkan_handle_free_descriptor_set_layout(
1464        handle: *mut GstVulkanHandle,
1465        user_data: gpointer,
1466    );
1467    pub fn gst_vulkan_handle_free_framebuffer(handle: *mut GstVulkanHandle, user_data: gpointer);
1468    pub fn gst_vulkan_handle_free_pipeline(handle: *mut GstVulkanHandle, user_data: gpointer);
1469    pub fn gst_vulkan_handle_free_pipeline_layout(
1470        handle: *mut GstVulkanHandle,
1471        user_data: gpointer,
1472    );
1473    pub fn gst_vulkan_handle_free_render_pass(handle: *mut GstVulkanHandle, user_data: gpointer);
1474    pub fn gst_vulkan_handle_free_sampler(handle: *mut GstVulkanHandle, user_data: gpointer);
1475    pub fn gst_vulkan_handle_free_shader(handle: *mut GstVulkanHandle, user_data: gpointer);
1476    pub fn gst_vulkan_handle_ref(handle: *mut GstVulkanHandle) -> *mut GstVulkanHandle;
1477    pub fn gst_vulkan_handle_context_query(
1478        element: *mut gst::GstElement,
1479        query: *mut gst::GstQuery,
1480        display: *mut GstVulkanDisplay,
1481        instance: *mut GstVulkanInstance,
1482        device: *mut GstVulkanDevice,
1483    ) -> gboolean;
1484    pub fn gst_vulkan_handle_set_context(
1485        element: *mut gst::GstElement,
1486        context: *mut gst::GstContext,
1487        display: *mut *mut GstVulkanDisplay,
1488        instance: *mut *mut GstVulkanInstance,
1489    ) -> gboolean;
1490
1491    //=========================================================================
1492    // GstVulkanImageMemory
1493    //=========================================================================
1494    pub fn gst_vulkan_image_memory_add_view(
1495        image: *mut GstVulkanImageMemory,
1496        view: *mut GstVulkanImageView,
1497    );
1498    pub fn gst_vulkan_image_memory_find_view(
1499        image: *mut GstVulkanImageMemory,
1500        find_func: GstVulkanImageMemoryFindViewFunc,
1501        user_data: gpointer,
1502    ) -> *mut GstVulkanImageView;
1503    pub fn gst_vulkan_image_memory_get_height(image: *mut GstVulkanImageMemory) -> u32;
1504    pub fn gst_vulkan_image_memory_get_width(image: *mut GstVulkanImageMemory) -> u32;
1505    pub fn gst_vulkan_image_memory_init(
1506        mem: *mut GstVulkanImageMemory,
1507        allocator: *mut gst::GstAllocator,
1508        parent: *mut gst::GstMemory,
1509        device: *mut GstVulkanDevice,
1510        format: vulkan::VkFormat,
1511        usage: vulkan::VkImageUsageFlags,
1512        initial_layout: vulkan::VkImageLayout,
1513        params: *mut gst::GstAllocationParams,
1514        size: size_t,
1515        user_data: gpointer,
1516        notify: glib::GDestroyNotify,
1517    ) -> gboolean;
1518    pub fn gst_vulkan_image_memory_alloc(
1519        device: *mut GstVulkanDevice,
1520        format: vulkan::VkFormat,
1521        width: size_t,
1522        height: size_t,
1523        tiling: vulkan::VkImageTiling,
1524        usage: vulkan::VkImageUsageFlags,
1525        mem_prop_flags: vulkan::VkMemoryPropertyFlags,
1526    ) -> *mut gst::GstMemory;
1527    #[cfg(feature = "v1_24")]
1528    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
1529    pub fn gst_vulkan_image_memory_alloc_with_image_info(
1530        device: *mut GstVulkanDevice,
1531        image_info: *mut vulkan::VkImageCreateInfo,
1532        mem_prop_flags: vulkan::VkMemoryPropertyFlags,
1533    ) -> *mut gst::GstMemory;
1534    pub fn gst_vulkan_image_memory_init_once();
1535    pub fn gst_vulkan_image_memory_wrapped(
1536        device: *mut GstVulkanDevice,
1537        image: vulkan::VkImage,
1538        format: vulkan::VkFormat,
1539        width: size_t,
1540        height: size_t,
1541        tiling: vulkan::VkImageTiling,
1542        usage: vulkan::VkImageUsageFlags,
1543        user_data: gpointer,
1544        notify: glib::GDestroyNotify,
1545    ) -> *mut gst::GstMemory;
1546
1547    //=========================================================================
1548    // GstVulkanImageView
1549    //=========================================================================
1550    pub fn gst_vulkan_image_view_get_type() -> GType;
1551    pub fn gst_vulkan_image_view_new(
1552        image: *mut GstVulkanImageMemory,
1553        create_info: *const vulkan::VkImageViewCreateInfo,
1554    ) -> *mut GstVulkanImageView;
1555    pub fn gst_vulkan_image_view_ref(trash: *mut GstVulkanImageView) -> *mut GstVulkanImageView;
1556
1557    //=========================================================================
1558    // GstVulkanMemory
1559    //=========================================================================
1560    pub fn gst_vulkan_memory_alloc(
1561        device: *mut GstVulkanDevice,
1562        memory_type_index: u32,
1563        params: *mut gst::GstAllocationParams,
1564        size: size_t,
1565        mem_prop_flags: vulkan::VkMemoryPropertyFlags,
1566    ) -> *mut gst::GstMemory;
1567    #[cfg(feature = "v1_24")]
1568    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
1569    pub fn gst_vulkan_memory_find_memory_type_index_with_requirements(
1570        device: *mut GstVulkanDevice,
1571        req: *const vulkan::VkMemoryRequirements,
1572        properties: vulkan::VkMemoryPropertyFlags,
1573        type_index: *mut u32,
1574    ) -> gboolean;
1575    pub fn gst_vulkan_memory_heap_flags_to_string(
1576        prop_bits: vulkan::VkMemoryHeapFlags,
1577    ) -> *mut c_char;
1578    pub fn gst_vulkan_memory_init_once();
1579    pub fn gst_vulkan_memory_property_flags_to_string(
1580        prop_bits: vulkan::VkMemoryPropertyFlags,
1581    ) -> *mut c_char;
1582
1583    //=========================================================================
1584    // GstVulkanTrash
1585    //=========================================================================
1586    pub fn gst_vulkan_trash_get_type() -> GType;
1587    pub fn gst_vulkan_trash_new(
1588        fence: *mut GstVulkanFence,
1589        notify: GstVulkanTrashNotify,
1590        user_data: gpointer,
1591    ) -> *mut GstVulkanTrash;
1592    pub fn gst_vulkan_trash_new_free_semaphore(
1593        fence: *mut GstVulkanFence,
1594        semaphore: vulkan::VkSemaphore,
1595    ) -> *mut GstVulkanTrash;
1596    pub fn gst_vulkan_trash_ref(trash: *mut GstVulkanTrash) -> *mut GstVulkanTrash;
1597    pub fn gst_vulkan_trash_mini_object_unref(device: *mut GstVulkanDevice, user_data: gpointer);
1598    pub fn gst_vulkan_trash_object_unref(device: *mut GstVulkanDevice, user_data: gpointer);
1599
1600    //=========================================================================
1601    // GstVulkanBufferMemoryAllocator
1602    //=========================================================================
1603    pub fn gst_vulkan_buffer_memory_allocator_get_type() -> GType;
1604
1605    //=========================================================================
1606    // GstVulkanBufferPool
1607    //=========================================================================
1608    pub fn gst_vulkan_buffer_pool_get_type() -> GType;
1609    pub fn gst_vulkan_buffer_pool_new(device: *mut GstVulkanDevice) -> *mut gst::GstBufferPool;
1610    #[cfg(feature = "v1_24")]
1611    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
1612    pub fn gst_vulkan_buffer_pool_config_set_allocation_params(
1613        config: *mut gst::GstStructure,
1614        usage: vulkan::VkBufferUsageFlags,
1615        mem_properties: vulkan::VkMemoryPropertyFlags,
1616    );
1617
1618    //=========================================================================
1619    // GstVulkanCommandPool
1620    //=========================================================================
1621    pub fn gst_vulkan_command_pool_get_type() -> GType;
1622    pub fn gst_vulkan_command_pool_create(
1623        pool: *mut GstVulkanCommandPool,
1624        error: *mut *mut glib::GError,
1625    ) -> *mut GstVulkanCommandBuffer;
1626    pub fn gst_vulkan_command_pool_get_queue(
1627        pool: *mut GstVulkanCommandPool,
1628    ) -> *mut GstVulkanQueue;
1629    pub fn gst_vulkan_command_pool_lock(pool: *mut GstVulkanCommandPool);
1630    pub fn gst_vulkan_command_pool_unlock(pool: *mut GstVulkanCommandPool);
1631
1632    //=========================================================================
1633    // GstVulkanDescriptorCache
1634    //=========================================================================
1635    pub fn gst_vulkan_descriptor_cache_get_type() -> GType;
1636    pub fn gst_vulkan_descriptor_cache_new(
1637        pool: *mut GstVulkanDescriptorPool,
1638        n_layouts: c_uint,
1639        layouts: *mut *mut GstVulkanHandle,
1640    ) -> *mut GstVulkanDescriptorCache;
1641    pub fn gst_vulkan_descriptor_cache_acquire(
1642        cache: *mut GstVulkanDescriptorCache,
1643        error: *mut *mut glib::GError,
1644    ) -> *mut GstVulkanDescriptorSet;
1645
1646    //=========================================================================
1647    // GstVulkanDescriptorPool
1648    //=========================================================================
1649    pub fn gst_vulkan_descriptor_pool_get_type() -> GType;
1650    pub fn gst_vulkan_descriptor_pool_new_wrapped(
1651        device: *mut GstVulkanDevice,
1652        pool: vulkan::VkDescriptorPool,
1653        max_sets: size_t,
1654    ) -> *mut GstVulkanDescriptorPool;
1655    pub fn gst_vulkan_descriptor_pool_create(
1656        pool: *mut GstVulkanDescriptorPool,
1657        n_layouts: c_uint,
1658        layouts: *mut *mut GstVulkanHandle,
1659        error: *mut *mut glib::GError,
1660    ) -> *mut GstVulkanDescriptorSet;
1661    pub fn gst_vulkan_descriptor_pool_get_device(
1662        pool: *mut GstVulkanDescriptorPool,
1663    ) -> *mut GstVulkanDevice;
1664    pub fn gst_vulkan_descriptor_pool_get_max_sets(pool: *mut GstVulkanDescriptorPool) -> size_t;
1665
1666    //=========================================================================
1667    // GstVulkanDevice
1668    //=========================================================================
1669    pub fn gst_vulkan_device_get_type() -> GType;
1670    pub fn gst_vulkan_device_new(
1671        physical_device: *mut GstVulkanPhysicalDevice,
1672    ) -> *mut GstVulkanDevice;
1673    pub fn gst_vulkan_device_new_with_index(
1674        instance: *mut GstVulkanInstance,
1675        device_index: c_uint,
1676    ) -> *mut GstVulkanDevice;
1677    pub fn gst_vulkan_device_handle_context_query(
1678        element: *mut gst::GstElement,
1679        query: *mut gst::GstQuery,
1680        device: *mut GstVulkanDevice,
1681    ) -> gboolean;
1682    pub fn gst_vulkan_device_run_context_query(
1683        element: *mut gst::GstElement,
1684        device: *mut *mut GstVulkanDevice,
1685    ) -> gboolean;
1686    pub fn gst_vulkan_device_create_fence(
1687        device: *mut GstVulkanDevice,
1688        error: *mut *mut glib::GError,
1689    ) -> *mut GstVulkanFence;
1690    pub fn gst_vulkan_device_disable_extension(
1691        device: *mut GstVulkanDevice,
1692        name: *const c_char,
1693    ) -> gboolean;
1694    pub fn gst_vulkan_device_enable_extension(
1695        device: *mut GstVulkanDevice,
1696        name: *const c_char,
1697    ) -> gboolean;
1698    pub fn gst_vulkan_device_enable_layer(
1699        device: *mut GstVulkanDevice,
1700        name: *const c_char,
1701    ) -> gboolean;
1702    pub fn gst_vulkan_device_foreach_queue(
1703        device: *mut GstVulkanDevice,
1704        func: GstVulkanDeviceForEachQueueFunc,
1705        user_data: gpointer,
1706    );
1707    pub fn gst_vulkan_device_get_instance(device: *mut GstVulkanDevice) -> *mut GstVulkanInstance;
1708    pub fn gst_vulkan_device_get_physical_device(
1709        device: *mut GstVulkanDevice,
1710    ) -> vulkan::VkPhysicalDevice;
1711    pub fn gst_vulkan_device_get_proc_address(
1712        device: *mut GstVulkanDevice,
1713        name: *const c_char,
1714    ) -> gpointer;
1715    pub fn gst_vulkan_device_get_queue(
1716        device: *mut GstVulkanDevice,
1717        queue_family: u32,
1718        queue_i: u32,
1719    ) -> *mut GstVulkanQueue;
1720    pub fn gst_vulkan_device_is_extension_enabled(
1721        device: *mut GstVulkanDevice,
1722        name: *const c_char,
1723    ) -> gboolean;
1724    pub fn gst_vulkan_device_is_layer_enabled(
1725        device: *mut GstVulkanDevice,
1726        name: *const c_char,
1727    ) -> gboolean;
1728    pub fn gst_vulkan_device_open(
1729        device: *mut GstVulkanDevice,
1730        error: *mut *mut glib::GError,
1731    ) -> gboolean;
1732    #[cfg(feature = "v1_24")]
1733    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
1734    pub fn gst_vulkan_device_queue_family_indices(
1735        device: *mut GstVulkanDevice,
1736    ) -> *mut glib::GArray;
1737    #[cfg(feature = "v1_24")]
1738    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
1739    pub fn gst_vulkan_device_select_queue(
1740        device: *mut GstVulkanDevice,
1741        expected_flags: vulkan::VkQueueFlagBits,
1742    ) -> *mut GstVulkanQueue;
1743
1744    //=========================================================================
1745    // GstVulkanDisplay
1746    //=========================================================================
1747    pub fn gst_vulkan_display_get_type() -> GType;
1748    pub fn gst_vulkan_display_new(instance: *mut GstVulkanInstance) -> *mut GstVulkanDisplay;
1749    pub fn gst_vulkan_display_new_with_type(
1750        instance: *mut GstVulkanInstance,
1751        type_: GstVulkanDisplayType,
1752    ) -> *mut GstVulkanDisplay;
1753    pub fn gst_vulkan_display_choose_type(instance: *mut GstVulkanInstance)
1754        -> GstVulkanDisplayType;
1755    pub fn gst_vulkan_display_handle_context_query(
1756        element: *mut gst::GstElement,
1757        query: *mut gst::GstQuery,
1758        display: *mut GstVulkanDisplay,
1759    ) -> gboolean;
1760    pub fn gst_vulkan_display_run_context_query(
1761        element: *mut gst::GstElement,
1762        display: *mut *mut GstVulkanDisplay,
1763    ) -> gboolean;
1764    pub fn gst_vulkan_display_create_window(display: *mut GstVulkanDisplay)
1765        -> *mut GstVulkanWindow;
1766    pub fn gst_vulkan_display_find_window(
1767        display: *mut GstVulkanDisplay,
1768        data: gpointer,
1769        compare_func: glib::GCompareFunc,
1770    ) -> *mut GstVulkanWindow;
1771    pub fn gst_vulkan_display_get_handle(display: *mut GstVulkanDisplay) -> gpointer;
1772    pub fn gst_vulkan_display_get_handle_type(
1773        display: *mut GstVulkanDisplay,
1774    ) -> GstVulkanDisplayType;
1775    pub fn gst_vulkan_display_remove_window(
1776        display: *mut GstVulkanDisplay,
1777        window: *mut GstVulkanWindow,
1778    ) -> gboolean;
1779
1780    //=========================================================================
1781    // GstVulkanFenceCache
1782    //=========================================================================
1783    pub fn gst_vulkan_fence_cache_get_type() -> GType;
1784    pub fn gst_vulkan_fence_cache_new(device: *mut GstVulkanDevice) -> *mut GstVulkanFenceCache;
1785
1786    //=========================================================================
1787    // GstVulkanFullScreenQuad
1788    //=========================================================================
1789    pub fn gst_vulkan_full_screen_quad_get_type() -> GType;
1790    pub fn gst_vulkan_full_screen_quad_new(
1791        queue: *mut GstVulkanQueue,
1792    ) -> *mut GstVulkanFullScreenQuad;
1793    pub fn gst_vulkan_full_screen_quad_draw(
1794        self_: *mut GstVulkanFullScreenQuad,
1795        error: *mut *mut glib::GError,
1796    ) -> gboolean;
1797    #[cfg(feature = "v1_22")]
1798    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
1799    pub fn gst_vulkan_full_screen_quad_enable_blend(
1800        self_: *mut GstVulkanFullScreenQuad,
1801        enable_blend: gboolean,
1802    );
1803    #[cfg(feature = "v1_22")]
1804    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
1805    pub fn gst_vulkan_full_screen_quad_enable_clear(
1806        self_: *mut GstVulkanFullScreenQuad,
1807        enable_clear: gboolean,
1808    );
1809    pub fn gst_vulkan_full_screen_quad_fill_command_buffer(
1810        self_: *mut GstVulkanFullScreenQuad,
1811        cmd: *mut GstVulkanCommandBuffer,
1812        fence: *mut GstVulkanFence,
1813        error: *mut *mut glib::GError,
1814    ) -> gboolean;
1815    pub fn gst_vulkan_full_screen_quad_get_last_fence(
1816        self_: *mut GstVulkanFullScreenQuad,
1817    ) -> *mut GstVulkanFence;
1818    #[cfg(feature = "v1_26")]
1819    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
1820    pub fn gst_vulkan_full_screen_quad_get_queue(
1821        self_: *mut GstVulkanFullScreenQuad,
1822    ) -> *mut GstVulkanQueue;
1823    pub fn gst_vulkan_full_screen_quad_prepare_draw(
1824        self_: *mut GstVulkanFullScreenQuad,
1825        fence: *mut GstVulkanFence,
1826        error: *mut *mut glib::GError,
1827    ) -> gboolean;
1828    #[cfg(feature = "v1_22")]
1829    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
1830    pub fn gst_vulkan_full_screen_quad_set_blend_factors(
1831        self_: *mut GstVulkanFullScreenQuad,
1832        src_blend_factor: vulkan::VkBlendFactor,
1833        dst_blend_factor: vulkan::VkBlendFactor,
1834        src_alpha_blend_factor: vulkan::VkBlendFactor,
1835        dst_alpha_blend_factor: vulkan::VkBlendFactor,
1836    );
1837    #[cfg(feature = "v1_22")]
1838    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
1839    pub fn gst_vulkan_full_screen_quad_set_blend_operation(
1840        self_: *mut GstVulkanFullScreenQuad,
1841        colour_blend_op: vulkan::VkBlendOp,
1842        alpha_blend_op: vulkan::VkBlendOp,
1843    );
1844    pub fn gst_vulkan_full_screen_quad_set_index_buffer(
1845        self_: *mut GstVulkanFullScreenQuad,
1846        indices: *mut gst::GstMemory,
1847        n_indices: size_t,
1848        error: *mut *mut glib::GError,
1849    ) -> gboolean;
1850    pub fn gst_vulkan_full_screen_quad_set_info(
1851        self_: *mut GstVulkanFullScreenQuad,
1852        in_info: *const gst_video::GstVideoInfo,
1853        out_info: *const gst_video::GstVideoInfo,
1854    ) -> gboolean;
1855    pub fn gst_vulkan_full_screen_quad_set_input_buffer(
1856        self_: *mut GstVulkanFullScreenQuad,
1857        buffer: *mut gst::GstBuffer,
1858        error: *mut *mut glib::GError,
1859    ) -> gboolean;
1860    pub fn gst_vulkan_full_screen_quad_set_output_buffer(
1861        self_: *mut GstVulkanFullScreenQuad,
1862        buffer: *mut gst::GstBuffer,
1863        error: *mut *mut glib::GError,
1864    ) -> gboolean;
1865    pub fn gst_vulkan_full_screen_quad_set_shaders(
1866        self_: *mut GstVulkanFullScreenQuad,
1867        vert: *mut GstVulkanHandle,
1868        frag: *mut GstVulkanHandle,
1869    ) -> gboolean;
1870    pub fn gst_vulkan_full_screen_quad_set_uniform_buffer(
1871        self_: *mut GstVulkanFullScreenQuad,
1872        uniforms: *mut gst::GstMemory,
1873        error: *mut *mut glib::GError,
1874    ) -> gboolean;
1875    pub fn gst_vulkan_full_screen_quad_set_vertex_buffer(
1876        self_: *mut GstVulkanFullScreenQuad,
1877        vertices: *mut gst::GstMemory,
1878        error: *mut *mut glib::GError,
1879    ) -> gboolean;
1880    pub fn gst_vulkan_full_screen_quad_submit(
1881        self_: *mut GstVulkanFullScreenQuad,
1882        cmd: *mut GstVulkanCommandBuffer,
1883        fence: *mut GstVulkanFence,
1884        error: *mut *mut glib::GError,
1885    ) -> gboolean;
1886
1887    //=========================================================================
1888    // GstVulkanHandlePool
1889    //=========================================================================
1890    pub fn gst_vulkan_handle_pool_get_type() -> GType;
1891    pub fn gst_vulkan_handle_pool_acquire(
1892        pool: *mut GstVulkanHandlePool,
1893        error: *mut *mut glib::GError,
1894    ) -> gpointer;
1895    pub fn gst_vulkan_handle_pool_alloc(
1896        pool: *mut GstVulkanHandlePool,
1897        error: *mut *mut glib::GError,
1898    ) -> gpointer;
1899    pub fn gst_vulkan_handle_pool_release(pool: *mut GstVulkanHandlePool, handle: gpointer);
1900
1901    //=========================================================================
1902    // GstVulkanImageBufferPool
1903    //=========================================================================
1904    pub fn gst_vulkan_image_buffer_pool_get_type() -> GType;
1905    pub fn gst_vulkan_image_buffer_pool_new(
1906        device: *mut GstVulkanDevice,
1907    ) -> *mut gst::GstBufferPool;
1908    #[cfg(feature = "v1_26")]
1909    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
1910    pub fn gst_vulkan_image_buffer_pool_config_get_allocation_params(
1911        config: *mut gst::GstStructure,
1912        usage: *mut vulkan::VkImageUsageFlags,
1913        mem_props: *mut vulkan::VkMemoryPropertyFlags,
1914        initial_layout: *mut vulkan::VkImageLayout,
1915        initial_access: *mut u64,
1916    );
1917    #[cfg(feature = "v1_24")]
1918    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
1919    pub fn gst_vulkan_image_buffer_pool_config_set_allocation_params(
1920        config: *mut gst::GstStructure,
1921        usage: vulkan::VkImageUsageFlags,
1922        mem_properties: vulkan::VkMemoryPropertyFlags,
1923        initial_layout: vulkan::VkImageLayout,
1924        initial_access: u64,
1925    );
1926    #[cfg(feature = "v1_24")]
1927    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
1928    pub fn gst_vulkan_image_buffer_pool_config_set_decode_caps(
1929        config: *mut gst::GstStructure,
1930        caps: *mut gst::GstCaps,
1931    );
1932    #[cfg(feature = "v1_26")]
1933    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
1934    pub fn gst_vulkan_image_buffer_pool_config_set_encode_caps(
1935        config: *mut gst::GstStructure,
1936        caps: *mut gst::GstCaps,
1937    );
1938
1939    //=========================================================================
1940    // GstVulkanImageMemoryAllocator
1941    //=========================================================================
1942    pub fn gst_vulkan_image_memory_allocator_get_type() -> GType;
1943
1944    //=========================================================================
1945    // GstVulkanInstance
1946    //=========================================================================
1947    pub fn gst_vulkan_instance_get_type() -> GType;
1948    pub fn gst_vulkan_instance_new() -> *mut GstVulkanInstance;
1949    pub fn gst_vulkan_instance_handle_context_query(
1950        element: *mut gst::GstElement,
1951        query: *mut gst::GstQuery,
1952        instance: *mut GstVulkanInstance,
1953    ) -> gboolean;
1954    pub fn gst_vulkan_instance_run_context_query(
1955        element: *mut gst::GstElement,
1956        instance: *mut *mut GstVulkanInstance,
1957    ) -> gboolean;
1958    #[cfg(feature = "v1_26")]
1959    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
1960    pub fn gst_vulkan_instance_check_api_version(
1961        instance: *mut GstVulkanInstance,
1962        major: c_uint,
1963        minor: c_uint,
1964        patch: c_uint,
1965    ) -> gboolean;
1966    pub fn gst_vulkan_instance_check_version(
1967        instance: *mut GstVulkanInstance,
1968        major: c_uint,
1969        minor: c_uint,
1970        patch: c_uint,
1971    ) -> gboolean;
1972    pub fn gst_vulkan_instance_create_device(
1973        instance: *mut GstVulkanInstance,
1974        error: *mut *mut glib::GError,
1975    ) -> *mut GstVulkanDevice;
1976    #[cfg(feature = "v1_26")]
1977    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
1978    pub fn gst_vulkan_instance_create_device_with_index(
1979        instance: *mut GstVulkanInstance,
1980        device_index: c_uint,
1981        error: *mut *mut glib::GError,
1982    ) -> *mut GstVulkanDevice;
1983    pub fn gst_vulkan_instance_disable_extension(
1984        instance: *mut GstVulkanInstance,
1985        name: *const c_char,
1986    ) -> gboolean;
1987    pub fn gst_vulkan_instance_enable_extension(
1988        instance: *mut GstVulkanInstance,
1989        name: *const c_char,
1990    ) -> gboolean;
1991    pub fn gst_vulkan_instance_enable_layer(
1992        instance: *mut GstVulkanInstance,
1993        name: *const c_char,
1994    ) -> gboolean;
1995    pub fn gst_vulkan_instance_fill_info(
1996        instance: *mut GstVulkanInstance,
1997        error: *mut *mut glib::GError,
1998    ) -> gboolean;
1999    #[cfg(feature = "v1_26")]
2000    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
2001    pub fn gst_vulkan_instance_get_api_version(
2002        instance: *mut GstVulkanInstance,
2003        major: *mut c_uint,
2004        minor: *mut c_uint,
2005        patch: *mut c_uint,
2006    );
2007    pub fn gst_vulkan_instance_get_extension_info(
2008        instance: *mut GstVulkanInstance,
2009        name: *const c_char,
2010        spec_version: *mut u32,
2011    ) -> gboolean;
2012    pub fn gst_vulkan_instance_get_layer_info(
2013        instance: *mut GstVulkanInstance,
2014        name: *const c_char,
2015        description: *mut *mut c_char,
2016        spec_version: *mut u32,
2017        implementation_version: *mut u32,
2018    ) -> gboolean;
2019    pub fn gst_vulkan_instance_get_proc_address(
2020        instance: *mut GstVulkanInstance,
2021        name: *const c_char,
2022    ) -> gpointer;
2023    pub fn gst_vulkan_instance_get_version(
2024        instance: *mut GstVulkanInstance,
2025        major: *mut c_uint,
2026        minor: *mut c_uint,
2027        patch: *mut c_uint,
2028    );
2029    pub fn gst_vulkan_instance_is_extension_enabled(
2030        instance: *mut GstVulkanInstance,
2031        name: *const c_char,
2032    ) -> gboolean;
2033    pub fn gst_vulkan_instance_is_layer_enabled(
2034        instance: *mut GstVulkanInstance,
2035        name: *const c_char,
2036    ) -> gboolean;
2037    pub fn gst_vulkan_instance_open(
2038        instance: *mut GstVulkanInstance,
2039        error: *mut *mut glib::GError,
2040    ) -> gboolean;
2041
2042    //=========================================================================
2043    // GstVulkanMemoryAllocator
2044    //=========================================================================
2045    pub fn gst_vulkan_memory_allocator_get_type() -> GType;
2046
2047    //=========================================================================
2048    // GstVulkanOperation
2049    //=========================================================================
2050    #[cfg(feature = "v1_24")]
2051    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2052    pub fn gst_vulkan_operation_get_type() -> GType;
2053    #[cfg(feature = "v1_24")]
2054    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2055    pub fn gst_vulkan_operation_new(cmd_pool: *mut GstVulkanCommandPool)
2056        -> *mut GstVulkanOperation;
2057    #[cfg(feature = "v1_24")]
2058    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2059    pub fn gst_vulkan_operation_add_dependency_frame(
2060        self_: *mut GstVulkanOperation,
2061        frame: *mut gst::GstBuffer,
2062        wait_stage: u64,
2063        signal_stage: u64,
2064    ) -> gboolean;
2065    #[cfg(feature = "v1_24")]
2066    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2067    pub fn gst_vulkan_operation_add_extra_image_barriers(
2068        self_: *mut GstVulkanOperation,
2069        extra_barriers: *mut glib::GArray,
2070    );
2071    #[cfg(feature = "v1_24")]
2072    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2073    pub fn gst_vulkan_operation_add_frame_barrier(
2074        self_: *mut GstVulkanOperation,
2075        frame: *mut gst::GstBuffer,
2076        src_stage: u64,
2077        dst_stage: u64,
2078        new_access: u64,
2079        new_layout: vulkan::VkImageLayout,
2080        new_queue: *mut GstVulkanQueue,
2081    ) -> gboolean;
2082    #[cfg(feature = "v1_24")]
2083    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2084    pub fn gst_vulkan_operation_begin(
2085        self_: *mut GstVulkanOperation,
2086        error: *mut *mut glib::GError,
2087    ) -> gboolean;
2088    #[cfg(feature = "v1_26")]
2089    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
2090    pub fn gst_vulkan_operation_begin_query(
2091        self_: *mut GstVulkanOperation,
2092        base: *mut vulkan::VkBaseInStructure,
2093        id: u32,
2094    ) -> gboolean;
2095    #[cfg(feature = "v1_24")]
2096    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2097    pub fn gst_vulkan_operation_discard_dependencies(self_: *mut GstVulkanOperation);
2098    #[cfg(feature = "v1_24")]
2099    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2100    pub fn gst_vulkan_operation_enable_query(
2101        self_: *mut GstVulkanOperation,
2102        query_type: u32,
2103        n_queries: c_uint,
2104        pnext: gpointer,
2105        error: *mut *mut glib::GError,
2106    ) -> gboolean;
2107    #[cfg(feature = "v1_24")]
2108    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2109    pub fn gst_vulkan_operation_end(
2110        self_: *mut GstVulkanOperation,
2111        error: *mut *mut glib::GError,
2112    ) -> gboolean;
2113    #[cfg(feature = "v1_24")]
2114    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2115    pub fn gst_vulkan_operation_end_query(self_: *mut GstVulkanOperation, id: u32) -> gboolean;
2116    #[cfg(feature = "v1_24")]
2117    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2118    pub fn gst_vulkan_operation_get_query(
2119        self_: *mut GstVulkanOperation,
2120        data: *mut gpointer,
2121        error: *mut *mut glib::GError,
2122    ) -> gboolean;
2123    #[cfg(feature = "v1_24")]
2124    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2125    pub fn gst_vulkan_operation_new_extra_image_barriers(
2126        self_: *mut GstVulkanOperation,
2127    ) -> *mut glib::GArray;
2128    #[cfg(feature = "v1_24")]
2129    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2130    pub fn gst_vulkan_operation_pipeline_barrier2(
2131        self_: *mut GstVulkanOperation,
2132        dependency_info: gpointer,
2133    ) -> gboolean;
2134    #[cfg(feature = "v1_24")]
2135    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2136    pub fn gst_vulkan_operation_reset(self_: *mut GstVulkanOperation);
2137    #[cfg(feature = "v1_24")]
2138    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2139    pub fn gst_vulkan_operation_retrieve_image_barriers(
2140        self_: *mut GstVulkanOperation,
2141    ) -> *mut glib::GArray;
2142    #[cfg(feature = "v1_24")]
2143    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2144    pub fn gst_vulkan_operation_update_frame(
2145        self_: *mut GstVulkanOperation,
2146        frame: *mut gst::GstBuffer,
2147        dst_stage: u64,
2148        new_access: u64,
2149        new_layout: vulkan::VkImageLayout,
2150        new_queue: *mut GstVulkanQueue,
2151    );
2152    #[cfg(feature = "v1_24")]
2153    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2154    pub fn gst_vulkan_operation_use_sync2(self_: *mut GstVulkanOperation) -> gboolean;
2155    #[cfg(feature = "v1_24")]
2156    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2157    pub fn gst_vulkan_operation_wait(self_: *mut GstVulkanOperation) -> gboolean;
2158
2159    //=========================================================================
2160    // GstVulkanPhysicalDevice
2161    //=========================================================================
2162    pub fn gst_vulkan_physical_device_get_type() -> GType;
2163    pub fn gst_vulkan_physical_device_new(
2164        instance: *mut GstVulkanInstance,
2165        device_index: c_uint,
2166    ) -> *mut GstVulkanPhysicalDevice;
2167    pub fn gst_vulkan_physical_device_type_to_string(
2168        type_: vulkan::VkPhysicalDeviceType,
2169    ) -> *const c_char;
2170    #[cfg(feature = "v1_26")]
2171    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
2172    pub fn gst_vulkan_physical_device_check_api_version(
2173        device: *mut GstVulkanPhysicalDevice,
2174        major: c_uint,
2175        minor: c_uint,
2176        patch: c_uint,
2177    ) -> gboolean;
2178    #[cfg(feature = "v1_26")]
2179    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
2180    pub fn gst_vulkan_physical_device_get_api_version(
2181        device: *mut GstVulkanPhysicalDevice,
2182        major: *mut c_uint,
2183        minor: *mut c_uint,
2184        patch: *mut c_uint,
2185    );
2186    pub fn gst_vulkan_physical_device_get_extension_info(
2187        device: *mut GstVulkanPhysicalDevice,
2188        name: *const c_char,
2189        spec_version: *mut u32,
2190    ) -> gboolean;
2191    pub fn gst_vulkan_physical_device_get_handle(
2192        device: *mut GstVulkanPhysicalDevice,
2193    ) -> vulkan::VkPhysicalDevice;
2194    pub fn gst_vulkan_physical_device_get_instance(
2195        device: *mut GstVulkanPhysicalDevice,
2196    ) -> *mut GstVulkanInstance;
2197    pub fn gst_vulkan_physical_device_get_layer_info(
2198        device: *mut GstVulkanPhysicalDevice,
2199        name: *const c_char,
2200        description: *mut *mut c_char,
2201        spec_version: *mut u32,
2202        implementation_version: *mut u32,
2203    ) -> gboolean;
2204
2205    //=========================================================================
2206    // GstVulkanQueue
2207    //=========================================================================
2208    pub fn gst_vulkan_queue_get_type() -> GType;
2209    pub fn gst_vulkan_queue_flags_to_string(queue_bits: vulkan::VkQueueFlags) -> *mut c_char;
2210    pub fn gst_vulkan_queue_handle_context_query(
2211        element: *mut gst::GstElement,
2212        query: *mut gst::GstQuery,
2213        queue: *mut GstVulkanQueue,
2214    ) -> gboolean;
2215    pub fn gst_vulkan_queue_run_context_query(
2216        element: *mut gst::GstElement,
2217        queue: *mut *mut GstVulkanQueue,
2218    ) -> gboolean;
2219    pub fn gst_vulkan_queue_create_command_pool(
2220        queue: *mut GstVulkanQueue,
2221        error: *mut *mut glib::GError,
2222    ) -> *mut GstVulkanCommandPool;
2223    pub fn gst_vulkan_queue_get_device(queue: *mut GstVulkanQueue) -> *mut GstVulkanDevice;
2224    pub fn gst_vulkan_queue_submit_lock(queue: *mut GstVulkanQueue);
2225    pub fn gst_vulkan_queue_submit_unlock(queue: *mut GstVulkanQueue);
2226
2227    //=========================================================================
2228    // GstVulkanSwapper
2229    //=========================================================================
2230    pub fn gst_vulkan_swapper_get_type() -> GType;
2231    pub fn gst_vulkan_swapper_new(
2232        device: *mut GstVulkanDevice,
2233        window: *mut GstVulkanWindow,
2234    ) -> *mut GstVulkanSwapper;
2235    pub fn gst_vulkan_swapper_choose_queue(
2236        swapper: *mut GstVulkanSwapper,
2237        available_queue: *mut GstVulkanQueue,
2238        error: *mut *mut glib::GError,
2239    ) -> gboolean;
2240    pub fn gst_vulkan_swapper_get_supported_caps(
2241        swapper: *mut GstVulkanSwapper,
2242        error: *mut *mut glib::GError,
2243    ) -> *mut gst::GstCaps;
2244    pub fn gst_vulkan_swapper_get_surface_rectangles(
2245        swapper: *mut GstVulkanSwapper,
2246        input_image: *mut gst_video::GstVideoRectangle,
2247        surface_location: *mut gst_video::GstVideoRectangle,
2248        display_rect: *mut gst_video::GstVideoRectangle,
2249    );
2250    pub fn gst_vulkan_swapper_render_buffer(
2251        swapper: *mut GstVulkanSwapper,
2252        buffer: *mut gst::GstBuffer,
2253        error: *mut *mut glib::GError,
2254    ) -> gboolean;
2255    pub fn gst_vulkan_swapper_set_caps(
2256        swapper: *mut GstVulkanSwapper,
2257        caps: *mut gst::GstCaps,
2258        error: *mut *mut glib::GError,
2259    ) -> gboolean;
2260
2261    //=========================================================================
2262    // GstVulkanTrashFenceList
2263    //=========================================================================
2264    pub fn gst_vulkan_trash_fence_list_get_type() -> GType;
2265    pub fn gst_vulkan_trash_fence_list_new() -> *mut GstVulkanTrashList;
2266
2267    //=========================================================================
2268    // GstVulkanTrashList
2269    //=========================================================================
2270    pub fn gst_vulkan_trash_list_get_type() -> GType;
2271    pub fn gst_vulkan_trash_list_acquire(
2272        trash_list: *mut GstVulkanTrashList,
2273        fence: *mut GstVulkanFence,
2274        notify: GstVulkanTrashNotify,
2275        user_data: gpointer,
2276    ) -> *mut GstVulkanTrash;
2277    pub fn gst_vulkan_trash_list_add(
2278        trash_list: *mut GstVulkanTrashList,
2279        trash: *mut GstVulkanTrash,
2280    ) -> gboolean;
2281    pub fn gst_vulkan_trash_list_gc(trash_list: *mut GstVulkanTrashList);
2282    pub fn gst_vulkan_trash_list_wait(
2283        trash_list: *mut GstVulkanTrashList,
2284        timeout: u64,
2285    ) -> gboolean;
2286
2287    //=========================================================================
2288    // GstVulkanVideoFilter
2289    //=========================================================================
2290    pub fn gst_vulkan_video_filter_get_type() -> GType;
2291    #[cfg(feature = "v1_26")]
2292    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
2293    pub fn gst_vulkan_video_filter_get_device(
2294        filter: *mut GstVulkanVideoFilter,
2295    ) -> *mut GstVulkanDevice;
2296    #[cfg(feature = "v1_26")]
2297    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
2298    pub fn gst_vulkan_video_filter_get_instance(
2299        filter: *mut GstVulkanVideoFilter,
2300    ) -> *mut GstVulkanInstance;
2301    #[cfg(feature = "v1_26")]
2302    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
2303    pub fn gst_vulkan_video_filter_get_queue(
2304        filter: *mut GstVulkanVideoFilter,
2305    ) -> *mut GstVulkanQueue;
2306
2307    //=========================================================================
2308    // GstVulkanWindow
2309    //=========================================================================
2310    pub fn gst_vulkan_window_get_type() -> GType;
2311    pub fn gst_vulkan_window_new(display: *mut GstVulkanDisplay) -> *mut GstVulkanWindow;
2312    pub fn gst_vulkan_window_close(window: *mut GstVulkanWindow);
2313    pub fn gst_vulkan_window_get_display(window: *mut GstVulkanWindow) -> *mut GstVulkanDisplay;
2314    pub fn gst_vulkan_window_get_presentation_support(
2315        window: *mut GstVulkanWindow,
2316        device: *mut GstVulkanDevice,
2317        queue_family_idx: u32,
2318    ) -> gboolean;
2319    pub fn gst_vulkan_window_get_surface(
2320        window: *mut GstVulkanWindow,
2321        error: *mut *mut glib::GError,
2322    ) -> vulkan::VkSurfaceKHR;
2323    pub fn gst_vulkan_window_get_surface_dimensions(
2324        window: *mut GstVulkanWindow,
2325        width: *mut c_uint,
2326        height: *mut c_uint,
2327    );
2328    pub fn gst_vulkan_window_handle_events(window: *mut GstVulkanWindow, handle_events: gboolean);
2329    pub fn gst_vulkan_window_open(
2330        window: *mut GstVulkanWindow,
2331        error: *mut *mut glib::GError,
2332    ) -> gboolean;
2333    pub fn gst_vulkan_window_redraw(window: *mut GstVulkanWindow);
2334    pub fn gst_vulkan_window_resize(window: *mut GstVulkanWindow, width: c_int, height: c_int);
2335    pub fn gst_vulkan_window_send_key_event(
2336        window: *mut GstVulkanWindow,
2337        event_type: *const c_char,
2338        key_str: *const c_char,
2339    );
2340    pub fn gst_vulkan_window_send_mouse_event(
2341        window: *mut GstVulkanWindow,
2342        event_type: *const c_char,
2343        button: c_int,
2344        posx: c_double,
2345        posy: c_double,
2346    );
2347    pub fn gst_vulkan_window_set_window_handle(window: *mut GstVulkanWindow, handle: uintptr_t);
2348
2349    //=========================================================================
2350    // Other functions
2351    //=========================================================================
2352    pub fn gst_context_get_vulkan_device(
2353        context: *mut gst::GstContext,
2354        device: *mut *mut GstVulkanDevice,
2355    ) -> gboolean;
2356    pub fn gst_context_get_vulkan_display(
2357        context: *mut gst::GstContext,
2358        display: *mut *mut GstVulkanDisplay,
2359    ) -> gboolean;
2360    pub fn gst_context_get_vulkan_instance(
2361        context: *mut gst::GstContext,
2362        instance: *mut *mut GstVulkanInstance,
2363    ) -> gboolean;
2364    pub fn gst_context_get_vulkan_queue(
2365        context: *mut gst::GstContext,
2366        queue: *mut *mut GstVulkanQueue,
2367    ) -> gboolean;
2368    pub fn gst_context_set_vulkan_device(
2369        context: *mut gst::GstContext,
2370        device: *mut GstVulkanDevice,
2371    );
2372    pub fn gst_context_set_vulkan_display(
2373        context: *mut gst::GstContext,
2374        display: *mut GstVulkanDisplay,
2375    );
2376    pub fn gst_context_set_vulkan_instance(
2377        context: *mut gst::GstContext,
2378        instance: *mut GstVulkanInstance,
2379    );
2380    pub fn gst_context_set_vulkan_queue(context: *mut gst::GstContext, queue: *mut GstVulkanQueue);
2381    pub fn gst_is_vulkan_buffer_memory(mem: *mut gst::GstMemory) -> gboolean;
2382    pub fn gst_is_vulkan_image_memory(mem: *mut gst::GstMemory) -> gboolean;
2383    pub fn gst_is_vulkan_memory(mem: *mut gst::GstMemory) -> gboolean;
2384    pub fn gst_vulkan_create_shader(
2385        device: *mut GstVulkanDevice,
2386        code: *const c_char,
2387        size: size_t,
2388        error: *mut *mut glib::GError,
2389    ) -> *mut GstVulkanHandle;
2390    pub fn gst_vulkan_ensure_element_data(
2391        element: *mut gst::GstElement,
2392        display_ptr: *mut *mut GstVulkanDisplay,
2393        instance_ptr: *mut *mut GstVulkanInstance,
2394    ) -> gboolean;
2395    #[cfg(feature = "v1_26")]
2396    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
2397    pub fn gst_vulkan_ensure_element_device(
2398        element: *mut gst::GstElement,
2399        instance: *mut GstVulkanInstance,
2400        device_ptr: *mut *mut GstVulkanDevice,
2401        device_id: c_uint,
2402    ) -> gboolean;
2403    pub fn gst_vulkan_format_from_video_info(
2404        v_info: *mut gst_video::GstVideoInfo,
2405        plane: c_uint,
2406    ) -> vulkan::VkFormat;
2407    #[cfg(feature = "v1_24")]
2408    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2409    pub fn gst_vulkan_format_from_video_info_2(
2410        device: *mut GstVulkanDevice,
2411        info: *mut gst_video::GstVideoInfo,
2412        tiling: vulkan::VkImageTiling,
2413        no_multiplane: gboolean,
2414        requested_usage: vulkan::VkImageUsageFlags,
2415        fmts: *mut [vulkan::VkFormat; 4],
2416        n_imgs: *mut c_int,
2417        usage: *mut vulkan::VkImageUsageFlags,
2418    ) -> gboolean;
2419    #[cfg(feature = "v1_24")]
2420    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2421    pub fn gst_vulkan_format_get_aspect(format: vulkan::VkFormat) -> c_uint;
2422    pub fn gst_vulkan_format_get_info(format: vulkan::VkFormat) -> *const GstVulkanFormatInfo;
2423    #[cfg(feature = "v1_26")]
2424    #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))]
2425    pub fn gst_vulkan_format_get_map(
2426        format: gst_video::GstVideoFormat,
2427    ) -> *const GstVulkanFormatMap;
2428    #[cfg(feature = "v1_24")]
2429    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2430    pub fn gst_vulkan_format_to_video_format(
2431        vk_format: vulkan::VkFormat,
2432    ) -> gst_video::GstVideoFormat;
2433    pub fn gst_vulkan_get_or_create_image_view(
2434        image: *mut GstVulkanImageMemory,
2435    ) -> *mut GstVulkanImageView;
2436    #[cfg(feature = "v1_24")]
2437    #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))]
2438    pub fn gst_vulkan_get_or_create_image_view_with_info(
2439        image: *mut GstVulkanImageMemory,
2440        create_info: *const vulkan::VkImageViewCreateInfo,
2441    ) -> *mut GstVulkanImageView;
2442    pub fn gst_vulkan_global_context_query(
2443        element: *mut gst::GstElement,
2444        context_type: *const c_char,
2445    );
2446    pub fn gst_vulkan_local_context_query(
2447        element: *mut gst::GstElement,
2448        context_type: *const c_char,
2449    ) -> *mut gst::GstQuery;
2450    #[cfg(feature = "v1_20")]
2451    #[cfg_attr(docsrs, doc(cfg(feature = "v1_20")))]
2452    pub fn gst_vulkan_present_mode_to_string(
2453        present_mode: vulkan::VkPresentModeKHR,
2454    ) -> *const c_char;
2455    #[cfg(feature = "v1_22")]
2456    #[cfg_attr(docsrs, doc(cfg(feature = "v1_22")))]
2457    pub fn gst_vulkan_result_to_string(result: vulkan::VkResult) -> *const c_char;
2458    pub fn gst_vulkan_run_query(
2459        element: *mut gst::GstElement,
2460        query: *mut gst::GstQuery,
2461        direction: gst::GstPadDirection,
2462    ) -> gboolean;
2463    pub fn gst_vulkan_sample_count_flags_to_string(
2464        sample_count_bits: vulkan::VkSampleCountFlags,
2465    ) -> *mut c_char;
2466
2467}