From 594e9d0187912a261c1eb30364a6ca04ec97d624 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hanna=20Wei=C3=9F?= Date: Wed, 2 Jul 2025 12:04:54 +0200 Subject: [PATCH] vulkan: Update bindings Implemented manual bindings for "pixel-aspect-ratio" property since Gst.Fraction generated types mismatch. --- .gitlab-ci.yml | 2 +- gstreamer-vulkan/Gir.toml | 32 +- gstreamer-vulkan/src/auto/flags.rs | 1 + gstreamer-vulkan/src/auto/versions.txt | 6 +- .../auto/vulkan_buffer_memory_allocator.rs | 2 + .../src/auto/vulkan_buffer_pool.rs | 2 +- .../src/auto/vulkan_command_buffer.rs | 2 + .../src/auto/vulkan_command_pool.rs | 9 +- .../src/auto/vulkan_descriptor_cache.rs | 9 +- .../src/auto/vulkan_descriptor_pool.rs | 9 +- .../src/auto/vulkan_descriptor_set.rs | 2 + gstreamer-vulkan/src/auto/vulkan_device.rs | 43 +-- gstreamer-vulkan/src/auto/vulkan_display.rs | 9 +- gstreamer-vulkan/src/auto/vulkan_fence.rs | 2 +- .../src/auto/vulkan_full_screen_quad.rs | 9 +- gstreamer-vulkan/src/auto/vulkan_handle.rs | 2 +- .../src/auto/vulkan_handle_pool.rs | 8 +- .../src/auto/vulkan_image_buffer_pool.rs | 9 +- .../src/auto/vulkan_image_memory_allocator.rs | 2 + .../src/auto/vulkan_image_view.rs | 2 + gstreamer-vulkan/src/auto/vulkan_instance.rs | 91 +++++- gstreamer-vulkan/src/auto/vulkan_operation.rs | 26 +- .../src/auto/vulkan_physical_device.rs | 44 ++- gstreamer-vulkan/src/auto/vulkan_queue.rs | 9 +- gstreamer-vulkan/src/auto/vulkan_swapper.rs | 52 +-- gstreamer-vulkan/src/auto/vulkan_trash.rs | 25 +- .../src/auto/vulkan_video_filter.rs | 8 +- gstreamer-vulkan/src/auto/vulkan_window.rs | 50 ++- gstreamer-vulkan/src/lib.rs | 2 + gstreamer-vulkan/src/vulkan_device.rs | 5 +- gstreamer-vulkan/src/vulkan_swapper.rs | 21 ++ gstreamer-vulkan/sys/Cargo.toml | 2 +- gstreamer-vulkan/sys/src/auto/versions.txt | 6 +- gstreamer-vulkan/sys/src/lib.rs | 303 +++++++++++++++++- gstreamer-vulkan/sys/src/manual.rs | 1 + .../wayland/src/auto/versions.txt | 6 +- .../src/auto/vulkan_display_wayland.rs | 1 + gstreamer-vulkan/wayland/sys/Cargo.toml | 2 +- .../wayland/sys/src/auto/versions.txt | 6 +- gstreamer-vulkan/wayland/sys/src/lib.rs | 12 +- gstreamer-vulkan/xcb/src/auto/versions.txt | 6 +- .../xcb/src/auto/vulkan_display_xcb.rs | 1 + gstreamer-vulkan/xcb/sys/Cargo.toml | 2 +- .../xcb/sys/src/auto/versions.txt | 6 +- gstreamer-vulkan/xcb/sys/src/lib.rs | 13 +- 45 files changed, 581 insertions(+), 281 deletions(-) create mode 100644 gstreamer-vulkan/src/vulkan_swapper.rs diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 63bfea992..de2cfd212 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -142,7 +142,7 @@ trigger: stage: container-base variables: FDO_DISTRIBUTION_PACKAGES: >- - build-essential cmake curl glslc python3-setuptools libglib2.0-dev libxml2-dev + build-essential cmake curl python3-setuptools libglib2.0-dev libxml2-dev libdrm-dev libegl1-mesa-dev libgl1-mesa-dev libgbm-dev libgles2-mesa-dev libgl1-mesa-dri libegl-dev libgl-dev libgles-dev libglx-dev libssl-dev git wget ca-certificates ninja-build python3-pip flex bison diff --git a/gstreamer-vulkan/Gir.toml b/gstreamer-vulkan/Gir.toml index 40743af3b..795f2111e 100644 --- a/gstreamer-vulkan/Gir.toml +++ b/gstreamer-vulkan/Gir.toml @@ -42,7 +42,7 @@ generate = [ "GstVulkan.VulkanOperation", "GstVulkan.VulkanPhysicalDevice", "GstVulkan.VulkanQueue", - "GstVulkan.VulkanSwapper", + # "GstVulkan.VulkanSwapper", "GstVulkan.VulkanTrash", "GstVulkan.VulkanVideoFilter", "GstVulkan.VulkanWindow", @@ -93,6 +93,20 @@ name = "Gst.Structure" status = "manual" ref_mode = "ref" +[[object]] +name = "GstVulkan.VulkanDescriptorCache" +status = "generate" + [[object.function]] + name = "new" + ignore = true + +[[object]] +name = "GstVulkan.VulkanDescriptorPool" +status = "generate" + [[object.function]] + name = "create" + ignore = true + [[object]] name = "GstVulkan.VulkanFullScreenQuad" status = "generate" @@ -104,15 +118,9 @@ status = "generate" ref_mode = "ref" [[object]] -name = "GstVulkan.VulkanDescriptorPool" +name = "GstVulkan.VulkanSwapper" status = "generate" - [[object.function]] - name = "create" - ignore = true - -[[object]] -name = "GstVulkan.VulkanDescriptorCache" -status = "generate" - [[object.function]] - name = "new" - ignore = true + [[object.property]] + name = "pixel-aspect-ratio" + # fraction + manual = true diff --git a/gstreamer-vulkan/src/auto/flags.rs b/gstreamer-vulkan/src/auto/flags.rs index 1d31a2a55..4638ccec5 100644 --- a/gstreamer-vulkan/src/auto/flags.rs +++ b/gstreamer-vulkan/src/auto/flags.rs @@ -3,6 +3,7 @@ // from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git) // DO NOT EDIT +use crate::ffi; use glib::{bitflags::bitflags, prelude::*, translate::*}; bitflags! { diff --git a/gstreamer-vulkan/src/auto/versions.txt b/gstreamer-vulkan/src/auto/versions.txt index 5753ee763..2687aff1f 100644 --- a/gstreamer-vulkan/src/auto/versions.txt +++ b/gstreamer-vulkan/src/auto/versions.txt @@ -1,3 +1,3 @@ -Generated by gir (https://github.com/gtk-rs/gir @ 5223ce91b97a) -from gir-files (https://github.com/gtk-rs/gir-files @ 6cd7b656acd6) -from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git @ d62956d67216+) +Generated by gir (https://github.com/gtk-rs/gir @ 2d0807e9c5bc) +from gir-files (https://github.com/gtk-rs/gir-files @ 6668d0f5551a) +from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git @ 2dcaaf8ae3d8+) diff --git a/gstreamer-vulkan/src/auto/vulkan_buffer_memory_allocator.rs b/gstreamer-vulkan/src/auto/vulkan_buffer_memory_allocator.rs index 84da5d8d6..3ae119cca 100644 --- a/gstreamer-vulkan/src/auto/vulkan_buffer_memory_allocator.rs +++ b/gstreamer-vulkan/src/auto/vulkan_buffer_memory_allocator.rs @@ -3,6 +3,8 @@ // from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git) // DO NOT EDIT +use crate::ffi; + glib::wrapper! { #[doc(alias = "GstVulkanBufferMemoryAllocator")] pub struct VulkanBufferMemoryAllocator(Object) @extends gst::Allocator, gst::Object; diff --git a/gstreamer-vulkan/src/auto/vulkan_buffer_pool.rs b/gstreamer-vulkan/src/auto/vulkan_buffer_pool.rs index ff65a4f3d..ee07ba81c 100644 --- a/gstreamer-vulkan/src/auto/vulkan_buffer_pool.rs +++ b/gstreamer-vulkan/src/auto/vulkan_buffer_pool.rs @@ -3,7 +3,7 @@ // from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git) // DO NOT EDIT -use crate::VulkanDevice; +use crate::{ffi, VulkanDevice}; use glib::{prelude::*, translate::*}; glib::wrapper! { diff --git a/gstreamer-vulkan/src/auto/vulkan_command_buffer.rs b/gstreamer-vulkan/src/auto/vulkan_command_buffer.rs index 0c30d1bd8..8ec760d7b 100644 --- a/gstreamer-vulkan/src/auto/vulkan_command_buffer.rs +++ b/gstreamer-vulkan/src/auto/vulkan_command_buffer.rs @@ -3,6 +3,8 @@ // from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git) // DO NOT EDIT +use crate::ffi; + glib::wrapper! { #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] pub struct VulkanCommandBuffer(Boxed); diff --git a/gstreamer-vulkan/src/auto/vulkan_command_pool.rs b/gstreamer-vulkan/src/auto/vulkan_command_pool.rs index 1b872defe..824ed16b4 100644 --- a/gstreamer-vulkan/src/auto/vulkan_command_pool.rs +++ b/gstreamer-vulkan/src/auto/vulkan_command_pool.rs @@ -3,7 +3,7 @@ // from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git) // DO NOT EDIT -use crate::{VulkanCommandBuffer, VulkanQueue}; +use crate::{ffi, VulkanCommandBuffer, VulkanQueue}; use glib::{prelude::*, translate::*}; glib::wrapper! { @@ -22,12 +22,7 @@ impl VulkanCommandPool { unsafe impl Send for VulkanCommandPool {} unsafe impl Sync for VulkanCommandPool {} -mod sealed { - pub trait Sealed {} - impl> Sealed for T {} -} - -pub trait VulkanCommandPoolExt: IsA + sealed::Sealed + 'static { +pub trait VulkanCommandPoolExt: IsA + 'static { #[doc(alias = "gst_vulkan_command_pool_create")] fn create(&self) -> Result { unsafe { diff --git a/gstreamer-vulkan/src/auto/vulkan_descriptor_cache.rs b/gstreamer-vulkan/src/auto/vulkan_descriptor_cache.rs index 87f4490a5..11a4cbec8 100644 --- a/gstreamer-vulkan/src/auto/vulkan_descriptor_cache.rs +++ b/gstreamer-vulkan/src/auto/vulkan_descriptor_cache.rs @@ -3,7 +3,7 @@ // from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git) // DO NOT EDIT -use crate::{VulkanDescriptorSet, VulkanHandlePool}; +use crate::{ffi, VulkanDescriptorSet, VulkanHandlePool}; use glib::{prelude::*, translate::*}; glib::wrapper! { @@ -22,12 +22,7 @@ impl VulkanDescriptorCache { unsafe impl Send for VulkanDescriptorCache {} unsafe impl Sync for VulkanDescriptorCache {} -mod sealed { - pub trait Sealed {} - impl> Sealed for T {} -} - -pub trait VulkanDescriptorCacheExt: IsA + sealed::Sealed + 'static { +pub trait VulkanDescriptorCacheExt: IsA + 'static { #[doc(alias = "gst_vulkan_descriptor_cache_acquire")] fn acquire(&self) -> Result { unsafe { diff --git a/gstreamer-vulkan/src/auto/vulkan_descriptor_pool.rs b/gstreamer-vulkan/src/auto/vulkan_descriptor_pool.rs index fd139df59..740221767 100644 --- a/gstreamer-vulkan/src/auto/vulkan_descriptor_pool.rs +++ b/gstreamer-vulkan/src/auto/vulkan_descriptor_pool.rs @@ -3,7 +3,7 @@ // from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git) // DO NOT EDIT -use crate::VulkanDevice; +use crate::{ffi, VulkanDevice}; use glib::{prelude::*, translate::*}; glib::wrapper! { @@ -27,12 +27,7 @@ impl VulkanDescriptorPool { unsafe impl Send for VulkanDescriptorPool {} unsafe impl Sync for VulkanDescriptorPool {} -mod sealed { - pub trait Sealed {} - impl> Sealed for T {} -} - -pub trait VulkanDescriptorPoolExt: IsA + sealed::Sealed + 'static { +pub trait VulkanDescriptorPoolExt: IsA + 'static { #[doc(alias = "gst_vulkan_descriptor_pool_get_device")] #[doc(alias = "get_device")] fn device(&self) -> VulkanDevice { diff --git a/gstreamer-vulkan/src/auto/vulkan_descriptor_set.rs b/gstreamer-vulkan/src/auto/vulkan_descriptor_set.rs index 03d0ba069..a35ff758f 100644 --- a/gstreamer-vulkan/src/auto/vulkan_descriptor_set.rs +++ b/gstreamer-vulkan/src/auto/vulkan_descriptor_set.rs @@ -3,6 +3,8 @@ // from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git) // DO NOT EDIT +use crate::ffi; + glib::wrapper! { #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] pub struct VulkanDescriptorSet(Boxed); diff --git a/gstreamer-vulkan/src/auto/vulkan_device.rs b/gstreamer-vulkan/src/auto/vulkan_device.rs index 8c987e7e5..701b5483f 100644 --- a/gstreamer-vulkan/src/auto/vulkan_device.rs +++ b/gstreamer-vulkan/src/auto/vulkan_device.rs @@ -3,7 +3,7 @@ // from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git) // DO NOT EDIT -use crate::{VulkanFence, VulkanInstance, VulkanPhysicalDevice, VulkanQueue}; +use crate::{ffi, VulkanFence, VulkanInstance, VulkanPhysicalDevice, VulkanQueue}; use glib::{ prelude::*, signal::{connect_raw, SignalHandlerId}, @@ -70,12 +70,7 @@ impl VulkanDevice { unsafe impl Send for VulkanDevice {} unsafe impl Sync for VulkanDevice {} -mod sealed { - pub trait Sealed {} - impl> Sealed for T {} -} - -pub trait VulkanDeviceExt: IsA + sealed::Sealed + 'static { +pub trait VulkanDeviceExt: IsA + 'static { #[doc(alias = "gst_vulkan_device_create_fence")] fn create_fence(&self) -> Result, glib::Error> { unsafe { @@ -121,36 +116,25 @@ pub trait VulkanDeviceExt: IsA + sealed::Sealed + 'static { } #[doc(alias = "gst_vulkan_device_foreach_queue")] - fn foreach_queue(&self, func: Option<&mut dyn (FnMut(&VulkanDevice, &VulkanQueue) -> bool)>) { - let func_data: Option<&mut dyn (FnMut(&VulkanDevice, &VulkanQueue) -> bool)> = func; - unsafe extern "C" fn func_func( + fn foreach_queue bool>(&self, func: P) { + let mut func_data: P = func; + unsafe extern "C" fn func_func bool>( device: *mut ffi::GstVulkanDevice, queue: *mut ffi::GstVulkanQueue, user_data: glib::ffi::gpointer, ) -> glib::ffi::gboolean { let device = from_glib_borrow(device); let queue = from_glib_borrow(queue); - let callback = - user_data as *mut Option<&mut dyn (FnMut(&VulkanDevice, &VulkanQueue) -> bool)>; - if let Some(ref mut callback) = *callback { - callback(&device, &queue) - } else { - panic!("cannot get closure...") - } - .into_glib() + let callback = user_data as *mut P; + (*callback)(&device, &queue).into_glib() } - let func = if func_data.is_some() { - Some(func_func as _) - } else { - None - }; - let super_callback0: &Option<&mut dyn (FnMut(&VulkanDevice, &VulkanQueue) -> bool)> = - &func_data; + let func = Some(func_func::

as _); + let super_callback0: &mut P = &mut func_data; unsafe { ffi::gst_vulkan_device_foreach_queue( self.as_ref().to_glib_none().0, func, - super_callback0 as *const _ as *mut _, + super_callback0 as *mut _ as *mut _, ); } } @@ -167,6 +151,7 @@ pub trait VulkanDeviceExt: IsA + sealed::Sealed + 'static { //#[doc(alias = "gst_vulkan_device_get_physical_device")] //#[doc(alias = "get_physical_device")] + //#[doc(alias = "physical-device")] //fn physical_device(&self) -> /*Ignored*/vulkan::PhysicalDevice { // unsafe { TODO: call ffi:gst_vulkan_device_get_physical_device() } //} @@ -233,7 +218,7 @@ pub trait VulkanDeviceExt: IsA + sealed::Sealed + 'static { //#[cfg(feature = "v1_24")] //#[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))] //#[doc(alias = "gst_vulkan_device_select_queue")] - //fn select_queue(&self, expected_flags: /*Ignored*/&vulkan::QueueFlagBits) -> VulkanQueue { + //fn select_queue(&self, expected_flags: /*Ignored*/&vulkan::QueueFlagBits) -> Option { // unsafe { TODO: call ffi:gst_vulkan_device_select_queue() } //} @@ -257,8 +242,8 @@ pub trait VulkanDeviceExt: IsA + sealed::Sealed + 'static { let f: Box_ = Box_::new(f); connect_raw( self.as_ptr() as *mut _, - b"notify::instance\0".as_ptr() as *const _, - Some(std::mem::transmute::<_, unsafe extern "C" fn()>( + c"notify::instance".as_ptr() as *const _, + Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>( notify_instance_trampoline:: as *const (), )), Box_::into_raw(f), diff --git a/gstreamer-vulkan/src/auto/vulkan_display.rs b/gstreamer-vulkan/src/auto/vulkan_display.rs index 3d0726697..57a17eafe 100644 --- a/gstreamer-vulkan/src/auto/vulkan_display.rs +++ b/gstreamer-vulkan/src/auto/vulkan_display.rs @@ -3,7 +3,7 @@ // from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git) // DO NOT EDIT -use crate::{VulkanDisplayType, VulkanInstance, VulkanWindow}; +use crate::{ffi, VulkanDisplayType, VulkanInstance, VulkanWindow}; use glib::{prelude::*, translate::*}; glib::wrapper! { @@ -78,12 +78,7 @@ impl VulkanDisplay { unsafe impl Send for VulkanDisplay {} unsafe impl Sync for VulkanDisplay {} -mod sealed { - pub trait Sealed {} - impl> Sealed for T {} -} - -pub trait VulkanDisplayExt: IsA + sealed::Sealed + 'static { +pub trait VulkanDisplayExt: IsA + 'static { #[doc(alias = "gst_vulkan_display_create_window")] fn create_window(&self) -> Option { unsafe { diff --git a/gstreamer-vulkan/src/auto/vulkan_fence.rs b/gstreamer-vulkan/src/auto/vulkan_fence.rs index 2de86a1cd..a39b09fa2 100644 --- a/gstreamer-vulkan/src/auto/vulkan_fence.rs +++ b/gstreamer-vulkan/src/auto/vulkan_fence.rs @@ -3,7 +3,7 @@ // from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git) // DO NOT EDIT -use crate::VulkanDevice; +use crate::{ffi, VulkanDevice}; use glib::{prelude::*, translate::*}; glib::wrapper! { diff --git a/gstreamer-vulkan/src/auto/vulkan_full_screen_quad.rs b/gstreamer-vulkan/src/auto/vulkan_full_screen_quad.rs index 157a3665c..02f773dd4 100644 --- a/gstreamer-vulkan/src/auto/vulkan_full_screen_quad.rs +++ b/gstreamer-vulkan/src/auto/vulkan_full_screen_quad.rs @@ -3,7 +3,7 @@ // from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git) // DO NOT EDIT -use crate::{VulkanCommandBuffer, VulkanFence, VulkanHandle, VulkanQueue}; +use crate::{ffi, VulkanCommandBuffer, VulkanFence, VulkanHandle, VulkanQueue}; use glib::{prelude::*, translate::*}; glib::wrapper! { @@ -29,12 +29,7 @@ impl VulkanFullScreenQuad { } } -mod sealed { - pub trait Sealed {} - impl> Sealed for T {} -} - -pub trait VulkanFullScreenQuadExt: IsA + sealed::Sealed + 'static { +pub trait VulkanFullScreenQuadExt: IsA + 'static { #[doc(alias = "gst_vulkan_full_screen_quad_draw")] fn draw(&self) -> Result<(), glib::Error> { unsafe { diff --git a/gstreamer-vulkan/src/auto/vulkan_handle.rs b/gstreamer-vulkan/src/auto/vulkan_handle.rs index 8a65c9365..144f3e272 100644 --- a/gstreamer-vulkan/src/auto/vulkan_handle.rs +++ b/gstreamer-vulkan/src/auto/vulkan_handle.rs @@ -3,7 +3,7 @@ // from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git) // DO NOT EDIT -use crate::{VulkanDevice, VulkanDisplay, VulkanInstance}; +use crate::{ffi, VulkanDevice, VulkanDisplay, VulkanInstance}; use glib::{prelude::*, translate::*}; glib::wrapper! { diff --git a/gstreamer-vulkan/src/auto/vulkan_handle_pool.rs b/gstreamer-vulkan/src/auto/vulkan_handle_pool.rs index 6001cec93..1cb7da9d1 100644 --- a/gstreamer-vulkan/src/auto/vulkan_handle_pool.rs +++ b/gstreamer-vulkan/src/auto/vulkan_handle_pool.rs @@ -3,6 +3,7 @@ // from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git) // DO NOT EDIT +use crate::ffi; use glib::prelude::*; glib::wrapper! { @@ -21,12 +22,7 @@ impl VulkanHandlePool { unsafe impl Send for VulkanHandlePool {} unsafe impl Sync for VulkanHandlePool {} -mod sealed { - pub trait Sealed {} - impl> Sealed for T {} -} - -pub trait VulkanHandlePoolExt: IsA + sealed::Sealed + 'static { +pub trait VulkanHandlePoolExt: IsA + 'static { //#[doc(alias = "gst_vulkan_handle_pool_acquire")] //fn acquire(&self) -> Result, glib::Error> { // unsafe { TODO: call ffi:gst_vulkan_handle_pool_acquire() } diff --git a/gstreamer-vulkan/src/auto/vulkan_image_buffer_pool.rs b/gstreamer-vulkan/src/auto/vulkan_image_buffer_pool.rs index 2fb6789cb..d3b08d8ce 100644 --- a/gstreamer-vulkan/src/auto/vulkan_image_buffer_pool.rs +++ b/gstreamer-vulkan/src/auto/vulkan_image_buffer_pool.rs @@ -3,7 +3,7 @@ // from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git) // DO NOT EDIT -use crate::VulkanDevice; +use crate::{ffi, VulkanDevice}; use glib::{prelude::*, translate::*}; glib::wrapper! { @@ -29,6 +29,13 @@ impl VulkanImageBufferPool { } } + //#[cfg(feature = "v1_26")] + //#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))] + //#[doc(alias = "gst_vulkan_image_buffer_pool_config_get_allocation_params")] + //pub fn config_get_allocation_params(config: &gst::Structure, usage: /*Ignored*/vulkan::ImageUsageFlags, mem_props: /*Ignored*/vulkan::MemoryPropertyFlags, initial_layout: /*Ignored*/vulkan::ImageLayout) -> u64 { + // unsafe { TODO: call ffi:gst_vulkan_image_buffer_pool_config_get_allocation_params() } + //} + //#[cfg(feature = "v1_24")] //#[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))] //#[doc(alias = "gst_vulkan_image_buffer_pool_config_set_allocation_params")] diff --git a/gstreamer-vulkan/src/auto/vulkan_image_memory_allocator.rs b/gstreamer-vulkan/src/auto/vulkan_image_memory_allocator.rs index e297e65df..9d1d18762 100644 --- a/gstreamer-vulkan/src/auto/vulkan_image_memory_allocator.rs +++ b/gstreamer-vulkan/src/auto/vulkan_image_memory_allocator.rs @@ -3,6 +3,8 @@ // from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git) // DO NOT EDIT +use crate::ffi; + glib::wrapper! { #[doc(alias = "GstVulkanImageMemoryAllocator")] pub struct VulkanImageMemoryAllocator(Object) @extends gst::Allocator, gst::Object; diff --git a/gstreamer-vulkan/src/auto/vulkan_image_view.rs b/gstreamer-vulkan/src/auto/vulkan_image_view.rs index efdfabff5..5575c80da 100644 --- a/gstreamer-vulkan/src/auto/vulkan_image_view.rs +++ b/gstreamer-vulkan/src/auto/vulkan_image_view.rs @@ -3,6 +3,8 @@ // from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git) // DO NOT EDIT +use crate::ffi; + glib::wrapper! { #[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash)] pub struct VulkanImageView(Boxed); diff --git a/gstreamer-vulkan/src/auto/vulkan_instance.rs b/gstreamer-vulkan/src/auto/vulkan_instance.rs index 4fec60847..8a793e31b 100644 --- a/gstreamer-vulkan/src/auto/vulkan_instance.rs +++ b/gstreamer-vulkan/src/auto/vulkan_instance.rs @@ -3,7 +3,10 @@ // from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git) // DO NOT EDIT -use crate::VulkanDevice; +use crate::{ffi, VulkanDevice}; +#[cfg(feature = "v1_26")] +#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))] +use glib::object::ObjectType as _; use glib::{ prelude::*, signal::{connect_raw, SignalHandlerId}, @@ -60,12 +63,21 @@ impl Default for VulkanInstance { unsafe impl Send for VulkanInstance {} unsafe impl Sync for VulkanInstance {} -mod sealed { - pub trait Sealed {} - impl> Sealed for T {} -} +pub trait VulkanInstanceExt: IsA + 'static { + #[cfg(feature = "v1_26")] + #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))] + #[doc(alias = "gst_vulkan_instance_check_api_version")] + fn check_api_version(&self, major: u32, minor: u32, patch: u32) -> bool { + unsafe { + from_glib(ffi::gst_vulkan_instance_check_api_version( + self.as_ref().to_glib_none().0, + major, + minor, + patch, + )) + } + } -pub trait VulkanInstanceExt: IsA + sealed::Sealed + 'static { #[doc(alias = "gst_vulkan_instance_check_version")] fn check_version(&self, major: u32, minor: u32, patch: u32) -> bool { unsafe { @@ -92,6 +104,25 @@ pub trait VulkanInstanceExt: IsA + sealed::Sealed + 'static { } } + #[cfg(feature = "v1_26")] + #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))] + #[doc(alias = "gst_vulkan_instance_create_device_with_index")] + fn create_device_with_index(&self, device_index: u32) -> Result { + unsafe { + let mut error = std::ptr::null_mut(); + let ret = ffi::gst_vulkan_instance_create_device_with_index( + self.as_ref().to_glib_none().0, + device_index, + &mut error, + ); + if error.is_null() { + Ok(from_glib_full(ret)) + } else { + Err(from_glib_full(error)) + } + } + } + #[doc(alias = "gst_vulkan_instance_disable_extension")] fn disable_extension(&self, name: &str) -> bool { unsafe { @@ -137,6 +168,29 @@ pub trait VulkanInstanceExt: IsA + sealed::Sealed + 'static { } } + #[cfg(feature = "v1_26")] + #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))] + #[doc(alias = "gst_vulkan_instance_get_api_version")] + #[doc(alias = "get_api_version")] + fn api_version(&self) -> (u32, u32, u32) { + unsafe { + let mut major = std::mem::MaybeUninit::uninit(); + let mut minor = std::mem::MaybeUninit::uninit(); + let mut patch = std::mem::MaybeUninit::uninit(); + ffi::gst_vulkan_instance_get_api_version( + self.as_ref().to_glib_none().0, + major.as_mut_ptr(), + minor.as_mut_ptr(), + patch.as_mut_ptr(), + ); + ( + major.assume_init(), + minor.assume_init(), + patch.assume_init(), + ) + } + } + #[doc(alias = "gst_vulkan_instance_get_extension_info")] #[doc(alias = "get_extension_info")] fn extension_info(&self, name: &str) -> Option { @@ -262,27 +316,34 @@ pub trait VulkanInstanceExt: IsA + sealed::Sealed + 'static { ObjectExt::set_property(self.as_ref(), "requested-api-minor", requested_api_minor) } + #[cfg(feature = "v1_26")] + #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))] #[doc(alias = "create-device")] - fn connect_create_device VulkanDevice + Send + Sync + 'static>( + fn connect_create_device VulkanDevice + Send + Sync + 'static>( &self, f: F, ) -> SignalHandlerId { unsafe extern "C" fn create_device_trampoline< P: IsA, - F: Fn(&P) -> VulkanDevice + Send + Sync + 'static, + F: Fn(&P, u32) -> VulkanDevice + Send + Sync + 'static, >( this: *mut ffi::GstVulkanInstance, + device_index: std::ffi::c_uint, f: glib::ffi::gpointer, ) -> *mut ffi::GstVulkanDevice { let f: &F = &*(f as *const F); - f(VulkanInstance::from_glib_borrow(this).unsafe_cast_ref()).to_glib_full() + f( + VulkanInstance::from_glib_borrow(this).unsafe_cast_ref(), + device_index, + ) + .to_glib_full() } unsafe { let f: Box_ = Box_::new(f); connect_raw( self.as_ptr() as *mut _, - b"create-device\0".as_ptr() as *const _, - Some(std::mem::transmute::<_, unsafe extern "C" fn()>( + c"create-device".as_ptr() as *const _, + Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>( create_device_trampoline:: as *const (), )), Box_::into_raw(f), @@ -310,8 +371,8 @@ pub trait VulkanInstanceExt: IsA + sealed::Sealed + 'static { let f: Box_ = Box_::new(f); connect_raw( self.as_ptr() as *mut _, - b"notify::requested-api-major\0".as_ptr() as *const _, - Some(std::mem::transmute::<_, unsafe extern "C" fn()>( + c"notify::requested-api-major".as_ptr() as *const _, + Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>( notify_requested_api_major_trampoline:: as *const (), )), Box_::into_raw(f), @@ -339,8 +400,8 @@ pub trait VulkanInstanceExt: IsA + sealed::Sealed + 'static { let f: Box_ = Box_::new(f); connect_raw( self.as_ptr() as *mut _, - b"notify::requested-api-minor\0".as_ptr() as *const _, - Some(std::mem::transmute::<_, unsafe extern "C" fn()>( + c"notify::requested-api-minor".as_ptr() as *const _, + Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>( notify_requested_api_minor_trampoline:: as *const (), )), Box_::into_raw(f), diff --git a/gstreamer-vulkan/src/auto/vulkan_operation.rs b/gstreamer-vulkan/src/auto/vulkan_operation.rs index aca88900b..74f536de6 100644 --- a/gstreamer-vulkan/src/auto/vulkan_operation.rs +++ b/gstreamer-vulkan/src/auto/vulkan_operation.rs @@ -3,7 +3,7 @@ // from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git) // DO NOT EDIT -use crate::VulkanCommandPool; +use crate::{ffi, VulkanCommandPool}; use glib::{prelude::*, translate::*}; glib::wrapper! { @@ -32,12 +32,7 @@ impl VulkanOperation { unsafe impl Send for VulkanOperation {} unsafe impl Sync for VulkanOperation {} -mod sealed { - pub trait Sealed {} - impl> Sealed for T {} -} - -pub trait VulkanOperationExt: IsA + sealed::Sealed + 'static { +pub trait VulkanOperationExt: IsA + 'static { #[doc(alias = "gst_vulkan_operation_add_dependency_frame")] fn add_dependency_frame( &self, @@ -61,7 +56,7 @@ pub trait VulkanOperationExt: IsA + sealed::Sealed + 'static { //} //#[doc(alias = "gst_vulkan_operation_add_frame_barrier")] - //fn add_frame_barrier(&self, frame: &gst::Buffer, dst_stage: u64, new_access: u64, new_layout: /*Ignored*/&vulkan::ImageLayout, new_queue: Option<&impl IsA>) -> bool { + //fn add_frame_barrier(&self, frame: &gst::Buffer, src_stage: u64, dst_stage: u64, new_access: u64, new_layout: /*Ignored*/&vulkan::ImageLayout, new_queue: Option<&impl IsA>) -> bool { // unsafe { TODO: call ffi:gst_vulkan_operation_add_frame_barrier() } //} @@ -79,15 +74,12 @@ pub trait VulkanOperationExt: IsA + sealed::Sealed + 'static { } } - #[doc(alias = "gst_vulkan_operation_begin_query")] - fn begin_query(&self, id: u32) -> bool { - unsafe { - from_glib(ffi::gst_vulkan_operation_begin_query( - self.as_ref().to_glib_none().0, - id, - )) - } - } + //#[cfg(feature = "v1_26")] + //#[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))] + //#[doc(alias = "gst_vulkan_operation_begin_query")] + //fn begin_query(&self, base: /*Ignored*/&mut vulkan::BaseInStructure, id: u32) -> bool { + // unsafe { TODO: call ffi:gst_vulkan_operation_begin_query() } + //} #[doc(alias = "gst_vulkan_operation_discard_dependencies")] fn discard_dependencies(&self) { diff --git a/gstreamer-vulkan/src/auto/vulkan_physical_device.rs b/gstreamer-vulkan/src/auto/vulkan_physical_device.rs index fff5a527b..0c695fdcc 100644 --- a/gstreamer-vulkan/src/auto/vulkan_physical_device.rs +++ b/gstreamer-vulkan/src/auto/vulkan_physical_device.rs @@ -3,7 +3,7 @@ // from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git) // DO NOT EDIT -use crate::VulkanInstance; +use crate::{ffi, VulkanInstance}; use glib::{prelude::*, translate::*}; glib::wrapper! { @@ -38,12 +38,44 @@ impl VulkanPhysicalDevice { unsafe impl Send for VulkanPhysicalDevice {} unsafe impl Sync for VulkanPhysicalDevice {} -mod sealed { - pub trait Sealed {} - impl> Sealed for T {} -} +pub trait VulkanPhysicalDeviceExt: IsA + 'static { + #[cfg(feature = "v1_26")] + #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))] + #[doc(alias = "gst_vulkan_physical_device_check_api_version")] + fn check_api_version(&self, major: u32, minor: u32, patch: u32) -> bool { + unsafe { + from_glib(ffi::gst_vulkan_physical_device_check_api_version( + self.as_ref().to_glib_none().0, + major, + minor, + patch, + )) + } + } + + #[cfg(feature = "v1_26")] + #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))] + #[doc(alias = "gst_vulkan_physical_device_get_api_version")] + #[doc(alias = "get_api_version")] + fn api_version(&self) -> (u32, u32, u32) { + unsafe { + let mut major = std::mem::MaybeUninit::uninit(); + let mut minor = std::mem::MaybeUninit::uninit(); + let mut patch = std::mem::MaybeUninit::uninit(); + ffi::gst_vulkan_physical_device_get_api_version( + self.as_ref().to_glib_none().0, + major.as_mut_ptr(), + minor.as_mut_ptr(), + patch.as_mut_ptr(), + ); + ( + major.assume_init(), + minor.assume_init(), + patch.assume_init(), + ) + } + } -pub trait VulkanPhysicalDeviceExt: IsA + sealed::Sealed + 'static { #[doc(alias = "gst_vulkan_physical_device_get_extension_info")] #[doc(alias = "get_extension_info")] fn extension_info(&self, name: &str) -> Option { diff --git a/gstreamer-vulkan/src/auto/vulkan_queue.rs b/gstreamer-vulkan/src/auto/vulkan_queue.rs index e978adb97..ab02e8d85 100644 --- a/gstreamer-vulkan/src/auto/vulkan_queue.rs +++ b/gstreamer-vulkan/src/auto/vulkan_queue.rs @@ -3,7 +3,7 @@ // from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git) // DO NOT EDIT -use crate::{VulkanCommandPool, VulkanDevice}; +use crate::{ffi, VulkanCommandPool, VulkanDevice}; use glib::{prelude::*, translate::*}; glib::wrapper! { @@ -48,12 +48,7 @@ impl VulkanQueue { unsafe impl Send for VulkanQueue {} unsafe impl Sync for VulkanQueue {} -mod sealed { - pub trait Sealed {} - impl> Sealed for T {} -} - -pub trait VulkanQueueExt: IsA + sealed::Sealed + 'static { +pub trait VulkanQueueExt: IsA + 'static { #[doc(alias = "gst_vulkan_queue_create_command_pool")] fn create_command_pool(&self) -> Result { unsafe { diff --git a/gstreamer-vulkan/src/auto/vulkan_swapper.rs b/gstreamer-vulkan/src/auto/vulkan_swapper.rs index db915c5c1..ced53b2b4 100644 --- a/gstreamer-vulkan/src/auto/vulkan_swapper.rs +++ b/gstreamer-vulkan/src/auto/vulkan_swapper.rs @@ -3,7 +3,7 @@ // from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git) // DO NOT EDIT -use crate::{VulkanDevice, VulkanQueue, VulkanWindow}; +use crate::{ffi, VulkanDevice, VulkanQueue, VulkanWindow}; use glib::{ prelude::*, signal::{connect_raw, SignalHandlerId}, @@ -38,12 +38,7 @@ impl VulkanSwapper { unsafe impl Send for VulkanSwapper {} unsafe impl Sync for VulkanSwapper {} -mod sealed { - pub trait Sealed {} - impl> Sealed for T {} -} - -pub trait VulkanSwapperExt: IsA + sealed::Sealed + 'static { +pub trait VulkanSwapperExt: IsA + 'static { #[doc(alias = "gst_vulkan_swapper_choose_queue")] fn choose_queue( &self, @@ -134,16 +129,6 @@ pub trait VulkanSwapperExt: IsA + sealed::Sealed + 'static { ObjectExt::set_property(self.as_ref(), "force-aspect-ratio", force_aspect_ratio) } - #[doc(alias = "pixel-aspect-ratio")] - fn pixel_aspect_ratio(&self) -> Option { - ObjectExt::property(self.as_ref(), "pixel-aspect-ratio") - } - - #[doc(alias = "pixel-aspect-ratio")] - fn set_pixel_aspect_ratio(&self, pixel_aspect_ratio: Option<&gst::Fraction>) { - ObjectExt::set_property(self.as_ref(), "pixel-aspect-ratio", pixel_aspect_ratio) - } - #[doc(alias = "force-aspect-ratio")] fn connect_force_aspect_ratio_notify( &self, @@ -164,43 +149,14 @@ pub trait VulkanSwapperExt: IsA + sealed::Sealed + 'static { let f: Box_ = Box_::new(f); connect_raw( self.as_ptr() as *mut _, - b"notify::force-aspect-ratio\0".as_ptr() as *const _, - Some(std::mem::transmute::<_, unsafe extern "C" fn()>( + c"notify::force-aspect-ratio".as_ptr() as *const _, + Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>( notify_force_aspect_ratio_trampoline:: as *const (), )), Box_::into_raw(f), ) } } - - #[doc(alias = "pixel-aspect-ratio")] - fn connect_pixel_aspect_ratio_notify( - &self, - f: F, - ) -> SignalHandlerId { - unsafe extern "C" fn notify_pixel_aspect_ratio_trampoline< - P: IsA, - F: Fn(&P) + Send + Sync + 'static, - >( - this: *mut ffi::GstVulkanSwapper, - _param_spec: glib::ffi::gpointer, - f: glib::ffi::gpointer, - ) { - let f: &F = &*(f as *const F); - f(VulkanSwapper::from_glib_borrow(this).unsafe_cast_ref()) - } - unsafe { - let f: Box_ = Box_::new(f); - connect_raw( - self.as_ptr() as *mut _, - b"notify::pixel-aspect-ratio\0".as_ptr() as *const _, - Some(std::mem::transmute::<_, unsafe extern "C" fn()>( - notify_pixel_aspect_ratio_trampoline:: as *const (), - )), - Box_::into_raw(f), - ) - } - } } impl> VulkanSwapperExt for O {} diff --git a/gstreamer-vulkan/src/auto/vulkan_trash.rs b/gstreamer-vulkan/src/auto/vulkan_trash.rs index 28cfd087a..09af02ddf 100644 --- a/gstreamer-vulkan/src/auto/vulkan_trash.rs +++ b/gstreamer-vulkan/src/auto/vulkan_trash.rs @@ -3,7 +3,7 @@ // from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git) // DO NOT EDIT -use crate::{VulkanDevice, VulkanFence}; +use crate::{ffi, VulkanDevice, VulkanFence}; use glib::translate::*; use std::boxed::Box as Box_; @@ -20,29 +20,22 @@ glib::wrapper! { impl VulkanTrash { #[doc(alias = "gst_vulkan_trash_new")] - pub fn new( + pub fn new( fence: &mut VulkanFence, - notify: Option>, + notify: P, ) -> VulkanTrash { assert_initialized_main_thread!(); - let notify_data: Box_>> = - Box_::new(notify); - unsafe extern "C" fn notify_func( + let notify_data: Box_

= Box_::new(notify); + unsafe extern "C" fn notify_func( device: *mut ffi::GstVulkanDevice, user_data: glib::ffi::gpointer, ) { let device = from_glib_borrow(device); - let callback = - Box_::from_raw(user_data as *mut Option>); - let callback = (*callback).expect("cannot get closure..."); - callback(&device) + let callback = Box_::from_raw(user_data as *mut P); + (*callback)(&device) } - let notify = if notify_data.is_some() { - Some(notify_func as _) - } else { - None - }; - let super_callback0: Box_>> = notify_data; + let notify = Some(notify_func::

as _); + let super_callback0: Box_

= notify_data; unsafe { from_glib_full(ffi::gst_vulkan_trash_new( fence.to_glib_none_mut().0, diff --git a/gstreamer-vulkan/src/auto/vulkan_video_filter.rs b/gstreamer-vulkan/src/auto/vulkan_video_filter.rs index 3e14ae983..0216ca41d 100644 --- a/gstreamer-vulkan/src/auto/vulkan_video_filter.rs +++ b/gstreamer-vulkan/src/auto/vulkan_video_filter.rs @@ -3,6 +3,7 @@ // from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git) // DO NOT EDIT +use crate::ffi; #[cfg(feature = "v1_26")] #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))] use crate::{VulkanDevice, VulkanInstance, VulkanQueue}; @@ -27,12 +28,7 @@ impl VulkanVideoFilter { unsafe impl Send for VulkanVideoFilter {} unsafe impl Sync for VulkanVideoFilter {} -mod sealed { - pub trait Sealed {} - impl> Sealed for T {} -} - -pub trait VulkanVideoFilterExt: IsA + sealed::Sealed + 'static { +pub trait VulkanVideoFilterExt: IsA + 'static { #[cfg(feature = "v1_26")] #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))] #[doc(alias = "gst_vulkan_video_filter_get_device")] diff --git a/gstreamer-vulkan/src/auto/vulkan_window.rs b/gstreamer-vulkan/src/auto/vulkan_window.rs index d52fa60c7..5d018fcfb 100644 --- a/gstreamer-vulkan/src/auto/vulkan_window.rs +++ b/gstreamer-vulkan/src/auto/vulkan_window.rs @@ -3,8 +3,9 @@ // from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git) // DO NOT EDIT -use crate::{VulkanDevice, VulkanDisplay}; +use crate::{ffi, VulkanDevice, VulkanDisplay}; use glib::{ + object::ObjectType as _, prelude::*, signal::{connect_raw, SignalHandlerId}, translate::*, @@ -37,12 +38,7 @@ impl VulkanWindow { unsafe impl Send for VulkanWindow {} unsafe impl Sync for VulkanWindow {} -mod sealed { - pub trait Sealed {} - impl> Sealed for T {} -} - -pub trait VulkanWindowExt: IsA + sealed::Sealed + 'static { +pub trait VulkanWindowExt: IsA + 'static { #[doc(alias = "gst_vulkan_window_close")] fn close(&self) { unsafe { @@ -180,8 +176,8 @@ pub trait VulkanWindowExt: IsA + sealed::Sealed + 'static { let f: Box_ = Box_::new(f); connect_raw( self.as_ptr() as *mut _, - b"close\0".as_ptr() as *const _, - Some(std::mem::transmute::<_, unsafe extern "C" fn()>( + c"close".as_ptr() as *const _, + Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>( close_trampoline:: as *const (), )), Box_::into_raw(f), @@ -205,8 +201,8 @@ pub trait VulkanWindowExt: IsA + sealed::Sealed + 'static { let f: Box_ = Box_::new(f); connect_raw( self.as_ptr() as *mut _, - b"draw\0".as_ptr() as *const _, - Some(std::mem::transmute::<_, unsafe extern "C" fn()>( + c"draw".as_ptr() as *const _, + Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>( draw_trampoline:: as *const (), )), Box_::into_raw(f), @@ -224,8 +220,8 @@ pub trait VulkanWindowExt: IsA + sealed::Sealed + 'static { F: Fn(&P, &str, &str) + Send + Sync + 'static, >( this: *mut ffi::GstVulkanWindow, - id: *mut libc::c_char, - key: *mut libc::c_char, + id: *mut std::ffi::c_char, + key: *mut std::ffi::c_char, f: glib::ffi::gpointer, ) { let f: &F = &*(f as *const F); @@ -239,8 +235,8 @@ pub trait VulkanWindowExt: IsA + sealed::Sealed + 'static { let f: Box_ = Box_::new(f); connect_raw( self.as_ptr() as *mut _, - b"key-event\0".as_ptr() as *const _, - Some(std::mem::transmute::<_, unsafe extern "C" fn()>( + c"key-event".as_ptr() as *const _, + Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>( key_event_trampoline:: as *const (), )), Box_::into_raw(f), @@ -258,10 +254,10 @@ pub trait VulkanWindowExt: IsA + sealed::Sealed + 'static { F: Fn(&P, &str, i32, f64, f64) + Send + Sync + 'static, >( this: *mut ffi::GstVulkanWindow, - id: *mut libc::c_char, - button: libc::c_int, - x: libc::c_double, - y: libc::c_double, + id: *mut std::ffi::c_char, + button: std::ffi::c_int, + x: std::ffi::c_double, + y: std::ffi::c_double, f: glib::ffi::gpointer, ) { let f: &F = &*(f as *const F); @@ -277,8 +273,8 @@ pub trait VulkanWindowExt: IsA + sealed::Sealed + 'static { let f: Box_ = Box_::new(f); connect_raw( self.as_ptr() as *mut _, - b"mouse-event\0".as_ptr() as *const _, - Some(std::mem::transmute::<_, unsafe extern "C" fn()>( + c"mouse-event".as_ptr() as *const _, + Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>( mouse_event_trampoline:: as *const (), )), Box_::into_raw(f), @@ -296,8 +292,8 @@ pub trait VulkanWindowExt: IsA + sealed::Sealed + 'static { F: Fn(&P, u32, u32) + Send + Sync + 'static, >( this: *mut ffi::GstVulkanWindow, - object: libc::c_uint, - p0: libc::c_uint, + object: std::ffi::c_uint, + p0: std::ffi::c_uint, f: glib::ffi::gpointer, ) { let f: &F = &*(f as *const F); @@ -311,8 +307,8 @@ pub trait VulkanWindowExt: IsA + sealed::Sealed + 'static { let f: Box_ = Box_::new(f); connect_raw( self.as_ptr() as *mut _, - b"resize\0".as_ptr() as *const _, - Some(std::mem::transmute::<_, unsafe extern "C" fn()>( + c"resize".as_ptr() as *const _, + Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>( resize_trampoline:: as *const (), )), Box_::into_raw(f), @@ -340,8 +336,8 @@ pub trait VulkanWindowExt: IsA + sealed::Sealed + 'static { let f: Box_ = Box_::new(f); connect_raw( self.as_ptr() as *mut _, - b"notify::display\0".as_ptr() as *const _, - Some(std::mem::transmute::<_, unsafe extern "C" fn()>( + c"notify::display".as_ptr() as *const _, + Some(std::mem::transmute::<*const (), unsafe extern "C" fn()>( notify_display_trampoline:: as *const (), )), Box_::into_raw(f), diff --git a/gstreamer-vulkan/src/lib.rs b/gstreamer-vulkan/src/lib.rs index ba28f95cf..88e1831f9 100644 --- a/gstreamer-vulkan/src/lib.rs +++ b/gstreamer-vulkan/src/lib.rs @@ -27,6 +27,7 @@ pub use crate::auto::*; mod vulkan_device; mod vulkan_full_screen_quad; +mod vulkan_swapper; // Re-export all the traits in a prelude module, so that applications // can always "use gst_vulkan::prelude::*" without getting conflicts @@ -36,6 +37,7 @@ pub mod prelude { pub use super::vulkan_device::VulkanDeviceExtManual; pub use super::vulkan_full_screen_quad::VulkanFullScreenQuadExtManual; + pub use super::vulkan_swapper::VulkanSwapperExtManual; pub use crate::auto::traits::*; } diff --git a/gstreamer-vulkan/src/vulkan_device.rs b/gstreamer-vulkan/src/vulkan_device.rs index 3879a18ba..1fe296941 100644 --- a/gstreamer-vulkan/src/vulkan_device.rs +++ b/gstreamer-vulkan/src/vulkan_device.rs @@ -9,10 +9,7 @@ mod sealed { } pub trait VulkanDeviceExtManual: sealed::Sealed + IsA + 'static { - fn create_shader( - &self, - code: [u8; N], - ) -> Result { + fn create_shader(&self, code: &[u8]) -> Result { unsafe { let mut error = std::ptr::null_mut(); let shader = crate::ffi::gst_vulkan_create_shader( diff --git a/gstreamer-vulkan/src/vulkan_swapper.rs b/gstreamer-vulkan/src/vulkan_swapper.rs new file mode 100644 index 000000000..5c8235a80 --- /dev/null +++ b/gstreamer-vulkan/src/vulkan_swapper.rs @@ -0,0 +1,21 @@ +use crate::VulkanSwapper; + +use glib::prelude::*; + +mod sealed { + pub trait Sealed {} + impl> Sealed for T {} +} + +pub trait VulkanSwapperExtManual: sealed::Sealed + IsA + 'static { + #[doc(alias = "pixel-aspect-ratio")] + fn is_force_aspect_ratio(&self) -> gst::Fraction { + ObjectExt::property(self.as_ref(), "pixel-aspect-ratio") + } + + #[doc(alias = "pixel-aspect-ratio")] + fn set_force_aspect_ratio(&self, pixel_aspect_ratio: gst::Fraction) { + ObjectExt::set_property(self.as_ref(), "pixel-aspect-ratio", pixel_aspect_ratio) + } +} +impl> VulkanSwapperExtManual for O {} diff --git a/gstreamer-vulkan/sys/Cargo.toml b/gstreamer-vulkan/sys/Cargo.toml index 09dd3a23a..f83745392 100644 --- a/gstreamer-vulkan/sys/Cargo.toml +++ b/gstreamer-vulkan/sys/Cargo.toml @@ -1,5 +1,5 @@ [build-dependencies] -system-deps = "6" +system-deps = "7" [dependencies] libc = "0.2" diff --git a/gstreamer-vulkan/sys/src/auto/versions.txt b/gstreamer-vulkan/sys/src/auto/versions.txt index 5753ee763..2687aff1f 100644 --- a/gstreamer-vulkan/sys/src/auto/versions.txt +++ b/gstreamer-vulkan/sys/src/auto/versions.txt @@ -1,3 +1,3 @@ -Generated by gir (https://github.com/gtk-rs/gir @ 5223ce91b97a) -from gir-files (https://github.com/gtk-rs/gir-files @ 6cd7b656acd6) -from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git @ d62956d67216+) +Generated by gir (https://github.com/gtk-rs/gir @ 2d0807e9c5bc) +from gir-files (https://github.com/gtk-rs/gir-files @ 6668d0f5551a) +from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git @ 2dcaaf8ae3d8+) diff --git a/gstreamer-vulkan/sys/src/lib.rs b/gstreamer-vulkan/sys/src/lib.rs index b8a80af4c..7cfbda5d3 100644 --- a/gstreamer-vulkan/sys/src/lib.rs +++ b/gstreamer-vulkan/sys/src/lib.rs @@ -22,14 +22,15 @@ mod manual; pub use manual::*; -#[allow(unused_imports)] -use libc::{ - c_char, c_double, c_float, c_int, c_long, c_short, c_uchar, c_uint, c_ulong, c_ushort, c_void, - intptr_t, off_t, size_t, ssize_t, time_t, uintptr_t, FILE, -}; #[cfg(unix)] #[allow(unused_imports)] use libc::{dev_t, gid_t, pid_t, socklen_t, uid_t}; +#[allow(unused_imports)] +use libc::{intptr_t, off_t, size_t, ssize_t, time_t, uintptr_t, FILE}; +#[allow(unused_imports)] +use std::ffi::{ + c_char, c_double, c_float, c_int, c_long, c_short, c_uchar, c_uint, c_ulong, c_ushort, c_void, +}; #[allow(unused_imports)] use glib::{gboolean, gconstpointer, gpointer, GType}; @@ -118,6 +119,81 @@ pub const GST_VULKAN_FORMAT_FLAG_ALPHA: GstVulkanFormatFlags = 4; pub const GST_VULKAN_FORMAT_FLAG_LE: GstVulkanFormatFlags = 8; pub const GST_VULKAN_FORMAT_FLAG_COMPLEX: GstVulkanFormatFlags = 16; +// Unions +#[repr(C)] +#[allow(dead_code)] +pub struct GstVulkanVideoCapabilities_decoder_codec { + _data: [u8; 0], + _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>, +} + +impl ::std::fmt::Debug for GstVulkanVideoCapabilities_decoder_codec { + fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result { + f.debug_struct(&format!( + "GstVulkanVideoCapabilities_decoder_codec @ {self:p}" + )) + .finish() + } +} + +#[repr(C)] +#[allow(dead_code)] +pub struct GstVulkanVideoCapabilities_encoder_codec { + _data: [u8; 0], + _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>, +} + +impl ::std::fmt::Debug for GstVulkanVideoCapabilities_encoder_codec { + fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result { + f.debug_struct(&format!( + "GstVulkanVideoCapabilities_encoder_codec @ {self:p}" + )) + .finish() + } +} + +#[repr(C)] +#[allow(dead_code)] +pub struct GstVulkanVideoCapabilities_u1 { + _data: [u8; 0], + _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>, +} + +impl ::std::fmt::Debug for GstVulkanVideoCapabilities_u1 { + fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result { + f.debug_struct(&format!("GstVulkanVideoCapabilities_u1 @ {self:p}")) + .finish() + } +} + +#[repr(C)] +#[allow(dead_code)] +pub struct GstVulkanVideoProfile_codec { + _data: [u8; 0], + _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>, +} + +impl ::std::fmt::Debug for GstVulkanVideoProfile_codec { + fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result { + f.debug_struct(&format!("GstVulkanVideoProfile_codec @ {self:p}")) + .finish() + } +} + +#[repr(C)] +#[allow(dead_code)] +pub struct GstVulkanVideoProfile_usage { + _data: [u8; 0], + _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>, +} + +impl ::std::fmt::Debug for GstVulkanVideoProfile_usage { + fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result { + f.debug_struct(&format!("GstVulkanVideoProfile_usage @ {self:p}")) + .finish() + } +} + // Callbacks pub type GstVulkanDeviceForEachQueueFunc = Option gboolean>; @@ -134,6 +210,7 @@ pub type GstVulkanTrashNotify = Option, @@ -238,6 +319,7 @@ pub struct _GstVulkanBufferPoolPrivate { pub type GstVulkanBufferPoolPrivate = _GstVulkanBufferPoolPrivate; #[repr(C)] +#[allow(dead_code)] pub struct GstVulkanCommandBuffer { pub parent: gst::GstMiniObject, _truncated_record_marker: c_void, @@ -268,6 +350,7 @@ impl ::std::fmt::Debug for GstVulkanCommandPoolClass { } #[repr(C)] +#[allow(dead_code)] pub struct _GstVulkanCommandPoolPrivate { _data: [u8; 0], _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>, @@ -291,6 +374,7 @@ impl ::std::fmt::Debug for GstVulkanDescriptorCacheClass { } #[repr(C)] +#[allow(dead_code)] pub struct _GstVulkanDescriptorCachePrivate { _data: [u8; 0], _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>, @@ -314,6 +398,7 @@ impl ::std::fmt::Debug for GstVulkanDescriptorPoolClass { } #[repr(C)] +#[allow(dead_code)] pub struct _GstVulkanDescriptorPoolPrivate { _data: [u8; 0], _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>, @@ -322,6 +407,7 @@ pub struct _GstVulkanDescriptorPoolPrivate { pub type GstVulkanDescriptorPoolPrivate = _GstVulkanDescriptorPoolPrivate; #[repr(C)] +#[allow(dead_code)] pub struct GstVulkanDescriptorSet { pub parent: gst::GstMiniObject, _truncated_record_marker: c_void, @@ -352,6 +438,7 @@ impl ::std::fmt::Debug for GstVulkanDeviceClass { } #[repr(C)] +#[allow(dead_code)] pub struct _GstVulkanDevicePrivate { _data: [u8; 0], _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>, @@ -379,6 +466,7 @@ impl ::std::fmt::Debug for GstVulkanDisplayClass { } #[repr(C)] +#[allow(dead_code)] pub struct _GstVulkanDisplayPrivate { _data: [u8; 0], _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>, @@ -405,6 +493,7 @@ impl ::std::fmt::Debug for GstVulkanEncodeQueryResult { } #[repr(C)] +#[allow(dead_code)] pub struct GstVulkanFence { pub parent: gst::GstMiniObject, pub device: *mut GstVulkanDevice, @@ -439,6 +528,7 @@ impl ::std::fmt::Debug for GstVulkanFenceCacheClass { } #[repr(C)] +#[allow(dead_code)] pub struct GstVulkanFormatInfo { _truncated_record_marker: c_void, // /*Ignored*/field format has incomplete type @@ -451,6 +541,22 @@ impl ::std::fmt::Debug for GstVulkanFormatInfo { } } +#[repr(C)] +#[allow(dead_code)] +pub struct GstVulkanFormatMap { + pub format: gst_video::GstVideoFormat, + _truncated_record_marker: c_void, + // /*Ignored*/field vkfrmt has incomplete type +} + +impl ::std::fmt::Debug for GstVulkanFormatMap { + fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result { + f.debug_struct(&format!("GstVulkanFormatMap @ {self:p}")) + .field("format", &self.format) + .finish() + } +} + #[derive(Copy, Clone)] #[repr(C)] pub struct GstVulkanFullScreenQuadClass { @@ -467,6 +573,7 @@ impl ::std::fmt::Debug for GstVulkanFullScreenQuadClass { } #[repr(C)] +#[allow(dead_code)] pub struct _GstVulkanFullScreenQuadPrivate { _data: [u8; 0], _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>, @@ -540,6 +647,7 @@ impl ::std::fmt::Debug for GstVulkanImageBufferPoolClass { } #[repr(C)] +#[allow(dead_code)] pub struct _GstVulkanImageBufferPoolPrivate { _data: [u8; 0], _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>, @@ -548,6 +656,7 @@ pub struct _GstVulkanImageBufferPoolPrivate { pub type GstVulkanImageBufferPoolPrivate = _GstVulkanImageBufferPoolPrivate; #[repr(C)] +#[allow(dead_code)] pub struct GstVulkanImageMemory { pub parent: gst::GstMemory, pub device: *mut GstVulkanDevice, @@ -580,6 +689,7 @@ impl ::std::fmt::Debug for GstVulkanImageMemoryAllocatorClass { } #[repr(C)] +#[allow(dead_code)] pub struct GstVulkanImageView { pub parent: gst::GstMiniObject, pub device: *mut GstVulkanDevice, @@ -614,6 +724,7 @@ impl ::std::fmt::Debug for GstVulkanInstanceClass { } #[repr(C)] +#[allow(dead_code)] pub struct _GstVulkanInstancePrivate { _data: [u8; 0], _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>, @@ -622,6 +733,7 @@ pub struct _GstVulkanInstancePrivate { pub type GstVulkanInstancePrivate = _GstVulkanInstancePrivate; #[repr(C)] +#[allow(dead_code)] pub struct GstVulkanMemory { pub mem: gst::GstMemory, pub device: *mut GstVulkanDevice, @@ -669,6 +781,7 @@ impl ::std::fmt::Debug for GstVulkanOperationClass { } #[repr(C)] +#[allow(dead_code)] pub struct _GstVulkanOperationPrivate { _data: [u8; 0], _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>, @@ -692,6 +805,7 @@ impl ::std::fmt::Debug for GstVulkanPhysicalDeviceClass { } #[repr(C)] +#[allow(dead_code)] pub struct _GstVulkanPhysicalDevicePrivate { _data: [u8; 0], _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>, @@ -718,19 +832,20 @@ impl ::std::fmt::Debug for GstVulkanQueueClass { #[repr(C)] pub struct GstVulkanQueueFamilyOps { pub video: u32, - pub query: gboolean, + pub query_result_status: gboolean, } impl ::std::fmt::Debug for GstVulkanQueueFamilyOps { fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result { f.debug_struct(&format!("GstVulkanQueueFamilyOps @ {self:p}")) .field("video", &self.video) - .field("query", &self.query) + .field("query_result_status", &self.query_result_status) .finish() } } #[repr(C)] +#[allow(dead_code)] pub struct _GstVulkanQueuePrivate { _data: [u8; 0], _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>, @@ -754,6 +869,7 @@ impl ::std::fmt::Debug for GstVulkanSwapperClass { } #[repr(C)] +#[allow(dead_code)] pub struct _GstVulkanSwapperPrivate { _data: [u8; 0], _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>, @@ -819,6 +935,48 @@ impl ::std::fmt::Debug for GstVulkanTrashListClass { } } +#[repr(C)] +#[allow(dead_code)] +pub struct GstVulkanVideoCapabilities { + _truncated_record_marker: c_void, + // /*Ignored*/field caps has incomplete type +} + +impl ::std::fmt::Debug for GstVulkanVideoCapabilities { + fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result { + f.debug_struct(&format!("GstVulkanVideoCapabilities @ {self:p}")) + .finish() + } +} + +#[repr(C)] +#[allow(dead_code)] +pub struct GstVulkanVideoCapabilities__decoder { + _truncated_record_marker: c_void, + // /*Ignored*/field caps has incomplete type +} + +impl ::std::fmt::Debug for GstVulkanVideoCapabilities__decoder { + fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result { + f.debug_struct(&format!("GstVulkanVideoCapabilities__decoder @ {self:p}")) + .finish() + } +} + +#[repr(C)] +#[allow(dead_code)] +pub struct GstVulkanVideoCapabilities__encoder { + _truncated_record_marker: c_void, + // /*Ignored*/field caps has incomplete type +} + +impl ::std::fmt::Debug for GstVulkanVideoCapabilities__encoder { + fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result { + f.debug_struct(&format!("GstVulkanVideoCapabilities__encoder @ {self:p}")) + .finish() + } +} + #[derive(Copy, Clone)] #[repr(C)] pub struct GstVulkanVideoFilterClass { @@ -834,6 +992,20 @@ impl ::std::fmt::Debug for GstVulkanVideoFilterClass { } } +#[repr(C)] +#[allow(dead_code)] +pub struct GstVulkanVideoProfile { + _truncated_record_marker: c_void, + // /*Ignored*/field profile has incomplete type +} + +impl ::std::fmt::Debug for GstVulkanVideoProfile { + fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result { + f.debug_struct(&format!("GstVulkanVideoProfile @ {self:p}")) + .finish() + } +} + #[derive(Copy, Clone)] #[repr(C)] pub struct GstVulkanWindowClass { @@ -869,6 +1041,7 @@ impl ::std::fmt::Debug for GstVulkanWindowClass { } #[repr(C)] +#[allow(dead_code)] pub struct _GstVulkanWindowPrivate { _data: [u8; 0], _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>, @@ -910,6 +1083,7 @@ impl ::std::fmt::Debug for GstVulkanBufferPool { } #[repr(C)] +#[allow(dead_code)] pub struct GstVulkanCommandPool { pub parent: gst::GstObject, pub queue: *mut GstVulkanQueue, @@ -944,6 +1118,7 @@ impl ::std::fmt::Debug for GstVulkanDescriptorCache { } #[repr(C)] +#[allow(dead_code)] pub struct GstVulkanDescriptorPool { pub parent: gst::GstObject, pub device: *mut GstVulkanDevice, @@ -961,6 +1136,7 @@ impl ::std::fmt::Debug for GstVulkanDescriptorPool { } #[repr(C)] +#[allow(dead_code)] pub struct GstVulkanDevice { pub parent: gst::GstObject, pub instance: *mut GstVulkanInstance, @@ -1111,6 +1287,7 @@ impl ::std::fmt::Debug for GstVulkanImageMemoryAllocator { } #[repr(C)] +#[allow(dead_code)] pub struct GstVulkanInstance { pub parent: gst::GstObject, _truncated_record_marker: c_void, @@ -1158,6 +1335,7 @@ impl ::std::fmt::Debug for GstVulkanOperation { } #[repr(C)] +#[allow(dead_code)] pub struct GstVulkanPhysicalDevice { pub parent: gst::GstObject, pub instance: *mut GstVulkanInstance, @@ -1177,6 +1355,7 @@ impl ::std::fmt::Debug for GstVulkanPhysicalDevice { } #[repr(C)] +#[allow(dead_code)] pub struct GstVulkanQueue { pub parent: gst::GstObject, pub device: *mut GstVulkanDevice, @@ -1217,6 +1396,7 @@ impl ::std::fmt::Debug for GstVulkanSwapper { } #[repr(C)] +#[allow(dead_code)] pub struct GstVulkanTrashFenceList { _data: [u8; 0], _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>, @@ -1288,7 +1468,6 @@ impl ::std::fmt::Debug for GstVulkanWindow { } } -#[link(name = "gstvulkan-1.0")] extern "C" { //========================================================================= @@ -1362,7 +1541,7 @@ extern "C" { #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))] pub fn gst_vulkan_buffer_memory_alloc_with_buffer_info( device: *mut GstVulkanDevice, - buffer_info: *mut vulkan::VkBufferCreateInfo, + buffer_info: *const vulkan::VkBufferCreateInfo, mem_prop_flags: vulkan::VkMemoryPropertyFlags, ) -> *mut gst::GstMemory; pub fn gst_vulkan_buffer_memory_init_once(); @@ -1533,7 +1712,7 @@ extern "C" { #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))] pub fn gst_vulkan_memory_find_memory_type_index_with_requirements( device: *mut GstVulkanDevice, - req: *mut vulkan::VkMemoryRequirements, + req: *const vulkan::VkMemoryRequirements, properties: vulkan::VkMemoryPropertyFlags, type_index: *mut u32, ) -> gboolean; @@ -1562,6 +1741,34 @@ extern "C" { pub fn gst_vulkan_trash_mini_object_unref(device: *mut GstVulkanDevice, user_data: gpointer); pub fn gst_vulkan_trash_object_unref(device: *mut GstVulkanDevice, user_data: gpointer); + //========================================================================= + // GstVulkanVideoProfile + //========================================================================= + #[cfg(feature = "v1_24")] + #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))] + pub fn gst_vulkan_video_profile_is_equal( + a: *const GstVulkanVideoProfile, + b: *const GstVulkanVideoProfile, + ) -> gboolean; + #[cfg(feature = "v1_24")] + #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))] + pub fn gst_vulkan_video_profile_is_valid( + profile: *mut GstVulkanVideoProfile, + codec: c_uint, + ) -> gboolean; + #[cfg(feature = "v1_24")] + #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))] + pub fn gst_vulkan_video_profile_to_caps( + profile: *const GstVulkanVideoProfile, + ) -> *mut gst::GstCaps; + #[cfg(feature = "v1_24")] + #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))] + pub fn gst_vulkan_video_profile_from_caps( + profile: *mut GstVulkanVideoProfile, + caps: *mut gst::GstCaps, + video_operation: GstVulkanVideoOperation, + ) -> gboolean; + //========================================================================= // GstVulkanBufferMemoryAllocator //========================================================================= @@ -1870,6 +2077,15 @@ extern "C" { pub fn gst_vulkan_image_buffer_pool_new( device: *mut GstVulkanDevice, ) -> *mut gst::GstBufferPool; + #[cfg(feature = "v1_26")] + #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))] + pub fn gst_vulkan_image_buffer_pool_config_get_allocation_params( + config: *mut gst::GstStructure, + usage: *mut vulkan::VkImageUsageFlags, + mem_props: *mut vulkan::VkMemoryPropertyFlags, + initial_layout: *mut vulkan::VkImageLayout, + initial_access: *mut u64, + ); #[cfg(feature = "v1_24")] #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))] pub fn gst_vulkan_image_buffer_pool_config_set_allocation_params( @@ -1911,6 +2127,14 @@ extern "C" { element: *mut gst::GstElement, instance: *mut *mut GstVulkanInstance, ) -> gboolean; + #[cfg(feature = "v1_26")] + #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))] + pub fn gst_vulkan_instance_check_api_version( + instance: *mut GstVulkanInstance, + major: c_uint, + minor: c_uint, + patch: c_uint, + ) -> gboolean; pub fn gst_vulkan_instance_check_version( instance: *mut GstVulkanInstance, major: c_uint, @@ -1921,6 +2145,13 @@ extern "C" { instance: *mut GstVulkanInstance, error: *mut *mut glib::GError, ) -> *mut GstVulkanDevice; + #[cfg(feature = "v1_26")] + #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))] + pub fn gst_vulkan_instance_create_device_with_index( + instance: *mut GstVulkanInstance, + device_index: c_uint, + error: *mut *mut glib::GError, + ) -> *mut GstVulkanDevice; pub fn gst_vulkan_instance_disable_extension( instance: *mut GstVulkanInstance, name: *const c_char, @@ -1937,6 +2168,14 @@ extern "C" { instance: *mut GstVulkanInstance, error: *mut *mut glib::GError, ) -> gboolean; + #[cfg(feature = "v1_26")] + #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))] + pub fn gst_vulkan_instance_get_api_version( + instance: *mut GstVulkanInstance, + major: *mut c_uint, + minor: *mut c_uint, + patch: *mut c_uint, + ); pub fn gst_vulkan_instance_get_extension_info( instance: *mut GstVulkanInstance, name: *const c_char, @@ -2006,6 +2245,7 @@ extern "C" { pub fn gst_vulkan_operation_add_frame_barrier( self_: *mut GstVulkanOperation, frame: *mut gst::GstBuffer, + src_stage: u64, dst_stage: u64, new_access: u64, new_layout: vulkan::VkImageLayout, @@ -2017,9 +2257,13 @@ extern "C" { self_: *mut GstVulkanOperation, error: *mut *mut glib::GError, ) -> gboolean; - #[cfg(feature = "v1_24")] - #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))] - pub fn gst_vulkan_operation_begin_query(self_: *mut GstVulkanOperation, id: u32) -> gboolean; + #[cfg(feature = "v1_26")] + #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))] + pub fn gst_vulkan_operation_begin_query( + self_: *mut GstVulkanOperation, + base: *mut vulkan::VkBaseInStructure, + id: u32, + ) -> gboolean; #[cfg(feature = "v1_24")] #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))] pub fn gst_vulkan_operation_discard_dependencies(self_: *mut GstVulkanOperation); @@ -2095,6 +2339,22 @@ extern "C" { pub fn gst_vulkan_physical_device_type_to_string( type_: vulkan::VkPhysicalDeviceType, ) -> *const c_char; + #[cfg(feature = "v1_26")] + #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))] + pub fn gst_vulkan_physical_device_check_api_version( + device: *mut GstVulkanPhysicalDevice, + major: c_uint, + minor: c_uint, + patch: c_uint, + ) -> gboolean; + #[cfg(feature = "v1_26")] + #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))] + pub fn gst_vulkan_physical_device_get_api_version( + device: *mut GstVulkanPhysicalDevice, + major: *mut c_uint, + minor: *mut c_uint, + patch: *mut c_uint, + ); pub fn gst_vulkan_physical_device_get_extension_info( device: *mut GstVulkanPhysicalDevice, name: *const c_char, @@ -2304,6 +2564,14 @@ extern "C" { display_ptr: *mut *mut GstVulkanDisplay, instance_ptr: *mut *mut GstVulkanInstance, ) -> gboolean; + #[cfg(feature = "v1_26")] + #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))] + pub fn gst_vulkan_ensure_element_device( + element: *mut gst::GstElement, + instance: *mut GstVulkanInstance, + device_ptr: *mut *mut GstVulkanDevice, + device_id: c_uint, + ) -> gboolean; pub fn gst_vulkan_format_from_video_info( v_info: *mut gst_video::GstVideoInfo, plane: c_uint, @@ -2311,7 +2579,7 @@ extern "C" { #[cfg(feature = "v1_24")] #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))] pub fn gst_vulkan_format_from_video_info_2( - physical_device: *mut GstVulkanPhysicalDevice, + device: *mut GstVulkanDevice, info: *mut gst_video::GstVideoInfo, tiling: vulkan::VkImageTiling, no_multiplane: gboolean, @@ -2324,6 +2592,11 @@ extern "C" { #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))] pub fn gst_vulkan_format_get_aspect(format: vulkan::VkFormat) -> c_uint; pub fn gst_vulkan_format_get_info(format: vulkan::VkFormat) -> *const GstVulkanFormatInfo; + #[cfg(feature = "v1_26")] + #[cfg_attr(docsrs, doc(cfg(feature = "v1_26")))] + pub fn gst_vulkan_format_get_map( + format: gst_video::GstVideoFormat, + ) -> *const GstVulkanFormatMap; #[cfg(feature = "v1_24")] #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))] pub fn gst_vulkan_format_to_video_format( @@ -2336,7 +2609,7 @@ extern "C" { #[cfg_attr(docsrs, doc(cfg(feature = "v1_24")))] pub fn gst_vulkan_get_or_create_image_view_with_info( image: *mut GstVulkanImageMemory, - create_info: *mut vulkan::VkImageViewCreateInfo, + create_info: *const vulkan::VkImageViewCreateInfo, ) -> *mut GstVulkanImageView; pub fn gst_vulkan_global_context_query( element: *mut gst::GstElement, diff --git a/gstreamer-vulkan/sys/src/manual.rs b/gstreamer-vulkan/sys/src/manual.rs index 913c4d6d6..c69ee59d5 100644 --- a/gstreamer-vulkan/sys/src/manual.rs +++ b/gstreamer-vulkan/sys/src/manual.rs @@ -1,4 +1,5 @@ pub mod vulkan { + pub use ash::vk::BaseInStructure as VkBaseInStructure; pub use ash::vk::BlendFactor as VkBlendFactor; pub use ash::vk::BlendOp as VkBlendOp; pub use ash::vk::Buffer as VkBuffer; diff --git a/gstreamer-vulkan/wayland/src/auto/versions.txt b/gstreamer-vulkan/wayland/src/auto/versions.txt index 5753ee763..2687aff1f 100644 --- a/gstreamer-vulkan/wayland/src/auto/versions.txt +++ b/gstreamer-vulkan/wayland/src/auto/versions.txt @@ -1,3 +1,3 @@ -Generated by gir (https://github.com/gtk-rs/gir @ 5223ce91b97a) -from gir-files (https://github.com/gtk-rs/gir-files @ 6cd7b656acd6) -from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git @ d62956d67216+) +Generated by gir (https://github.com/gtk-rs/gir @ 2d0807e9c5bc) +from gir-files (https://github.com/gtk-rs/gir-files @ 6668d0f5551a) +from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git @ 2dcaaf8ae3d8+) diff --git a/gstreamer-vulkan/wayland/src/auto/vulkan_display_wayland.rs b/gstreamer-vulkan/wayland/src/auto/vulkan_display_wayland.rs index d08bb0ade..98a654ffc 100644 --- a/gstreamer-vulkan/wayland/src/auto/vulkan_display_wayland.rs +++ b/gstreamer-vulkan/wayland/src/auto/vulkan_display_wayland.rs @@ -3,6 +3,7 @@ // from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git) // DO NOT EDIT +use crate::ffi; use glib::translate::*; glib::wrapper! { diff --git a/gstreamer-vulkan/wayland/sys/Cargo.toml b/gstreamer-vulkan/wayland/sys/Cargo.toml index 20bea1781..61963dc4b 100644 --- a/gstreamer-vulkan/wayland/sys/Cargo.toml +++ b/gstreamer-vulkan/wayland/sys/Cargo.toml @@ -60,7 +60,7 @@ workspace = true workspace = true [build-dependencies] -system-deps = "6" +system-deps = "7" [dev-dependencies] shell-words = "1.0.0" diff --git a/gstreamer-vulkan/wayland/sys/src/auto/versions.txt b/gstreamer-vulkan/wayland/sys/src/auto/versions.txt index 5753ee763..2687aff1f 100644 --- a/gstreamer-vulkan/wayland/sys/src/auto/versions.txt +++ b/gstreamer-vulkan/wayland/sys/src/auto/versions.txt @@ -1,3 +1,3 @@ -Generated by gir (https://github.com/gtk-rs/gir @ 5223ce91b97a) -from gir-files (https://github.com/gtk-rs/gir-files @ 6cd7b656acd6) -from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git @ d62956d67216+) +Generated by gir (https://github.com/gtk-rs/gir @ 2d0807e9c5bc) +from gir-files (https://github.com/gtk-rs/gir-files @ 6668d0f5551a) +from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git @ 2dcaaf8ae3d8+) diff --git a/gstreamer-vulkan/wayland/sys/src/lib.rs b/gstreamer-vulkan/wayland/sys/src/lib.rs index 9e809b6a9..23dc1b164 100644 --- a/gstreamer-vulkan/wayland/sys/src/lib.rs +++ b/gstreamer-vulkan/wayland/sys/src/lib.rs @@ -15,14 +15,15 @@ use glib_sys as glib; use gstreamer_vulkan_sys as gst_vulkan; -#[allow(unused_imports)] -use libc::{ - c_char, c_double, c_float, c_int, c_long, c_short, c_uchar, c_uint, c_ulong, c_ushort, c_void, - intptr_t, off_t, size_t, ssize_t, time_t, uintptr_t, FILE, -}; #[cfg(unix)] #[allow(unused_imports)] use libc::{dev_t, gid_t, pid_t, socklen_t, uid_t}; +#[allow(unused_imports)] +use libc::{intptr_t, off_t, size_t, ssize_t, time_t, uintptr_t, FILE}; +#[allow(unused_imports)] +use std::ffi::{ + c_char, c_double, c_float, c_int, c_long, c_short, c_uchar, c_uint, c_ulong, c_ushort, c_void, +}; #[allow(unused_imports)] use glib::{gboolean, gconstpointer, gpointer, GType}; @@ -68,7 +69,6 @@ impl ::std::fmt::Debug for GstVulkanDisplayWayland { } } -#[link(name = "gstvulkan-1.0")] extern "C" { //========================================================================= diff --git a/gstreamer-vulkan/xcb/src/auto/versions.txt b/gstreamer-vulkan/xcb/src/auto/versions.txt index 5753ee763..2687aff1f 100644 --- a/gstreamer-vulkan/xcb/src/auto/versions.txt +++ b/gstreamer-vulkan/xcb/src/auto/versions.txt @@ -1,3 +1,3 @@ -Generated by gir (https://github.com/gtk-rs/gir @ 5223ce91b97a) -from gir-files (https://github.com/gtk-rs/gir-files @ 6cd7b656acd6) -from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git @ d62956d67216+) +Generated by gir (https://github.com/gtk-rs/gir @ 2d0807e9c5bc) +from gir-files (https://github.com/gtk-rs/gir-files @ 6668d0f5551a) +from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git @ 2dcaaf8ae3d8+) diff --git a/gstreamer-vulkan/xcb/src/auto/vulkan_display_xcb.rs b/gstreamer-vulkan/xcb/src/auto/vulkan_display_xcb.rs index e9263c8b8..1c9a38147 100644 --- a/gstreamer-vulkan/xcb/src/auto/vulkan_display_xcb.rs +++ b/gstreamer-vulkan/xcb/src/auto/vulkan_display_xcb.rs @@ -3,6 +3,7 @@ // from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git) // DO NOT EDIT +use crate::ffi; use glib::translate::*; glib::wrapper! { diff --git a/gstreamer-vulkan/xcb/sys/Cargo.toml b/gstreamer-vulkan/xcb/sys/Cargo.toml index 2e0e72364..a6ef66ef1 100644 --- a/gstreamer-vulkan/xcb/sys/Cargo.toml +++ b/gstreamer-vulkan/xcb/sys/Cargo.toml @@ -64,7 +64,7 @@ workspace = true workspace = true [build-dependencies] -system-deps = "6" +system-deps = "7" [dev-dependencies] shell-words = "1.0.0" diff --git a/gstreamer-vulkan/xcb/sys/src/auto/versions.txt b/gstreamer-vulkan/xcb/sys/src/auto/versions.txt index 5753ee763..2687aff1f 100644 --- a/gstreamer-vulkan/xcb/sys/src/auto/versions.txt +++ b/gstreamer-vulkan/xcb/sys/src/auto/versions.txt @@ -1,3 +1,3 @@ -Generated by gir (https://github.com/gtk-rs/gir @ 5223ce91b97a) -from gir-files (https://github.com/gtk-rs/gir-files @ 6cd7b656acd6) -from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git @ d62956d67216+) +Generated by gir (https://github.com/gtk-rs/gir @ 2d0807e9c5bc) +from gir-files (https://github.com/gtk-rs/gir-files @ 6668d0f5551a) +from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git @ 2dcaaf8ae3d8+) diff --git a/gstreamer-vulkan/xcb/sys/src/lib.rs b/gstreamer-vulkan/xcb/sys/src/lib.rs index c202a1833..fb8ca35b6 100644 --- a/gstreamer-vulkan/xcb/sys/src/lib.rs +++ b/gstreamer-vulkan/xcb/sys/src/lib.rs @@ -15,14 +15,15 @@ use glib_sys as glib; use gstreamer_vulkan_sys as gst_vulkan; -#[allow(unused_imports)] -use libc::{ - c_char, c_double, c_float, c_int, c_long, c_short, c_uchar, c_uint, c_ulong, c_ushort, c_void, - intptr_t, off_t, size_t, ssize_t, time_t, uintptr_t, FILE, -}; #[cfg(unix)] #[allow(unused_imports)] use libc::{dev_t, gid_t, pid_t, socklen_t, uid_t}; +#[allow(unused_imports)] +use libc::{intptr_t, off_t, size_t, ssize_t, time_t, uintptr_t, FILE}; +#[allow(unused_imports)] +use std::ffi::{ + c_char, c_double, c_float, c_int, c_long, c_short, c_uchar, c_uint, c_ulong, c_ushort, c_void, +}; #[allow(unused_imports)] use glib::{gboolean, gconstpointer, gpointer, GType}; @@ -45,6 +46,7 @@ impl ::std::fmt::Debug for GstVulkanDisplayXCBClass { // Classes #[repr(C)] +#[allow(dead_code)] pub struct GstVulkanDisplayXCB { _data: [u8; 0], _marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>, @@ -57,7 +59,6 @@ impl ::std::fmt::Debug for GstVulkanDisplayXCB { } } -#[link(name = "gstvulkan-1.0")] extern "C" { //=========================================================================