mirror of
https://github.com/Zeckmathederg/glfs.git
synced 2025-02-13 23:49:15 +08:00
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.
594 lines
19 KiB
XML
594 lines
19 KiB
XML
<?xml version="1.0" encoding="ISO-8859-1"?>
|
|
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
|
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
|
|
<!ENTITY % general-entities SYSTEM "../../general.ent">
|
|
%general-entities;
|
|
|
|
<!ENTITY pipewire-download-http "https://github.com/PipeWire/pipewire/archive/&pipewire-version;/pipewire-&pipewire-version;.tar.gz">
|
|
<!ENTITY pipewire-download-ftp " ">
|
|
<!ENTITY pipewire-md5sum "489aa4ab3b404a4c489c5b2ebcaeae2c">
|
|
<!ENTITY pipewire-size "1.7 MB">
|
|
<!ENTITY pipewire-buildsize "151 MB (with tests)">
|
|
<!ENTITY pipewire-time "0.4 SBU (with tests, both using parallelism=4)">
|
|
]>
|
|
|
|
<sect1 id="pipewire" xreflabel="pipewire-&pipewire-version;">
|
|
<?dbhtml filename="pipewire.html"?>
|
|
|
|
<sect1info>
|
|
<date>$Date$</date>
|
|
</sect1info>
|
|
|
|
<title>Pipewire-&pipewire-version;</title>
|
|
|
|
<indexterm zone="pipewire">
|
|
<primary sortas="a-pipewire">pipewire</primary>
|
|
</indexterm>
|
|
|
|
<sect2 role="package">
|
|
<title>Introduction to Pipewire</title>
|
|
|
|
<para>
|
|
The <application>pipewire</application> package contains a server and
|
|
user-space API to handle multimedia pipelines. This includes a universal
|
|
API to connect to multimedia devices, as well as sharing multimedia
|
|
files between applications.
|
|
</para>
|
|
|
|
&lfs111_checked;
|
|
|
|
<bridgehead renderas="sect3">Package Information</bridgehead>
|
|
<itemizedlist spacing="compact">
|
|
<listitem>
|
|
<para>
|
|
Download (HTTP): <ulink url="&pipewire-download-http;"/>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Download (FTP): <ulink url="&pipewire-download-ftp;"/>
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Download MD5 sum: &pipewire-md5sum;
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Download size: &pipewire-size;
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Estimated disk space required: &pipewire-buildsize;
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Estimated build time: &pipewire-time;
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<bridgehead renderas="sect3">Pipewire Dependencies</bridgehead>
|
|
|
|
<bridgehead renderas="sect4">Recommended</bridgehead>
|
|
<para role="recommended">
|
|
<xref linkend="bluez"/>,
|
|
<xref linkend="gstreamer10"/>,
|
|
<xref linkend="gst10-plugins-base"/>,
|
|
<xref linkend="libva"/>,
|
|
<xref linkend="pulseaudio"/>,
|
|
<xref linkend="sbc"/>,
|
|
<xref linkend="sdl2"/>, and
|
|
<xref linkend="v4l-utils"/>
|
|
</para>
|
|
|
|
<bridgehead renderas="sect4">Optional</bridgehead>
|
|
<para role="optional">
|
|
<xref linkend="ffmpeg"/>,
|
|
<xref linkend="valgrind"/>,
|
|
<xref linkend="doxygen"/> and
|
|
<xref linkend="graphviz"/> (for documentation),
|
|
<ulink url="https://jackaudio.org/">JACK</ulink>,
|
|
<ulink url="https://github.com/EHfive/ldacBT">ldacBT</ulink>,
|
|
<ulink url="https://libcamera.org/">libcamera</ulink>,
|
|
<ulink url="https://vulkan.lunarg.com/sdk/home/">Vulkan</ulink>,
|
|
<ulink url="https://gitlab.freedesktop.org/pipewire/wireplumber/">WirePlumber</ulink>
|
|
(runtime, for running Pipewire daemon), and
|
|
<ulink url="https://sourceforge.net/projects/xmltoman/">xmltoman</ulink>
|
|
</para>
|
|
|
|
<para condition="html" role="usernotes">
|
|
User Notes: <ulink url="&blfs-wiki;/pipewire"/>
|
|
</para>
|
|
</sect2>
|
|
|
|
<sect2 role="installation">
|
|
<title>Installation of Pipewire</title>
|
|
|
|
<para>
|
|
Install <application>pipewire</application> by running the following
|
|
commands:
|
|
</para>
|
|
|
|
<screen><userinput>mkdir build &&
|
|
cd build &&
|
|
|
|
meson --prefix=/usr --buildtype=release -Dsession-managers= .. &&
|
|
ninja</userinput></screen>
|
|
|
|
<para>
|
|
To test the result, issue: <command>ninja test</command>.
|
|
</para>
|
|
|
|
<para>
|
|
Now, as the <systemitem class="username">root</systemitem> user:
|
|
</para>
|
|
|
|
<screen role="root"><userinput>ninja install</userinput></screen>
|
|
</sect2>
|
|
|
|
<sect2 role="commands">
|
|
<title>Command Explanations</title>
|
|
|
|
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
|
|
href="../../xincludes/meson-buildtype-release.xml"/>
|
|
|
|
<para>
|
|
<parameter>-Dsession-managers=</parameter>: This switch
|
|
prevents automatic downloading external dependencies.
|
|
</para>
|
|
|
|
<para>
|
|
<option>-Ddocs=true</option>: This switch enables the generation of HTML
|
|
documentation. The optional dependencies for documentation need to be
|
|
installed for this to work.
|
|
</para>
|
|
|
|
<para>
|
|
<option>-Dman=true</option>: This switch enables the generation of manual
|
|
pages. The optional dependencies for documentation need to be installed
|
|
for this to work.
|
|
</para>
|
|
</sect2>
|
|
|
|
<sect2 role="content">
|
|
<title>Contents</title>
|
|
|
|
<segmentedlist>
|
|
<segtitle>Installed Programs</segtitle>
|
|
<segtitle>Installed Libraries</segtitle>
|
|
<segtitle>Installed Directories</segtitle>
|
|
|
|
<seglistitem>
|
|
<seg>
|
|
pipewire,
|
|
<!--pipewire-media-session,-->
|
|
pipewire-pulse,
|
|
pw-cat,
|
|
pw-cli,
|
|
pw-dot,
|
|
pw-dump,
|
|
pw-jack,
|
|
pw-link,
|
|
pw-loopback,
|
|
pw-metadata,
|
|
pw-mididump,
|
|
pw-mon,
|
|
pw-profiler,
|
|
<!--pw-pulse,-->
|
|
pw-reserve,
|
|
pw-top,
|
|
pw-v4l2,
|
|
spa-acp-tool,
|
|
spa-inspect,
|
|
spa-json-dump,
|
|
spa-monitor,
|
|
spa-resample, and
|
|
pw-dsdplay, pw-midiplay, pw-midirecord, pw-play, and pw-record
|
|
(symlinks to pw-cat)
|
|
</seg>
|
|
<seg>
|
|
libpipewire-0.3.so and
|
|
30 modules below /usr/lib/pipewire-0.3<!--,
|
|
[pierre July 29th, 2020]: all the following libs are in subdirectories
|
|
of /usr/lib. I'm not sure they should appear. But if they should, there
|
|
are many more libs to list...
|
|
libpulse-mainloop-glib-pw.so,
|
|
libpulse.so,
|
|
libpulse-simple.so,
|
|
libasound_module_pcm_pipewire.so, and
|
|
libgstpipewire.so
|
|
[bdubbs Sep 29th, 2020]: add
|
|
libpipewire-module-{access,adapter,client-device,client-node,
|
|
link-factory,metadata,portal,profiler,protocol-native,
|
|
rtkit,session-manager,spa-device,spa-device-factory,spa-node,
|
|
spa-node-factory}.so
|
|
libasound_module_ctl_pipewire.so
|
|
libasound_module_pcm_pipewire.so
|
|
libspa-{alsa,audioconvert,audiomixer,bluez5,control,dbus,support
|
|
v4l2,videoconvert}.so
|
|
-->
|
|
</seg>
|
|
<seg>
|
|
<!--/etc/pipewire,-->
|
|
/usr/include/pipewire-0.3,
|
|
/usr/include/spa-0.2,
|
|
/usr/lib/alsa-lib,
|
|
<!--/usr/lib/gstreamer-1.0, already installed by gstreamer-->
|
|
/usr/lib/pipewire-0.3,
|
|
/usr/lib/spa-0.2,
|
|
/usr/share/alsa-card-profile,
|
|
/usr/share/pipewire, and
|
|
/usr/share/spa-0.2
|
|
</seg>
|
|
</seglistitem>
|
|
</segmentedlist>
|
|
|
|
<variablelist>
|
|
<bridgehead renderas="sect3">Short Descriptions</bridgehead>
|
|
<?dbfo list-presentation="list"?>
|
|
<?dbhtml list-presentation="table"?>
|
|
|
|
<varlistentry id="pipewire-prog">
|
|
<term><command>pipewire</command></term>
|
|
<listitem>
|
|
<para>
|
|
is a service that allows access to multimedia devices and allows
|
|
sharing of multimedia files between applications
|
|
</para>
|
|
<indexterm zone="pipewire pipewire-prog">
|
|
<primary sortas="b-pipewire">pipewire</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="pipewire-media-session">
|
|
<term><command>pipewire-media-session</command></term>
|
|
<listitem>
|
|
<para>
|
|
is a service that allows a desktop environment to know when media
|
|
files are being played through pipewire
|
|
</para>
|
|
<indexterm zone="pipewire pipewire-media-session">
|
|
<primary sortas="b-pipewire-media-session">pipewire-media-session</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="pipewire-pulse">
|
|
<term><command>pipewire-pulse</command></term>
|
|
<listitem>
|
|
<para>
|
|
starts a Pulseaudio-compatible version of
|
|
the pipewire service
|
|
</para>
|
|
<indexterm zone="pipewire pipewire-pulse">
|
|
<primary sortas="b-pipewire-pulse">pipewire-pulse</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="pw-cat">
|
|
<term><command>pw-cat</command></term>
|
|
<listitem>
|
|
<para>
|
|
allows you to play or record media using a pipewire instance
|
|
</para>
|
|
<indexterm zone="pipewire pw-cat">
|
|
<primary sortas="b-pw-cat">pw-cat</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="pw-cli">
|
|
<term><command>pw-cli</command></term>
|
|
<listitem>
|
|
<para>
|
|
allows you to interact with a pipewire instance
|
|
</para>
|
|
<indexterm zone="pipewire pw-cli">
|
|
<primary sortas="b-pw-cli">pw-cli</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="pw-dot">
|
|
<term><command>pw-dot</command></term>
|
|
<listitem>
|
|
<para>
|
|
lists all of the daemons and objects in use by pipewire
|
|
</para>
|
|
<indexterm zone="pipewire pw-dot">
|
|
<primary sortas="b-pw-dot">pw-dot</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="pw-dump">
|
|
<term><command>pw-dump</command></term>
|
|
<listitem>
|
|
<para>
|
|
dumps debug messages from a local or remote pipewire instance to
|
|
the console
|
|
</para>
|
|
<indexterm zone="pipewire pw-dump">
|
|
<primary sortas="b-pw-dump">pw-dump</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="pw-jack">
|
|
<term><command>pw-jack</command></term>
|
|
<listitem>
|
|
<para>
|
|
runs JACK applications on a pipewire instance
|
|
</para>
|
|
<indexterm zone="pipewire pw-jack">
|
|
<primary sortas="b-pw-jack">pw-jack</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="pw-link">
|
|
<term><command>pw-link</command></term>
|
|
<listitem>
|
|
<para>
|
|
links pipewire ports together
|
|
</para>
|
|
<indexterm zone="pipewire pw-link">
|
|
<primary sortas="b-pw-link">pw-link</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="pw-loopback">
|
|
<term><command>pw-loopback</command></term>
|
|
<listitem>
|
|
<para>
|
|
initializes a loopback link between two different pipewire ports.
|
|
This is useful for testing and debugging
|
|
</para>
|
|
<indexterm zone="pipewire pw-loopback">
|
|
<primary sortas="b-pw-loopback">pw-loopback</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="pw-metadata">
|
|
<term><command>pw-metadata</command></term>
|
|
<listitem>
|
|
<para>
|
|
inspects, adds, and removes metadata for objects
|
|
</para>
|
|
<indexterm zone="pipewire pw-metadata">
|
|
<primary sortas="b-pw-metadata">pw-metadata</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="pw-mididump">
|
|
<term><command>pw-mididump</command></term>
|
|
<listitem>
|
|
<para>
|
|
dumps MIDI messages from a file to the screen
|
|
</para>
|
|
<indexterm zone="pipewire pw-mididump">
|
|
<primary sortas="b-pw-mididump">pw-mididump</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="pw-mon">
|
|
<term><command>pw-mon</command></term>
|
|
<listitem>
|
|
<para>
|
|
allows you to monitor pipewire instances
|
|
</para>
|
|
<indexterm zone="pipewire pw-mon">
|
|
<primary sortas="b-pw-mon">pw-mon</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="pw-profiler">
|
|
<term><command>pw-profiler</command></term>
|
|
<listitem>
|
|
<para>
|
|
tracks memory usage and API calls used by pipewire
|
|
</para>
|
|
<indexterm zone="pipewire pw-profiler">
|
|
<primary sortas="b-pw-profiler">pw-profiler</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<!--
|
|
<varlistentry id="pw-pulse">
|
|
<term><command>pw-pulse</command></term>
|
|
<listitem>
|
|
<para>
|
|
runs Pulseaudio applications on pipewire.
|
|
</para>
|
|
<indexterm zone="pipewire pw-pulse">
|
|
<primary sortas="b-pw-pulse">pw-pulse</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
-->
|
|
|
|
<varlistentry id="pw-reserve">
|
|
<term><command>pw-reserve</command></term>
|
|
<listitem>
|
|
<para>
|
|
reserves or monitors a device via D-Bus
|
|
</para>
|
|
<indexterm zone="pipewire pw-reserve">
|
|
<primary sortas="b-pw-reserve">pw-reserve</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="pw-top">
|
|
<term><command>pw-top</command></term>
|
|
<listitem>
|
|
<para>
|
|
displays real-time performance information from pipewire
|
|
</para>
|
|
<indexterm zone="pipewire pw-top">
|
|
<primary sortas="b-pw-top">pw-top</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="pw-v4l2">
|
|
<term><command>pw-v4l2</command></term>
|
|
<listitem>
|
|
<para>
|
|
runs v4l2 applications on a pipewire instance
|
|
</para>
|
|
<indexterm zone="pipewire pw-v4l2">
|
|
<primary sortas="b-pw-v4l2">pw-v4l2</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="spa-acp-tool">
|
|
<term><command>spa-acp-tool</command></term>
|
|
<listitem>
|
|
<para>
|
|
inspects the card profile of a given sound card
|
|
</para>
|
|
<indexterm zone="pipewire spa-acp-tool">
|
|
<primary sortas="b-spa-acp-tool">spa-acp-tool</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="spa-inspect">
|
|
<term><command>spa-inspect</command></term>
|
|
<listitem>
|
|
<para>
|
|
allows you to inspect pipewire plugins
|
|
</para>
|
|
<indexterm zone="pipewire spa-inspect">
|
|
<primary sortas="b-spa-inspect">spa-inspect</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="spa-json-dump">
|
|
<term><command>spa-json-dump</command></term>
|
|
<listitem>
|
|
<para>
|
|
dumps the current pipewire configuration in JSON format.
|
|
</para>
|
|
<indexterm zone="pipewire spa-json-dump">
|
|
<primary sortas="b-spa-json-dump">spa-json-dump</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="spa-monitor">
|
|
<term><command>spa-monitor</command></term>
|
|
<listitem>
|
|
<para>
|
|
allows you to monitor pipewire plugins
|
|
</para>
|
|
<indexterm zone="pipewire spa-monitor">
|
|
<primary sortas="b-spa-monitor">spa-monitor</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="spa-resample">
|
|
<term><command>spa-resample</command></term>
|
|
<listitem>
|
|
<para>
|
|
resamples a given file
|
|
</para>
|
|
<indexterm zone="pipewire spa-resample">
|
|
<primary sortas="b-spa-resample">spa-resample</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="libpipewire">
|
|
<term><filename class="libraryfile">libpipewire-0.3.so</filename></term>
|
|
<listitem>
|
|
<para>
|
|
contains API functions for handling multimedia pipelines
|
|
</para>
|
|
<indexterm zone="pipewire libpipewire">
|
|
<primary sortas="c-libpipewire">libpipewire-0.3.so</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
<!--
|
|
<varlistentry id="libpulse-mainloop-glib-pw">
|
|
<term><filename class="libraryfile">libpulse-mainloop-glib-pw.so</filename></term>
|
|
<listitem>
|
|
<para>
|
|
provides a glib main() loop for pulseaudio to route media through
|
|
pipewire.
|
|
</para>
|
|
<indexterm zone="pipewire libpulse-mainloop-glib-pw">
|
|
<primary sortas="c-libpulse-mainloop-glib-pw">libpulse-mainloop-glib-pw.so</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="libpulse">
|
|
<term><filename class="libraryfile">libpulse.so</filename></term>
|
|
<listitem>
|
|
<para>
|
|
is a pipewire plugin for pulseaudio.
|
|
</para>
|
|
<indexterm zone="pipewire libpulse">
|
|
<primary sortas="c-libpulse">libpulse.so</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="libpulse-simple">
|
|
<term><filename class="libraryfile">libpulse-simple.so</filename></term>
|
|
<listitem>
|
|
<para>
|
|
is a simplified version of the pulseaudio plugin for pipewire.
|
|
</para>
|
|
<indexterm zone="pipewire libpulse-simple">
|
|
<primary sortas="c-libpulse-simple">libpulse-simple.so</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="libasound_module_pcm_pipewire">
|
|
<term><filename class="libraryfile">libasound_module_pcm_pipewire.so</filename></term>
|
|
<listitem>
|
|
<para>
|
|
is an ALSA plugin for pipewire.
|
|
</para>
|
|
<indexterm zone="pipewire libasound_module_pcm_pipewire">
|
|
<primary sortas="c-libasound_module_pcm_pipewire">libasound_module_pcm_pipewire.so</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="libgstpipewire">
|
|
<term><filename class="libraryfile">libgstpipewire.so</filename></term>
|
|
<listitem>
|
|
<para>
|
|
is a Gstreamer plugin for pipewire.
|
|
</para>
|
|
<indexterm zone="pipewire libgstpipewire">
|
|
<primary sortas="c-libgstpipewire">libgstpipewire.so</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>-->
|
|
</variablelist>
|
|
</sect2>
|
|
|
|
</sect1>
|