PipeWire Module: Echo Cancel

The `echo-cancel` module performs echo cancellation.

The module creates virtual `echo-cancel-capture` source and `echo-cancel-playback` sink nodes and the associated streams.

## Module Options

Options specific to the behavior of this module

- `source.props = {}`: properties to be passed to the source stream
- `sink.props = {}`: properties to be passed to the sink stream
- `library.name = <str>`: the echo cancellation library Currently supported: `aec/libspa-aec-exaudio`. Leave unset to use the default method (`aec/libspa-aec-exaudio`).
- `aec.args = <str>`: arguments to pass to the echo cancellation method

## General options

Options with well-known behavior:

- PW_KEY_AUDIO_RATE
- PW_KEY_AUDIO_CHANNELS
- PW_KEY_MEDIA_CLASS
- PW_KEY_NODE_LATENCY
- PW_KEY_NODE_NAME
- PW_KEY_NODE_DESCRIPTION
- PW_KEY_NODE_GROUP
- PW_KEY_NODE_LINK_GROUP
- PW_KEY_NODE_VIRTUAL
- PW_KEY_NODE_LATENCY
- PW_KEY_REMOTE_NAME
- SPA_KEY_AUDIO_POSITION

## Example configuration

context.modules = [
{ name = libpipewire-module-echo-cancel
args = {
# library.name = aec/libspa-aec-exaudio
# node.latency = 1024/48000
source.props = {
node.name = "Echo Cancellation Source"
}
sink.props = {
node.name = "Echo Cancellation Sink"
}
}
}
]