mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2026-02-20 01:40:28 -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: 33be660e4b
See-Also: https://bugs.launchpad.net/hundredpapercuts/+bug/681996
31 lines
644 B
Meson
31 lines
644 B
Meson
acp_sources = [
|
|
'acp.c',
|
|
'compat.c',
|
|
'alsa-mixer.c',
|
|
'alsa-ucm.c',
|
|
'alsa-util.c',
|
|
'conf-parser.c',
|
|
]
|
|
|
|
acp_c_args = [
|
|
'-DHAVE_ALSA_UCM',
|
|
'-DHAVE_READLINK',
|
|
]
|
|
|
|
acp_lib = static_library(
|
|
'acp',
|
|
acp_sources,
|
|
c_args : acp_c_args,
|
|
include_directories : [configinc, includes_inc ],
|
|
dependencies : [ spa_dep, alsa_dep, mathlib, ]
|
|
)
|
|
acp_dep = declare_dependency(link_with: acp_lib)
|
|
|
|
executable('test-alsa-path-select',
|
|
[ 'test-alsa-path-select.c' ],
|
|
c_args : acp_c_args,
|
|
include_directories : [configinc, includes_inc ],
|
|
dependencies : [ spa_dep, alsa_dep, mathlib, ],
|
|
link_with : [ acp_lib ],
|
|
install : false,
|
|
)
|