# TODO: evl support (BR: libevl-devel, https://evlproject.org/)
-# - libcamera integration (no releases yet; ARM specific?)
+# - enable bluez5-codec-lc3
#
# Conditional build:
%bcond_without apidocs # Doxygen based API documentation
%bcond_without ffmpeg # ffmpeg spa plugin integration
%bcond_without gstreamer # GStreamer module
%bcond_without jack # pipewire-jack and jack spa plugin integration
+%bcond_with libcamera # libcamera plugin
%bcond_without lv2 # LV2 plugins support
+%bcond_without roc # ROC modules
+%bcond_without x11 # X11 bell support
#
Summary: PipeWire - server and user space API to deal with multimedia pipelines
Summary(pl.UTF-8): PipeWire - serwer i API przestrzeni użytkownika do obsługi potoków multimedialnych
Name: pipewire
-Version: 0.3.43
-Release: 4
+Version: 0.3.59
+Release: 1
License: MIT, LGPL v2+, GPL v2
Group: Libraries
#Source0Download: https://github.com/PipeWire/pipewire/releases
Source0: https://github.com/PipeWire/pipewire/archive/%{version}/%{name}-%{version}.tar.gz
-# Source0-md5: 6e12461b046e45c4c47bd7face365818
+# Source0-md5: 1631ae896a35854b63308c0d6ad916d4
Patch0: %{name}-gcc.patch
URL: https://pipewire.org/
%if %{with jack}
BuildRequires: fdk-aac-devel
# libavcodec libavformat libavfilter
%{?with_ffmpeg:BuildRequires: ffmpeg-devel}
-BuildRequires: gcc >= 5:3.2
+BuildRequires: gcc >= 6:4.9
BuildRequires: gettext-tools
%if %{with gstreamer}
BuildRequires: glib2-devel >= 1:2.32.0
# possibly more 32-bit archs (where 8-byte __atomic_store_n require libatomic)
BuildRequires: libatomic-devel
%endif
+%{?with_libcamera:BuildRequires: libcamera-devel}
+%{?with_x11:BuildRequires: libcanberra-devel}
BuildRequires: libcap-devel
-# for libcamera
-#BuildRequires: libdrm-devel >= 2.4.98
+%{?with_libcamera:BuildRequires: libdrm-devel >= 2.4.98}
BuildRequires: libfreeaptx-devel
BuildRequires: libsndfile-devel >= 1.0.20
BuildRequires: libstdc++-devel >= 6:7
BuildRequires: libusb-devel >= 1.0
%{?with_lv2:BuildRequires: lilv-devel}
-BuildRequires: meson >= 0.56.0
+BuildRequires: meson >= 0.59.0
BuildRequires: ncurses-devel
BuildRequires: ninja >= 1.5
BuildRequires: openssl-devel
+BuildRequires: opus-devel
BuildRequires: pkgconfig
BuildRequires: pulseaudio-devel
BuildRequires: readline-devel >= 8.1.1-2
+%{?with_roc:BuildRequires: roc-toolkit-devel}
BuildRequires: rpm-build >= 4.6
BuildRequires: rpmbuild(macros) >= 2.011
BuildRequires: sbc-devel
BuildRequires: udev-devel
BuildRequires: webrtc-audio-processing-devel >= 0.2
BuildRequires: webrtc-audio-processing-devel < 1.0
+%if %{with x11}
+BuildRequires: xorg-lib-libX11-devel
+BuildRequires: xorg-lib-libXfixes-devel >= 6
+%endif
+Requires(post,preun): systemd-units >= 1:250.1
Requires: %{name}-libs = %{version}-%{release}
Requires: libsndfile >= 1.0.20
Requires: pipewire-session-manager
+Requires: systemd-units >= 1:250.1
Suggests: rtkit
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
Wtyczka PipeWire SPA do odtwarzania i nagrywania dźwięku przy użyciu
API JACK.
+%package spa-module-libcamera
+Summary: PipeWire SPA plugin to access cameras through libcamera
+Summary(pl.UTF-8): Wtyczka PipeWire SPA do dostępu do kamer przez libcamera
+Group: Libraries
+Requires: %{name}-libs = %{version}-%{release}
+
+%description spa-module-libcamera
+PipeWire SPA plugin to access cameras through libcamera.
+
+%description spa-module-libcamera -l pl.UTF-8
+Wtyczka PipeWire SPA do dostępu do kamer przez libcamera.
+
%package spa-module-vulkan
Summary: PipeWire SPA plugin to generate video frames using Vulkan
Summary(pl.UTF-8): Wtyczka PipeWire SPA do generowania ramek obrazu przy użyciu Vulkana
Summary: PipeWire PulseAudio sound system integration
Summary(pl.UTF-8): Integracja PipeWire z systemem dźwięku PulseAudio
Group: Libraries
+Requires(post,preun): systemd-units >= 1:250.1
Requires: %{name} = %{version}-%{release}
+Requires: systemd-units >= 1:250.1
Suggests: pulseaudio-tools
%description pulseaudio
%description pulseaudio -l pl.UTF-8
Integracja PipeWire z systemem dźwięku PulseAudio.
+%package roc
+Summary: PipeWire ROC streaming integration
+Summary(pl.UTF-8): Integracja PipeWire ze strumieniami ROC
+Group: Libraries
+Requires: %{name} = %{version}-%{release}
+
+%description roc
+PipeWire ROC streaming integration.
+
+%description roc -l pl.UTF-8
+Integracja PipeWire ze strumieniami ROC.
+
+%package x11-bell
+Summary: PipeWire module for X11 bell support
+Summary(pl.UTF-8): Moduł PipeWire do obsługi dzwonka X11
+Group: Libraries
+Requires: %{name} = %{version}-%{release}
+Requires: xorg-lib-libXfixes >= 6
+
+%description x11-bell
+PipeWire module for X11 bell support.
+
+%description x11-bell -l pl.UTF-8
+Moduł PipeWire do obsługi dzwonka X11.
+
%package -n alsa-plugin-pipewire
Summary: PipeWire integration plugin for ALSA sound system
Summary(pl.UTF-8): Wtyczka systemu dźwięku ALSA integrująca z PipeWire
%{?with_ffmpeg:-Dffmpeg=enabled} \
%{!?with_gstreamer:-Dgstreamer=disabled} \
%{!?with_jack:-Djack=disabled} \
+ -Dlibcamera=%{__enabled_disabled libcamera} \
%{!?with_lv2:-Dlv2=disabled} \
-Dman=enabled \
%{!?with_jack:-Dpipewire-jack=disabled} \
+ %{!?with_roc:-Droc=disabled} \
-Dsession-managers='[]' \
-Dvideotestsrc=enabled \
-Dvolume=enabled \
- -Dvulkan=enabled
+ -Dvulkan=enabled \
+ -Dx11=%{__enabled_disabled x11}
# TODO: -Devl=enabled
%ninja_build -C build
rm -rf $RPM_BUILD_ROOT
%post
-%systemd_user_post pipewire.service
-%systemd_user_post pipewire.socket
+%systemd_user_post filter-chain.service pipewire.service pipewire.socket
%preun
-%systemd_user_preun pipewire.service
-%systemd_user_preun pipewire.socket
+%systemd_user_preun filter-chain.service pipewire.service pipewire.socket
%post libs -p /sbin/ldconfig
%postun libs -p /sbin/ldconfig
%post pulseaudio
-%systemd_user_post pipewire-pulse.service
-%systemd_user_post pipewire-pulse.socket
+%systemd_user_post pipewire-pulse.service pipewire-pulse.socket
%preun pulseaudio
-%systemd_user_preun pipewire-pulse.service
-%systemd_user_preun pipewire-pulse.socket
+%systemd_user_preun pipewire-pulse.service pipewire-pulse.socket
%files -f %{name}.lang
%defattr(644,root,root,755)
%attr(755,root,root) %{_bindir}/pipewire
+%attr(755,root,root) %{_bindir}/pipewire-avb
%attr(755,root,root) %{_bindir}/pw-cat
%attr(755,root,root) %{_bindir}/pw-cli
%attr(755,root,root) %{_bindir}/pw-dot
%dir %{_datadir}/pipewire
%{_datadir}/pipewire/client.conf
%{_datadir}/pipewire/client-rt.conf
+%{_datadir}/pipewire/filter-chain.conf
+%{_datadir}/pipewire/minimal.conf
%{_datadir}/pipewire/pipewire.conf
+%{_datadir}/pipewire/pipewire-avb.conf
%dir %{_datadir}/pipewire/filter-chain
%{_datadir}/pipewire/filter-chain/demonic.conf
%{_datadir}/pipewire/filter-chain/sink-dolby-surround.conf
%{_datadir}/pipewire/filter-chain/sink-eq6.conf
+%{_datadir}/pipewire/filter-chain/sink-make-LFE.conf
%{_datadir}/pipewire/filter-chain/sink-matrix-spatialiser.conf
+%{_datadir}/pipewire/filter-chain/sink-mix-FL-FR.conf
%{_datadir}/pipewire/filter-chain/sink-virtual-surround-5.1-kemar.conf
%{_datadir}/pipewire/filter-chain/sink-virtual-surround-7.1-hesuvi.conf
+%{_datadir}/pipewire/filter-chain/source-duplicate-FL.conf
%{_datadir}/pipewire/filter-chain/source-rnnoise.conf
+%{systemduserunitdir}/filter-chain.service
%{systemduserunitdir}/pipewire.service
%{systemduserunitdir}/pipewire.socket
%attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-access.so
%attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-adapter.so
+%attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-avb.so
%attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-client-device.so
%attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-client-node.so
# R: webrtc-audio-processing >= 0.2
%attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-echo-cancel.so
+%attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-fallback-sink.so
%attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-filter-chain.so
%attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-link-factory.so
%attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-loopback.so
%attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-metadata.so
+%attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-pipe-tunnel.so
# R: dbus-libs
%attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-portal.so
%attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-profiler.so
%attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-protocol-pulse.so
%attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-protocol-simple.so
%attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-raop-discover.so
+# R: openssl
%attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-raop-sink.so
%attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-rt.so
# R: dbus-libs
# R: avahi-libs
%attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-zeroconf-discover.so
%attr(755,root,root) %{_libdir}/pipewire-0.3/v4l2/libpw-v4l2.so
+%dir %{_libdir}/spa-0.2/aec
+%attr(755,root,root) %{_libdir}/spa-0.2/aec/libspa-aec-null.so
+# R: webrtc-audio-processing >= 0.2
+%attr(755,root,root) %{_libdir}/spa-0.2/aec/libspa-aec-webrtc.so
%dir %{_libdir}/spa-0.2/audioconvert
%attr(755,root,root) %{_libdir}/spa-0.2/audioconvert/libspa-audioconvert.so
%dir %{_libdir}/spa-0.2/audiomixer
%attr(755,root,root) %{_libdir}/spa-0.2/audiomixer/libspa-audiomixer.so
%dir %{_libdir}/spa-0.2/audiotestsrc
%attr(755,root,root) %{_libdir}/spa-0.2/audiotestsrc/libspa-audiotestsrc.so
+%dir %{_libdir}/spa-0.2/avb
+%attr(755,root,root) %{_libdir}/spa-0.2/avb/libspa-avb.so
%dir %{_libdir}/spa-0.2/control
%attr(755,root,root) %{_libdir}/spa-0.2/control/libspa-control.so
%dir %{_libdir}/spa-0.2/support
%{_mandir}/man1/pw-cat.1*
%{_mandir}/man1/pw-cli.1*
%{_mandir}/man1/pw-dot.1*
+%{_mandir}/man1/pw-link.1*
%{_mandir}/man1/pw-metadata.1*
%{_mandir}/man1/pw-mididump.1*
%{_mandir}/man1/pw-mon.1*
%{_mandir}/man1/pw-profiler.1*
+%{_mandir}/man1/pw-top.1*
%{_mandir}/man5/pipewire.conf.5*
%files libs
%attr(755,root,root) %{_libdir}/spa-0.2/bluez5/libspa-codec-bluez5-faststream.so
# R: ldacBT
%attr(755,root,root) %{_libdir}/spa-0.2/bluez5/libspa-codec-bluez5-ldac.so
+# R: opus
+%attr(755,root,root) %{_libdir}/spa-0.2/bluez5/libspa-codec-bluez5-opus.so
# R: sbc
%attr(755,root,root) %{_libdir}/spa-0.2/bluez5/libspa-codec-bluez5-sbc.so
%dir %{_datadir}/spa-0.2/bluez5
%attr(755,root,root) %{_libdir}/spa-0.2/jack/libspa-jack.so
%endif
+%if %{with libcamera}
+%files spa-module-libcamera
+%defattr(644,root,root,755)
+%dir %{_libdir}/spa-0.2/libcamera
+# R: libcamera
+%attr(755,root,root) %{_libdir}/spa-0.2/libcamera/libspa-libcamera.so
+%endif
+
%files spa-module-vulkan
%defattr(644,root,root,755)
%dir %{_libdir}/spa-0.2/vulkan
%{systemduserunitdir}/pipewire-pulse.socket
%{_mandir}/man1/pipewire-pulse.1*
+%if %{with roc}
+%files roc
+%defattr(644,root,root,755)
+# R: roc-toolkit
+%attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-roc-sink.so
+# R: roc-toolkit
+%attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-roc-source.so
+%endif
+
+%if %{with x11}
+%files x11-bell
+%defattr(644,root,root,755)
+# R: libX11 libXfixes libcanberra
+%attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-x11-bell.so
+%endif
+
%files -n alsa-plugin-pipewire
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/alsa-lib/libasound_module_ctl_pipewire.so