1 # TODO: evl support (BR: libevl-devel, https://evlproject.org/)
2 # - libcamera integration (no releases yet; ARM specific?)
5 %bcond_without apidocs # Doxygen based API documentation
6 %bcond_without ffmpeg # ffmpeg spa plugin integration
7 %bcond_without gstreamer # GStreamer module
8 %bcond_without jack # pipewire-jack and jack spa plugin integration
10 Summary: PipeWire - server and user space API to deal with multimedia pipelines
11 Summary(pl.UTF-8): PipeWire - serwer i API przestrzeni użytkownika do obsługi potoków multimedialnych
15 License: MIT, LGPL v2+, GPL v2
17 #Source0Download: https://github.com/PipeWire/pipewire/releases
18 Source0: https://github.com/PipeWire/pipewire/archive/%{version}/%{name}-%{version}.tar.gz
19 # Source0-md5: a66a2b856bede375c12091f5468d06c7
20 Patch0: %{name}-gcc.patch
21 Patch1: arm_build.patch
22 URL: https://pipewire.org/
24 BuildRequires: SDL2-devel >= 2
26 BuildRequires: Vulkan-Loader-devel >= 1.1.69
27 BuildRequires: alsa-lib-devel >= 1.1.7
28 BuildRequires: avahi-devel
29 BuildRequires: bluez-libs-devel >= 4.101
30 BuildRequires: dbus-devel
32 BuildRequires: docutils
33 %{?with_apidocs:BuildRequires: doxygen}
34 BuildRequires: fdk-aac-devel
35 # libavcodec libavformat libavfilter
36 %{?with_ffmpeg:BuildRequires: ffmpeg-devel}
37 BuildRequires: gcc >= 5:3.2
38 BuildRequires: gettext-tools
40 BuildRequires: glib2-devel >= 1:2.32.0
42 %{?with_apidocs:BuildRequires: graphviz}
44 BuildRequires: gstreamer-devel >= 1.10
45 BuildRequires: gstreamer-plugins-base-devel >= 1.10
47 %{?with_jack:BuildRequires: jack-audio-connection-kit-devel >= 1.9.17}
48 BuildRequires: ldacBT-devel
49 %ifarch i386 i486 %{armv4} %{armv5} %{armv6}
50 # possibly more 32-bit archs (where 8-byte __atomic_store_n require libatomic)
51 BuildRequires: libatomic-devel
53 BuildRequires: libcap-devel
55 #BuildRequires: libdrm-devel >= 2.4.98
56 BuildRequires: libfreeaptx-devel
57 BuildRequires: libsndfile-devel >= 1.0.20
58 BuildRequires: libusb-devel >= 1.0
59 BuildRequires: meson >= 0.54.0
60 BuildRequires: ncurses-devel
61 BuildRequires: ninja >= 1.5
62 BuildRequires: pkgconfig
63 BuildRequires: pulseaudio-devel
64 BuildRequires: readline-devel >= 8.1.1-2
65 BuildRequires: rpmbuild(macros) >= 2.007
66 BuildRequires: sbc-devel
67 BuildRequires: systemd-devel
68 BuildRequires: udev-devel
69 BuildRequires: webrtc-audio-processing-devel >= 0.2
70 BuildRequires: webrtc-audio-processing-devel < 1.0
71 Requires: %{name}-libs = %{version}-%{release}
72 Requires: libsndfile >= 1.0.20
74 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
77 PipeWire is a server and user space API to deal with multimedia
78 pipelines. This includes:
79 - Making available sources of video (such as from a capture devices
80 or application provided streams) and multiplexing this with
82 - Accessing sources of video for consumption.
83 - Generating graphs for audio and video processing.
85 Nodes in the graph can be implemented as separate processes,
86 communicating with sockets and exchanging multimedia content using fd
89 %description -l pl.UTF-8
90 PipeWire to serwer i API przestrzeni użytkownika do obsługi potoków
91 multimedialnych. Obejmuje to:
92 - udostępnianie źródeł obrazu (np. z urządzeń przechwytujących obraz
93 lub strumieni udostępnianych przez aplikacje) oraz multipleksowanie
95 - dostęp do źródeł obrazu do pobierania
96 - generowanie grafów do przetwarzania dźwięku i obrazu
99 Summary: PipeWire shared library
100 Summary(pl.UTF-8): Biblioteka współdzielona PipeWire
104 PipeWire shared library.
106 %description libs -l pl.UTF-8
107 Biblioteka współdzielona PipeWire.
110 Summary: Header files for PipeWire library and Simple Plugin API
111 Summary(pl.UTF-8): Pliki nagłówkowe biblioteki PipeWire oraz Simple Plugin API
112 Group: Development/Libraries
113 Requires: %{name}-libs = %{version}-%{release}
116 Header files for PipeWire library and Simple Plugin API.
118 %description devel -l pl.UTF-8
119 Pliki nagłówkowe biblioteki PipeWire oraz Simple Plugin API.
122 Summary: API documentation for PipeWire library
123 Summary(pl.UTF-8): Dokumentacja API biblioteki PipeWire
128 API documentation for PipeWire library.
130 %description apidocs -l pl.UTF-8
131 Dokumentacja API biblioteki PipeWire.
133 %package spa-module-alsa
134 Summary: PipeWire SPA plugin to play and record audio with ALSA API
135 Summary(pl.UTF-8): Wtyczka PipeWire SPA do odtwarzania i nagrywania dźwięku przy użyciu API ALSA
137 Requires: %{name}-libs = %{version}-%{release}
138 Requires: alsa-lib >= 1.1.7
140 %description spa-module-alsa
141 PipeWire SPA plugin to play and record audio with ALSA API.
143 %description spa-module-alsa -l pl.UTF-8
144 Wtyczka PipeWire SPA do odtwarzania i nagrywania dźwięku przy użyciu
147 %package spa-module-bluez
148 Summary: PipeWire SPA plugin to play audio with Bluetooth A2DP
149 Summary(pl.UTF-8): Wtyczka PipeWire SPA do odtwarzania dźwięku przez Bluetooth A2DP
151 Requires: %{name}-libs = %{version}-%{release}
152 Requires: bluez-libs >= 4.101
154 %description spa-module-bluez
155 PipeWire SPA plugin to play audio with Bluetooth A2DP.
157 %description spa-module-bluez -l pl.UTF-8
158 Wtyczka PipeWire SPA do odtwarzania dźwięku przez Bluetooth A2DP.
160 %package spa-module-ffmpeg
161 Summary: PipeWire SPA plugin to decode/encode with FFmpeg library
162 Summary(pl.UTF-8): Wtyczka PipeWire SPA do kodowania/dekodowania przy użyciu biblioteki FFmpeg
164 Requires: %{name}-libs = %{version}-%{release}
166 %description spa-module-ffmpeg
167 PipeWire SPA plugin to decode/encode with FFmpeg library.
169 %description spa-module-ffmpeg -l pl.UTF-8
170 Wtyczka PipeWire SPA do kodowania/dekodowania przy użyciu biblioteki
173 %package spa-module-jack
174 Summary: PipeWire SPA plugin to play and record audio with JACK API
175 Summary(pl.UTF-8): Wtyczka PipeWire SPA do odtwarzania i nagrywania dźwięku przy użyciu API JACK
177 Requires: %{name}-libs = %{version}-%{release}
178 Requires: jack-audio-connection-kit >= 1.9.17
180 %description spa-module-jack
181 PipeWire SPA plugin to play and record audio with JACK API.
183 %description spa-module-jack -l pl.UTF-8
184 Wtyczka PipeWire SPA do odtwarzania i nagrywania dźwięku przy użyciu
187 %package spa-module-vulkan
188 Summary: PipeWire SPA plugin to generate video frames using Vulkan
189 Summary(pl.UTF-8): Wtyczka PipeWire SPA do generowania ramek obrazu przy użyciu Vulkana
191 Requires: %{name}-libs = %{version}-%{release}
192 Requires: Vulkan-Loader >= 1.1.69
194 %description spa-module-vulkan
195 PipeWire SPA plugin to generate video frames using Vulkan.
197 %description spa-module-vulkan -l pl.UTF-8
198 Wtyczka PipeWire SPA do generowania ramek obrazu przy użyciu Vulkana.
201 Summary: PipeWire JACK sound system integration
202 Summary(pl.UTF-8): Integracja PipeWire z systemem dźwięku JACK
204 Requires: %{name} = %{version}-%{release}
205 Requires: jack-audio-connection-kit >= 1.9.17
208 PipeWire JACK sound system integration.
210 %description jack -l pl.UTF-8
211 Integracja PipeWire z systemem dźwięku JACK.
214 Summary: PipeWire PulseAudio sound system integration
215 Summary(pl.UTF-8): Integracja PipeWire z systemem dźwięku PulseAudio
217 Requires: %{name} = %{version}-%{release}
219 %description pulseaudio
220 PipeWire PulseAudio sound system integration.
222 %description pulseaudio -l pl.UTF-8
223 Integracja PipeWire z systemem dźwięku PulseAudio.
225 %package -n alsa-plugin-pipewire
226 Summary: PipeWire integration plugin for ALSA sound system
227 Summary(pl.UTF-8): Wtyczka systemu dźwięku ALSA integrująca z PipeWire
229 Requires: %{name} = %{version}-%{release}
230 Requires: alsa-lib >= 1.1.7
232 %description -n alsa-plugin-pipewire
233 PipeWire integration plugin for ALSA sound system.
235 %description -n alsa-plugin-pipewire -l pl.UTF-8
236 Wtyczka systemu dźwięku ALSA integrująca z PipeWire.
238 %package -n gstreamer-pipewire
239 Summary: PipeWire video sink and source plugin for GStreamer
240 Summary(pl.UTF-8): Wtyczka udostępniająca źródło i cel obrazu PipeWire dla GStreamera
242 Requires: %{name} = %{version}-%{release}
243 Requires: glib2 >= 1:2.32.0
244 Requires: gstreamer >= 1.10
245 Requires: gstreamer-plugins-base >= 1.10
247 %description -n gstreamer-pipewire
248 PipeWire video sink and source plugin for GStreamer.
250 %description -n gstreamer-pipewire -l pl.UTF-8
251 Wtyczka udostępniająca źródło i cel obrazu PipeWire dla GStreamera.
260 -Daudiotestsrc=enabled \
261 -Dbluez5-backend-hsphfpd=enabled \
262 %{?with_apidocs:-Ddocs=enabled} \
263 %{?with_ffmpeg:-Dffmpeg=enabled} \
264 %{!?with_gstreamer:-Dgstreamer=disabled} \
265 %{!?with_jack:-Djack=disabled} \
267 %{!?with_jack:-Dpipewire-jack=disabled} \
268 -Dvideotestsrc=enabled \
271 # TODO: -Devl=enabled
273 %ninja_build -C build
276 rm -rf $RPM_BUILD_ROOT
278 %ninja_install -C build
280 install -d $RPM_BUILD_ROOT{%{_sysconfdir}/pipewire,%{_datadir}/alsa/alsa.conf.d}
281 cp -p pipewire-alsa/conf/*.conf $RPM_BUILD_ROOT%{_datadir}/alsa/alsa.conf.d
283 # packaged as %doc in -apidocs
284 %{?with_apidocs:%{__rm} -r $RPM_BUILD_ROOT%{_docdir}/pipewire/html}
289 rm -rf $RPM_BUILD_ROOT
291 %post libs -p /sbin/ldconfig
292 %postun libs -p /sbin/ldconfig
294 %files -f %{name}.lang
295 %defattr(644,root,root,755)
296 %attr(755,root,root) %{_bindir}/pipewire
297 %attr(755,root,root) %{_bindir}/pipewire-media-session
298 %attr(755,root,root) %{_bindir}/pw-cat
299 %attr(755,root,root) %{_bindir}/pw-cli
300 %attr(755,root,root) %{_bindir}/pw-dot
301 %attr(755,root,root) %{_bindir}/pw-dsdplay
302 %attr(755,root,root) %{_bindir}/pw-dump
303 %attr(755,root,root) %{_bindir}/pw-link
304 %attr(755,root,root) %{_bindir}/pw-loopback
305 %attr(755,root,root) %{_bindir}/pw-metadata
306 %attr(755,root,root) %{_bindir}/pw-mididump
307 %attr(755,root,root) %{_bindir}/pw-midiplay
308 %attr(755,root,root) %{_bindir}/pw-midirecord
309 %attr(755,root,root) %{_bindir}/pw-mon
310 %attr(755,root,root) %{_bindir}/pw-play
311 %attr(755,root,root) %{_bindir}/pw-profiler
312 %attr(755,root,root) %{_bindir}/pw-record
313 %attr(755,root,root) %{_bindir}/pw-reserve
314 %attr(755,root,root) %{_bindir}/pw-top
315 %attr(755,root,root) %{_bindir}/spa-inspect
316 %attr(755,root,root) %{_bindir}/spa-json-dump
317 %attr(755,root,root) %{_bindir}/spa-monitor
319 %attr(755,root,root) %{_bindir}/spa-resample
320 %dir %{_sysconfdir}/pipewire
321 %dir %{_datadir}/pipewire
322 %{_datadir}/pipewire/client.conf
323 %{_datadir}/pipewire/client-rt.conf
324 %{_datadir}/pipewire/pipewire.conf
325 %dir %{_datadir}/pipewire/filter-chain
326 %{_datadir}/pipewire/filter-chain/demonic.conf
327 %{_datadir}/pipewire/filter-chain/sink-dolby-surround.conf
328 %{_datadir}/pipewire/filter-chain/sink-eq6.conf
329 %{_datadir}/pipewire/filter-chain/sink-matrix-spatialiser.conf
330 %{_datadir}/pipewire/filter-chain/sink-virtual-surround-5.1-kemar.conf
331 %{_datadir}/pipewire/filter-chain/sink-virtual-surround-7.1-hesuvi.conf
332 %{_datadir}/pipewire/filter-chain/source-rnnoise.conf
333 %dir %{_datadir}/pipewire/media-session.d
334 %{_datadir}/pipewire/media-session.d/media-session.conf
335 %{_datadir}/pipewire/media-session.d/v4l2-monitor.conf
336 %{systemduserunitdir}/pipewire.service
337 %{systemduserunitdir}/pipewire.socket
338 %{systemduserunitdir}/pipewire-media-session.service
339 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-access.so
340 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-adapter.so
341 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-client-device.so
342 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-client-node.so
343 # R: webrtc-audio-processing >= 0.2
344 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-echo-cancel.so
345 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-filter-chain.so
346 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-link-factory.so
347 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-loopback.so
348 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-metadata.so
350 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-portal.so
351 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-profiler.so
353 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-protocol-native.so
354 # R: dbus-libs systemd-libs
355 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-protocol-pulse.so
356 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-protocol-simple.so
357 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-rt.so
359 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-rtkit.so
360 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-session-manager.so
361 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-spa-device.so
362 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-spa-device-factory.so
363 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-spa-node.so
364 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-spa-node-factory.so
366 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-zeroconf-discover.so
367 %dir %{_libdir}/spa-0.2/audioconvert
368 %attr(755,root,root) %{_libdir}/spa-0.2/audioconvert/libspa-audioconvert.so
369 %dir %{_libdir}/spa-0.2/audiomixer
370 %attr(755,root,root) %{_libdir}/spa-0.2/audiomixer/libspa-audiomixer.so
371 %dir %{_libdir}/spa-0.2/audiotestsrc
372 %attr(755,root,root) %{_libdir}/spa-0.2/audiotestsrc/libspa-audiotestsrc.so
373 %dir %{_libdir}/spa-0.2/control
374 %attr(755,root,root) %{_libdir}/spa-0.2/control/libspa-control.so
375 %dir %{_libdir}/spa-0.2/support
377 %attr(755,root,root) %{_libdir}/spa-0.2/support/libspa-dbus.so
379 %attr(755,root,root) %{_libdir}/spa-0.2/support/libspa-journal.so
380 %attr(755,root,root) %{_libdir}/spa-0.2/support/libspa-support.so
381 %dir %{_libdir}/spa-0.2/v4l2
383 %attr(755,root,root) %{_libdir}/spa-0.2/v4l2/libspa-v4l2.so
384 %dir %{_libdir}/spa-0.2/videoconvert
385 %attr(755,root,root) %{_libdir}/spa-0.2/videoconvert/libspa-videoconvert.so
386 %dir %{_libdir}/spa-0.2/videotestsrc
387 %attr(755,root,root) %{_libdir}/spa-0.2/videotestsrc/libspa-videotestsrc.so
388 %dir %{_libdir}/spa-0.2/volume
389 %attr(755,root,root) %{_libdir}/spa-0.2/volume/libspa-volume.so
390 %{_mandir}/man1/pipewire.1*
391 %{_mandir}/man1/pw-cat.1*
392 %{_mandir}/man1/pw-cli.1*
393 %{_mandir}/man1/pw-dot.1*
394 %{_mandir}/man1/pw-metadata.1*
395 %{_mandir}/man1/pw-mididump.1*
396 %{_mandir}/man1/pw-mon.1*
397 %{_mandir}/man1/pw-profiler.1*
398 %{_mandir}/man5/pipewire.conf.5*
401 %defattr(644,root,root,755)
402 %doc COPYING LICENSE NEWS README.md
403 %attr(755,root,root) %{_libdir}/libpipewire-0.3.so.*.*.*
404 %attr(755,root,root) %ghost %{_libdir}/libpipewire-0.3.so.0
405 %dir %{_libdir}/pipewire-0.3
406 %dir %{_libdir}/spa-0.2
407 %dir %{_datadir}/spa-0.2
410 %defattr(644,root,root,755)
411 %attr(755,root,root) %{_libdir}/libpipewire-0.3.so
412 %{_includedir}/pipewire-0.3
413 %{_includedir}/spa-0.2
414 %{_pkgconfigdir}/libpipewire-0.3.pc
415 %{_pkgconfigdir}/libspa-0.2.pc
419 %defattr(644,root,root,755)
420 %doc build/doc/html/*
423 %files spa-module-alsa
424 %defattr(644,root,root,755)
425 %attr(755,root,root) %{_bindir}/spa-acp-tool
426 %dir %{_libdir}/spa-0.2/alsa
427 # R: alsa-lib udev-libs
428 %attr(755,root,root) %{_libdir}/spa-0.2/alsa/libspa-alsa.so
429 %{_datadir}/alsa-card-profile
430 %{_datadir}/pipewire/media-session.d/alsa-monitor.conf
432 %files spa-module-bluez
433 %defattr(644,root,root,755)
434 %dir %{_libdir}/spa-0.2/bluez5
435 # R: bluez-libs >= 4.101 dbus-libs libusb >= 1.0 sbc
436 %attr(755,root,root) %{_libdir}/spa-0.2/bluez5/libspa-bluez5.so
438 %attr(755,root,root) %{_libdir}/spa-0.2/bluez5/libspa-codec-bluez5-aac.so
440 %attr(755,root,root) %{_libdir}/spa-0.2/bluez5/libspa-codec-bluez5-aptx.so
442 %attr(755,root,root) %{_libdir}/spa-0.2/bluez5/libspa-codec-bluez5-faststream.so
444 %attr(755,root,root) %{_libdir}/spa-0.2/bluez5/libspa-codec-bluez5-ldac.so
446 %attr(755,root,root) %{_libdir}/spa-0.2/bluez5/libspa-codec-bluez5-sbc.so
447 %{_datadir}/pipewire/media-session.d/bluez-monitor.conf
448 %dir %{_datadir}/spa-0.2/bluez5
449 %{_datadir}/spa-0.2/bluez5/bluez-hardware.conf
451 %files spa-module-ffmpeg
452 %defattr(644,root,root,755)
453 %dir %{_libdir}/spa-0.2/ffmpeg
455 %attr(755,root,root) %{_libdir}/spa-0.2/ffmpeg/libspa-ffmpeg.so
458 %files spa-module-jack
459 %defattr(644,root,root,755)
460 %dir %{_libdir}/spa-0.2/jack
461 # R: jack-audio-connection-kit-libs
462 %attr(755,root,root) %{_libdir}/spa-0.2/jack/libspa-jack.so
465 %files spa-module-vulkan
466 %defattr(644,root,root,755)
467 %dir %{_libdir}/spa-0.2/vulkan
469 %attr(755,root,root) %{_libdir}/spa-0.2/vulkan/libspa-vulkan.so
473 %defattr(644,root,root,755)
474 %attr(755,root,root) %{_bindir}/pw-jack
475 %dir %{_libdir}/pipewire-0.3/jack
476 %attr(755,root,root) %{_libdir}/pipewire-0.3/jack/libjack.so*
477 %attr(755,root,root) %{_libdir}/pipewire-0.3/jack/libjacknet.so*
478 %attr(755,root,root) %{_libdir}/pipewire-0.3/jack/libjackserver.so*
479 %{_datadir}/pipewire/jack.conf
480 %{_datadir}/pipewire/media-session.d/with-jack
481 %{_mandir}/man1/pw-jack.1*
485 %defattr(644,root,root,755)
486 %attr(755,root,root) %{_bindir}/pipewire-pulse
488 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-pulse-tunnel.so
489 %{_datadir}/pipewire/pipewire-pulse.conf
490 %{_datadir}/pipewire/media-session.d/with-pulseaudio
491 %{systemduserunitdir}/pipewire-pulse.service
492 %{systemduserunitdir}/pipewire-pulse.socket
494 %files -n alsa-plugin-pipewire
495 %defattr(644,root,root,755)
496 %attr(755,root,root) %{_libdir}/alsa-lib/libasound_module_ctl_pipewire.so
497 %attr(755,root,root) %{_libdir}/alsa-lib/libasound_module_pcm_pipewire.so
498 %{_datadir}/alsa/alsa.conf.d/50-pipewire.conf
499 %{_datadir}/alsa/alsa.conf.d/99-pipewire-default.conf
500 /lib/udev/rules.d/90-pipewire-alsa.rules
502 %if %{with gstreamer}
503 %files -n gstreamer-pipewire
504 %defattr(644,root,root,755)
505 %attr(755,root,root) %{_libdir}/gstreamer-1.0/libgstpipewire.so