From 7aec1816f98225e4b862c6298a174d7b2f927306 Mon Sep 17 00:00:00 2001 From: Matthew Waters Date: Mon, 3 Jun 2024 00:27:17 +1000 Subject: [PATCH] vulkan: add subclass support for VulkanVideoFilter --- gstreamer-vulkan/src/lib.rs | 2 ++ gstreamer-vulkan/src/subclass/mod.rs | 8 ++++++++ .../src/subclass/vulkan_video_filter.rs | 17 +++++++++++++++++ 3 files changed, 27 insertions(+) create mode 100644 gstreamer-vulkan/src/subclass/mod.rs create mode 100644 gstreamer-vulkan/src/subclass/vulkan_video_filter.rs diff --git a/gstreamer-vulkan/src/lib.rs b/gstreamer-vulkan/src/lib.rs index 30c8e23f8..ba28f95cf 100644 --- a/gstreamer-vulkan/src/lib.rs +++ b/gstreamer-vulkan/src/lib.rs @@ -39,5 +39,7 @@ pub mod prelude { pub use crate::auto::traits::*; } +pub mod subclass; + mod caps_features; pub use caps_features::*; diff --git a/gstreamer-vulkan/src/subclass/mod.rs b/gstreamer-vulkan/src/subclass/mod.rs new file mode 100644 index 000000000..305e81b7f --- /dev/null +++ b/gstreamer-vulkan/src/subclass/mod.rs @@ -0,0 +1,8 @@ +mod vulkan_video_filter; + +pub mod prelude { + #[doc(hidden)] + pub use gst_video::subclass::prelude::*; + + pub use super::vulkan_video_filter::{VulkanVideoFilterImpl, VulkanVideoFilterImplExt}; +} diff --git a/gstreamer-vulkan/src/subclass/vulkan_video_filter.rs b/gstreamer-vulkan/src/subclass/vulkan_video_filter.rs new file mode 100644 index 000000000..b4ab6e316 --- /dev/null +++ b/gstreamer-vulkan/src/subclass/vulkan_video_filter.rs @@ -0,0 +1,17 @@ +use crate::VulkanVideoFilter; + +use gst::subclass::prelude::*; +use gst_base::subclass::prelude::*; + +pub trait VulkanVideoFilterImpl: VulkanVideoFilterImplExt + BaseTransformImpl {} + +mod sealed { + pub trait Sealed {} + impl Sealed for T {} +} + +pub trait VulkanVideoFilterImplExt: sealed::Sealed + ObjectSubclass {} + +impl VulkanVideoFilterImplExt for T {} + +unsafe impl IsSubclassable for VulkanVideoFilter {}