... | @@ -17,18 +17,17 @@ a new client for each PipeWire stream or even node if this proves to be interest |
... | @@ -17,18 +17,17 @@ a new client for each PipeWire stream or even node if this proves to be interest |
|
|
|
|
|
# PipeWire JACK implementation
|
|
# PipeWire JACK implementation
|
|
|
|
|
|
We would like to do:
|
|
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.
|
|
|
|
|
|
- provide a drop-in replacement for libjack.so. Existing clients should work unmodified.
|
|
PipeWire control ports (which can carry MIDI events among other things) are exposed as JACK midi ports.
|
|
- 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
|
|
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.
|
|
in mono.
|
|
|
|
- PipeWire control ports (which can carry MIDI events among other things) are exposed as JACK midi ports.
|
|
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.
|
|
- 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 Is not implemented at all and is probably best handled by [NSM](https://github.com/linuxaudio/new-session-manager).
|
|
- session handling through the PipeWire session handling API (to be designed).
|
|
|
|
|
|
# How to test the current JACK support:
|
|
How to test the current JACK support:
|
|
|
|
|
|
|
|
- you will need to check out the master branch
|
|
- you will need to check out the master branch
|
|
- run the pw-uninstalled.sh script to set up library paths or run 'make shell'
|
|
- run the pw-uninstalled.sh script to set up library paths or run 'make shell'
|
... | | ... | |