Multiple allowed clock rates causes S/PDIF output to stop outputting silence (suspend) on source close
- PipeWire version (
pipewire --version): 0.3.63
- Distribution and distribution version (
/etc/os-release): Arch Linux
- Desktop Environment: None (i3 + picom)
- Kernel version (
uname -r): 6.1.1-arch1-1
Description of Problem:
I was trying out the new "dither.noise" feature described in issue #705 (closed) to try and keep my S/PDIF DAC from turning off automatically. However, it only appears to play the dithered noise when an active source is attached to the sink. This is not ideal, as when that source is closed, the DAC turns off anyways. I am not sure if this is a configuration issue on my end, or if it is the intended behavior of PipeWire.
Steps to Reproduce:
~/.config/wireplumber/main.lua.d/55-spdif-noise.luaas described in issue #705 (closed). Set the "dither.noise" property to something high like 22 if you wish to hear the noise to confirm.
- Restart pipewire:
systemctl restart --user pipewire
- Open Firefox and play audio in a tab.
- Pause audio playback, observe that the noise is still playing.
- Close the tab, observe that the noise has stopped.
During audio playback, the noise is clearly heard on the speakers. After playback is paused, the noise continues to play. When the tab is closed, the noise stops, and the DAC eventually goes to sleep.
Noise continues to play over S/PDIF even when no source is active.
I checked the commits on
master from 0.3.63, but did not see any pertaining to dither/noise, so I believe this issue is still relevant, but have not confirmed with a build from tip of master myself.
https://youtu.be/8FRuekIQTqc - Video demonstrating the issue. Here, the noise parameter has been increased to be audible over the speakers. You can hear the noise play during audio playback and pause, but when the tab is closed, noise playback ceases. The DAC then says "UNLOCK", indicating it is not receiving a signal, and then eventually goes to sleep with a "See You" message. Playing new audio then causes the DAC to reinitialize.
~/.config/wireplumber/main.lua.d/50-alsa-config.lua - only modification from the one located in
/usr/share is that "session.suspend-timeout-seconds" is set to 0.
Thanks, and happy new year!