pipewire/spa/plugins/alsa/acp
Wim Taymans fb74ab9054 alsa: add volume limits
Add 3 levels of volume limits.

1. Add api.acp.min-volume and api.acp.max-valume on the ACP devices that
   is applied to all noded from this device
2. Add api.acp.device.<node-name>.min-volume and
   api.acp.device.<node-name>.max-volume that is applied to all nodes
   from the device with the given node-name.
3. Add api.acp.port.<port-name>.min-volume and
   api.acp.port.<port-name>.max-volume that is applied to all ports
   from the device with the given port-name.

The volume settings on an ALSA nodes can either go through the device on
the Routes (ports) to control the hardware mixer volumes and then the
remainder is performed on the nodes in software by the channel mixer.

We need to set the limits on the channel mixer when the hardware mixer
does not have routes.

This is not an easy way to set the volume limits but it provides a
static configuration option to enforce the limits. An easier
configuration option will also make it easier to change/bypass the
limits, which these options can guard against.

See #5266, #4323, #1517
2026-06-08 10:46:56 +02:00
..
acp.c alsa: add volume limits 2026-06-08 10:46:56 +02:00
acp.h spa: alsa: Read and expose channel count and position from ELD 2025-10-10 09:34:43 +00:00
alsa-mixer.c alsa: fix warning 2026-06-06 21:24:47 +02:00
alsa-mixer.h spa: alsa: Detect ports for HDMI AC3 profiles 2026-06-05 19:05:47 -07:00
alsa-ucm.c spa: alsa: fix some coverity warnings 2025-06-14 14:38:26 +03:00
alsa-ucm.h spa: acp: indicate ALSA UCM profile errors in UIs 2025-03-13 21:25:55 +00:00
alsa-util.c spa: alsa: Detect ports for HDMI AC3 profiles 2026-06-05 19:05:47 -07:00
alsa-util.h spa: alsa: Detect ports for HDMI AC3 profiles 2026-06-05 19:05:47 -07:00
array.h *: don't include standard C headers inside of extern "C" 2025-05-30 09:48:28 +01:00
card.h alsa: add volume limits 2026-06-08 10:46:56 +02:00
channelmap.h acp: use global max channels if defined 2025-10-24 17:16:03 +02:00
compat.c alsa: add volume limits 2026-06-08 10:46:56 +02:00
compat.h spa/plugins/alsa/acp/compat.h: p is already const do not recast 2026-03-17 03:17:15 +11:00
conf-parser.c config.h is a local header, not a system one 2021-06-10 09:04:16 +10:00
conf-parser.h
device-port.h alsa: add volume limits 2026-06-08 10:46:56 +02:00
dynarray.h *: don't include standard C headers inside of extern "C" 2025-05-30 09:48:28 +01:00
hashmap.h *: don't include standard C headers inside of extern "C" 2025-05-30 09:48:28 +01:00
idxset.h *: don't include standard C headers inside of extern "C" 2025-05-30 09:48:28 +01:00
llist.h
meson.build treewide: meson.build: use dependency variable for SPA 2021-12-28 18:34:06 +01:00
proplist.h treewide: avoid unitialized spa_dict::flags 2026-06-04 21:35:47 +02:00
volume.h *: don't include standard C headers inside of extern "C" 2025-05-30 09:48:28 +01:00