The example filter is a good starting point for writing a custom filter. We refer to the source code for more information.
Module Name
libpipewire-module-example-filter
Module Options
- node.description: a human readable name for the filter streams
- capture.props = {}: properties to be passed to the input stream
- playback.props = {}: properties to be passed to the output stream
General options
Options with well-known behavior. Most options can be added to the global configuration or the individual streams:
Stream only properties:
- PW_KEY_MEDIA_CLASS
- PW_KEY_NODE_NAME : if not given per stream, the global node.name will be prefixed with 'input.' and 'output.' to generate a capture and playback stream node.name respectively.
Example configuration of a virtual source
# ~/.config/pipewire/pipewire.conf.d/my-example-filter.conf
 
context.modules = [
{   name = libpipewire-module-example-filter
    args = {
      node.description = "Example Filter"
      capture.props = {
          audio.position = [ FL FR ]
          node.passive = true
      }
      playback.props = {
          node.name = "Example Filter"
          media.class = "Audio/Source"
          audio.position = [ FL FR ]
      }
    }
}
]
pw-cli -m lm libpipewire-module-example-filter '{ audio.position=[FL FR] }'