Creating and destroying a DSD128 stream right after a DSD64 one fails; a PCM stream must be created and then destroyed in between
- PipeWire version (
pipewire --version): 0.3.56 (git master actually, at commit 04a3f517 )
- Distribution and distribution version (
/etc/os-release): Ubuntu 22.04 LTS
- Desktop Environment: KDE 5
- Kernel version (
uname -r): 5.15.0-43-generic
Description of Problem:
A DSD128 pw_stream cannot be created and activated right after a DSD64 stream was created, activated, then deactivated, and torn down.
Create a pw_stream for DSD64 data, activate it to get it to run, and then deactivate and destroy it. Afterwards, create and run another DSD stream, but this time, it is a DSD128 one. The only difference is the rate. When this is attempted, activating the second stream fails. The way to get this to work is to create, run, and then tear down a PCM stream in between.
Second stream (the DSD128) never reaches the RUNNING state unless a PCM stream was created and ran in between the first (the DSD64 stream) and the last (the DSD128 stream).
All streams run properly.
Additional Info (as attachments):
Build the test code with:
gcc -O0 -g3 -ggdb -Wextra -Wall -std=gnu99 -pedantic -o test-switch-between-dsd-formats test-switch-between-dsd-formats.c $(pkg-config --cflags --libs libpipewire-0.3) -Wno-unused-parameter