source: multimedia/libdriv/pipewire.xml@ 3cbfa45

11.3 12.0 12.1 kea ken/TL2024 ken/inkscape-core-mods ken/tuningfonts lazarus lxqt plabs/newcss plabs/python-mods python3.11 qt5new rahul/power-profiles-daemon renodr/vulkan-addition trunk xry111/llvm18 xry111/xf86-video-removal
Last change on this file since 3cbfa45 was 3cbfa45, checked in by Xi Ruoyao <xry111@…>, 17 months ago

pipewire: document a test failure with systemd

Though the systemd issue has been patched, I don't think it's worthy to
apply the patch now. Just document it.

Link: https://github.com/systemd/systemd/issues/25369

  • Property mode set to 100644
File size: 19.3 KB
Line 
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
3 "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
4 <!ENTITY % general-entities SYSTEM "../../general.ent">
5 %general-entities;
6
7 <!ENTITY pipewire-download-http "https://github.com/PipeWire/pipewire/archive/&pipewire-version;/pipewire-&pipewire-version;.tar.gz">
8 <!ENTITY pipewire-download-ftp " ">
9 <!ENTITY pipewire-md5sum "a54a01d9b66f32f72bcc9d1630ac5791">
10 <!ENTITY pipewire-size "1.9 MB">
11 <!ENTITY pipewire-buildsize "70 MB (with tests)">
12 <!ENTITY pipewire-time "0.6 SBU (with tests, both using parallelism=4)">
13]>
14
15<sect1 id="pipewire" xreflabel="pipewire-&pipewire-version;">
16 <?dbhtml filename="pipewire.html"?>
17
18 <sect1info>
19 <date>$Date$</date>
20 </sect1info>
21
22 <title>Pipewire-&pipewire-version;</title>
23
24 <indexterm zone="pipewire">
25 <primary sortas="a-pipewire">pipewire</primary>
26 </indexterm>
27
28 <sect2 role="package">
29 <title>Introduction to Pipewire</title>
30
31 <para>
32 The <application>pipewire</application> package contains a server and
33 user-space API to handle multimedia pipelines. This includes a universal
34 API to connect to multimedia devices, as well as sharing multimedia
35 files between applications.
36 </para>
37
38 &lfs112_checked;
39
40 <bridgehead renderas="sect3">Package Information</bridgehead>
41 <itemizedlist spacing="compact">
42 <listitem>
43 <para>
44 Download (HTTP): <ulink url="&pipewire-download-http;"/>
45 </para>
46 </listitem>
47 <listitem>
48 <para>
49 Download (FTP): <ulink url="&pipewire-download-ftp;"/>
50 </para>
51 </listitem>
52 <listitem>
53 <para>
54 Download MD5 sum: &pipewire-md5sum;
55 </para>
56 </listitem>
57 <listitem>
58 <para>
59 Download size: &pipewire-size;
60 </para>
61 </listitem>
62 <listitem>
63 <para>
64 Estimated disk space required: &pipewire-buildsize;
65 </para>
66 </listitem>
67 <listitem>
68 <para>
69 Estimated build time: &pipewire-time;
70 </para>
71 </listitem>
72 </itemizedlist>
73
74 <bridgehead renderas="sect3">Pipewire Dependencies</bridgehead>
75
76 <bridgehead renderas="sect4">Recommended</bridgehead>
77 <para role="recommended">
78 <xref linkend="bluez"/>,
79 <phrase revision="sysv"><xref linkend="dbus"/></phrase>,
80 <xref linkend="gstreamer10"/>,
81 <xref linkend="gst10-plugins-base"/>,
82 <xref linkend="pulseaudio"/>,
83 <xref linkend="sbc"/>, and
84 <xref linkend="v4l-utils"/>
85 </para>
86
87 <bridgehead renderas="sect4">Optional</bridgehead>
88 <para role="optional">
89 <xref linkend="alsa-lib"/>,
90 <xref linkend="avahi"/>,
91 <xref linkend="bluez"/>,
92 <xref linkend="fdk-aac"/>,
93 <xref linkend="ffmpeg"/>,
94 <xref linkend="libcanberra"/>,
95 <xref linkend="libdrm"/> (for one example and libcamera support),
96 <xref linkend="libxcb"/>,
97 <xref linkend="libsndfile"/>,
98 <xref linkend="libusb"/>,
99 <xref linkend="opus"/>,
100 <xref linkend="sdl2"/> (for some examples),
101 <xref linkend="valgrind"/>,
102 <xref linkend="xorg7-lib"/>,
103 <xref linkend="doxygen"/> and
104 <xref linkend="graphviz"/> (for documentation),
105 <ulink url="https://jackaudio.org/">JACK</ulink>,
106 <ulink url="https://github.com/EHfive/ldacBT">ldacBT</ulink>,
107 <ulink url="https://libcamera.org/">libcamera</ulink>,
108 <ulink url="https://vulkan.lunarg.com/sdk/home/">Vulkan</ulink>,
109 <ulink url="https://gitlab.freedesktop.org/pipewire/wireplumber/">WirePlumber</ulink>
110 (runtime, for running Pipewire daemon), and
111 <ulink url="https://sourceforge.net/projects/xmltoman/">xmltoman</ulink>
112 </para>
113
114 <para condition="html" role="usernotes">
115 User Notes: <ulink url="&blfs-wiki;/pipewire"/>
116 </para>
117 </sect2>
118
119 <sect2 role="installation">
120 <title>Installation of Pipewire</title>
121
122 <para>
123 Install <application>pipewire</application> by running the following
124 commands:
125 </para>
126
127<screen><userinput>mkdir build &amp;&amp;
128cd build &amp;&amp;
129
130meson --prefix=/usr --buildtype=release -Dsession-managers= .. &amp;&amp;
131ninja</userinput></screen>
132
133 <para>
134 To test the result, issue: <command>ninja test</command>.
135 <phrase revision='systemd'>One test named
136 <filename>test-support</filename> is known to fail.</phrase>
137 </para>
138
139 <para>
140 Now, as the <systemitem class="username">root</systemitem> user:
141 </para>
142
143<screen role="root"><userinput>ninja install</userinput></screen>
144 </sect2>
145
146 <sect2 role="commands">
147 <title>Command Explanations</title>
148
149 <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
150 href="../../xincludes/meson-buildtype-release.xml"/>
151
152 <para>
153 <parameter>-Dsession-managers=</parameter>: This switch
154 prevents automatic downloading external dependencies.
155 </para>
156
157 <para>
158 <option>-Ddocs=true</option>: This switch enables the generation of HTML
159 documentation. The optional dependencies for documentation need to be
160 installed for this to work.
161 </para>
162
163 <para>
164 <option>-Dman=true</option>: This switch enables the generation of manual
165 pages. The optional dependencies for documentation need to be installed
166 for this to work.
167 </para>
168
169 <para>
170 <option>-Dffmpeg=enabled</option>: This switch enables using ffmpeg for
171 audio conversion as a SPA backend.
172 </para>
173 </sect2>
174
175 <sect2 role="content">
176 <title>Contents</title>
177
178 <segmentedlist>
179 <segtitle>Installed Programs</segtitle>
180 <segtitle>Installed Libraries</segtitle>
181 <segtitle>Installed Directories</segtitle>
182
183 <seglistitem>
184 <seg>
185 pipewire,
186 pipewire-avb,
187 pipewire-pulse,
188 pw-cat,
189 pw-cli,
190 pw-dot,
191 pw-dump,
192 pw-jack,
193 pw-link,
194 pw-loopback,
195 pw-metadata,
196 pw-mididump,
197 pw-mon,
198 pw-profiler,
199 pw-reserve,
200 pw-top,
201 pw-v4l2,
202 spa-acp-tool,
203 spa-inspect,
204 spa-json-dump,
205 spa-monitor,
206 spa-resample, and
207 pw-dsdplay, pw-midiplay, pw-midirecord, pw-play, and pw-record
208 (symlinks to pw-cat)
209 </seg>
210 <seg>
211 libpipewire-0.3.so and
212 56 modules below /usr/lib/pipewire-0.3 and /usr/lib/spa-0.2<!--,
213 [pierre July 29th, 2020]: all the following libs are in subdirectories
214 of /usr/lib. I'm not sure they should appear. But if they should, there
215 are many more libs to list...
216 libpulse-mainloop-glib-pw.so,
217 libpulse.so,
218 libpulse-simple.so,
219 libasound_module_pcm_pipewire.so, and
220 libgstpipewire.so
221 [bdubbs Sep 29th, 2020]: add
222 libpipewire-module-{access,adapter,client-device,client-node,
223 link-factory,metadata,portal,profiler,protocol-native,
224 rtkit,session-manager,spa-device,spa-device-factory,spa-node,
225 spa-node-factory}.so
226 libasound_module_ctl_pipewire.so
227 libasound_module_pcm_pipewire.so
228 libspa-{alsa,audioconvert,audiomixer,bluez5,control,dbus,support
229 v4l2,videoconvert}.so
230 -->
231 </seg>
232 <seg>
233 <!--/etc/pipewire,-->
234 /usr/include/pipewire-0.3,
235 /usr/include/spa-0.2,
236 /usr/lib/alsa-lib,
237 <!--/usr/lib/gstreamer-1.0, already installed by gstreamer-->
238 /usr/lib/pipewire-0.3,
239 /usr/lib/spa-0.2,
240 /usr/share/alsa-card-profile,
241 /usr/share/pipewire, and
242 /usr/share/spa-0.2
243 </seg>
244 </seglistitem>
245 </segmentedlist>
246
247 <variablelist>
248 <bridgehead renderas="sect3">Short Descriptions</bridgehead>
249 <?dbfo list-presentation="list"?>
250 <?dbhtml list-presentation="table"?>
251
252 <varlistentry id="pipewire-prog">
253 <term><command>pipewire</command></term>
254 <listitem>
255 <para>
256 is a service that allows access to multimedia devices and allows
257 sharing of multimedia files between applications
258 </para>
259 <indexterm zone="pipewire pipewire-prog">
260 <primary sortas="b-pipewire">pipewire</primary>
261 </indexterm>
262 </listitem>
263 </varlistentry>
264
265 <varlistentry id="pipewire-media-session">
266 <term><command>pipewire-media-session</command></term>
267 <listitem>
268 <para>
269 is a service that allows a desktop environment to know when media
270 files are being played through pipewire
271 </para>
272 <indexterm zone="pipewire pipewire-media-session">
273 <primary sortas="b-pipewire-media-session">pipewire-media-session</primary>
274 </indexterm>
275 </listitem>
276 </varlistentry>
277
278 <varlistentry id="pipewire-pulse">
279 <term><command>pipewire-pulse</command></term>
280 <listitem>
281 <para>
282 starts a Pulseaudio-compatible version of
283 the pipewire service
284 </para>
285 <indexterm zone="pipewire pipewire-pulse">
286 <primary sortas="b-pipewire-pulse">pipewire-pulse</primary>
287 </indexterm>
288 </listitem>
289 </varlistentry>
290
291 <varlistentry id="pw-cat">
292 <term><command>pw-cat</command></term>
293 <listitem>
294 <para>
295 allows you to play or record media using a pipewire instance
296 </para>
297 <indexterm zone="pipewire pw-cat">
298 <primary sortas="b-pw-cat">pw-cat</primary>
299 </indexterm>
300 </listitem>
301 </varlistentry>
302
303 <varlistentry id="pw-cli">
304 <term><command>pw-cli</command></term>
305 <listitem>
306 <para>
307 allows you to interact with a pipewire instance
308 </para>
309 <indexterm zone="pipewire pw-cli">
310 <primary sortas="b-pw-cli">pw-cli</primary>
311 </indexterm>
312 </listitem>
313 </varlistentry>
314
315 <varlistentry id="pw-dot">
316 <term><command>pw-dot</command></term>
317 <listitem>
318 <para>
319 lists all of the daemons and objects in use by pipewire
320 </para>
321 <indexterm zone="pipewire pw-dot">
322 <primary sortas="b-pw-dot">pw-dot</primary>
323 </indexterm>
324 </listitem>
325 </varlistentry>
326
327 <varlistentry id="pw-dump">
328 <term><command>pw-dump</command></term>
329 <listitem>
330 <para>
331 dumps debug messages from a local or remote pipewire instance to
332 the console
333 </para>
334 <indexterm zone="pipewire pw-dump">
335 <primary sortas="b-pw-dump">pw-dump</primary>
336 </indexterm>
337 </listitem>
338 </varlistentry>
339
340 <varlistentry id="pw-jack">
341 <term><command>pw-jack</command></term>
342 <listitem>
343 <para>
344 runs JACK applications on a pipewire instance
345 </para>
346 <indexterm zone="pipewire pw-jack">
347 <primary sortas="b-pw-jack">pw-jack</primary>
348 </indexterm>
349 </listitem>
350 </varlistentry>
351
352 <varlistentry id="pw-link">
353 <term><command>pw-link</command></term>
354 <listitem>
355 <para>
356 links pipewire ports together
357 </para>
358 <indexterm zone="pipewire pw-link">
359 <primary sortas="b-pw-link">pw-link</primary>
360 </indexterm>
361 </listitem>
362 </varlistentry>
363
364 <varlistentry id="pw-loopback">
365 <term><command>pw-loopback</command></term>
366 <listitem>
367 <para>
368 initializes a loopback link between two different pipewire ports.
369 This is useful for testing and debugging
370 </para>
371 <indexterm zone="pipewire pw-loopback">
372 <primary sortas="b-pw-loopback">pw-loopback</primary>
373 </indexterm>
374 </listitem>
375 </varlistentry>
376
377 <varlistentry id="pw-metadata">
378 <term><command>pw-metadata</command></term>
379 <listitem>
380 <para>
381 inspects, adds, and removes metadata for objects
382 </para>
383 <indexterm zone="pipewire pw-metadata">
384 <primary sortas="b-pw-metadata">pw-metadata</primary>
385 </indexterm>
386 </listitem>
387 </varlistentry>
388
389 <varlistentry id="pw-mididump">
390 <term><command>pw-mididump</command></term>
391 <listitem>
392 <para>
393 dumps MIDI messages from a file to the screen
394 </para>
395 <indexterm zone="pipewire pw-mididump">
396 <primary sortas="b-pw-mididump">pw-mididump</primary>
397 </indexterm>
398 </listitem>
399 </varlistentry>
400
401 <varlistentry id="pw-mon">
402 <term><command>pw-mon</command></term>
403 <listitem>
404 <para>
405 allows you to monitor pipewire instances
406 </para>
407 <indexterm zone="pipewire pw-mon">
408 <primary sortas="b-pw-mon">pw-mon</primary>
409 </indexterm>
410 </listitem>
411 </varlistentry>
412
413 <varlistentry id="pw-profiler">
414 <term><command>pw-profiler</command></term>
415 <listitem>
416 <para>
417 tracks memory usage and API calls used by pipewire
418 </para>
419 <indexterm zone="pipewire pw-profiler">
420 <primary sortas="b-pw-profiler">pw-profiler</primary>
421 </indexterm>
422 </listitem>
423 </varlistentry>
424
425<!--
426 <varlistentry id="pw-pulse">
427 <term><command>pw-pulse</command></term>
428 <listitem>
429 <para>
430 runs Pulseaudio applications on pipewire.
431 </para>
432 <indexterm zone="pipewire pw-pulse">
433 <primary sortas="b-pw-pulse">pw-pulse</primary>
434 </indexterm>
435 </listitem>
436 </varlistentry>
437-->
438
439 <varlistentry id="pw-reserve">
440 <term><command>pw-reserve</command></term>
441 <listitem>
442 <para>
443 reserves or monitors a device via D-Bus
444 </para>
445 <indexterm zone="pipewire pw-reserve">
446 <primary sortas="b-pw-reserve">pw-reserve</primary>
447 </indexterm>
448 </listitem>
449 </varlistentry>
450
451 <varlistentry id="pw-top">
452 <term><command>pw-top</command></term>
453 <listitem>
454 <para>
455 displays real-time performance information from pipewire
456 </para>
457 <indexterm zone="pipewire pw-top">
458 <primary sortas="b-pw-top">pw-top</primary>
459 </indexterm>
460 </listitem>
461 </varlistentry>
462
463 <varlistentry id="pw-v4l2">
464 <term><command>pw-v4l2</command></term>
465 <listitem>
466 <para>
467 runs v4l2 applications on a pipewire instance
468 </para>
469 <indexterm zone="pipewire pw-v4l2">
470 <primary sortas="b-pw-v4l2">pw-v4l2</primary>
471 </indexterm>
472 </listitem>
473 </varlistentry>
474
475 <varlistentry id="spa-acp-tool">
476 <term><command>spa-acp-tool</command></term>
477 <listitem>
478 <para>
479 inspects the card profile of a given sound card
480 </para>
481 <indexterm zone="pipewire spa-acp-tool">
482 <primary sortas="b-spa-acp-tool">spa-acp-tool</primary>
483 </indexterm>
484 </listitem>
485 </varlistentry>
486
487 <varlistentry id="spa-inspect">
488 <term><command>spa-inspect</command></term>
489 <listitem>
490 <para>
491 allows you to inspect pipewire plugins
492 </para>
493 <indexterm zone="pipewire spa-inspect">
494 <primary sortas="b-spa-inspect">spa-inspect</primary>
495 </indexterm>
496 </listitem>
497 </varlistentry>
498
499 <varlistentry id="spa-json-dump">
500 <term><command>spa-json-dump</command></term>
501 <listitem>
502 <para>
503 dumps the current pipewire configuration in JSON format.
504 </para>
505 <indexterm zone="pipewire spa-json-dump">
506 <primary sortas="b-spa-json-dump">spa-json-dump</primary>
507 </indexterm>
508 </listitem>
509 </varlistentry>
510
511 <varlistentry id="spa-monitor">
512 <term><command>spa-monitor</command></term>
513 <listitem>
514 <para>
515 allows you to monitor pipewire plugins
516 </para>
517 <indexterm zone="pipewire spa-monitor">
518 <primary sortas="b-spa-monitor">spa-monitor</primary>
519 </indexterm>
520 </listitem>
521 </varlistentry>
522
523 <varlistentry id="spa-resample">
524 <term><command>spa-resample</command></term>
525 <listitem>
526 <para>
527 resamples a given file
528 </para>
529 <indexterm zone="pipewire spa-resample">
530 <primary sortas="b-spa-resample">spa-resample</primary>
531 </indexterm>
532 </listitem>
533 </varlistentry>
534
535 <varlistentry id="libpipewire">
536 <term><filename class="libraryfile">libpipewire-0.3.so</filename></term>
537 <listitem>
538 <para>
539 contains API functions for handling multimedia pipelines
540 </para>
541 <indexterm zone="pipewire libpipewire">
542 <primary sortas="c-libpipewire">libpipewire-0.3.so</primary>
543 </indexterm>
544 </listitem>
545 </varlistentry>
546<!--
547 <varlistentry id="libpulse-mainloop-glib-pw">
548 <term><filename class="libraryfile">libpulse-mainloop-glib-pw.so</filename></term>
549 <listitem>
550 <para>
551 provides a glib main() loop for pulseaudio to route media through
552 pipewire.
553 </para>
554 <indexterm zone="pipewire libpulse-mainloop-glib-pw">
555 <primary sortas="c-libpulse-mainloop-glib-pw">libpulse-mainloop-glib-pw.so</primary>
556 </indexterm>
557 </listitem>
558 </varlistentry>
559
560 <varlistentry id="libpulse">
561 <term><filename class="libraryfile">libpulse.so</filename></term>
562 <listitem>
563 <para>
564 is a pipewire plugin for pulseaudio.
565 </para>
566 <indexterm zone="pipewire libpulse">
567 <primary sortas="c-libpulse">libpulse.so</primary>
568 </indexterm>
569 </listitem>
570 </varlistentry>
571
572 <varlistentry id="libpulse-simple">
573 <term><filename class="libraryfile">libpulse-simple.so</filename></term>
574 <listitem>
575 <para>
576 is a simplified version of the pulseaudio plugin for pipewire.
577 </para>
578 <indexterm zone="pipewire libpulse-simple">
579 <primary sortas="c-libpulse-simple">libpulse-simple.so</primary>
580 </indexterm>
581 </listitem>
582 </varlistentry>
583
584 <varlistentry id="libasound_module_pcm_pipewire">
585 <term><filename class="libraryfile">libasound_module_pcm_pipewire.so</filename></term>
586 <listitem>
587 <para>
588 is an ALSA plugin for pipewire.
589 </para>
590 <indexterm zone="pipewire libasound_module_pcm_pipewire">
591 <primary sortas="c-libasound_module_pcm_pipewire">libasound_module_pcm_pipewire.so</primary>
592 </indexterm>
593 </listitem>
594 </varlistentry>
595
596 <varlistentry id="libgstpipewire">
597 <term><filename class="libraryfile">libgstpipewire.so</filename></term>
598 <listitem>
599 <para>
600 is a Gstreamer plugin for pipewire.
601 </para>
602 <indexterm zone="pipewire libgstpipewire">
603 <primary sortas="c-libgstpipewire">libgstpipewire.so</primary>
604 </indexterm>
605 </listitem>
606 </varlistentry>-->
607 </variablelist>
608 </sect2>
609
610</sect1>
Note: See TracBrowser for help on using the repository browser.