1#![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
37pub type GstVulkanHandleTypedef = u64;
39
40pub 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
85pub 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
98pub 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
116pub 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#[repr(C)]
132#[allow(dead_code)]
133pub struct GstVulkanBarrierBufferInfo {
134 _truncated_record_marker: c_void,
135 }
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 }
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 }
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 }
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 }
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 }
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 }
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 }
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 }
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 }
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 }
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 }
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#[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 }
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 }
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 }
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 }
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 }
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 }
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 pub fn gst_vulkan_barrier_flags_get_type() -> GType;
1340
1341 pub fn gst_vulkan_barrier_type_get_type() -> GType;
1345
1346 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 pub fn gst_vulkan_format_scaling_get_type() -> GType;
1362
1363 pub fn gst_vulkan_handle_type_get_type() -> GType;
1367
1368 pub fn gst_vulkan_window_error_get_type() -> GType;
1372 pub fn gst_vulkan_window_error_quark() -> glib::GQuark;
1373
1374 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 pub fn gst_vulkan_format_flags_get_type() -> GType;
1386
1387 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 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 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 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 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 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 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 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 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 pub fn gst_vulkan_buffer_memory_allocator_get_type() -> GType;
1604
1605 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 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 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 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 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 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 pub fn gst_vulkan_fence_cache_get_type() -> GType;
1784 pub fn gst_vulkan_fence_cache_new(device: *mut GstVulkanDevice) -> *mut GstVulkanFenceCache;
1785
1786 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 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 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 pub fn gst_vulkan_image_memory_allocator_get_type() -> GType;
1943
1944 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 pub fn gst_vulkan_memory_allocator_get_type() -> GType;
2046
2047 #[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 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 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 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 pub fn gst_vulkan_trash_fence_list_get_type() -> GType;
2265 pub fn gst_vulkan_trash_fence_list_new() -> *mut GstVulkanTrashList;
2266
2267 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 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 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 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}