summaryrefslogtreecommitdiffstats
path: root/meta-multimedia/recipes-multimedia/pipewire
diff options
context:
space:
mode:
Diffstat (limited to 'meta-multimedia/recipes-multimedia/pipewire')
-rw-r--r--meta-multimedia/recipes-multimedia/pipewire/pipewire-0.2/0001-module-suspend-on-idle-Include-time.h-for-struct-tim.patch43
-rw-r--r--meta-multimedia/recipes-multimedia/pipewire/pipewire-0.2_git.bb66
-rw-r--r--meta-multimedia/recipes-multimedia/pipewire/pipewire-media-session/0001-pass-right-types-to-methods.patch53
-rw-r--r--meta-multimedia/recipes-multimedia/pipewire/pipewire-media-session_0.4.2.bb5
-rw-r--r--meta-multimedia/recipes-multimedia/pipewire/pipewire_1.4.5.bb (renamed from meta-multimedia/recipes-multimedia/pipewire/pipewire_1.0.7.bb)37
5 files changed, 86 insertions, 118 deletions
diff --git a/meta-multimedia/recipes-multimedia/pipewire/pipewire-0.2/0001-module-suspend-on-idle-Include-time.h-for-struct-tim.patch b/meta-multimedia/recipes-multimedia/pipewire/pipewire-0.2/0001-module-suspend-on-idle-Include-time.h-for-struct-tim.patch
deleted file mode 100644
index ce381a78b3..0000000000
--- a/meta-multimedia/recipes-multimedia/pipewire/pipewire-0.2/0001-module-suspend-on-idle-Include-time.h-for-struct-tim.patch
+++ /dev/null
@@ -1,43 +0,0 @@
1From b1d911fdab4a583f276d18395037d90bfc305109 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Mon, 20 May 2024 18:12:23 -0700
4Subject: [PATCH] module-suspend-on-idle: Include time.h for struct timespec
5 decl
6
7This is flagged as error with gcc-14 on musl targets
8
9In file included from ../git/src/pipewire/loop.h:27,
10 from ../git/src/pipewire/core.h:44,
11 from ../git/src/modules/module-suspend-on-idle.c:26:
12../git/spa/include/spa/support/loop.h:184:37: warning: 'struct timespec' declared inside parameter list will not be visible outside of this definition or declaration
13 184 | struct timespec *value,
14 | ^~~~~~~~
15../git/src/modules/module-suspend-on-idle.c: In function 'node_state_changed':
16../git/src/modules/module-suspend-on-idle.c:110:69: error: passing argument 2 of 'main_loop->utils->update_timer' from incompatible pointer type [-Wincompatible-pointer-types]
17 110 | pw_loop_update_timer(main_loop, info->idle_timeout, &value, NULL, false);
18 | ^~~~~~
19 | |
20 | struct timespec *
21
22Upstream-Status: Inappropriate [Fixed in latest pipewire differently]
23
24Signed-off-by: Khem Raj <raj.khem@gmail.com>
25---
26 src/modules/module-suspend-on-idle.c | 1 +
27 1 file changed, 1 insertion(+)
28
29diff --git a/src/modules/module-suspend-on-idle.c b/src/modules/module-suspend-on-idle.c
30index e5c1fcb30..4dba3be71 100644
31--- a/src/modules/module-suspend-on-idle.c
32+++ b/src/modules/module-suspend-on-idle.c
33@@ -20,6 +20,7 @@
34 #include <string.h>
35 #include <stdio.h>
36 #include <errno.h>
37+#include <time.h>
38
39 #include "config.h"
40
41--
422.45.1
43
diff --git a/meta-multimedia/recipes-multimedia/pipewire/pipewire-0.2_git.bb b/meta-multimedia/recipes-multimedia/pipewire/pipewire-0.2_git.bb
deleted file mode 100644
index 7c8afd3d51..0000000000
--- a/meta-multimedia/recipes-multimedia/pipewire/pipewire-0.2_git.bb
+++ /dev/null
@@ -1,66 +0,0 @@
1SUMMARY = "Multimedia processing server for Linux"
2HOMEPAGE = "https://pipewire.org"
3SECTION = "multimedia"
4LICENSE = "LGPL-2.1-only"
5LIC_FILES_CHKSUM = " \
6 file://LICENSE;md5=d8153c6e65986f862a0550ca74a3ed73 \
7 file://LGPL;md5=2d5025d4aa3495befef8f17206a5b0a1 \
8"
9DEPENDS = "alsa-lib dbus udev"
10SRCREV = "14c11c0fe4d366bad4cfecdee97b6652ff9ed63d"
11PV = "0.2.7"
12
13SRC_URI = "git://github.com/PipeWire/pipewire;branch=master;protocol=https \
14 file://0001-module-suspend-on-idle-Include-time.h-for-struct-tim.patch \
15 "
16
17S = "${WORKDIR}/git"
18
19inherit meson pkgconfig systemd manpages
20
21PACKAGECONFIG ??= "\
22 ${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)} \
23 gstreamer \
24"
25
26PACKAGECONFIG[systemd] = "-Dsystemd=true,-Dsystemd=false,systemd"
27PACKAGECONFIG[gstreamer] = "-Dgstreamer=enabled,-Dgstreamer=disabled,glib-2.0 gstreamer1.0 gstreamer1.0-plugins-base"
28PACKAGECONFIG[manpages] = "-Dman=true,-Dman=false,libxml-parser-perl-native"
29
30PACKAGES =+ "\
31 ${PN}-spa-plugins \
32 ${PN}-alsa \
33 ${PN}-config \
34 gstreamer1.0-${PN} \
35 lib${PN} \
36 lib${PN}-modules \
37"
38
39RDEPENDS:lib${PN} += "lib${PN}-modules ${PN}-spa-plugins"
40
41FILES:${PN} = "\
42 ${sysconfdir}/pipewire/pipewire.conf \
43 ${bindir}/pipewire* \
44 ${systemd_user_unitdir}/* \
45"
46FILES:lib${PN} = "\
47 ${libdir}/libpipewire-*.so.* \
48"
49FILES:lib${PN}-modules = "\
50 ${libdir}/pipewire-*/* \
51"
52FILES:${PN}-spa-plugins = "\
53 ${bindir}/spa-* \
54 ${libdir}/spa/* \
55"
56FILES:${PN}-alsa = "\
57 ${libdir}/alsa-lib/* \
58 ${datadir}/alsa/alsa.conf.d/50-pipewire.conf \
59"
60FILES:gstreamer1.0-${PN} = "\
61 ${libdir}/gstreamer-1.0/* \
62"
63
64CONFFILES:${PN} = "\
65 ${sysconfdir}/pipewire/pipewire.conf \
66"
diff --git a/meta-multimedia/recipes-multimedia/pipewire/pipewire-media-session/0001-pass-right-types-to-methods.patch b/meta-multimedia/recipes-multimedia/pipewire/pipewire-media-session/0001-pass-right-types-to-methods.patch
new file mode 100644
index 0000000000..e7a3e52617
--- /dev/null
+++ b/meta-multimedia/recipes-multimedia/pipewire/pipewire-media-session/0001-pass-right-types-to-methods.patch
@@ -0,0 +1,53 @@
1From 97e0d7646c873ea3badfa604b3f084ed6208af97 Mon Sep 17 00:00:00 2001
2From: Wim Taymans <wtaymans@redhat.com>
3Date: Tue, 26 Nov 2024 13:37:06 +0100
4Subject: [PATCH] pass right types to methods
5
6
7Upstream-Status: Backport [https://gitlab.freedesktop.org/pipewire/media-session/-/commit/e6243381cf2b7d0d33707627b4186f5580908752]
8Signed-off-by: Yoann Congal <yoann.congal@smile.fr>
9---
10 src/access-flatpak.c | 2 +-
11 src/access-portal.c | 2 +-
12 src/default-routes.c | 2 +-
13 3 files changed, 3 insertions(+), 3 deletions(-)
14
15diff --git a/src/access-flatpak.c b/src/access-flatpak.c
16index afe780b2d..dd802d6eb 100644
17--- a/src/access-flatpak.c
18+++ b/src/access-flatpak.c
19@@ -114,7 +114,7 @@ static void object_update(void *data)
20 pw_log_info("%p: flatpak client %d granted 0x%08x permissions"
21 , impl, client->id, perms);
22 permissions[0] = PW_PERMISSION_INIT(PW_ID_ANY, perms);
23- pw_client_update_permissions(client->obj->obj.proxy,
24+ pw_client_update_permissions((struct pw_client*)client->obj->obj.proxy,
25 1, permissions);
26 client->active = true;
27 }
28diff --git a/src/access-portal.c b/src/access-portal.c
29index 92d95a26b..4e3a9f52a 100644
30--- a/src/access-portal.c
31+++ b/src/access-portal.c
32@@ -265,7 +265,7 @@ set_global_permissions(void *data, struct sm_object *object)
33 permissions[n_permissions++] =
34 PW_PERMISSION_INIT(object->id, allowed ? PW_PERM_ALL : 0);
35 pw_log_info("%p: object %d allowed:%d", impl, object->id, allowed);
36- pw_client_update_permissions(client->obj->obj.proxy,
37+ pw_client_update_permissions((struct pw_client*)client->obj->obj.proxy,
38 n_permissions, permissions);
39 }
40 return 0;
41diff --git a/src/default-routes.c b/src/default-routes.c
42index 5a842faf7..86f9e217b 100644
43--- a/src/default-routes.c
44+++ b/src/default-routes.c
45@@ -479,7 +479,7 @@ static int restore_route_params(struct device *dev, const char *val, const struc
46 if (pw_log_level_enabled(SPA_LOG_LEVEL_DEBUG))
47 spa_debug_pod(2, NULL, param);
48
49- pw_device_set_param((struct pw_node*)dev->obj->obj.proxy,
50+ pw_device_set_param((struct pw_device*)dev->obj->obj.proxy,
51 SPA_PARAM_Route, 0, param);
52
53 sm_media_session_schedule_rescan(dev->impl->session);
diff --git a/meta-multimedia/recipes-multimedia/pipewire/pipewire-media-session_0.4.2.bb b/meta-multimedia/recipes-multimedia/pipewire/pipewire-media-session_0.4.2.bb
index 8ae0624135..dde0039584 100644
--- a/meta-multimedia/recipes-multimedia/pipewire/pipewire-media-session_0.4.2.bb
+++ b/meta-multimedia/recipes-multimedia/pipewire/pipewire-media-session_0.4.2.bb
@@ -10,9 +10,10 @@ DEPENDS = " \
10 dbus \ 10 dbus \
11" 11"
12 12
13SRC_URI = "git://gitlab.freedesktop.org/pipewire/media-session.git;protocol=https;branch=master" 13SRC_URI = "git://gitlab.freedesktop.org/pipewire/media-session.git;protocol=https;branch=master \
14 file://0001-pass-right-types-to-methods.patch \
15 "
14 16
15S = "${WORKDIR}/git"
16SRCREV = "80dae7e24bec02b2befe09a72fbac6e2b38ccb5c" 17SRCREV = "80dae7e24bec02b2befe09a72fbac6e2b38ccb5c"
17 18
18inherit meson pkgconfig 19inherit meson pkgconfig
diff --git a/meta-multimedia/recipes-multimedia/pipewire/pipewire_1.0.7.bb b/meta-multimedia/recipes-multimedia/pipewire/pipewire_1.4.5.bb
index 0c68cc4d28..e41cfd221c 100644
--- a/meta-multimedia/recipes-multimedia/pipewire/pipewire_1.0.7.bb
+++ b/meta-multimedia/recipes-multimedia/pipewire/pipewire_1.4.5.bb
@@ -12,10 +12,10 @@ LIC_FILES_CHKSUM = " \
12 12
13DEPENDS = "dbus ncurses" 13DEPENDS = "dbus ncurses"
14 14
15SRCREV = "59fe89d41a67f6daad086f8f3fe522935be77a3f" 15SRCREV = "83ada1e086f8fa49bf9652df2edd9ccee5efa48b"
16SRC_URI = "git://gitlab.freedesktop.org/pipewire/pipewire.git;branch=1.0;protocol=https" 16BRANCH = "${@oe.utils.trim_version('${PV}', 2)}"
17SRC_URI = "git://gitlab.freedesktop.org/pipewire/pipewire.git;branch=${BRANCH};protocol=https"
17 18
18S = "${WORKDIR}/git"
19 19
20inherit meson pkgconfig systemd gettext useradd 20inherit meson pkgconfig systemd gettext useradd
21 21
@@ -72,6 +72,9 @@ EXTRA_OEMESON += " \
72# mode but it looks like clang still does 72# mode but it looks like clang still does
73CFLAGS:append = " -Wno-typedef-redefinition" 73CFLAGS:append = " -Wno-typedef-redefinition"
74 74
75# Specify linking with -latomic on architectures missing 64bit atomics.
76LDFLAGS += "${@bb.utils.contains_any('TUNE_FEATURES', 'riscv32 armv5 mips ppc32 m32', '-latomic', '', d)}"
77
75# According to wireplumber documentation only one session manager should be installed at a time 78# According to wireplumber documentation only one session manager should be installed at a time
76# Possible options are media-session, which has fewer dependencies but is very simple, 79# Possible options are media-session, which has fewer dependencies but is very simple,
77# or wireplumber, which is more powerful. 80# or wireplumber, which is more powerful.
@@ -96,7 +99,7 @@ PACKAGECONFIG:class-target ??= " \
96# as being in conflict. 99# as being in conflict.
97PACKAGECONFIG[alsa] = "-Dalsa=enabled,-Dalsa=disabled,alsa-lib udev,,pipewire-alsa pipewire-alsa-card-profile" 100PACKAGECONFIG[alsa] = "-Dalsa=enabled,-Dalsa=disabled,alsa-lib udev,,pipewire-alsa pipewire-alsa-card-profile"
98PACKAGECONFIG[avahi] = "-Davahi=enabled,-Davahi=disabled,avahi" 101PACKAGECONFIG[avahi] = "-Davahi=enabled,-Davahi=disabled,avahi"
99PACKAGECONFIG[bluez] = "-Dbluez5=enabled,-Dbluez5=disabled,bluez5 sbc" 102PACKAGECONFIG[bluez] = "-Dbluez5=enabled,-Dbluez5=disabled,bluez5 sbc glib-2.0-native"
100PACKAGECONFIG[bluez-aac] = "-Dbluez5-codec-aac=enabled,-Dbluez5-codec-aac=disabled,fdk-aac" 103PACKAGECONFIG[bluez-aac] = "-Dbluez5-codec-aac=enabled,-Dbluez5-codec-aac=disabled,fdk-aac"
101PACKAGECONFIG[bluez-opus] = "-Dbluez5-codec-opus=enabled,-Dbluez5-codec-opus=disabled,libopus" 104PACKAGECONFIG[bluez-opus] = "-Dbluez5-codec-opus=enabled,-Dbluez5-codec-opus=disabled,libopus"
102PACKAGECONFIG[bluez-lc3] = "-Dbluez5-codec-lc3=enabled,-Dbluez5-codec-lc3=disabled,liblc3" 105PACKAGECONFIG[bluez-lc3] = "-Dbluez5-codec-lc3=enabled,-Dbluez5-codec-lc3=disabled,liblc3"
@@ -122,7 +125,7 @@ PACKAGECONFIG[raop] = "-Draop=enabled,-Draop=disabled,openssl"
122# Starting with version 0.3.60, readline usage can be turned off in pw-cli. 125# Starting with version 0.3.60, readline usage can be turned off in pw-cli.
123# If it is disabled, getline() is used as a fallback. 126# If it is disabled, getline() is used as a fallback.
124PACKAGECONFIG[readline] = "-Dreadline=enabled,-Dreadline=disabled,readline" 127PACKAGECONFIG[readline] = "-Dreadline=enabled,-Dreadline=disabled,readline"
125PACKAGECONFIG[sdl2] = "-Dsdl2=enabled,-Dsdl2=disabled,libsdl2" 128PACKAGECONFIG[sdl2] = "-Dsdl2=enabled,-Dsdl2=disabled,virtual/libsdl2"
126PACKAGECONFIG[sndfile] = "-Dsndfile=enabled,-Dsndfile=disabled,libsndfile1" 129PACKAGECONFIG[sndfile] = "-Dsndfile=enabled,-Dsndfile=disabled,libsndfile1"
127PACKAGECONFIG[systemd] = "-Dsystemd=enabled,-Dsystemd=disabled,systemd" 130PACKAGECONFIG[systemd] = "-Dsystemd=enabled,-Dsystemd=disabled,systemd"
128PACKAGECONFIG[systemd-system-service] = "-Dsystemd-system-service=enabled,-Dsystemd-system-service=disabled,systemd" 131PACKAGECONFIG[systemd-system-service] = "-Dsystemd-system-service=enabled,-Dsystemd-system-service=disabled,systemd"
@@ -135,7 +138,7 @@ PACKAGECONFIG[udev] = "-Dudev=enabled,-Dudev=disabled,udev"
135PACKAGECONFIG[v4l2] = "-Dv4l2=enabled,-Dv4l2=disabled,udev" 138PACKAGECONFIG[v4l2] = "-Dv4l2=enabled,-Dv4l2=disabled,udev"
136PACKAGECONFIG[volume] = "-Dvolume=enabled,-Dvolume=disabled" 139PACKAGECONFIG[volume] = "-Dvolume=enabled,-Dvolume=disabled"
137PACKAGECONFIG[vulkan] = "-Dvulkan=enabled,-Dvulkan=disabled,vulkan-headers vulkan-loader" 140PACKAGECONFIG[vulkan] = "-Dvulkan=enabled,-Dvulkan=disabled,vulkan-headers vulkan-loader"
138PACKAGECONFIG[webrtc-echo-cancelling] = "-Decho-cancel-webrtc=enabled,-Decho-cancel-webrtc=disabled,webrtc-audio-processing-1" 141PACKAGECONFIG[webrtc-echo-cancelling] = "-Decho-cancel-webrtc=enabled,-Decho-cancel-webrtc=disabled,webrtc-audio-processing-2"
139PACKAGECONFIG[wireplumber] = ",,,wireplumber,,media-session" 142PACKAGECONFIG[wireplumber] = ",,,wireplumber,,media-session"
140 143
141PACKAGESPLITFUNCS:prepend = " split_dynamic_packages " 144PACKAGESPLITFUNCS:prepend = " split_dynamic_packages "
@@ -157,6 +160,14 @@ remove_unused_installed_files() {
157 rm -f "${D}${datadir}/pipewire/minimal.conf" 160 rm -f "${D}${datadir}/pipewire/minimal.conf"
158} 161}
159 162
163do_install:append:class-target() {
164 # The pipewire-alsa plugin needs the following files in /etc/alsa/conf.d/ to
165 # be picked up by alsa.
166 install -d ${D}${sysconfdir}/alsa/conf.d
167 ln -sf ${datadir}/alsa/alsa.conf.d/50-pipewire.conf ${D}${sysconfdir}/alsa/conf.d/50-pipewire.conf
168 ln -sf ${datadir}/alsa/alsa.conf.d/99-pipewire-default.conf ${D}${sysconfdir}/alsa/conf.d/99-pipewire-default.conf
169}
170
160do_install[postfuncs] += "remove_unused_installed_files" 171do_install[postfuncs] += "remove_unused_installed_files"
161 172
162python split_dynamic_packages () { 173python split_dynamic_packages () {
@@ -279,6 +290,7 @@ CONFFILES:libpipewire += "${datadir}/pipewire/client.conf"
279FILES:libpipewire = " \ 290FILES:libpipewire = " \
280 ${datadir}/pipewire/client.conf \ 291 ${datadir}/pipewire/client.conf \
281 ${libdir}/libpipewire-*.so.* \ 292 ${libdir}/libpipewire-*.so.* \
293 ${libdir}/${SPA_SUBDIR}/libspa.so \
282" 294"
283# Add the bare minimum modules and plugins required to be able 295# Add the bare minimum modules and plugins required to be able
284# to use libpipewire. Without these, it is essentially unusable. 296# to use libpipewire. Without these, it is essentially unusable.
@@ -292,6 +304,7 @@ FILES:${PN}-tools = " \
292 ${bindir}/pw-cat \ 304 ${bindir}/pw-cat \
293 ${bindir}/pw-cli \ 305 ${bindir}/pw-cli \
294 ${bindir}/pw-config \ 306 ${bindir}/pw-config \
307 ${bindir}/pw-container \
295 ${bindir}/pw-dot \ 308 ${bindir}/pw-dot \
296 ${bindir}/pw-dsdplay \ 309 ${bindir}/pw-dsdplay \
297 ${bindir}/pw-dump \ 310 ${bindir}/pw-dump \
@@ -320,7 +333,9 @@ FILES:${PN}-pulse = " \
320 ${systemd_user_unitdir}/pipewire-pulse.* \ 333 ${systemd_user_unitdir}/pipewire-pulse.* \
321 ${bindir}/pipewire-pulse \ 334 ${bindir}/pipewire-pulse \
322" 335"
323RDEPENDS:${PN}-pulse += " \ 336# This uses :append:class-target rather than += to avoid a dependency from
337# pipewire-native to pipewire.
338RDEPENDS:${PN}-pulse:append:class-target = " \
324 ${PN}-modules-protocol-pulse \ 339 ${PN}-modules-protocol-pulse \
325" 340"
326 341
@@ -328,6 +343,8 @@ RDEPENDS:${PN}-pulse += " \
328FILES:${PN}-alsa = "\ 343FILES:${PN}-alsa = "\
329 ${libdir}/alsa-lib/* \ 344 ${libdir}/alsa-lib/* \
330 ${datadir}/alsa/alsa.conf.d/* \ 345 ${datadir}/alsa/alsa.conf.d/* \
346 ${sysconfdir}/alsa/conf.d/50-pipewire.conf \
347 ${sysconfdir}/alsa/conf.d/99-pipewire-default.conf \
331" 348"
332 349
333# JACK drop-in libraries to redirect audio to pipewire. 350# JACK drop-in libraries to redirect audio to pipewire.
@@ -386,3 +403,9 @@ FILES:gstreamer1.0-pipewire = " \
386" 403"
387 404
388BBCLASSEXTEND = "native nativesdk" 405BBCLASSEXTEND = "native nativesdk"
406
407do_install:append() {
408 if ls ${D}${datadir}/doc/pipewire/html/dir_*html; then
409 sed -i "s,${WORKDIR},,g" ${D}${datadir}/doc/pipewire/html/dir_*html
410 fi
411}