... | ... | @@ -17,18 +17,17 @@ a new client for each PipeWire stream or even node if this proves to be interest |
|
|
|
|
|
# PipeWire JACK implementation
|
|
|
|
|
|
We would like to do:
|
|
|
|
|
|
- provide a drop-in replacement for libjack.so. Existing clients should work unmodified.
|
|
|
- All jack API calls are mapped to equivalent PipeWire calls
|
|
|
- Jack clients can only see ports marked with the dsp tags. These ports provide and consume float32 audio
|
|
|
in mono.
|
|
|
- PipeWire control ports (which can carry MIDI events among other things) are exposed as JACK midi ports.
|
|
|
- A PipeWire session manager should provide DSP nodes that interfaces with the audio device and mix audio on the inputs. Through the ports provided by this node, jack clients (or native clients using compatible ports) can connect to the devices.
|
|
|
- We would like to have the wakeup of jack clients be as lightweight as possible.
|
|
|
- session handling through the PipeWire session handling API (to be designed).
|
|
|
|
|
|
How to test the current JACK support:
|
|
|
There is a drop-in replacement for libjack.so. Existing clients should work unmodified. All jack API calls are mapped to equivalent PipeWire calls. Jack clients can only see ports marked with the dsp tags. These ports provide and consume float32 audio in mono.
|
|
|
|
|
|
PipeWire control ports (which can carry MIDI events among other things) are exposed as JACK midi ports.
|
|
|
|
|
|
A PipeWire session manager should provide DSP nodes that interfaces with the audio device and mix audio on the inputs. Through the ports provided by this node, jack clients (or native clients using compatible ports) can connect to the devices.
|
|
|
|
|
|
Wakeup of jack clients is very fast with an eventfd. Jack clients mix the inputs on their ports locally and can wake up the next jack client directly by signaling its evenfd.
|
|
|
|
|
|
Session handling Is not implemented at all and is probably best handled by [NSM](https://github.com/linuxaudio/new-session-manager).
|
|
|
|
|
|
# How to test the current JACK support:
|
|
|
|
|
|
- you will need to check out the master branch
|
|
|
- run the pw-uninstalled.sh script to set up library paths or run 'make shell'
|
... | ... | |