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