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
9 %bcond_without lv2 # LV2 plugins support
11 Summary: PipeWire - server and user space API to deal with multimedia pipelines
12 Summary(pl.UTF-8): PipeWire - serwer i API przestrzeni użytkownika do obsługi potoków multimedialnych
16 License: MIT, LGPL v2+, GPL v2
18 #Source0Download: https://github.com/PipeWire/pipewire/releases
19 Source0: https://github.com/PipeWire/pipewire/archive/%{version}/%{name}-%{version}.tar.gz
20 # Source0-md5: 4bf2cdfe19e65dea03906b86f3707db4
21 Patch0: %{name}-gcc.patch
22 Patch1: %{name}-samplerate.patch
23 URL: https://pipewire.org/
25 BuildRequires: SDL2-devel >= 2
27 BuildRequires: Vulkan-Loader-devel >= 1.1.69
28 BuildRequires: alsa-lib-devel >= 1.1.7
29 BuildRequires: avahi-devel
30 BuildRequires: bluez-libs-devel >= 4.101
31 BuildRequires: dbus-devel
33 BuildRequires: docutils
34 %{?with_apidocs:BuildRequires: doxygen}
35 BuildRequires: fdk-aac-devel
36 # libavcodec libavformat libavfilter
37 %{?with_ffmpeg:BuildRequires: ffmpeg-devel}
38 BuildRequires: gcc >= 5:3.2
39 BuildRequires: gettext-tools
41 BuildRequires: glib2-devel >= 1:2.32.0
43 %{?with_apidocs:BuildRequires: graphviz}
45 BuildRequires: gstreamer-devel >= 1.10
46 BuildRequires: gstreamer-plugins-base-devel >= 1.10
48 %{?with_jack:BuildRequires: jack-audio-connection-kit-devel >= 1.9.17}
49 BuildRequires: ldacBT-devel
50 %ifarch i386 i486 %{armv4} %{armv5} %{armv6}
51 # possibly more 32-bit archs (where 8-byte __atomic_store_n require libatomic)
52 BuildRequires: libatomic-devel
54 BuildRequires: libcap-devel
56 #BuildRequires: libdrm-devel >= 2.4.98
57 BuildRequires: libfreeaptx-devel
58 BuildRequires: libsndfile-devel >= 1.0.20
59 BuildRequires: libusb-devel >= 1.0
60 %{?with_lv2:BuildRequires: lilv-devel}
61 BuildRequires: meson >= 0.54.0
62 BuildRequires: ncurses-devel
63 BuildRequires: ninja >= 1.5
64 BuildRequires: openssl-devel
65 BuildRequires: pkgconfig
66 BuildRequires: pulseaudio-devel
67 BuildRequires: readline-devel >= 8.1.1-2
68 BuildRequires: rpm-build >= 4.6
69 BuildRequires: rpmbuild(macros) >= 2.007
70 BuildRequires: sbc-devel
71 BuildRequires: systemd-devel
72 BuildRequires: udev-devel
73 BuildRequires: webrtc-audio-processing-devel >= 0.2
74 BuildRequires: webrtc-audio-processing-devel < 1.0
75 Requires: %{name}-libs = %{version}-%{release}
76 Requires: libsndfile >= 1.0.20
77 Requires: pipewire-session-manager
79 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
82 PipeWire is a server and user space API to deal with multimedia
83 pipelines. This includes:
84 - Making available sources of video (such as from a capture devices
85 or application provided streams) and multiplexing this with
87 - Accessing sources of video for consumption.
88 - Generating graphs for audio and video processing.
90 Nodes in the graph can be implemented as separate processes,
91 communicating with sockets and exchanging multimedia content using fd
94 %description -l pl.UTF-8
95 PipeWire to serwer i API przestrzeni użytkownika do obsługi potoków
96 multimedialnych. Obejmuje to:
97 - udostępnianie źródeł obrazu (np. z urządzeń przechwytujących obraz
98 lub strumieni udostępnianych przez aplikacje) oraz multipleksowanie
100 - dostęp do źródeł obrazu do pobierania
101 - generowanie grafów do przetwarzania dźwięku i obrazu
104 Summary: PipeWire shared library
105 Summary(pl.UTF-8): Biblioteka współdzielona PipeWire
109 PipeWire shared library.
111 %description libs -l pl.UTF-8
112 Biblioteka współdzielona PipeWire.
115 Summary: Header files for PipeWire library and Simple Plugin API
116 Summary(pl.UTF-8): Pliki nagłówkowe biblioteki PipeWire oraz Simple Plugin API
117 Group: Development/Libraries
118 Requires: %{name}-libs = %{version}-%{release}
121 Header files for PipeWire library and Simple Plugin API.
123 %description devel -l pl.UTF-8
124 Pliki nagłówkowe biblioteki PipeWire oraz Simple Plugin API.
127 Summary: API documentation for PipeWire library
128 Summary(pl.UTF-8): Dokumentacja API biblioteki PipeWire
133 API documentation for PipeWire library.
135 %description apidocs -l pl.UTF-8
136 Dokumentacja API biblioteki PipeWire.
138 %package spa-module-alsa
139 Summary: PipeWire SPA plugin to play and record audio with ALSA API
140 Summary(pl.UTF-8): Wtyczka PipeWire SPA do odtwarzania i nagrywania dźwięku przy użyciu API ALSA
142 Requires: %{name}-libs = %{version}-%{release}
143 Requires: alsa-lib >= 1.1.7
145 %description spa-module-alsa
146 PipeWire SPA plugin to play and record audio with ALSA API.
148 %description spa-module-alsa -l pl.UTF-8
149 Wtyczka PipeWire SPA do odtwarzania i nagrywania dźwięku przy użyciu
152 %package spa-module-bluez
153 Summary: PipeWire SPA plugin to play audio with Bluetooth A2DP
154 Summary(pl.UTF-8): Wtyczka PipeWire SPA do odtwarzania dźwięku przez Bluetooth A2DP
156 Requires: %{name}-libs = %{version}-%{release}
157 Requires: bluez-libs >= 4.101
159 %description spa-module-bluez
160 PipeWire SPA plugin to play audio with Bluetooth A2DP.
162 %description spa-module-bluez -l pl.UTF-8
163 Wtyczka PipeWire SPA do odtwarzania dźwięku przez Bluetooth A2DP.
165 %package spa-module-ffmpeg
166 Summary: PipeWire SPA plugin to decode/encode with FFmpeg library
167 Summary(pl.UTF-8): Wtyczka PipeWire SPA do kodowania/dekodowania przy użyciu biblioteki FFmpeg
169 Requires: %{name}-libs = %{version}-%{release}
171 %description spa-module-ffmpeg
172 PipeWire SPA plugin to decode/encode with FFmpeg library.
174 %description spa-module-ffmpeg -l pl.UTF-8
175 Wtyczka PipeWire SPA do kodowania/dekodowania przy użyciu biblioteki
178 %package spa-module-jack
179 Summary: PipeWire SPA plugin to play and record audio with JACK API
180 Summary(pl.UTF-8): Wtyczka PipeWire SPA do odtwarzania i nagrywania dźwięku przy użyciu API JACK
182 Requires: %{name}-libs = %{version}-%{release}
183 Requires: jack-audio-connection-kit >= 1.9.17
185 %description spa-module-jack
186 PipeWire SPA plugin to play and record audio with JACK API.
188 %description spa-module-jack -l pl.UTF-8
189 Wtyczka PipeWire SPA do odtwarzania i nagrywania dźwięku przy użyciu
192 %package spa-module-vulkan
193 Summary: PipeWire SPA plugin to generate video frames using Vulkan
194 Summary(pl.UTF-8): Wtyczka PipeWire SPA do generowania ramek obrazu przy użyciu Vulkana
196 Requires: %{name}-libs = %{version}-%{release}
197 Requires: Vulkan-Loader >= 1.1.69
199 %description spa-module-vulkan
200 PipeWire SPA plugin to generate video frames using Vulkan.
202 %description spa-module-vulkan -l pl.UTF-8
203 Wtyczka PipeWire SPA do generowania ramek obrazu przy użyciu Vulkana.
206 Summary: PipeWire JACK sound system integration
207 Summary(pl.UTF-8): Integracja PipeWire z systemem dźwięku JACK
209 Requires: %{name} = %{version}-%{release}
210 Requires: jack-audio-connection-kit >= 1.9.17
213 PipeWire JACK sound system integration.
215 %description jack -l pl.UTF-8
216 Integracja PipeWire z systemem dźwięku JACK.
219 Summary: PipeWire PulseAudio sound system integration
220 Summary(pl.UTF-8): Integracja PipeWire z systemem dźwięku PulseAudio
222 Requires: %{name} = %{version}-%{release}
224 %description pulseaudio
225 PipeWire PulseAudio sound system integration.
227 %description pulseaudio -l pl.UTF-8
228 Integracja PipeWire z systemem dźwięku PulseAudio.
230 %package -n alsa-plugin-pipewire
231 Summary: PipeWire integration plugin for ALSA sound system
232 Summary(pl.UTF-8): Wtyczka systemu dźwięku ALSA integrująca z PipeWire
234 Requires: %{name} = %{version}-%{release}
235 Requires: alsa-lib >= 1.1.7
237 %description -n alsa-plugin-pipewire
238 PipeWire integration plugin for ALSA sound system.
240 %description -n alsa-plugin-pipewire -l pl.UTF-8
241 Wtyczka systemu dźwięku ALSA integrująca z PipeWire.
243 %package -n gstreamer-pipewire
244 Summary: PipeWire video sink and source plugin for GStreamer
245 Summary(pl.UTF-8): Wtyczka udostępniająca źródło i cel obrazu PipeWire dla GStreamera
247 Requires: %{name} = %{version}-%{release}
248 Requires: glib2 >= 1:2.32.0
249 Requires: gstreamer >= 1.10
250 Requires: gstreamer-plugins-base >= 1.10
252 %description -n gstreamer-pipewire
253 PipeWire video sink and source plugin for GStreamer.
255 %description -n gstreamer-pipewire -l pl.UTF-8
256 Wtyczka udostępniająca źródło i cel obrazu PipeWire dla GStreamera.
265 -Daudiotestsrc=enabled \
266 -Dbluez5-backend-hsphfpd=enabled \
267 %{?with_apidocs:-Ddocs=enabled} \
268 %{?with_ffmpeg:-Dffmpeg=enabled} \
269 %{!?with_gstreamer:-Dgstreamer=disabled} \
270 %{!?with_jack:-Djack=disabled} \
271 %{!?with_lv2:-Dlv2=disabled} \
273 %{!?with_jack:-Dpipewire-jack=disabled} \
274 -Dsession-managers='[]' \
275 -Dvideotestsrc=enabled \
278 # TODO: -Devl=enabled
280 %ninja_build -C build
283 rm -rf $RPM_BUILD_ROOT
285 %ninja_install -C build
287 install -d $RPM_BUILD_ROOT{%{_sysconfdir}/pipewire,%{_datadir}/alsa/alsa.conf.d}
288 cp -p pipewire-alsa/conf/*.conf $RPM_BUILD_ROOT%{_datadir}/alsa/alsa.conf.d
290 # packaged as %doc in -apidocs
291 %{?with_apidocs:%{__rm} -r $RPM_BUILD_ROOT%{_docdir}/pipewire/html}
296 rm -rf $RPM_BUILD_ROOT
298 %post libs -p /sbin/ldconfig
299 %postun libs -p /sbin/ldconfig
301 %files -f %{name}.lang
302 %defattr(644,root,root,755)
303 %attr(755,root,root) %{_bindir}/pipewire
304 %attr(755,root,root) %{_bindir}/pw-cat
305 %attr(755,root,root) %{_bindir}/pw-cli
306 %attr(755,root,root) %{_bindir}/pw-dot
307 %attr(755,root,root) %{_bindir}/pw-dsdplay
308 %attr(755,root,root) %{_bindir}/pw-dump
309 %attr(755,root,root) %{_bindir}/pw-link
310 %attr(755,root,root) %{_bindir}/pw-loopback
311 %attr(755,root,root) %{_bindir}/pw-metadata
312 %attr(755,root,root) %{_bindir}/pw-mididump
313 %attr(755,root,root) %{_bindir}/pw-midiplay
314 %attr(755,root,root) %{_bindir}/pw-midirecord
315 %attr(755,root,root) %{_bindir}/pw-mon
316 %attr(755,root,root) %{_bindir}/pw-play
317 %attr(755,root,root) %{_bindir}/pw-profiler
318 %attr(755,root,root) %{_bindir}/pw-record
319 %attr(755,root,root) %{_bindir}/pw-reserve
320 %attr(755,root,root) %{_bindir}/pw-top
321 %attr(755,root,root) %{_bindir}/pw-v4l2
322 %attr(755,root,root) %{_bindir}/spa-inspect
323 %attr(755,root,root) %{_bindir}/spa-json-dump
324 %attr(755,root,root) %{_bindir}/spa-monitor
326 %attr(755,root,root) %{_bindir}/spa-resample
327 %dir %{_sysconfdir}/pipewire
328 %dir %{_datadir}/pipewire
329 %{_datadir}/pipewire/client.conf
330 %{_datadir}/pipewire/client-rt.conf
331 %{_datadir}/pipewire/pipewire.conf
332 %dir %{_datadir}/pipewire/filter-chain
333 %{_datadir}/pipewire/filter-chain/demonic.conf
334 %{_datadir}/pipewire/filter-chain/sink-dolby-surround.conf
335 %{_datadir}/pipewire/filter-chain/sink-eq6.conf
336 %{_datadir}/pipewire/filter-chain/sink-matrix-spatialiser.conf
337 %{_datadir}/pipewire/filter-chain/sink-virtual-surround-5.1-kemar.conf
338 %{_datadir}/pipewire/filter-chain/sink-virtual-surround-7.1-hesuvi.conf
339 %{_datadir}/pipewire/filter-chain/source-rnnoise.conf
340 %{systemduserunitdir}/pipewire.service
341 %{systemduserunitdir}/pipewire.socket
342 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-access.so
343 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-adapter.so
344 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-client-device.so
345 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-client-node.so
346 # R: webrtc-audio-processing >= 0.2
347 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-echo-cancel.so
348 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-filter-chain.so
349 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-link-factory.so
350 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-loopback.so
351 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-metadata.so
353 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-portal.so
354 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-profiler.so
356 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-protocol-native.so
357 # R: dbus-libs systemd-libs
358 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-protocol-pulse.so
359 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-protocol-simple.so
360 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-raop-discover.so
361 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-raop-sink.so
362 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-rt.so
364 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-rtkit.so
365 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-session-manager.so
366 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-spa-device.so
367 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-spa-device-factory.so
368 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-spa-node.so
369 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-spa-node-factory.so
371 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-zeroconf-discover.so
372 %attr(755,root,root) %{_libdir}/pipewire-0.3/v4l2/libpw-v4l2.so
373 %dir %{_libdir}/spa-0.2/audioconvert
374 %attr(755,root,root) %{_libdir}/spa-0.2/audioconvert/libspa-audioconvert.so
375 %dir %{_libdir}/spa-0.2/audiomixer
376 %attr(755,root,root) %{_libdir}/spa-0.2/audiomixer/libspa-audiomixer.so
377 %dir %{_libdir}/spa-0.2/audiotestsrc
378 %attr(755,root,root) %{_libdir}/spa-0.2/audiotestsrc/libspa-audiotestsrc.so
379 %dir %{_libdir}/spa-0.2/control
380 %attr(755,root,root) %{_libdir}/spa-0.2/control/libspa-control.so
381 %dir %{_libdir}/spa-0.2/support
383 %attr(755,root,root) %{_libdir}/spa-0.2/support/libspa-dbus.so
385 %attr(755,root,root) %{_libdir}/spa-0.2/support/libspa-journal.so
386 %attr(755,root,root) %{_libdir}/spa-0.2/support/libspa-support.so
387 %dir %{_libdir}/spa-0.2/v4l2
389 %attr(755,root,root) %{_libdir}/spa-0.2/v4l2/libspa-v4l2.so
390 %dir %{_libdir}/spa-0.2/videoconvert
391 %attr(755,root,root) %{_libdir}/spa-0.2/videoconvert/libspa-videoconvert.so
392 %dir %{_libdir}/spa-0.2/videotestsrc
393 %attr(755,root,root) %{_libdir}/spa-0.2/videotestsrc/libspa-videotestsrc.so
394 %dir %{_libdir}/spa-0.2/volume
395 %attr(755,root,root) %{_libdir}/spa-0.2/volume/libspa-volume.so
396 %{_mandir}/man1/pipewire.1*
397 %{_mandir}/man1/pw-cat.1*
398 %{_mandir}/man1/pw-cli.1*
399 %{_mandir}/man1/pw-dot.1*
400 %{_mandir}/man1/pw-metadata.1*
401 %{_mandir}/man1/pw-mididump.1*
402 %{_mandir}/man1/pw-mon.1*
403 %{_mandir}/man1/pw-profiler.1*
404 %{_mandir}/man5/pipewire.conf.5*
407 %defattr(644,root,root,755)
408 %doc COPYING LICENSE NEWS README.md
409 %attr(755,root,root) %{_libdir}/libpipewire-0.3.so.*.*.*
410 %attr(755,root,root) %ghost %{_libdir}/libpipewire-0.3.so.0
411 %dir %{_libdir}/pipewire-0.3
412 %dir %{_libdir}/pipewire-0.3/v4l2
413 %dir %{_libdir}/spa-0.2
414 %dir %{_datadir}/spa-0.2
417 %defattr(644,root,root,755)
418 %attr(755,root,root) %{_libdir}/libpipewire-0.3.so
419 %{_includedir}/pipewire-0.3
420 %{_includedir}/spa-0.2
421 %{_pkgconfigdir}/libpipewire-0.3.pc
422 %{_pkgconfigdir}/libspa-0.2.pc
426 %defattr(644,root,root,755)
427 %doc build/doc/html/*
430 %files spa-module-alsa
431 %defattr(644,root,root,755)
432 %attr(755,root,root) %{_bindir}/spa-acp-tool
433 %dir %{_libdir}/spa-0.2/alsa
434 # R: alsa-lib udev-libs
435 %attr(755,root,root) %{_libdir}/spa-0.2/alsa/libspa-alsa.so
436 %{_datadir}/alsa-card-profile
438 %files spa-module-bluez
439 %defattr(644,root,root,755)
440 %dir %{_libdir}/spa-0.2/bluez5
441 # R: bluez-libs >= 4.101 dbus-libs libusb >= 1.0 sbc
442 %attr(755,root,root) %{_libdir}/spa-0.2/bluez5/libspa-bluez5.so
444 %attr(755,root,root) %{_libdir}/spa-0.2/bluez5/libspa-codec-bluez5-aac.so
446 %attr(755,root,root) %{_libdir}/spa-0.2/bluez5/libspa-codec-bluez5-aptx.so
448 %attr(755,root,root) %{_libdir}/spa-0.2/bluez5/libspa-codec-bluez5-faststream.so
450 %attr(755,root,root) %{_libdir}/spa-0.2/bluez5/libspa-codec-bluez5-ldac.so
452 %attr(755,root,root) %{_libdir}/spa-0.2/bluez5/libspa-codec-bluez5-sbc.so
453 %dir %{_datadir}/spa-0.2/bluez5
454 %{_datadir}/spa-0.2/bluez5/bluez-hardware.conf
456 %files spa-module-ffmpeg
457 %defattr(644,root,root,755)
458 %dir %{_libdir}/spa-0.2/ffmpeg
460 %attr(755,root,root) %{_libdir}/spa-0.2/ffmpeg/libspa-ffmpeg.so
463 %files spa-module-jack
464 %defattr(644,root,root,755)
465 %dir %{_libdir}/spa-0.2/jack
466 # R: jack-audio-connection-kit-libs
467 %attr(755,root,root) %{_libdir}/spa-0.2/jack/libspa-jack.so
470 %files spa-module-vulkan
471 %defattr(644,root,root,755)
472 %dir %{_libdir}/spa-0.2/vulkan
474 %attr(755,root,root) %{_libdir}/spa-0.2/vulkan/libspa-vulkan.so
478 %defattr(644,root,root,755)
479 %attr(755,root,root) %{_bindir}/pw-jack
480 %dir %{_libdir}/pipewire-0.3/jack
481 %attr(755,root,root) %{_libdir}/pipewire-0.3/jack/libjack.so*
482 %attr(755,root,root) %{_libdir}/pipewire-0.3/jack/libjacknet.so*
483 %attr(755,root,root) %{_libdir}/pipewire-0.3/jack/libjackserver.so*
484 %{_datadir}/pipewire/jack.conf
485 %{_mandir}/man1/pw-jack.1*
489 %defattr(644,root,root,755)
490 %attr(755,root,root) %{_bindir}/pipewire-pulse
492 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-pulse-tunnel.so
493 %{_datadir}/pipewire/pipewire-pulse.conf
494 %{systemduserunitdir}/pipewire-pulse.service
495 %{systemduserunitdir}/pipewire-pulse.socket
496 %{_mandir}/man1/pipewire-pulse.1*
498 %files -n alsa-plugin-pipewire
499 %defattr(644,root,root,755)
500 %attr(755,root,root) %{_libdir}/alsa-lib/libasound_module_ctl_pipewire.so
501 %attr(755,root,root) %{_libdir}/alsa-lib/libasound_module_pcm_pipewire.so
502 %{_datadir}/alsa/alsa.conf.d/50-pipewire.conf
503 %{_datadir}/alsa/alsa.conf.d/99-pipewire-default.conf
504 /lib/udev/rules.d/90-pipewire-alsa.rules
506 %if %{with gstreamer}
507 %files -n gstreamer-pipewire
508 %defattr(644,root,root,755)
509 %attr(755,root,root) %{_libdir}/gstreamer-1.0/libgstpipewire.so