pipewire/spa/plugins/alsa/acp
Wim Taymans 96cfc9bc1a alsa-ucm: Make one input/output mapping per UCM device
PulseAudio combines UCM devices that have the same PlaybackPCM or
CapturePCM value into a single mapping with multiple ports. It also
creates ports in the same mapping for each valid combination of those
UCM devices.

Since mappings are the things we put in profiles, we can put in a
profile either all devices of a joint mapping or none of them. This
causes some complications with device conflicts. For example, a
different UCM device might be marked as conflicting with some (but not
all) of the devices in a joint mapping. In this case we can do one of
three things:

- Include all devices in one profile, and hope the conflicting device
  isn't chosen as the mapping's active port. We shouldn't do this as it
  puts conflicting devices in the same profile.

- Make one profile with the joint group, and one with the other device.
  This is somewhat acceptable as we have no conflicts, but we sacrifice
  some compatible combinations of devices.

- Do not group the devices into the same mapping, and make one profile
  for each compatible combination of devices. This appears to be the
  best option, one where we can always have the maximum number of
  working devices.

This patch chooses the third option and makes one input and/or output
mapping per UCM device, by using UCM device names instead of PCM device
strings in the mapping names.

Signed-off-by: Alper Nebi Yasak <alpernebiyasak@gmail.com>
2023-03-20 16:36:40 +01:00
..
acp.c alsa-ucm: Set profiles by their struct instance, not their name 2023-03-20 15:13:41 +01:00
acp.h treewide: use SPDX tags to specify copyright information 2023-02-16 10:54:48 +00:00
alsa-mixer.c acp: add debug for open and close 2022-08-05 12:31:28 +02:00
alsa-mixer.h alsa-ucm: Let profiles know their associated UCM verb 2023-03-20 15:18:12 +01:00
alsa-ucm.c alsa-ucm: Make one input/output mapping per UCM device 2023-03-20 16:36:40 +01:00
alsa-ucm.h alsa-ucm: Let profiles know their associated UCM verb 2023-03-20 15:18:12 +01:00
alsa-util.c alsa-mixer: allow to re-attach the mixer control element 2023-03-20 13:19:51 +01:00
alsa-util.h acp: add debug for open and close 2022-08-05 12:31:28 +02:00
array.h treewide: use SPDX tags to specify copyright information 2023-02-16 10:54:48 +00:00
card.h acp: add option to set Pro Audio channels 2023-01-31 15:59:39 +01:00
channelmap.h acp: don't mix non-AUX and AUX channels 2022-06-02 12:54:04 +02:00
compat.c spa: alsa: Fix build warning 2021-10-25 07:26:15 +00:00
compat.h Revert "acp: sync with pulseaudio" 2022-07-11 10:03:01 +02: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 alsa-acp: Add libacp based card device 2020-07-06 12:20:09 +02:00
device-port.h Fix typos 2021-04-30 07:40:20 +00:00
dynarray.h treewide: use SPDX tags to specify copyright information 2023-02-16 10:54:48 +00:00
hashmap.h treewide: use SPDX tags to specify copyright information 2023-02-16 10:54:48 +00:00
idxset.h alsa-ucm: Rewrite conformant device group generation with idxsets 2023-03-20 16:28:32 +01:00
llist.h alsa-acp: Add libacp based card device 2020-07-06 12:20:09 +02:00
meson.build treewide: meson.build: use dependency variable for SPA 2021-12-28 18:34:06 +01:00
proplist.h treewide: use SPDX tags to specify copyright information 2023-02-16 10:54:48 +00:00
volume.h acp: add support for soft volume 2020-07-06 17:22:42 +02:00