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: d4c7ed5edab55b944d8e0570856aa60a
20 Patch0: %{name}-gcc.patch
21 URL: https://pipewire.org/
23 BuildRequires: SDL2-devel >= 2
25 BuildRequires: Vulkan-Loader-devel >= 1.1.69
26 BuildRequires: alsa-lib-devel >= 1.1.7
27 BuildRequires: avahi-devel
28 BuildRequires: bluez-libs-devel >= 4.101
29 BuildRequires: dbus-devel
31 BuildRequires: docutils
32 %{?with_apidocs:BuildRequires: doxygen}
33 BuildRequires: fdk-aac-devel
34 # libavcodec libavformat libavfilter
35 %{?with_ffmpeg:BuildRequires: ffmpeg-devel}
36 BuildRequires: gcc >= 5:3.2
38 BuildRequires: glib2-devel >= 1:2.32.0
40 %{?with_apidocs:BuildRequires: graphviz}
42 BuildRequires: gstreamer-devel >= 1.10
43 BuildRequires: gstreamer-plugins-base-devel >= 1.10
45 %{?with_jack:BuildRequires: jack-audio-connection-kit-devel >= 1.9.17}
46 BuildRequires: ldacBT-devel
48 # possibly more 32-bit archs (where 8-byte __atomic_store_n require libatomic)
49 BuildRequires: libatomic-devel
51 BuildRequires: libcap-devel
53 #BuildRequires: libdrm-devel >= 2.4.98
54 BuildRequires: libfreeaptx-devel
55 BuildRequires: libsndfile-devel >= 1.0.20
56 BuildRequires: libusb-devel >= 1.0
57 BuildRequires: meson >= 0.54.0
58 BuildRequires: ncurses-devel
59 BuildRequires: ninja >= 1.5
60 BuildRequires: pkgconfig
61 BuildRequires: pulseaudio-devel
62 BuildRequires: rpmbuild(macros) >= 1.752
63 BuildRequires: sbc-devel
64 BuildRequires: systemd-devel
65 BuildRequires: udev-devel
66 BuildRequires: webrtc-audio-processing-devel >= 0.2
67 BuildRequires: webrtc-audio-processing-devel < 1.0
68 Requires: %{name}-libs = %{version}-%{release}
69 Requires: libsndfile >= 1.0.20
70 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
73 PipeWire is a server and user space API to deal with multimedia
74 pipelines. This includes:
75 - Making available sources of video (such as from a capture devices
76 or application provided streams) and multiplexing this with
78 - Accessing sources of video for consumption.
79 - Generating graphs for audio and video processing.
81 Nodes in the graph can be implemented as separate processes,
82 communicating with sockets and exchanging multimedia content using fd
85 %description -l pl.UTF-8
86 PipeWire to serwer i API przestrzeni użytkownika do obsługi potoków
87 multimedialnych. Obejmuje to:
88 - udostępnianie źródeł obrazu (np. z urządzeń przechwytujących obraz
89 lub strumieni udostępnianych przez aplikacje) oraz multipleksowanie
91 - dostęp do źródeł obrazu do pobierania
92 - generowanie grafów do przetwarzania dźwięku i obrazu
95 Summary: PipeWire shared library
96 Summary(pl.UTF-8): Biblioteka współdzielona PipeWire
100 PipeWire shared library.
102 %description libs -l pl.UTF-8
103 Biblioteka współdzielona PipeWire.
106 Summary: Header files for PipeWire library and Simple Plugin API
107 Summary(pl.UTF-8): Pliki nagłówkowe biblioteki PipeWire oraz Simple Plugin API
108 Group: Development/Libraries
109 Requires: %{name}-libs = %{version}-%{release}
112 Header files for PipeWire library and Simple Plugin API.
114 %description devel -l pl.UTF-8
115 Pliki nagłówkowe biblioteki PipeWire oraz Simple Plugin API.
118 Summary: API documentation for PipeWire library
119 Summary(pl.UTF-8): Dokumentacja API biblioteki PipeWire
124 API documentation for PipeWire library.
126 %description apidocs -l pl.UTF-8
127 Dokumentacja API biblioteki PipeWire.
129 %package spa-module-alsa
130 Summary: PipeWire SPA plugin to play and record audio with ALSA API
131 Summary(pl.UTF-8): Wtyczka PipeWire SPA do odtwarzania i nagrywania dźwięku przy użyciu API ALSA
133 Requires: %{name}-libs = %{version}-%{release}
134 Requires: alsa-lib >= 1.1.7
136 %description spa-module-alsa
137 PipeWire SPA plugin to play and record audio with ALSA API.
139 %description spa-module-alsa -l pl.UTF-8
140 Wtyczka PipeWire SPA do odtwarzania i nagrywania dźwięku przy użyciu
143 %package spa-module-bluez
144 Summary: PipeWire SPA plugin to play audio with Bluetooth A2DP
145 Summary(pl.UTF-8): Wtyczka PipeWire SPA do odtwarzania dźwięku przez Bluetooth A2DP
147 Requires: %{name}-libs = %{version}-%{release}
148 Requires: bluez-libs >= 4.101
150 %description spa-module-bluez
151 PipeWire SPA plugin to play audio with Bluetooth A2DP.
153 %description spa-module-bluez -l pl.UTF-8
154 Wtyczka PipeWire SPA do odtwarzania dźwięku przez Bluetooth A2DP.
156 %package spa-module-ffmpeg
157 Summary: PipeWire SPA plugin to decode/encode with FFmpeg library
158 Summary(pl.UTF-8): Wtyczka PipeWire SPA do kodowania/dekodowania przy użyciu biblioteki FFmpeg
160 Requires: %{name}-libs = %{version}-%{release}
162 %description spa-module-ffmpeg
163 PipeWire SPA plugin to decode/encode with FFmpeg library.
165 %description spa-module-ffmpeg -l pl.UTF-8
166 Wtyczka PipeWire SPA do kodowania/dekodowania przy użyciu biblioteki
169 %package spa-module-jack
170 Summary: PipeWire SPA plugin to play and record audio with JACK API
171 Summary(pl.UTF-8): Wtyczka PipeWire SPA do odtwarzania i nagrywania dźwięku przy użyciu API JACK
173 Requires: %{name}-libs = %{version}-%{release}
174 Requires: jack-audio-connection-kit >= 1.9.17
176 %description spa-module-jack
177 PipeWire SPA plugin to play and record audio with JACK API.
179 %description spa-module-jack -l pl.UTF-8
180 Wtyczka PipeWire SPA do odtwarzania i nagrywania dźwięku przy użyciu
183 %package spa-module-vulkan
184 Summary: PipeWire SPA plugin to generate video frames using Vulkan
185 Summary(pl.UTF-8): Wtyczka PipeWire SPA do generowania ramek obrazu przy użyciu Vulkana
187 Requires: %{name}-libs = %{version}-%{release}
188 Requires: Vulkan-Loader >= 1.1.69
190 %description spa-module-vulkan
191 PipeWire SPA plugin to generate video frames using Vulkan.
193 %description spa-module-vulkan -l pl.UTF-8
194 Wtyczka PipeWire SPA do generowania ramek obrazu przy użyciu Vulkana.
197 Summary: PipeWire JACK sound system integration
198 Summary(pl.UTF-8): Integracja PipeWire z systemem dźwięku JACK
200 Requires: %{name} = %{version}-%{release}
201 Requires: jack-audio-connection-kit >= 1.9.17
204 PipeWire JACK sound system integration.
206 %description jack -l pl.UTF-8
207 Integracja PipeWire z systemem dźwięku JACK.
210 Summary: PipeWire PulseAudio sound system integration
211 Summary(pl.UTF-8): Integracja PipeWire z systemem dźwięku PulseAudio
213 Requires: %{name} = %{version}-%{release}
215 %description pulseaudio
216 PipeWire PulseAudio sound system integration.
218 %description pulseaudio -l pl.UTF-8
219 Integracja PipeWire z systemem dźwięku PulseAudio.
221 %package -n alsa-plugin-pipewire
222 Summary: PipeWire integration plugin for ALSA sound system
223 Summary(pl.UTF-8): Wtyczka systemu dźwięku ALSA integrująca z PipeWire
225 Requires: %{name} = %{version}-%{release}
226 Requires: alsa-lib >= 1.1.7
228 %description -n alsa-plugin-pipewire
229 PipeWire integration plugin for ALSA sound system.
231 %description -n alsa-plugin-pipewire -l pl.UTF-8
232 Wtyczka systemu dźwięku ALSA integrująca z PipeWire.
234 %package -n gstreamer-pipewire
235 Summary: PipeWire video sink and source plugin for GStreamer
236 Summary(pl.UTF-8): Wtyczka udostępniająca źródło i cel obrazu PipeWire dla GStreamera
238 Requires: %{name} = %{version}-%{release}
239 Requires: glib2 >= 1:2.32.0
240 Requires: gstreamer >= 1.10
241 Requires: gstreamer-plugins-base >= 1.10
243 %description -n gstreamer-pipewire
244 PipeWire video sink and source plugin for GStreamer.
246 %description -n gstreamer-pipewire -l pl.UTF-8
247 Wtyczka udostępniająca źródło i cel obrazu PipeWire dla GStreamera.
255 -Daudiotestsrc=enabled \
256 -Dbluez5-backend-hsphfpd=enabled \
257 %{?with_apidocs:-Ddocs=enabled} \
258 %{?with_ffmpeg:-Dffmpeg=enabled} \
259 %{!?with_gstreamer:-Dgstreamer=disabled} \
260 %{!?with_jack:-Djack=disabled} \
262 %{!?with_jack:-Dpipewire-jack=disabled} \
263 -Dvideotestsrc=enabled \
266 # TODO: -Devl=enabled
268 %ninja_build -C build
271 rm -rf $RPM_BUILD_ROOT
273 %ninja_install -C build
275 install -d $RPM_BUILD_ROOT{%{_sysconfdir}/pipewire,%{_datadir}/alsa/alsa.conf.d}
276 cp -p pipewire-alsa/conf/*.conf $RPM_BUILD_ROOT%{_datadir}/alsa/alsa.conf.d
278 # packaged as %doc in -apidocs
279 %{?with_apidocs:%{__rm} -r $RPM_BUILD_ROOT%{_docdir}/pipewire/html}
284 rm -rf $RPM_BUILD_ROOT
286 %post libs -p /sbin/ldconfig
287 %postun libs -p /sbin/ldconfig
289 %files -f %{name}.lang
290 %defattr(644,root,root,755)
291 %attr(755,root,root) %{_bindir}/pipewire
292 %attr(755,root,root) %{_bindir}/pipewire-media-session
293 %attr(755,root,root) %{_bindir}/pw-cat
294 %attr(755,root,root) %{_bindir}/pw-cli
295 %attr(755,root,root) %{_bindir}/pw-dot
296 %attr(755,root,root) %{_bindir}/pw-dsdplay
297 %attr(755,root,root) %{_bindir}/pw-dump
298 %attr(755,root,root) %{_bindir}/pw-link
299 %attr(755,root,root) %{_bindir}/pw-loopback
300 %attr(755,root,root) %{_bindir}/pw-metadata
301 %attr(755,root,root) %{_bindir}/pw-mididump
302 %attr(755,root,root) %{_bindir}/pw-midiplay
303 %attr(755,root,root) %{_bindir}/pw-midirecord
304 %attr(755,root,root) %{_bindir}/pw-mon
305 %attr(755,root,root) %{_bindir}/pw-play
306 %attr(755,root,root) %{_bindir}/pw-profiler
307 %attr(755,root,root) %{_bindir}/pw-record
308 %attr(755,root,root) %{_bindir}/pw-reserve
309 %attr(755,root,root) %{_bindir}/pw-top
310 %attr(755,root,root) %{_bindir}/spa-inspect
311 %attr(755,root,root) %{_bindir}/spa-json-dump
312 %attr(755,root,root) %{_bindir}/spa-monitor
314 %attr(755,root,root) %{_bindir}/spa-resample
315 %dir %{_sysconfdir}/pipewire
316 %dir %{_datadir}/pipewire
317 %{_datadir}/pipewire/client.conf
318 %{_datadir}/pipewire/client-rt.conf
319 %{_datadir}/pipewire/pipewire.conf
320 %dir %{_datadir}/pipewire/filter-chain
321 %{_datadir}/pipewire/filter-chain/demonic.conf
322 %{_datadir}/pipewire/filter-chain/sink-dolby-surround.conf
323 %{_datadir}/pipewire/filter-chain/sink-eq6.conf
324 %{_datadir}/pipewire/filter-chain/sink-matrix-spatialiser.conf
325 %{_datadir}/pipewire/filter-chain/sink-virtual-surround-5.1-kemar.conf
326 %{_datadir}/pipewire/filter-chain/sink-virtual-surround-7.1-hesuvi.conf
327 %{_datadir}/pipewire/filter-chain/source-rnnoise.conf
328 %dir %{_datadir}/pipewire/media-session.d
329 %{_datadir}/pipewire/media-session.d/media-session.conf
330 %{_datadir}/pipewire/media-session.d/v4l2-monitor.conf
331 %{systemduserunitdir}/pipewire.service
332 %{systemduserunitdir}/pipewire.socket
333 %{systemduserunitdir}/pipewire-media-session.service
334 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-access.so
335 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-adapter.so
336 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-client-device.so
337 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-client-node.so
338 # R: webrtc-audio-processing >= 0.2
339 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-echo-cancel.so
340 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-filter-chain.so
341 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-link-factory.so
342 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-loopback.so
343 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-metadata.so
345 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-portal.so
346 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-profiler.so
348 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-protocol-native.so
349 # R: dbus-libs systemd-libs
350 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-protocol-pulse.so
351 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-protocol-simple.so
352 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-rt.so
354 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-rtkit.so
355 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-session-manager.so
356 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-spa-device.so
357 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-spa-device-factory.so
358 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-spa-node.so
359 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-spa-node-factory.so
361 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-zeroconf-discover.so
362 %dir %{_libdir}/spa-0.2/audioconvert
363 %attr(755,root,root) %{_libdir}/spa-0.2/audioconvert/libspa-audioconvert.so
364 %dir %{_libdir}/spa-0.2/audiomixer
365 %attr(755,root,root) %{_libdir}/spa-0.2/audiomixer/libspa-audiomixer.so
366 %dir %{_libdir}/spa-0.2/audiotestsrc
367 %attr(755,root,root) %{_libdir}/spa-0.2/audiotestsrc/libspa-audiotestsrc.so
368 %dir %{_libdir}/spa-0.2/control
369 %attr(755,root,root) %{_libdir}/spa-0.2/control/libspa-control.so
370 %dir %{_libdir}/spa-0.2/support
372 %attr(755,root,root) %{_libdir}/spa-0.2/support/libspa-dbus.so
374 %attr(755,root,root) %{_libdir}/spa-0.2/support/libspa-journal.so
375 %attr(755,root,root) %{_libdir}/spa-0.2/support/libspa-support.so
376 %dir %{_libdir}/spa-0.2/v4l2
378 %attr(755,root,root) %{_libdir}/spa-0.2/v4l2/libspa-v4l2.so
379 %dir %{_libdir}/spa-0.2/videoconvert
380 %attr(755,root,root) %{_libdir}/spa-0.2/videoconvert/libspa-videoconvert.so
381 %dir %{_libdir}/spa-0.2/videotestsrc
382 %attr(755,root,root) %{_libdir}/spa-0.2/videotestsrc/libspa-videotestsrc.so
383 %dir %{_libdir}/spa-0.2/volume
384 %attr(755,root,root) %{_libdir}/spa-0.2/volume/libspa-volume.so
385 %{_mandir}/man1/pipewire.1*
386 %{_mandir}/man1/pw-cat.1*
387 %{_mandir}/man1/pw-cli.1*
388 %{_mandir}/man1/pw-dot.1*
389 %{_mandir}/man1/pw-metadata.1*
390 %{_mandir}/man1/pw-mididump.1*
391 %{_mandir}/man1/pw-mon.1*
392 %{_mandir}/man1/pw-profiler.1*
393 %{_mandir}/man5/pipewire.conf.5*
396 %defattr(644,root,root,755)
397 %doc COPYING LICENSE NEWS README.md
398 %attr(755,root,root) %{_libdir}/libpipewire-0.3.so.*.*.*
399 %attr(755,root,root) %ghost %{_libdir}/libpipewire-0.3.so.0
400 %dir %{_libdir}/pipewire-0.3
401 %dir %{_libdir}/spa-0.2
402 %dir %{_datadir}/spa-0.2
405 %defattr(644,root,root,755)
406 %attr(755,root,root) %{_libdir}/libpipewire-0.3.so
407 %{_includedir}/pipewire-0.3
408 %{_includedir}/spa-0.2
409 %{_pkgconfigdir}/libpipewire-0.3.pc
410 %{_pkgconfigdir}/libspa-0.2.pc
414 %defattr(644,root,root,755)
415 %doc build/doc/html/*
418 %files spa-module-alsa
419 %defattr(644,root,root,755)
420 %attr(755,root,root) %{_bindir}/spa-acp-tool
421 %dir %{_libdir}/spa-0.2/alsa
422 # R: alsa-lib udev-libs
423 %attr(755,root,root) %{_libdir}/spa-0.2/alsa/libspa-alsa.so
424 %{_datadir}/alsa-card-profile
425 %{_datadir}/pipewire/media-session.d/alsa-monitor.conf
427 %files spa-module-bluez
428 %defattr(644,root,root,755)
429 %dir %{_libdir}/spa-0.2/bluez5
430 # R: bluez-libs >= 4.101 dbus-libs libusb >= 1.0 sbc
431 %attr(755,root,root) %{_libdir}/spa-0.2/bluez5/libspa-bluez5.so
433 %attr(755,root,root) %{_libdir}/spa-0.2/bluez5/libspa-codec-bluez5-aac.so
435 %attr(755,root,root) %{_libdir}/spa-0.2/bluez5/libspa-codec-bluez5-aptx.so
437 %attr(755,root,root) %{_libdir}/spa-0.2/bluez5/libspa-codec-bluez5-faststream.so
439 %attr(755,root,root) %{_libdir}/spa-0.2/bluez5/libspa-codec-bluez5-ldac.so
441 %attr(755,root,root) %{_libdir}/spa-0.2/bluez5/libspa-codec-bluez5-sbc.so
442 %{_datadir}/pipewire/media-session.d/bluez-monitor.conf
443 %dir %{_datadir}/spa-0.2/bluez5
444 %{_datadir}/spa-0.2/bluez5/bluez-hardware.conf
446 %files spa-module-ffmpeg
447 %defattr(644,root,root,755)
448 %dir %{_libdir}/spa-0.2/ffmpeg
450 %attr(755,root,root) %{_libdir}/spa-0.2/ffmpeg/libspa-ffmpeg.so
453 %files spa-module-jack
454 %defattr(644,root,root,755)
455 %dir %{_libdir}/spa-0.2/jack
456 # R: jack-audio-connection-kit-libs
457 %attr(755,root,root) %{_libdir}/spa-0.2/jack/libspa-jack.so
460 %files spa-module-vulkan
461 %defattr(644,root,root,755)
462 %dir %{_libdir}/spa-0.2/vulkan
464 %attr(755,root,root) %{_libdir}/spa-0.2/vulkan/libspa-vulkan.so
468 %defattr(644,root,root,755)
469 %attr(755,root,root) %{_bindir}/pw-jack
470 %dir %{_libdir}/pipewire-0.3/jack
471 %attr(755,root,root) %{_libdir}/pipewire-0.3/jack/libjack.so*
472 %attr(755,root,root) %{_libdir}/pipewire-0.3/jack/libjacknet.so*
473 %attr(755,root,root) %{_libdir}/pipewire-0.3/jack/libjackserver.so*
474 %{_datadir}/pipewire/jack.conf
475 %{_datadir}/pipewire/media-session.d/with-jack
476 %{_mandir}/man1/pw-jack.1*
480 %defattr(644,root,root,755)
481 %attr(755,root,root) %{_bindir}/pipewire-pulse
483 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-pulse-tunnel.so
484 %{_datadir}/pipewire/pipewire-pulse.conf
485 %{_datadir}/pipewire/media-session.d/with-pulseaudio
486 %{systemduserunitdir}/pipewire-pulse.service
487 %{systemduserunitdir}/pipewire-pulse.socket
489 %files -n alsa-plugin-pipewire
490 %defattr(644,root,root,755)
491 %attr(755,root,root) %{_libdir}/alsa-lib/libasound_module_ctl_pipewire.so
492 %attr(755,root,root) %{_libdir}/alsa-lib/libasound_module_pcm_pipewire.so
493 %{_datadir}/alsa/alsa.conf.d/50-pipewire.conf
494 %{_datadir}/alsa/alsa.conf.d/99-pipewire-default.conf
495 /lib/udev/rules.d/90-pipewire-alsa.rules
497 %if %{with gstreamer}
498 %files -n gstreamer-pipewire
499 %defattr(644,root,root,755)
500 %attr(755,root,root) %{_libdir}/gstreamer-1.0/libgstpipewire.so