feat: add PipeWire multi-channel audio driver (full-duplex N channel)

- PipeWireDriver.hpp/cpp: new AudioDriver implementation using pw_filter API
- Full-duplex I/O via pw_filter (capture + playback in one RT callback)
- Dynamic channel count support (tested: 1-8 channels, extensible beyond)
- Uses SPA_AUDIO_FORMAT_F32 for zero-copy-compatible float processing
- Channel position mapping: MONO, stereo, 5.1, 7.1, plus Aux for N>8
- Follows the same buffer management pattern as AlsaDriverImpl
- Channel routing: main/aux input/output mapping with mix ops
- CLI flag: --driver pipewire|alsa (default: alsa)
- AudioHost: conditional driver selection based on driverType_
- PiPedalModel: stores and passes driver type to AudioHost
- CMakeLists.txt: added PipeWireDriver source files
This commit is contained in:
2026-06-20 16:03:16 -04:00
parent 524f02ec9d
commit 3d00299051
8 changed files with 970 additions and 8 deletions
+1 -1
View File
@@ -215,7 +215,7 @@ namespace pipedal
AudioHost() {}
public:
static AudioHost *CreateInstance(IHost *pHost);
static AudioHost *CreateInstance(IHost *pHost, const std::string &driverType = "alsa");
virtual ~AudioHost() {};
virtual void UpdateServerConfiguration(const JackServerSettings &jackServerSettings,