Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support PipeWire #264

Open
kaixiong opened this issue Feb 8, 2023 · 4 comments
Open

Support PipeWire #264

kaixiong opened this issue Feb 8, 2023 · 4 comments

Comments

@kaixiong
Copy link
Member

kaixiong commented Feb 8, 2023

PipeWire is becoming a standard on Linux and we should have an actor and an input plugin supporting it.

@hartwork
Copy link
Member

hartwork commented Feb 8, 2023

@kaixiong I agree and already played a bit with client code but it's a bit of bumpy road, and https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/2997 only is the start of it. If it was less bumpy I had already added a version to my https://github.com/hartwork/audio_pump_demo . Note that their API seems to be fully asynchronous, so we'll need tricks similar to what we have for PulseAudio's synchronous API. Happy to learn I'm wrong about any of this 😃

@hartwork
Copy link
Member

hartwork commented Feb 9, 2023

PS: What I find interesting is how they hand out and take in buffers with pw_stream_dequeue_buffer and pw_stream_queue_buffer.

@kaixiong
Copy link
Member Author

kaixiong commented Feb 13, 2023

@kaixiong I agree and already played a bit with client code but it's a bit of bumpy road, and https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/2997 only is the start of it. If it was less bumpy I had already added a version to my https://github.com/hartwork/audio_pump_demo

@hartwork That is.. surprising 🤦

Note that their API seems to be fully asynchronous, so we'll need tricks similar to what we have for PulseAudio's synchronous API. Happy to learn I'm wrong about any of this smiley.

It's probably time to convert all the input plugins to use asynchronous calls. We can maybe factor out the lock-free ring buffer implementation in input_pulseaudio and make it part of the low-level or 'primitives' API for a start. Some ideas for the high-level API for input plugins were brought up in #54.

@hartwork
Copy link
Member

@kaixiong we definitely need a way to support asynchronous input APIs out of the box, I agree.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants