doc: sync with master branch

Pick relevant doc updates.

doc: fix DoxygenLayout.xml for doxygen 1.10
doc: add reference docs + index for config and env variables
doc: add some more coverage
doc: move config man pages under config/
doc: add sections to index, clarify discussion of properties
doc: disable dot graphs in API docs again
doc: some updates
doc: fix up example dependencies in meson
This commit is contained in:
Pauli Virtanen 2024-02-17 18:56:31 +02:00
parent 876c3f43ab
commit 030768ab8e
20 changed files with 2600 additions and 185 deletions

View file

@ -3,10 +3,7 @@
Manual pages:
- \subpage page_man_pipewire_1
- \subpage page_man_pipewire_conf_5
- \subpage page_man_pipewire-pulse_1
- \subpage page_man_pipewire-pulse_conf_5
- \subpage page_man_pipewire-pulse-modules_7
- \subpage page_man_pw-cat_1
- \subpage page_man_pw-cli_1
- \subpage page_man_pw-config_1
@ -27,4 +24,3 @@ Manual pages:
- \subpage page_man_spa-json-dump_1
- \subpage page_man_spa-monitor_1
- \subpage page_man_spa-resample_1
- \subpage page_man_libpipewire-modules_7

View file

@ -1,44 +0,0 @@
\page page_man_libpipewire-modules_7 libpipewire-modules
PipeWire modules
# DESCRIPTION
A PipeWire module is effectively a PipeWire client running inside
`pipewire(1)` which can host multiple modules. Usually modules are
loaded when they are listed in the configuration files. For example the
default configuration file loads several modules:
context.modules = [
...
# The native communication protocol.
{ name = libpipewire-module-protocol-native }
# The profile module. Allows application to access profiler
# and performance data. It provides an interface that is used
# by pw-top and pw-profiler.
{ name = libpipewire-module-profiler }
# Allows applications to create metadata objects. It creates
# a factory for Metadata objects.
{ name = libpipewire-module-metadata }
# Creates a factory for making devices that run in the
# context of the PipeWire server.
{ name = libpipewire-module-spa-device-factory }
...
]
# KNOWN MODULES
$(LIBPIPEWIRE_MODULES)
# AUTHORS
The PipeWire Developers <$(PACKAGE_BUGREPORT)>;
PipeWire is available from <$(PACKAGE_URL)>
# SEE ALSO
\ref page_man_pipewire_1 "pipewire(1)",
\ref page_man_pipewire_conf_5 "pipewire.conf(5)"

View file

@ -1,20 +0,0 @@
\page page_man_pipewire-pulse-modules_7 pipewire-pulse-modules
PipeWire Pulseaudio modules
# DESCRIPTION
\include{doc} pulse-modules.inc
# BUILT-IN MODULES
$(PIPEWIRE_PULSE_MODULES)
# AUTHORS
The PipeWire Developers <$(PACKAGE_BUGREPORT)>;
PipeWire is available from <$(PACKAGE_URL)>
# SEE ALSO
\ref page_man_pipewire-pulse_1 "pipewire-pulse(1)"

View file

@ -28,6 +28,24 @@ Show version information.
\par -c | \--config=FILE
Load the given config file (Default: pipewire-pulse.conf).
# ENVIRONMENT VARIABLES
The generic \ref pipewire-env "pipewire(1) environment variables"
are supported.
In addition:
@PAR@ pulse-env PULSE_RUNTIME_PATH
@PAR@ pulse-env XDG_RUNTIME_DIR
Directory where to create the native protocol pulseaudio socket.
@PAR@ pulse-env PULSE_LATENCY_MSEC
Extra buffering latency in milliseconds. This controls buffering
logic in `libpulse` and may be set for PulseAudio client applications
to adjust their buffering. (Setting it on the `pipewire-pulse` server
has no effect.)
# AUTHORS
The PipeWire Developers <$(PACKAGE_BUGREPORT)>;

View file

