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
30 BuildRequires: docutils
31 %{?with_apidocs:BuildRequires: doxygen}
32 BuildRequires: fdk-aac-devel
33 # libavcodec libavformat libavfilter
34 %{?with_ffmpeg:BuildRequires: ffmpeg-devel}
35 BuildRequires: gcc >= 5:3.2
37 BuildRequires: glib2-devel >= 1:2.32.0
39 %{?with_apidocs:BuildRequires: graphviz}
41 BuildRequires: gstreamer-devel >= 1.10
42 BuildRequires: gstreamer-plugins-base-devel >= 1.10
44 %{?with_jack:BuildRequires: jack-audio-connection-kit-devel >= 1.9.10}
45 BuildRequires: ldacBT-devel
47 # possibly more 32-bit archs (where 8-byte __atomic_store_n require libatomic)
48 BuildRequires: libatomic-devel
50 BuildRequires: libcap-devel
51 BuildRequires: libfreeaptx-devel
52 BuildRequires: libsndfile-devel >= 1.0.20
53 BuildRequires: libusb-devel
54 BuildRequires: meson >= 0.54.0
55 BuildRequires: ncurses-devel
56 BuildRequires: ninja >= 1.5
57 BuildRequires: pkgconfig
58 BuildRequires: pulseaudio-devel
59 BuildRequires: rpmbuild(macros) >= 1.752
60 BuildRequires: sbc-devel
61 BuildRequires: systemd-devel
62 BuildRequires: udev-devel
63 BuildRequires: webrtc-audio-processing-devel >= 0.2
64 Requires: %{name}-libs = %{version}-%{release}
65 Requires: libsndfile >= 1.0.20
66 BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
69 PipeWire is a server and user space API to deal with multimedia
70 pipelines. This includes:
71 - Making available sources of video (such as from a capture devices
72 or application provided streams) and multiplexing this with
74 - Accessing sources of video for consumption.
75 - Generating graphs for audio and video processing.
77 Nodes in the graph can be implemented as separate processes,
78 communicating with sockets and exchanging multimedia content using fd
81 %description -l pl.UTF-8
82 PipeWire to serwer i API przestrzeni użytkownika do obsługi potoków
83 multimedialnych. Obejmuje to:
84 - udostępnianie źródeł obrazu (np. z urządzeń przechwytujących obraz
85 lub strumieni udostępnianych przez aplikacje) oraz multipleksowanie
87 - dostęp do źródeł obrazu do pobierania
88 - generowanie grafów do przetwarzania dźwięku i obrazu
91 Summary: PipeWire shared library
92 Summary(pl.UTF-8): Biblioteka współdzielona PipeWire
96 PipeWire shared library.
98 %description libs -l pl.UTF-8
99 Biblioteka współdzielona PipeWire.
102 Summary: Header files for PipeWire library and Simple Plugin API
103 Summary(pl.UTF-8): Pliki nagłówkowe biblioteki PipeWire oraz Simple Plugin API
104 Group: Development/Libraries
105 Requires: %{name}-libs = %{version}-%{release}
108 Header files for PipeWire library and Simple Plugin API.
110 %description devel -l pl.UTF-8
111 Pliki nagłówkowe biblioteki PipeWire oraz Simple Plugin API.
114 Summary: API documentation for PipeWire library
115 Summary(pl.UTF-8): Dokumentacja API biblioteki PipeWire
120 API documentation for PipeWire library.
122 %description apidocs -l pl.UTF-8
123 Dokumentacja API biblioteki PipeWire.
125 %package spa-module-alsa
126 Summary: PipeWire SPA plugin to play and record audio with ALSA API
127 Summary(pl.UTF-8): Wtyczka PipeWire SPA do odtwarzania i nagrywania dźwięku przy użyciu API ALSA
129 Requires: %{name}-libs = %{version}-%{release}
130 Requires: alsa-lib >= 1.1.7
132 %description spa-module-alsa
133 PipeWire SPA plugin to play and record audio with ALSA API.
135 %description spa-module-alsa -l pl.UTF-8
136 Wtyczka PipeWire SPA do odtwarzania i nagrywania dźwięku przy użyciu
139 %package spa-module-bluez
140 Summary: PipeWire SPA plugin to play audio with Bluetooth A2DP
141 Summary(pl.UTF-8): Wtyczka PipeWire SPA do odtwarzania dźwięku przez Bluetooth A2DP
143 Requires: %{name}-libs = %{version}-%{release}
144 Requires: bluez-libs >= 4.101
146 %description spa-module-bluez
147 PipeWire SPA plugin to play audio with Bluetooth A2DP.
149 %description spa-module-bluez -l pl.UTF-8
150 Wtyczka PipeWire SPA do odtwarzania dźwięku przez Bluetooth A2DP.
152 %package spa-module-ffmpeg
153 Summary: PipeWire SPA plugin to decode/encode with FFmpeg library
154 Summary(pl.UTF-8): Wtyczka PipeWire SPA do kodowania/dekodowania przy użyciu biblioteki FFmpeg
156 Requires: %{name}-libs = %{version}-%{release}
158 %description spa-module-ffmpeg
159 PipeWire SPA plugin to decode/encode with FFmpeg library.
161 %description spa-module-ffmpeg -l pl.UTF-8
162 Wtyczka PipeWire SPA do kodowania/dekodowania przy użyciu biblioteki
165 %package spa-module-jack
166 Summary: PipeWire SPA plugin to play and record audio with JACK API
167 Summary(pl.UTF-8): Wtyczka PipeWire SPA do odtwarzania i nagrywania dźwięku przy użyciu API JACK
169 Requires: %{name}-libs = %{version}-%{release}
170 Requires: jack-audio-connection-kit >= 1.9.10
172 %description spa-module-jack
173 PipeWire SPA plugin to play and record audio with JACK API.
175 %description spa-module-jack -l pl.UTF-8
176 Wtyczka PipeWire SPA do odtwarzania i nagrywania dźwięku przy użyciu
179 %package spa-module-vulkan
180 Summary: PipeWire SPA plugin to generate video frames using Vulkan
181 Summary(pl.UTF-8): Wtyczka PipeWire SPA do generowania ramek obrazu przy użyciu Vulkana
183 Requires: %{name}-libs = %{version}-%{release}
184 Requires: Vulkan-Loader >= 1.1.69
186 %description spa-module-vulkan
187 PipeWire SPA plugin to generate video frames using Vulkan.
189 %description spa-module-vulkan -l pl.UTF-8
190 Wtyczka PipeWire SPA do generowania ramek obrazu przy użyciu Vulkana.
193 Summary: PipeWire JACK sound system integration
194 Summary(pl.UTF-8): Integracja PipeWire z systemem dźwięku JACK
196 Requires: %{name} = %{version}-%{release}
197 Requires: jack-audio-connection-kit >= 1.9.10
200 PipeWire JACK sound system integration.
202 %description jack -l pl.UTF-8
203 Integracja PipeWire z systemem dźwięku JACK.
206 Summary: PipeWire PulseAudio sound system integration
207 Summary(pl.UTF-8): Integracja PipeWire z systemem dźwięku PulseAudio
209 Requires: %{name} = %{version}-%{release}
211 %description pulseaudio
212 PipeWire PulseAudio sound system integration.
214 %description pulseaudio -l pl.UTF-8
215 Integracja PipeWire z systemem dźwięku PulseAudio.
217 %package -n alsa-plugin-pipewire
218 Summary: PipeWire integration plugin for ALSA sound system
219 Summary(pl.UTF-8): Wtyczka systemu dźwięku ALSA integrująca z PipeWire
221 Requires: %{name} = %{version}-%{release}
222 Requires: alsa-lib >= 1.1.7
224 %description -n alsa-plugin-pipewire
225 PipeWire integration plugin for ALSA sound system.
227 %description -n alsa-plugin-pipewire -l pl.UTF-8
228 Wtyczka systemu dźwięku ALSA integrująca z PipeWire.
230 %package -n gstreamer-pipewire
231 Summary: PipeWire video sink and source plugin for GStreamer
232 Summary(pl.UTF-8): Wtyczka udostępniająca źródło i cel obrazu PipeWire dla GStreamera
234 Requires: %{name} = %{version}-%{release}
235 Requires: glib2 >= 1:2.32.0
236 Requires: gstreamer >= 1.10
237 Requires: gstreamer-plugins-base >= 1.10
239 %description -n gstreamer-pipewire
240 PipeWire video sink and source plugin for GStreamer.
242 %description -n gstreamer-pipewire -l pl.UTF-8
243 Wtyczka udostępniająca źródło i cel obrazu PipeWire dla GStreamera.
251 -Daudiotestsrc=enabled \
252 -Dbluez5-backend-hsphfpd=enabled \
253 %{?with_apidocs:-Ddocs=enabled} \
254 %{?with_ffmpeg:-Dffmpeg=enabled} \
255 %{!?with_gstreamer:-Dgstreamer=disabled} \
256 %{!?with_jack:-Djack=disabled} \
258 %{!?with_jack:-Dpipewire-jack=disabled} \
259 -Dvideotestsrc=enabled \
262 # TODO: -Devl=enabled
264 %ninja_build -C build
267 rm -rf $RPM_BUILD_ROOT
269 %ninja_install -C build
271 install -d $RPM_BUILD_ROOT{%{_sysconfdir}/pipewire,%{_datadir}/alsa/alsa.conf.d}
272 cp -p pipewire-alsa/conf/*.conf $RPM_BUILD_ROOT%{_datadir}/alsa/alsa.conf.d
274 # packaged as %doc in -apidocs
275 %{?with_apidocs:%{__rm} -r $RPM_BUILD_ROOT%{_docdir}/pipewire/html}
280 rm -rf $RPM_BUILD_ROOT
282 %post libs -p /sbin/ldconfig
283 %postun libs -p /sbin/ldconfig
285 %files -f %{name}.lang
286 %defattr(644,root,root,755)
287 %attr(755,root,root) %{_bindir}/pipewire
288 %attr(755,root,root) %{_bindir}/pipewire-media-session
289 %attr(755,root,root) %{_bindir}/pw-cat
290 %attr(755,root,root) %{_bindir}/pw-cli
291 %attr(755,root,root) %{_bindir}/pw-dot
292 %attr(755,root,root) %{_bindir}/pw-dsdplay
293 %attr(755,root,root) %{_bindir}/pw-dump
294 %attr(755,root,root) %{_bindir}/pw-link
295 %attr(755,root,root) %{_bindir}/pw-loopback
296 %attr(755,root,root) %{_bindir}/pw-metadata
297 %attr(755,root,root) %{_bindir}/pw-mididump
298 %attr(755,root,root) %{_bindir}/pw-midiplay
299 %attr(755,root,root) %{_bindir}/pw-midirecord
300 %attr(755,root,root) %{_bindir}/pw-mon
301 %attr(755,root,root) %{_bindir}/pw-play
302 %attr(755,root,root) %{_bindir}/pw-profiler
303 %attr(755,root,root) %{_bindir}/pw-record
304 %attr(755,root,root) %{_bindir}/pw-reserve
305 %attr(755,root,root) %{_bindir}/pw-top
306 %attr(755,root,root) %{_bindir}/spa-inspect
307 %attr(755,root,root) %{_bindir}/spa-json-dump
308 %attr(755,root,root) %{_bindir}/spa-monitor
310 %attr(755,root,root) %{_bindir}/spa-resample
311 %dir %{_sysconfdir}/pipewire
312 %{_datadir}/pipewire/client.conf
313 %{_datadir}/pipewire/client-rt.conf
314 %{_datadir}/pipewire/pipewire.conf
315 %dir %{_datadir}/pipewire/filter-chain
316 %{_datadir}/pipewire/filter-chain/demonic.conf
317 %{_datadir}/pipewire/filter-chain/sink-dolby-surround.conf
318 %{_datadir}/pipewire/filter-chain/sink-eq6.conf
319 %{_datadir}/pipewire/filter-chain/sink-matrix-spatialiser.conf
320 %{_datadir}/pipewire/filter-chain/sink-virtual-surround-5.1-kemar.conf
321 %{_datadir}/pipewire/filter-chain/sink-virtual-surround-7.1-hesuvi.conf
322 %{_datadir}/pipewire/filter-chain/source-rnnoise.conf
323 %dir %{_datadir}/pipewire/media-session.d
324 %{_datadir}/pipewire/media-session.d/media-session.conf
325 %{_datadir}/pipewire/media-session.d/v4l2-monitor.conf
326 %{systemduserunitdir}/pipewire.service
327 %{systemduserunitdir}/pipewire.socket
328 %{systemduserunitdir}/pipewire-media-session.service
329 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-access.so
330 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-adapter.so
331 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-client-device.so
332 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-client-node.so
333 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-echo-cancel.so
334 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-filter-chain.so
335 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-link-factory.so
336 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-loopback.so
337 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-metadata.so
338 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-portal.so
339 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-profiler.so
341 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-protocol-native.so
342 # R: dbus-libs systemd-libs
343 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-protocol-pulse.so
344 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-protocol-simple.so
345 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-rt.so
347 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-rtkit.so
348 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-session-manager.so
349 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-spa-device.so
350 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-spa-device-factory.so
351 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-spa-node.so
352 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-spa-node-factory.so
353 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-zeroconf-discover.so
354 %dir %{_libdir}/spa-0.2/audioconvert
355 %attr(755,root,root) %{_libdir}/spa-0.2/audioconvert/libspa-audioconvert.so
356 %dir %{_libdir}/spa-0.2/audiomixer
357 %attr(755,root,root) %{_libdir}/spa-0.2/audiomixer/libspa-audiomixer.so
358 %dir %{_libdir}/spa-0.2/audiotestsrc
359 %attr(755,root,root) %{_libdir}/spa-0.2/audiotestsrc/libspa-audiotestsrc.so
360 %dir %{_libdir}/spa-0.2/control
361 %attr(755,root,root) %{_libdir}/spa-0.2/control/libspa-control.so
362 %dir %{_libdir}/spa-0.2/support
364 %attr(755,root,root) %{_libdir}/spa-0.2/support/libspa-dbus.so
366 %attr(755,root,root) %{_libdir}/spa-0.2/support/libspa-journal.so
367 %attr(755,root,root) %{_libdir}/spa-0.2/support/libspa-support.so
368 %dir %{_libdir}/spa-0.2/v4l2
370 %attr(755,root,root) %{_libdir}/spa-0.2/v4l2/libspa-v4l2.so
371 %dir %{_libdir}/spa-0.2/videoconvert
372 %attr(755,root,root) %{_libdir}/spa-0.2/videoconvert/libspa-videoconvert.so
373 %dir %{_libdir}/spa-0.2/videotestsrc
374 %attr(755,root,root) %{_libdir}/spa-0.2/videotestsrc/libspa-videotestsrc.so
375 %dir %{_libdir}/spa-0.2/volume
376 %attr(755,root,root) %{_libdir}/spa-0.2/volume/libspa-volume.so
377 %{_mandir}/man1/pipewire.1*
378 %{_mandir}/man1/pw-cat.1*
379 %{_mandir}/man1/pw-cli.1*
380 %{_mandir}/man1/pw-dot.1*
381 %{_mandir}/man1/pw-metadata.1*
382 %{_mandir}/man1/pw-mididump.1*
383 %{_mandir}/man1/pw-mon.1*
384 %{_mandir}/man1/pw-profiler.1*
385 %{_mandir}/man5/pipewire.conf.5*
388 %defattr(644,root,root,755)
389 %doc COPYING LICENSE NEWS README.md
390 %attr(755,root,root) %{_libdir}/libpipewire-0.3.so.*.*.*
391 %attr(755,root,root) %ghost %{_libdir}/libpipewire-0.3.so.0
392 %dir %{_libdir}/pipewire-0.3
393 %dir %{_libdir}/spa-0.2
394 %dir %{_datadir}/spa-0.2
397 %defattr(644,root,root,755)
398 %attr(755,root,root) %{_libdir}/libpipewire-0.3.so
399 %{_includedir}/pipewire-0.3
400 %{_includedir}/spa-0.2
401 %{_pkgconfigdir}/libpipewire-0.3.pc
402 %{_pkgconfigdir}/libspa-0.2.pc
406 %defattr(644,root,root,755)
407 %doc doc/design.txt build/doc/html/*
410 %files spa-module-alsa
411 %defattr(644,root,root,755)
412 %attr(755,root,root) %{_bindir}/spa-acp-tool
413 %{_datadir}/pipewire/media-session.d/alsa-monitor.conf
414 %dir %{_libdir}/spa-0.2/alsa
415 # R: alsa-lib udev-libs
416 %attr(755,root,root) %{_libdir}/spa-0.2/alsa/libspa-alsa.so
417 %{_datadir}/alsa-card-profile
419 %files spa-module-bluez
420 %defattr(644,root,root,755)
421 %{_datadir}/pipewire/media-session.d/bluez-monitor.conf
422 %dir %{_libdir}/spa-0.2/bluez5
424 %attr(755,root,root) %{_libdir}/spa-0.2/bluez5/libspa-bluez5.so
425 %attr(755,root,root) %{_libdir}/spa-0.2/bluez5/libspa-codec-bluez5-aac.so
426 %attr(755,root,root) %{_libdir}/spa-0.2/bluez5/libspa-codec-bluez5-aptx.so
427 %attr(755,root,root) %{_libdir}/spa-0.2/bluez5/libspa-codec-bluez5-faststream.so
428 %attr(755,root,root) %{_libdir}/spa-0.2/bluez5/libspa-codec-bluez5-ldac.so
429 %attr(755,root,root) %{_libdir}/spa-0.2/bluez5/libspa-codec-bluez5-sbc.so
430 %dir %{_datadir}/spa-0.2/bluez5
431 %{_datadir}/spa-0.2/bluez5/bluez-hardware.conf
433 %files spa-module-ffmpeg
434 %defattr(644,root,root,755)
435 %dir %{_libdir}/spa-0.2/ffmpeg
437 %attr(755,root,root) %{_libdir}/spa-0.2/ffmpeg/libspa-ffmpeg.so
440 %files spa-module-jack
441 %defattr(644,root,root,755)
442 %dir %{_libdir}/spa-0.2/jack
443 # R: jack-audio-connection-kit-libs
444 %attr(755,root,root) %{_libdir}/spa-0.2/jack/libspa-jack.so
447 %files spa-module-vulkan
448 %defattr(644,root,root,755)
449 %dir %{_libdir}/spa-0.2/vulkan
451 %attr(755,root,root) %{_libdir}/spa-0.2/vulkan/libspa-vulkan.so
455 %defattr(644,root,root,755)
456 %attr(755,root,root) %{_bindir}/pw-jack
457 %{_datadir}/pipewire/jack.conf
458 %{_datadir}/pipewire/media-session.d/with-jack
459 %dir %{_libdir}/pipewire-0.3/jack
460 %attr(755,root,root) %{_libdir}/pipewire-0.3/jack/libjack.so*
461 %attr(755,root,root) %{_libdir}/pipewire-0.3/jack/libjacknet.so*
462 %attr(755,root,root) %{_libdir}/pipewire-0.3/jack/libjackserver.so*
463 %{_mandir}/man1/pw-jack.1*
467 %defattr(644,root,root,755)
468 %attr(755,root,root) %{_bindir}/pipewire-pulse
469 %attr(755,root,root) %{_libdir}/pipewire-0.3/libpipewire-module-pulse-tunnel.so
470 %{_datadir}/pipewire/pipewire-pulse.conf
471 %{_datadir}/pipewire/media-session.d/with-pulseaudio
472 %{systemduserunitdir}/pipewire-pulse.service
473 %{systemduserunitdir}/pipewire-pulse.socket
475 %files -n alsa-plugin-pipewire
476 %defattr(644,root,root,755)
477 %attr(755,root,root) %{_libdir}/alsa-lib/libasound_module_ctl_pipewire.so
478 %attr(755,root,root) %{_libdir}/alsa-lib/libasound_module_pcm_pipewire.so
479 %{_datadir}/alsa/alsa.conf.d/50-pipewire.conf
480 %{_datadir}/alsa/alsa.conf.d/99-pipewire-default.conf
481 /lib/udev/rules.d/90-pipewire-alsa.rules
483 %if %{with gstreamer}
484 %files -n gstreamer-pipewire
485 %defattr(644,root,root,755)
486 %attr(755,root,root) %{_libdir}/gstreamer-1.0/libgstpipewire.so