From 013026b06aaf4d9014a8499db035930ba82dd126 Mon Sep 17 00:00:00 2001 From: Matthew Waters <matthew@centricular.com> Date: Sun, 2 Jun 2024 23:36:28 +1000 Subject: [PATCH] vulkan/videofilter: add getters for queue/device/instance Allows bindings to not pke at structs for this information. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6987> --- girs/GstVulkan-1.0.gir | 42 +++++++++++++ .../gst-libs/gst/vulkan/gstvkvideofilter.c | 60 +++++++++++++++++++ .../gst-libs/gst/vulkan/gstvkvideofilter.h | 7 +++ 3 files changed, 109 insertions(+) diff --git a/girs/GstVulkan-1.0.gir b/girs/GstVulkan-1.0.gir index 0bf93d3c98..a8ac887baa 100644 --- a/girs/GstVulkan-1.0.gir +++ b/girs/GstVulkan-1.0.gir @@ -5824,6 +5824,48 @@ signalled and freed.</doc> </record> <class name="VulkanVideoFilter" c:symbol-prefix="vulkan_video_filter" c:type="GstVulkanVideoFilter" version="1.18" parent="GstBase.BaseTransform" glib:type-name="GstVulkanVideoFilter" glib:get-type="gst_vulkan_video_filter_get_type" glib:type-struct="VulkanVideoFilterClass"> <source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkvideofilter.h"/> + <method name="get_device" c:identifier="gst_vulkan_video_filter_get_device" version="1.26"> + <source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkvideofilter.h"/> + <return-value transfer-ownership="full" nullable="1"> + <doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkvideofilter.c">The currently configured + #GstVulkanDevice</doc> + <type name="VulkanDevice" c:type="GstVulkanDevice*"/> + </return-value> + <parameters> + <instance-parameter name="filter" transfer-ownership="none"> + <doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkvideofilter.c">a #GstVulkanVideoFilter</doc> + <type name="VulkanVideoFilter" c:type="GstVulkanVideoFilter*"/> + </instance-parameter> + </parameters> + </method> + <method name="get_instance" c:identifier="gst_vulkan_video_filter_get_instance" version="1.26"> + <source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkvideofilter.h"/> + <return-value transfer-ownership="full" nullable="1"> + <doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkvideofilter.c">The currently configured + #GstVulkanInstance</doc> + <type name="VulkanInstance" c:type="GstVulkanInstance*"/> + </return-value> + <parameters> + <instance-parameter name="filter" transfer-ownership="none"> + <doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkvideofilter.c">a #GstVulkanVideoFilter</doc> + <type name="VulkanVideoFilter" c:type="GstVulkanVideoFilter*"/> + </instance-parameter> + </parameters> + </method> + <method name="get_queue" c:identifier="gst_vulkan_video_filter_get_queue" version="1.26"> + <source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkvideofilter.h"/> + <return-value transfer-ownership="full" nullable="1"> + <doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkvideofilter.c">The currently configured + #GstVulkanQueue</doc> + <type name="VulkanQueue" c:type="GstVulkanQueue*"/> + </return-value> + <parameters> + <instance-parameter name="filter" transfer-ownership="none"> + <doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkvideofilter.c">a #GstVulkanVideoFilter</doc> + <type name="VulkanVideoFilter" c:type="GstVulkanVideoFilter*"/> + </instance-parameter> + </parameters> + </method> <field name="parent"> <doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkvideofilter.h">the parent #GstBaseTransform</doc> <type name="GstBase.BaseTransform" c:type="GstBaseTransform"/> diff --git a/subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkvideofilter.c b/subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkvideofilter.c index 354557ce16..701ee187d2 100644 --- a/subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkvideofilter.c +++ b/subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkvideofilter.c @@ -310,3 +310,63 @@ gst_vulkan_video_filter_stop (GstBaseTransform * bt) return TRUE; } + +/** + * gst_vulkan_video_filter_get_instance: + * @filter: a #GstVulkanVideoFilter + * + * Returns: (transfer full) (nullable): The currently configured + * #GstVulkanInstance + * + * Since: 1.26 + */ +GstVulkanInstance * +gst_vulkan_video_filter_get_instance (GstVulkanVideoFilter * filter) +{ + g_return_val_if_fail (GST_IS_VULKAN_VIDEO_FILTER (filter), NULL); + + if (filter->instance) + return gst_object_ref (filter->instance); + else + return NULL; +} + +/** + * gst_vulkan_video_filter_get_device: + * @filter: a #GstVulkanVideoFilter + * + * Returns: (transfer full) (nullable): The currently configured + * #GstVulkanDevice + * + * Since: 1.26 + */ +GstVulkanDevice * +gst_vulkan_video_filter_get_device (GstVulkanVideoFilter * filter) +{ + g_return_val_if_fail (GST_IS_VULKAN_VIDEO_FILTER (filter), NULL); + + if (filter->device) + return gst_object_ref (filter->device); + else + return NULL; +} + +/** + * gst_vulkan_video_filter_get_queue: + * @filter: a #GstVulkanVideoFilter + * + * Returns: (transfer full) (nullable): The currently configured + * #GstVulkanQueue + * + * Since: 1.26 + */ +GstVulkanQueue * +gst_vulkan_video_filter_get_queue (GstVulkanVideoFilter * filter) +{ + g_return_val_if_fail (GST_IS_VULKAN_VIDEO_FILTER (filter), NULL); + + if (filter->queue) + return gst_object_ref (filter->queue); + else + return NULL; +} diff --git a/subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkvideofilter.h b/subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkvideofilter.h index e3457295cc..e04c13b094 100644 --- a/subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkvideofilter.h +++ b/subprojects/gst-plugins-bad/gst-libs/gst/vulkan/gstvkvideofilter.h @@ -85,6 +85,13 @@ struct _GstVulkanVideoFilterClass G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstVulkanVideoFilter, gst_object_unref); +GST_VULKAN_API +GstVulkanInstance * gst_vulkan_video_filter_get_instance (GstVulkanVideoFilter * filter); +GST_VULKAN_API +GstVulkanDevice * gst_vulkan_video_filter_get_device (GstVulkanVideoFilter * filter); +GST_VULKAN_API +GstVulkanQueue * gst_vulkan_video_filter_get_queue (GstVulkanVideoFilter * filter); + G_END_DECLS #endif