Deadbeef playback sets incorrect output format as of 0.3.60
- PipeWire version: 0.3.60
- Distribution: Arch Linux (latest as of 2022-11-16)
- Desktop Environment: KDE Plasma 5.26.3
- Kernel version: 6.0.8 (Zen)
Description of Problem:
As of PipeWire 0.3.60, trying to play most audio files in Deadbeef results in noise being played, but only on the first attempt. Stopping playback and playing any file with the same audio format again works until the application is restarted. Playing file with another audio format will play it with the last file's audio format (so, for example, if you played a 48000Hz file, then followed up with a 44100Hz one, the stream will go a little faster).
Diffing pw-dump outputs before/after retrying shows one meaningful difference:
- File 1:
Stream #0:0: Audio: opus, 48000 Hz, stereo, fltp
- first playback attempt after starting the app sets deadbeef's output format to S16LE 44100 (plays noise), retrying sets F32LE 48000 (which is fine). - File 2:
Stream #0:0: Audio: mp3, 44100 Hz, stereo, fltp, 128 kb/s
- first playback attempt sets S16LE 44100 (noise), but F32LE 44100 after retrying.
Extra notes:
- In the past, there was a PipeWire issue #652 (closed) with Deadbeef that sounds relevant - it appears that this is a regression in 0.3.60.
- On Arch, downgrading specifically the
pipewire-audio
package (seepackage_pipewire-audio()
here for reference) to 0.3.59 restores normal behavior. Core, ALSA, etc can stay at 0.3.60. - Deadbeef's downstream issues: https://github.com/DeaDBeeF-Player/deadbeef/issues/2886 + https://github.com/DeaDBeeF-Player/deadbeef/issues/2888 - some notes are copied over there as well.
How Reproducible:
On every attempt, but only with Deadbeef. Other software is fine, so is using Deadbeef's unofficial PipeWire output plugin.
Steps to Reproduce:
- Use PW 0.3.60, Deadbeef 1.9.3
- In Edit -> Preferences, set the output plugin to "ALSA output plugin" and output device to "PipeWire Sound Server".
- Play any audio file - if the format is not S16LE 44100, noise is played.
- Without restarting, stop and play the same audio file - audio plays normally.
- Without restarting, stop and play another audio file with a different format (check
ffprobe
) - audio will play incorrectly (slowed down/sped up/noise again if the format doesn't match).
pw-dumps
- Before playing anything: 1-quiet.json
- First playback after application starts, noise: 2-noise.json
- Second playback, plays fine: 3-normal.json