PipeWire 1.1.0
Loading...
Searching...
No Matches
Unix Pipe Tunnel

The pipe-tunnel module provides a source or sink that tunnels all audio to or from a unix pipe respectively.

Module Name

libpipewire-module-pipe-tunnel

Module Options

  • tunnel.mode: the desired tunnel to create. (Default playback)
  • tunnel.may-pause: if the tunnel stream is allowed to pause on xrun
  • pipe.filename: the filename of the pipe.
  • stream.props: Extra properties for the local stream.

When tunnel.mode is capture, a capture stream on the default source is created. The samples captured from the source will be written to the pipe.

When tunnel.mode is sink, a sink node is created. Samples played on the sink will be written to the pipe.

When tunnel.mode is playback, a playback stream on the default sink is created. The samples read from the pipe will be played on the sink.

When tunnel.mode is source, a source node is created. Samples read from the the pipe will be made available on the source.

tunnel.may-pause allows the tunnel stream to become inactive (paused) when there is no data in the fifo or when the fifo is full. For capture and playback tunnel.mode this is by default true. For source and sink tunnel.mode, this is by default false. A paused stream will consume no CPU and will resume when the fifo becomes readable or writable again.

When pipe.filename is not given, a default fifo in /tmp/fifo_input or /tmp/fifo_output will be created that can be written and read respectively, depending on the selected tunnel.mode.

General options

Options with well-known behavior.

When not otherwise specified, the pipe will accept or produce a 16 bits, stereo, 48KHz sample stream.

Example configuration of a pipe playback stream

context.modules = [
{ name = libpipewire-module-pipe-tunnel
args = {
tunnel.mode = playback
#tunnel.may-pause = true
# Set the pipe name to tunnel to
pipe.filename = "/tmp/fifo_output"
#audio.format=<sample format>
#audio.rate=<sample rate>
#audio.channels=<number of channels>
#audio.position=<channel map>
#target.object=<remote target node>
stream.props = {
# extra sink properties
}
}
}
]