mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-24 07:00:05 -05:00
When selecting an HDMI/DisplayPort (IEC958) output path, the hardware
mute switch remains in kernel default state (muted), causing no audio
output despite correct software routing.
Root cause: pa_alsa_path_select() only sets mute switches when
mute_during_activation is enabled. No mixer paths enable this setting,
making the switch configuration code unreachable for IEC958 paths.
Solution: Always set mute switches to match device mute status after
path activation, regardless of mute_during_activation setting.
Testing: Added test-alsa-path-select tool to verify the fix.
- Loads mixer path and calls pa_alsa_path_select()
- Verifies switch states match expected values
- Tested on AMD Radeon HDMI and Realtek ALC257 analog
Manual verification:
- Before: IEC958 switch OFF, no audio
- After: IEC958 switch set correctly, audio works
This bug was inherited from PulseAudio's ALSA mixer path code where
HDMI path configurations lack IEC958 unmute sections.
Fixes: https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/3261
See-Also: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/issues/562
See-Also:
|
||
|---|---|---|
| .. | ||
| acp | ||
| mixer | ||
| 90-pipewire-alsa.rules | ||
| acp-tool.c | ||
| alsa-acp-device.c | ||
| alsa-compress-offload-device.c | ||
| alsa-compress-offload-sink.c | ||
| alsa-pcm-device.c | ||
| alsa-pcm-sink.c | ||
| alsa-pcm-source.c | ||
| alsa-pcm.c | ||
| alsa-pcm.h | ||
| alsa-seq-bridge.c | ||
| alsa-seq.c | ||
| alsa-seq.h | ||
| alsa-udev.c | ||
| alsa.c | ||
| alsa.h | ||
| compress-offload-api-util.c | ||
| compress-offload-api-util.h | ||
| compress-offload-api.c | ||
| compress-offload-api.h | ||
| meson.build | ||
| test-hw-params.c | ||
| test-timer.c | ||