source: multimedia/libdriv/pipewire.xml@ 4ae96f8

11.2 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/soup3 xry111/xf86-video-removal
Last change on this file since 4ae96f8 was 4ae96f8, checked in by Xi Ruoyao <xry111@…>, 22 months ago

pipewire: add WirePlumber an as external optional dependency

Currently we only build pipewire for satisfying GNOME building
dependency. I've switched to use Pipewire instead of Pulseaudio as the
audio daemon on my system. For the Pipewire daemon to function
properly, a Pipewire session manager is needed. The upstream recommends
to use WirePlumber.

It's too early to provide instruction for running a Pipewire daemon in
the book, but we can list the external dependency as it does no harm.

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