diff options
author | Stéphane Cerveau <scerveau@collabora.com> | 2021-02-24 18:45:15 +0100 |
---|---|---|
committer | GStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org> | 2021-03-23 14:19:17 +0000 |
commit | efc1433892af6cafd3d3e33c8b0b8b6a355235fc (patch) | |
tree | 25a6ea27b8411c50b289b1942b7788c1c3c2eb6c /ext | |
parent | 9de8af0ac186ed6f143d6b5d80f633c0dc2553ee (diff) | |
download | gstreamer-plugins-bad-efc1433892af6cafd3d3e33c8b0b8b6a355235fc.tar.gz |
vulkan: allow per feature registration
Split plugin into features including
dynamic types which can be indiviually
registered during a static build.
More details here:
https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2038>
Diffstat (limited to 'ext')
-rw-r--r-- | ext/vulkan/gstvulkan.c | 41 | ||||
-rw-r--r-- | ext/vulkan/gstvulkanelement.c | 46 | ||||
-rw-r--r-- | ext/vulkan/gstvulkanelements.h | 41 | ||||
-rw-r--r-- | ext/vulkan/meson.build | 1 | ||||
-rw-r--r-- | ext/vulkan/vkcolorconvert.c | 4 | ||||
-rw-r--r-- | ext/vulkan/vkdeviceprovider.c | 6 | ||||
-rw-r--r-- | ext/vulkan/vkdownload.c | 3 | ||||
-rw-r--r-- | ext/vulkan/vkimageidentity.c | 4 | ||||
-rw-r--r-- | ext/vulkan/vksink.c | 3 | ||||
-rw-r--r-- | ext/vulkan/vkupload.c | 4 | ||||
-rw-r--r-- | ext/vulkan/vkviewconvert.c | 3 |
11 files changed, 123 insertions, 33 deletions
diff --git a/ext/vulkan/gstvulkan.c b/ext/vulkan/gstvulkan.c index d989d9f12..ad2fed9eb 100644 --- a/ext/vulkan/gstvulkan.c +++ b/ext/vulkan/gstvulkan.c @@ -36,50 +36,29 @@ #include "vkdownload.h" #include "vkviewconvert.h" #include "vkdeviceprovider.h" +#include "gstvulkanelements.h" -#define GST_CAT_DEFAULT gst_vulkan_debug -GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT); static gboolean plugin_init (GstPlugin * plugin) { - GST_DEBUG_CATEGORY_INIT (gst_vulkan_debug, "vulkan", 0, "vulkan"); + gboolean ret = FALSE; - if (!gst_element_register (plugin, "vulkansink", - GST_RANK_NONE, GST_TYPE_VULKAN_SINK)) { - return FALSE; - } + ret |= GST_DEVICE_PROVIDER_REGISTER (vulkandeviceprovider, plugin); - if (!gst_element_register (plugin, "vulkanupload", - GST_RANK_NONE, GST_TYPE_VULKAN_UPLOAD)) { - return FALSE; - } + ret |= GST_ELEMENT_REGISTER (vulkansink, plugin); - if (!gst_element_register (plugin, "vulkandownload", - GST_RANK_NONE, GST_TYPE_VULKAN_DOWNLOAD)) { - return FALSE; - } + ret |= GST_ELEMENT_REGISTER (vulkanupload, plugin); - if (!gst_element_register (plugin, "vulkancolorconvert", - GST_RANK_NONE, GST_TYPE_VULKAN_COLOR_CONVERT)) { - return FALSE; - } + ret |= GST_ELEMENT_REGISTER (vulkandownload, plugin); - if (!gst_element_register (plugin, "vulkanimageidentity", - GST_RANK_NONE, GST_TYPE_VULKAN_IMAGE_IDENTITY)) { - return FALSE; - } + ret |= GST_ELEMENT_REGISTER (vulkancolorconvert, plugin); - if (!gst_element_register (plugin, "vulkanviewconvert", - GST_RANK_NONE, GST_TYPE_VULKAN_VIEW_CONVERT)) { - return FALSE; - } + ret |= GST_ELEMENT_REGISTER (vulkanimageidentity, plugin); - if (!gst_device_provider_register (plugin, "vulkandeviceprovider", - GST_RANK_MARGINAL, GST_TYPE_VULKAN_DEVICE_PROVIDER)) - return FALSE; + ret |= GST_ELEMENT_REGISTER (vulkanviewconvert, plugin); - return TRUE; + return ret; } GST_PLUGIN_DEFINE (GST_VERSION_MAJOR, diff --git a/ext/vulkan/gstvulkanelement.c b/ext/vulkan/gstvulkanelement.c new file mode 100644 index 000000000..72c6d6852 --- /dev/null +++ b/ext/vulkan/gstvulkanelement.c @@ -0,0 +1,46 @@ +/* + * GStreamer + * Copyright (C) 2015 Matthew Waters <matthew@centricular.com> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + +/** + * SECTION:plugin-vulkan + * @title: vulkan + * + * Cross-platform Vulkan plugin. + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "gstvulkanelements.h" + +#define GST_CAT_DEFAULT gst_vulkan_debug +GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT); + +void +vulkan_element_init (GstPlugin * plugin) +{ + static gsize res = FALSE; + + if (g_once_init_enter (&res)) { + GST_DEBUG_CATEGORY_INIT (gst_vulkan_debug, "vulkan", 0, "vulkan"); + g_once_init_leave (&res, TRUE); + } +} diff --git a/ext/vulkan/gstvulkanelements.h b/ext/vulkan/gstvulkanelements.h new file mode 100644 index 000000000..ef8db67ed --- /dev/null +++ b/ext/vulkan/gstvulkanelements.h @@ -0,0 +1,41 @@ +/* GStreamer + * Copyright (C) <2020> The GStreamer Contributors. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. + */ + + +#ifndef __GST_VULKAN_ELEMENTS_H__ +#define __GST_VULKAN_ELEMENTS_H__ + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include <gst/gst.h> + +void vulkan_element_init (GstPlugin * plugin); + +GST_ELEMENT_REGISTER_DECLARE (vulkancolorconvert); +GST_ELEMENT_REGISTER_DECLARE (vulkandownload); +GST_ELEMENT_REGISTER_DECLARE (vulkanimageidentity); +GST_ELEMENT_REGISTER_DECLARE (vulkansink); +GST_ELEMENT_REGISTER_DECLARE (vulkanupload); +GST_ELEMENT_REGISTER_DECLARE (vulkanviewconvert); +GST_DEVICE_PROVIDER_REGISTER_DECLARE (vulkandeviceprovider); + + +#endif /* __GST_VULKAN_ELEMENTS_H__ */ diff --git a/ext/vulkan/meson.build b/ext/vulkan/meson.build index fca87b85b..5b2fd9a1b 100644 --- a/ext/vulkan/meson.build +++ b/ext/vulkan/meson.build @@ -17,6 +17,7 @@ subdir('shaders') vulkan_sources = [ 'gstvulkan.c', + 'gstvulkanelement.c', 'vkcolorconvert.c', 'vkdownload.c', 'vkdeviceprovider.c', diff --git a/ext/vulkan/vkcolorconvert.c b/ext/vulkan/vkcolorconvert.c index cbc494735..82ad5982b 100644 --- a/ext/vulkan/vkcolorconvert.c +++ b/ext/vulkan/vkcolorconvert.c @@ -43,6 +43,8 @@ #include "shaders/rgb_to_yuy2.frag.h" #include "shaders/rgb_to_nv12.frag.h" +#include "gstvulkanelements.h" + GST_DEBUG_CATEGORY (gst_debug_vulkan_color_convert); #define GST_CAT_DEFAULT gst_debug_vulkan_color_convert @@ -795,6 +797,8 @@ G_DEFINE_TYPE_WITH_CODE (GstVulkanColorConvert, gst_vulkan_color_convert, GST_TYPE_VULKAN_VIDEO_FILTER, GST_DEBUG_CATEGORY_INIT (gst_debug_vulkan_color_convert, "vulkancolorconvert", 0, "Vulkan Color Convert")); +GST_ELEMENT_REGISTER_DEFINE_WITH_CODE (vulkancolorconvert, "vulkancolorconvert", + GST_RANK_NONE, GST_TYPE_VULKAN_COLOR_CONVERT, vulkan_element_init (plugin)); struct yuv_info { diff --git a/ext/vulkan/vkdeviceprovider.c b/ext/vulkan/vkdeviceprovider.c index 1f8888d99..e04d0c9ac 100644 --- a/ext/vulkan/vkdeviceprovider.c +++ b/ext/vulkan/vkdeviceprovider.c @@ -23,6 +23,7 @@ #include "config.h" #endif +#include "gstvulkanelements.h" #include "vkdeviceprovider.h" #include <string.h> @@ -39,7 +40,10 @@ static GstDevice *gst_vulkan_device_object_new (GstVulkanPhysicalDevice * G_DEFINE_TYPE_WITH_CODE (GstVulkanDeviceProvider, gst_vulkan_device_provider, GST_TYPE_DEVICE_PROVIDER, GST_DEBUG_CATEGORY_INIT (GST_CAT_DEFAULT, - "vulkandevice", 0, "Vulkan Device");); + "vulkandevice", 0, "Vulkan Device"); + ); +GST_DEVICE_PROVIDER_REGISTER_DEFINE (vulkandeviceprovider, + "vulkandeviceprovider", GST_RANK_MARGINAL, GST_TYPE_VULKAN_DEVICE_PROVIDER); static void gst_vulkan_device_provider_finalize (GObject * object); static void gst_vulkan_device_provider_set_property (GObject * object, diff --git a/ext/vulkan/vkdownload.c b/ext/vulkan/vkdownload.c index 1bb64b877..c513cabd9 100644 --- a/ext/vulkan/vkdownload.c +++ b/ext/vulkan/vkdownload.c @@ -31,6 +31,7 @@ #include <string.h> +#include "gstvulkanelements.h" #include "vkdownload.h" GST_DEBUG_CATEGORY (gst_debug_vulkan_download); @@ -470,6 +471,8 @@ enum G_DEFINE_TYPE_WITH_CODE (GstVulkanDownload, gst_vulkan_download, GST_TYPE_BASE_TRANSFORM, GST_DEBUG_CATEGORY_INIT (gst_debug_vulkan_download, "vulkandownload", 0, "Vulkan Downloader")); +GST_ELEMENT_REGISTER_DEFINE_WITH_CODE (vulkandownload, "vulkandownload", + GST_RANK_NONE, GST_TYPE_VULKAN_DOWNLOAD, vulkan_element_init (plugin)); static void gst_vulkan_download_class_init (GstVulkanDownloadClass * klass) diff --git a/ext/vulkan/vkimageidentity.c b/ext/vulkan/vkimageidentity.c index d8972179d..9bdb038f2 100644 --- a/ext/vulkan/vkimageidentity.c +++ b/ext/vulkan/vkimageidentity.c @@ -31,6 +31,7 @@ #include <string.h> +#include "gstvulkanelements.h" #include "vkimageidentity.h" #include "shaders/identity.vert.h" @@ -83,6 +84,9 @@ G_DEFINE_TYPE_WITH_CODE (GstVulkanImageIdentity, gst_vulkan_image_identity, GST_TYPE_VULKAN_VIDEO_FILTER, GST_DEBUG_CATEGORY_INIT (gst_debug_vulkan_image_identity, "vulkanimageidentity", 0, "Vulkan Image identity")); +GST_ELEMENT_REGISTER_DEFINE_WITH_CODE (vulkanimageidentity, + "vulkanimageidentity", GST_RANK_NONE, GST_TYPE_VULKAN_IMAGE_IDENTITY, + vulkan_element_init (plugin)); static void gst_vulkan_image_identity_class_init (GstVulkanImageIdentityClass * klass) diff --git a/ext/vulkan/vksink.c b/ext/vulkan/vksink.c index 9177b98fc..09bb66db1 100644 --- a/ext/vulkan/vksink.c +++ b/ext/vulkan/vksink.c @@ -32,6 +32,7 @@ //#include <gst/video/videooverlay.h> +#include "gstvulkanelements.h" #include "vksink.h" GST_DEBUG_CATEGORY (gst_debug_vulkan_sink); @@ -108,6 +109,8 @@ G_DEFINE_TYPE_WITH_CODE (GstVulkanSink, gst_vulkan_sink, gst_vulkan_sink_video_overlay_init); G_IMPLEMENT_INTERFACE (GST_TYPE_NAVIGATION, gst_vulkan_sink_navigation_interface_init)); +GST_ELEMENT_REGISTER_DEFINE_WITH_CODE (vulkansink, "vulkansink", GST_RANK_NONE, + GST_TYPE_VULKAN_SINK, vulkan_element_init (plugin)); static void gst_vulkan_sink_class_init (GstVulkanSinkClass * klass) diff --git a/ext/vulkan/vkupload.c b/ext/vulkan/vkupload.c index 0f2a6e9d5..f49ac0140 100644 --- a/ext/vulkan/vkupload.c +++ b/ext/vulkan/vkupload.c @@ -30,7 +30,7 @@ #endif #include <string.h> - +#include "gstvulkanelements.h" #include "vkupload.h" GST_DEBUG_CATEGORY (gst_debug_vulkan_upload); @@ -1164,6 +1164,8 @@ enum G_DEFINE_TYPE_WITH_CODE (GstVulkanUpload, gst_vulkan_upload, GST_TYPE_BASE_TRANSFORM, GST_DEBUG_CATEGORY_INIT (gst_debug_vulkan_upload, "vulkanupload", 0, "Vulkan Uploader")); +GST_ELEMENT_REGISTER_DEFINE_WITH_CODE (vulkanupload, "vulkanupload", + GST_RANK_NONE, GST_TYPE_VULKAN_UPLOAD, vulkan_element_init (plugin)); static void gst_vulkan_upload_class_init (GstVulkanUploadClass * klass) diff --git a/ext/vulkan/vkviewconvert.c b/ext/vulkan/vkviewconvert.c index 8d9e7f4b1..2ff998b16 100644 --- a/ext/vulkan/vkviewconvert.c +++ b/ext/vulkan/vkviewconvert.c @@ -31,6 +31,7 @@ #include <string.h> +#include "gstvulkanelements.h" #include "vkviewconvert.h" #include "shaders/identity.vert.h" @@ -561,6 +562,8 @@ G_DEFINE_TYPE_WITH_CODE (GstVulkanViewConvert, gst_vulkan_view_convert, GST_TYPE_VULKAN_VIDEO_FILTER, GST_DEBUG_CATEGORY_INIT (gst_debug_vulkan_view_convert, "vulkanviewconvert", 0, "Vulkan View Convert")); +GST_ELEMENT_REGISTER_DEFINE_WITH_CODE (vulkanviewconvert, "vulkanviewconvert", + GST_RANK_NONE, GST_TYPE_VULKAN_VIEW_CONVERT, vulkan_element_init (plugin)); static void gst_vulkan_view_convert_class_init (GstVulkanViewConvertClass * klass) |