@ -1,56 +0,0 @@
\page page_man_pipewire-pulse_conf_5 pipewire-pulse.conf
The PipeWire Pulseaudio server configuration file
# SYNOPSIS
*$XDG_CONFIG_HOME/pipewire/pipewire-pulse.conf*
*$(PIPEWIRE_CONFIG_DIR)/pipewire-pulse.conf*
*$(PIPEWIRE_CONFDATADIR)/pipewire-pulse.conf*
*$(PIPEWIRE_CONFDATADIR)/pipewire-pulse.conf.d/*
*$(PIPEWIRE_CONFIG_DIR)/pipewire-pulse.conf.d/*
*$XDG_CONFIG_HOME/pipewire/pipewire-pulse.conf.d/*
# DESCRIPTION
Configuration for PipeWire's PulseAudio-compatible daemon.
The configuration file format is the same as for `pipewire.conf(5)`.
There are additional sections for configuring `pipewire-pulse(1)`
settings.
# CONFIGURATION FILE SECTIONS
\par pulse.properties
Dictionary. These properties configure the PipeWire Pulseaudio server
properties.
\par pulse.cmd
Array of dictionaries. A set of commands to be executed on startup.
\par pulse.rules
Array of dictionaries. A set of match rules and actions to apply to
clients.
See \ref page_module_protocol_pulse "libpipewire-module-protocol-pulse(7)"
for the detailed description.
In addition, the general PipeWire daemon configuration sections apply,
see \ref page_man_pipewire_conf_5 "pipewire.conf(5)".
# AUTHORS
The PipeWire Developers <$(PACKAGE_BUGREPORT)>;
PipeWire is available from <$(PACKAGE_URL)>
# SEE ALSO
\ref page_module_protocol_pulse "libpipewire-module-protocol-pulse(7)",
\ref page_man_pipewire_conf_5 "pipewire.conf(5)",
\ref page_man_pipewire-pulse_1 "pipewire-pulse(1)",
\ref page_man_pipewire-pulse-modules_7 "pipewire-pulse-modules(7)"

View file

@ -2,6 +2,8 @@
The PipeWire media server
\tableofcontents
# SYNOPSIS
**pipewire** \[*options*\]
@ -29,6 +31,204 @@ Show version information.
\par -c | \--config=FILE
Load the given config file (Default: pipewire.conf).
# RUNTIME SETTINGS @IDX@ pipewire
A PipeWire daemon will also expose a settings metadata object that can
be used to change some settings at runtime.
Normally these settings can bypass any of the restrictions listed in
the config options above, such as quantum and samplerate values.
The settings can be modified using \ref page_man_pw-metadata_1 "pw-metadata(1)":
```
pw-metadata -n settings # list settings
pw-metadata -n settings 0 # list server settings
pw-metadata -n settings 0 log.level 2 # modify a server setting
```
@PAR@ pipewire-settings log.level = INTEGER
Change the log level of the PipeWire daemon.
@PAR@ pipewire-settings clock.rate = INTEGER
The default samplerate.
@PAR@ pipewire-settings clock.allowed-rates = [ RATE1 RATE2... ]
The allowed samplerates.
@PAR@ pipewire-settings clock.force-rate = INTEGER
\parblock
Temporarily forces the graph to operate in a fixed sample rate.
Both DSP processing and devices will switch to the new rate immediately.
Running streams (PulseAudio, native and ALSA applications) will automatically
resample to match the new rate.
Set the value to 0 to allow the sample rate to vary again.
\endparblock
@PAR@ pipewire-settings clock.quantum = INTEGER
The default quantum (buffer size).
@PAR@ pipewire-settings clock.min-quantum = INTEGER
Smallest quantum to be used.
@PAR@ pipewire-settings clock.max-quantum = INTEGER
Largest quantum to be used.
@PAR@ pipewire-settings clock.force-quantum = INTEGER
\parblock
Temporarily force the graph to operate in a fixed quantum.
Set the value to 0 to allow the quantum to vary again.
\endparblock
# ENVIRONMENT VARIABLES @IDX@ pipewire-env
## Socket directories
@PAR@ pipewire-env PIPEWIRE_RUNTIME_DIR
@PAR@ pipewire-env XDG_RUNTIME_DIR
@PAR@ pipewire-env USERPROFILE
Used to find the PipeWire socket on the server (and native clients).
@PAR@ pipewire-env PIPEWIRE_CORE
Name of the socket to make.
@PAR@ pipewire-env PIPEWIRE_REMOTE
Name of the socket to connect to.
@PAR@ pipewire-env PIPEWIRE_DAEMON
If set to true then the process becomes a new PipeWire server.
## Config directories, config file name and prefix
@PAR@ pipewire-env PIPEWIRE_CONFIG_DIR
@PAR@ pipewire-env XDG_CONFIG_HOME
@PAR@ pipewire-env HOME
Used to find the config file directories.
@PAR@ pipewire-env PIPEWIRE_CONFIG_PREFIX
@PAR@ pipewire-env PIPEWIRE_CONFIG_NAME
Used to override the application provided
config prefix and config name.
@PAR@ pipewire-env PIPEWIRE_NO_CONFIG
Enables (false) or disables (true) overriding on the default configuration.
## Context information
As part of a client context, the following information is collected
from environment variables and placed in the context properties:
@PAR@ pipewire-env LANG
The current language in `application.language`.
@PAR@ pipewire-env XDG_SESSION_ID
Set as the `application.process.session-id` property.
@PAR@ pipewire-env DISPLAY
Is set as the `window.x11.display` property.
## Modules
@PAR@ pipewire-env PIPEWIRE_MODULE_DIR
Sets the directory where to find PipeWire modules.
@PAR@ pipewire-env SPA_SUPPORT_LIB
The name of the SPA support lib to load. This can be used to switch to
an alternative support library, for example, to run on the EVL realtime kernel.
## Logging options
@PAR@ pipewire-env JOURNAL_STREAM
Is used to parse the stream used for the journal. This is usually configured by
systemd.
@PAR@ pipewire-env PIPEWIRE_LOG_LINE
Enables the logging of line numbers. Default true.
@PAR@ pipewire-env PIPEWIRE_LOG
Specifies a log file to use instead of the default logger.
@PAR@ pipewire-env PIPEWIRE_LOG_SYSTEMD
Enables the use of systemd for the logger, default true.
## Other settings
@PAR@ pipewire-env PIPEWIRE_CPU
Selects the CPU and flags. This is a bitmask of any of the \ref CPU flags
@PAR@ pipewire-env PIPEWIRE_VM
Selects the Virtual Machine PipeWire is running on. This can be any of the \ref CPU "VM"
types.
@PAR@ pipewire-env DISABLE_RTKIT
Disables the use of RTKit or the Realtime Portal for realtime scheduling.
@PAR@ pipewire-env NO_COLOR
Disables the use of colors in the console output.
## Debugging options
@PAR@ pipewire-env PIPEWIRE_DLCLOSE
Enables (true) or disables (false) the use of dlclose when a shared library
is no longer in use. When debugging, it might make sense to disable dlclose to be able to get
debugging symbols from the object.
## Stream options
@PAR@ pipewire-env PIPEWIRE_NODE
Makes a stream connect to a specific `object.serial` or `node.name`.
@PAR@ pipewire-env PIPEWIRE_PROPS
Adds extra properties to a stream or filter.
@PAR@ pipewire-env PIPEWIRE_QUANTUM
Forces a specific rate and buffer-size for the stream or filter.
@PAR@ pipewire-env PIPEWIRE_LATENCY
Sets a specific latency for a stream or filter. This is only a suggestion but
the configured latency will not be larger.
@PAR@ pipewire-env PIPEWIRE_RATE
Sets a rate for a stream or filter. This is only a suggestion. The rate will be
switched when the graph is idle.
@PAR@ pipewire-env PIPEWIRE_AUTOCONNECT
Overrides the default stream autoconnect settings.
## Plugin options
@PAR@ pipewire-env SPA_PLUGIN_DIR
Is used to locate SPA plugins.
@PAR@ pipewire-env SPA_DATA_DIR
Is used to locate plugin specific config files. This is used by the
bluetooth plugin currently to locate the quirks database.
@PAR@ pipewire-env SPA_DEBUG
Set the log level for SPA plugins. This is usually controlled by the `PIPEWIRE_DEBUG` variable
when the plugins are managed by PipeWire but some standalone tools (like spa-inspect) uses this
variable.
@PAR@ pipewire-env ACP_BUILDDIR
If set, the ACP profiles are loaded from the builddir.
@PAR@ pipewire-env ACP_PATHS_DIR
@PAR@ pipewire-env ACP_PROFILES_DIR
Used to locate the ACP paths and profile directories respectively.
@PAR@ pipewire-env LADSPA_PATH
Comma separated list of directories where the ladspa plugins can be found.
@PAR@ pipewire-env LIBJACK_PATH
Directory where the jack1 or jack2 libjack.so can be found.
# AUTHORS
The PipeWire Developers <$(PACKAGE_BUGREPORT)>;

View file

@ -1,102 +0,0 @@
\page page_man_pipewire_conf_5 pipewire.conf
The PipeWire server configuration file
# SYNOPSIS
*$XDG_CONFIG_HOME/pipewire/pipewire.conf*
*$(PIPEWIRE_CONFIG_DIR)/pipewire.conf*
*$(PIPEWIRE_CONFDATADIR)/pipewire.conf*
*$(PIPEWIRE_CONFDATADIR)/pipewire.conf.d/*
*$(PIPEWIRE_CONFIG_DIR)/pipewire.conf.d/*
*$XDG_CONFIG_HOME/pipewire/pipewire.conf.d/*
# DESCRIPTION
PipeWire is a service that facilitates sharing of multimedia content
between devices and applications.
On startup, the daemon reads a main configuration file to configure
itself. It executes a series of commands listed in the config file.
The config files are loaded in the order listed in the
[SYNOPSIS](#synopsis). The environment variables `PIPEWIRE_CONFIG_DIR`,
`PIPEWIRE_CONFIG_PREFIX` and `PIPEWIRE_CONFIG_NAME` can be used to
specify an alternative config directory, subdirectory and file
respectively.
Next to the configuration file can be a directory with the same name as
the file with a `.d/` suffix. All directories in the
[SYNOPSIS](#synopsis) directory search paths are traversed in the listed
order and the contents of the `*.conf` files inside them are appended to
the main configuration file as overrides. Object sections are merged and
array sections are appended.
# CONFIGURATION FILE FORMAT
The configuration file format is grouped into sections. A section is
either a dictionary, {}, or an array, \[\]. Dictionary and array entries
are separated by whitespace and may be simple value assignment, an array
or a dictionary. For example:
```
name = value # simple assignment
name = { key1 = value1 key2 = value2 } # a dictionary with two entries
name = [ value1 value2 ] # an array with two entries
name = [ { k = v1 } { k = v2 } ] # an array of dictionaries
```
The configuration files can be expressed in full JSON syntax but for
ease of use, a relaxed format may be used where:
- `:` to delimit keys and values can be substuted by `=` or a space.
- <tt>\"</tt> around keys and string can be omitted as long as no special
characters are used in the strings.
- `,` to separate objects can be replaced with a whitespace character.
- `#` can be used to start a comment until the line end
# CONFIGURATION FILE SECTIONS
\par context.properties
Dictionary. These properties configure the PipeWire instance.
\par context.spa-libs
Dictionary. Maps plugin features with globs to a spa library.
\par context.modules
Array of dictionaries. Each entry in the array is a dictionary with the
*name* of the module to load, including optional *args* and *flags*.
Most modules support being loaded multiple times.
\par context.objects
Array of dictionaries. Each entry in the array is a dictionary
containing the *factory* to create an object from and optional extra
arguments specific to that factory.
\par context.exec
\parblock
Array of dictionaries. Each entry in the array is dictionary containing
the *path* of a program to execute on startup and optional *args*.
This array used to contain an entry to start the session manager but
this mode of operation has since been demoted to development aid. Avoid
starting a session manager in this way in production environment.
\endparblock
# AUTHORS
The PipeWire Developers <$(PACKAGE_BUGREPORT)>;
PipeWire is available from <$(PACKAGE_URL)>
# SEE ALSO
\ref page_man_pipewire_1 "pipewire(1)",
\ref page_man_pw-mon_1 "pw-mon(1)",
\ref page_man_libpipewire-modules_7 "libpipewire-modules(7)"