Implement pipewire output
- Initial implementation for pipewire output.
- Change
psst-guiandpsst-clito explicitly pass features ofpsst-coreby disablingpsst-coredefault features when compiled frompsst-guiorpsst-cli. This makes it easier to set features atpsst-guiorpsst-cliwithout changingpsst-core/Cargo.toml, since currently there is no way to switchAudioOutputimplementation at runtime. This should not affect current build because default features are set atpsst-guiandpsst-cliand is passed down aspsst-corefeature as well.
Hi,
I also have a branch with selectable backend, buildable with cpal and pipewire but not tested for cubeb at https://github.com/azam/psst/tree/feature/pipewire-selectable if you want to check it out. Need a restart of the app after selection change though.
@jacksongoode Would you consider pulling this in? I can either proceed with the output selection on a separate PR.
I'm a little curious if you've checked out https://github.com/SolarLiner/interflow? It would be another backend, but it might have the possibility of replacing cpal and support more than just pipewire (also coreaudio, alsa, WASAPI). I would be hesitant to provide a path to pipewire support via its own backend just for the sake of maintenance.
In addition it might be easier to write support for interflow given that it's quite opinionated. Love to hear your thoughts, and thank you for the extensive work in your PR.
@jacksongoode 🤔 I'll take a jab at interflow.
@jacksongoode Managed to get interflow to output audio, but the sample counts are borked (channel count are not synced, so playback is 0.5x slow. Probably will try with a fixed channel count later).
I will try again later on the next weekend, in the meantime here is the branch if you want to take a look or help me with it.
https://github.com/azam/psst/tree/feature/interflow
@azam Thank you for the effort!
I think there are some improvements coming to Interflow in the next week for the CoreAudio and Pipewire backends, so it might be even easier.
For now, would you like to make a separate PR for interflow based on this branch?
@jacksongoode Sure, I intend to do that once I figure out the sampling issue.