doc: add reference docs + index for config and env variables

Add reference documentation for configuration settings & node/device
properties.  We should have boring & exhaustive reference lists of all
the options, and an index where they can be looked up as needed.

The content is mostly stolen from the Wiki.

Add pipewire-client.conf.5, pipewire-jack.conf.5, and pipewire-device.7
that try to explain all available configuration settings for native/ALSA/JACK
clients, and parameters & properties devices.

Expand pipewire.conf.5 and pipewire-pulse.conf.5 with lists of supported
properties. Also explain environment variables.

Doxygen doesn't have an indexing mechanism suitable for configuration
settings, so add a simple one using an input filter and use it here.

Tweak styling a bit.
This commit is contained in:
Pauli Virtanen 2023-12-09 18:34:56 +02:00
parent 715315cbcd
commit fd58eec7f8
14 changed files with 2237 additions and 13 deletions

View file

@ -2,6 +2,8 @@
The PipeWire Pulseaudio server configuration file
\tableofcontents
# SYNOPSIS
*$XDG_CONFIG_HOME/pipewire/pipewire-pulse.conf*
@ -26,6 +28,14 @@ settings.
# CONFIGURATION FILE SECTIONS
\par stream.properties
Dictionary. These properties configure the PipeWire Pulseaudio server
properties.
\par stream.rules
Dictionary. These properties configure the PipeWire Pulseaudio server
properties.
\par pulse.properties
Dictionary. These properties configure the PipeWire Pulseaudio server
properties.
@ -43,6 +53,129 @@ for the detailed description.
In addition, the general PipeWire daemon configuration sections apply,
see \ref page_man_pipewire_conf_5 "pipewire.conf(5)".
# STREAM PROPERTIES @IDX@ pipewire-pulse.conf
The `stream.properties` section contains properties for streams created
by the pipewire-pulse server.
Available options are described in
\ref client_conf__stream_properties "pipewire-client.conf(5) stream.properties".
Some of these properties map to the PulseAudio `/etc/pulse/default.pa` config entries as follows:
| PulseAudio | PipeWire | Notes |
| ------------------------------ | --------------------- | -------------------- |
| remixing-use-all-sink-channels | channelmix.upmix | |
| remixing-produce-lfe | channelmix.lfe-cutoff | Set to > 0 to enable |
| remixing-consume-lfe | channelmix.mix-lfe | |
| lfe-crossover-freq | channelmix.lfe-cutoff | |
## Example
```css
pulse.properties = {
#node.latency = 1024/48000
#node.autoconnect = true
#resample.disable = false
#resample.quality = 4
#monitor.channel-volumes = false
#channelmix.disable = false
#channelmix.min-volume = 0.0
#channelmix.max-volume = 10.0
#channelmix.normalize = false
#channelmix.mix-lfe = true
#channelmix.upmix = true
#channelmix.upmix-method = psd # none, simple
#channelmix.lfe-cutoff = 150.0
#channelmix.fc-cutoff = 12000.0
#channelmix.rear-delay = 12.0
#channelmix.stereo-widen = 0.0
#channelmix.hilbert-taps = 0
#dither.noise = 0
#dither.method = none # rectangular, triangular, triangular-hf, wannamaker3, shaped5
#debug.wav-path = ""
}
```
# STREAM RULES @IDX@ pipewire-pulse.conf
The `stream.rules` section works the same as
\ref client_conf__stream_rules "pipewire-client.conf(5) stream.rules".
# PULSEAUDIO PROPERTIES @IDX@ pipewire-pulse.conf
For `pulse.properties` section,
see \ref page_module_protocol_pulse "libpipewire-module-protocol-pulse(7)"
for available options.
# PULSEAUDIO RULES @IDX@ pipewire-pulse.conf
For each client, a set of rules can be written in `pulse.rules`
section to configure quirks of the client or to force some pulse
specific stream configuration.
The general look of this section is as follows and follows the layout of
\ref pipewire_conf__match_rules "match rules, see pipewire(1)".
See \ref page_module_protocol_pulse "libpipewire-module-protocol-pulse(7)"
for available options.
## Example
```css
pulse.rules = [
{
# skype does not want to use devices that don't have an S16 sample format.
matches = [
{ application.process.binary = "teams" }
{ application.process.binary = "teams-insiders" }
{ application.process.binary = "skypeforlinux" }
]
actions = { quirks = [ force-s16-info ] }
}
{
# speech dispatcher asks for too small latency and then underruns.
matches = [ { application.name = "~speech-dispatcher*" } ]
actions = {
update-props = {
pulse.min.req = 1024/48000 # 21ms
pulse.min.quantum = 1024/48000 # 21ms
}
}
}
]
```
# PULSEAUDIO COMMANDS @IDX@ pipewire-pulse.conf
As part of the server startup procedure you can execute some
additional commands with the `pulse.cmd` section in
`pipewire-pulse.conf`.
```css
...
pulse.cmd = [
{ cmd = "load-module" args = "module-always-sink" flags = [ ] }
{ cmd = "load-module" args = "module-switch-on-connect" }
{ cmd = "load-module" args = "module-gsettings" flags = [ "nofail" ] }
]
...
```
Additional commands can also be run via the
\ref pipewire_conf__context_exec "context.exec section, see pipewire.conf(5)".
Supported commands:
@PAR@ pipewire-pulse.conf load-module
Load the specified Pulseaudio module on startup, as if using **pactl(1)**
to load the module.
# PULSEAUDIO MODULES @IDX@ pipewire-pulse.conf
For contents of section `pulse.modules`,
see \ref page_man_pipewire-pulse-modules_7 "pipewire-pulse-modules(7)".
# AUTHORS
The PipeWire Developers <$(PACKAGE_BUGREPORT)>;