Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/sdroege/gst-plugin-rs.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNirbheek Chauhan <nirbheek@centricular.com>2022-12-29 01:20:34 +0300
committerNirbheek Chauhan <nirbheek@centricular.com>2022-12-29 04:21:17 +0300
commit002e3fa1710bec6f5d7d25c9561f1fa7eaa3b3ca (patch)
treec1d1c0bed18915b30e0e19ff92a93a499675a2f2 /meson.build
parentf94e422b61f0d3c7145d85e5358339d5c35bc2c8 (diff)
meson: Enable gstreamer-gl-1.0 features in gtk4 plugin
Basically, if gstreamer-gl-1.0 is built with wayland / x11 / egl, use those features in the gtk4 plugin. MacOS always uses CGL, and it's always available. Windows version does not use GL yet. Requires https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3654 Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1031>
Diffstat (limited to 'meson.build')
-rw-r--r--meson.build112
1 files changed, 67 insertions, 45 deletions
diff --git a/meson.build b/meson.build
index bbc68029..fc2b0684 100644
--- a/meson.build
+++ b/meson.build
@@ -41,6 +41,49 @@ else
ext_static = 'a'
endif
+# Extra env to pass to cargo
+extra_env = {}
+
+# Used to not lookup the same dependency multiple times which clutters logs
+deps_cache = {}
+
+# Need to depends on all gstreamer-rs deps to ensure they are built
+# before gstreamer-rs when building with gst-build.
+# Custom targets can't depend on dependency() objects so we have to depend
+# on the library variable from the subproject instead.
+glib_req = '>=2.62'
+gst_req = '>=1.20.0'
+depends = []
+
+deps = [
+ # name, subproject name, subproject dep, library object
+ ['gstreamer-1.0', 'gstreamer', 'gst_dep', 'libgst'],
+ ['gstreamer-app-1.0', 'gst-plugins-base', 'app_dep', 'gstapp'],
+ ['gstreamer-audio-1.0', 'gst-plugins-base', 'audio_dep', 'gstaudio'],
+ ['gstreamer-base-1.0', 'gstreamer', 'gst_base_dep', 'gst_base'],
+ ['gstreamer-check-1.0', 'gstreamer', 'gst_check_dep', 'gst_check'],
+ ['gstreamer-gl-1.0', 'gst-plugins-base', 'gst_gl_dep', 'gstgl'],
+ ['gstreamer-net-1.0', 'gstreamer', 'gst_net_dep', 'gst_net'],
+ ['gstreamer-rtp-1.0', 'gst-plugins-base', 'rtp_dep', 'gst_rtp'],
+ ['gstreamer-video-1.0', 'gst-plugins-base', 'video_dep', 'gstvideo'],
+ ['gstreamer-sdp-1.0', 'gst-plugins-base', 'sdp_dep', 'gstsdp'],
+ ['gstreamer-webrtc-1.0', 'gst-plugins-bad', 'gstwebrtc_dep', 'gstwebrtc'],
+]
+
+glib_dep = dependency('glib-2.0', version: glib_req)
+deps_cache += {'glib-2.0': glib_dep}
+
+foreach d: deps
+ dep = dependency(d[0], version: gst_req,
+ fallback : [d[1], d[2]])
+ set_variable(d[2], dep)
+ deps_cache += {d[0]: dep}
+ if dep.type_name() == 'internal'
+ lib = subproject(d[1]).get_variable(d[3])
+ depends += lib
+ endif
+endforeach
+
# kept in the same order as the `members` list in Cargo.toml
plugins = {
'audiofx': {
@@ -139,11 +182,7 @@ plugins = {
'library': 'libgstgif',
'examples': ['testvideosrc2gif'],
},
- 'gtk4': {
- 'library': 'libgstgtk4',
- 'examples': ['gtksink'],
- 'extra-deps': {'gtk4': '>=4.6'},
- },
+ # gtk4 is added below
'hsv': {'library': 'libgsthsv'},
'png': {
'library': 'libgstrspng',
@@ -169,8 +208,6 @@ if host_system not in ['windows', 'darwin']
}}
endif
-extra_env = {}
-
sodium_opt = get_option('sodium')
if sodium_opt.allowed()
sodium_plugin = {'sodium': {
@@ -210,45 +247,30 @@ if csound_option.allowed()
endif
endif
-# Used to not lookup the same dependency multiple times which clutters logs
-deps_cache = {}
-
-# Need to depends on all gstreamer-rs deps to ensure they are built
-# before gstreamer-rs when building with gst-build.
-# Custom targets can't depend on dependency() objects so we have to depend
-# on the library variable from the subproject instead.
-glib_req = '>=2.62'
-gst_req = '>=1.20.0'
-depends = []
-
-deps = [
- # name, subproject name, subproject dep, library object
- ['gstreamer-1.0', 'gstreamer', 'gst_dep', 'libgst'],
- ['gstreamer-app-1.0', 'gst-plugins-base', 'app_dep', 'gstapp'],
- ['gstreamer-audio-1.0', 'gst-plugins-base', 'audio_dep', 'gstaudio'],
- ['gstreamer-base-1.0', 'gstreamer', 'gst_base_dep', 'gst_base'],
- ['gstreamer-check-1.0', 'gstreamer', 'gst_check_dep', 'gst_check'],
- ['gstreamer-gl-1.0', 'gst-plugins-base', 'gst_gl_dep', 'gstgl'],
- ['gstreamer-net-1.0', 'gstreamer', 'gst_net_dep', 'gst_net'],
- ['gstreamer-rtp-1.0', 'gst-plugins-base', 'rtp_dep', 'gst_rtp'],
- ['gstreamer-video-1.0', 'gst-plugins-base', 'video_dep', 'gstvideo'],
- ['gstreamer-sdp-1.0', 'gst-plugins-base', 'sdp_dep', 'gstsdp'],
- ['gstreamer-webrtc-1.0', 'gst-plugins-bad', 'gstwebrtc_dep', 'gstwebrtc'],
-]
-
-glib_dep = dependency('glib-2.0', version: glib_req)
-deps_cache += {'glib-2.0': glib_dep}
-
-foreach d: deps
- dep = dependency(d[0], version: gst_req,
- fallback : [d[1], d[2]])
- set_variable(d[2], dep)
- deps_cache += {d[0]: dep}
- if dep.type_name() == 'internal'
- lib = subproject(d[1]).get_variable(d[3])
- depends += lib
+if get_option('gtk4').allowed()
+ gtk4_features = []
+ gl_winsys = gst_gl_dep.get_variable('gl_winsys').split()
+ gl_platforms = gst_gl_dep.get_variable('gl_platforms').split()
+ if host_system == 'linux'
+ if 'wayland' in gl_winsys
+ gtk4_features += 'wayland'
+ endif
+ if 'x11' in gl_winsys
+ if 'egl' in gl_platforms
+ gtk4_features += 'x11egl'
+ endif
+ if 'glx' in gl_platforms
+ gtk4_features += 'x11glx'
+ endif
+ endif
endif
-endforeach
+ plugins += {'gtk4': {
+ 'library': 'libgstgtk4',
+ 'examples': ['gtksink'],
+ 'extra-deps': {'gtk4': '>=4.6'},
+ 'features': gtk4_features,
+ }}
+endif
# Process plugins list