pipewire/spa/plugins
Daniel Nouri f030e1dc03 alsa: Enable IEC958 switches on device activation
IEC958 (S/PDIF, HDMI, DisplayPort) switches default to muted in ALSA
drivers, causing no audio output on digital devices.

While UCM configurations and mixer paths can handle IEC958 unmuting,
several scenarios lack coverage:
- Pro-audio profiles (bypass UCM and mixer paths by design)
- Devices without UCM configurations
- Devices with incomplete mixer path definitions
- Cards with multiple HDMI/DP outputs (indexed switches)

This ensures IEC958 switches are enabled during device activation and
port changes. The implementation uses the device mixer when available,
falls back to the card mixer for pro-audio profiles, and enables all
IEC958 switches regardless of index.

Safe for all configurations: the operation is idempotent and provides
defense-in-depth even when UCM or mixer paths handle it correctly.

Tested on AMD Rembrandt GPU with 3 HDMI outputs in pro-audio mode.
2025-10-31 08:22:44 +00:00
..
aec spa: aec: webrtc: Expose echo canceller mobile_mode 2025-07-09 13:02:18 -04:00
alsa alsa: Enable IEC958 switches on device activation 2025-10-31 08:22:44 +00:00
audioconvert adapter: only recheck formats when convert EnumFormat changed 2025-10-30 17:41:24 +01:00
audiomixer Add support for mappable buffers in mixer-dsp 2025-10-04 10:04:50 +00:00
audiotestsrc spa: use safe IO_Control parsing 2025-07-31 11:23:30 +02:00
avb modules: support audio.layout where we can 2025-10-30 12:29:31 +01:00
bluez5 treewide: remove some obsolete channel checks 2025-10-24 10:31:45 +02:00
control control: unit test for event sort 2025-09-17 13:42:12 +02:00
ffmpeg spa: use log topics everywhere 2024-03-11 18:45:21 +02:00
filter-graph spa: make a function to make a channel short name 2025-10-22 13:04:53 +02:00
jack *: don't include standard C headers inside of extern "C" 2025-05-30 09:48:28 +01:00
libcamera spa: libcamera: device: adapt to libcamera change 2025-10-08 13:23:11 +02:00
support modules: support audio.layout where we can 2025-10-30 12:29:31 +01:00
test spa: make the wave, pattern and ditherType Int 2025-06-13 10:06:09 +02:00
v4l2 treewide: map SPA_PROP_exposure to V4L2_CID_EXPOSURE_ABSOLUTE 2025-09-05 17:26:44 +02:00
videoconvert audioadapter: renegotiate when driver changes 2025-10-28 08:32:03 +01:00
videotestsrc loop: spa_loop_invoke -> spa_loop_locked where possible 2025-05-30 11:59:35 +02:00
volume treewide: access the position information using helpers 2025-10-21 13:06:25 +02:00
vulkan spa: vulkan: map VK_INCOMPLETE to ENOSPC 2025-07-12 19:54:14 +00:00
meson.build filter-chain: move the filter-graph to plugins 2024-11-13 11:12:06 +01:00