jack-tunnel: add a new 0-latency JACK sink/source module

Add a new JACK sink/source pair that translates to a single JACK
client.

The JACK playback port appears as PipeWire source and is processed
directly, synchronously, through the complete pipewire graph into
the PipeWire sink that is then made available on the JACK capture
ports.

Because all this happens in the same JACK cycle with no delay, the
latency is 0. A jack_iodelay on the JACK server has exactly the same
latency as the jack_iodelay on the PipeWire side.

The PipeWire sink and source are forced into the same rate and
buffer_size as the JACK server and can't dynamically change.

This only supports Audio for now.
This commit is contained in:
Wim Taymans 2023-04-27 16:27:54 +02:00
parent 0844f72f50
commit 73f5f7ae65
2 changed files with 957 additions and 0 deletions

View file

@ -158,6 +158,20 @@ pipewire_module_echo_cancel = shared_library('pipewire-module-echo-cancel',
dependencies : [mathlib, dl_lib, pipewire_dep, audioconvert_dep],
)
build_module_jack_tunnel = jack_dep.found()
if build_module_jack_tunnel
pipewire_module_jack_tunnel = shared_library('pipewire-module-jack-tunnel',
[ 'module-jack-tunnel.c' ],
include_directories : [configinc],
install : true,
install_dir : modules_install_dir,
install_rpath: modules_install_dir,
dependencies : [mathlib, dl_lib, pipewire_dep, jack_dep],
)
endif
summary({'jack-tunnel': build_module_jack_tunnel}, bool_yn: true, section: 'Optional Modules')
pipewire_module_profiler = shared_library('pipewire-module-profiler',
[ 'module-profiler.c',
'module-profiler/protocol-native.c', ],