feat: create virtual devices (+ Add Device dropdown)
Backend:
- POST /api/create-null-sink {name} - loads null-sink module
- POST /api/create-loopback {name} - loads loopback module
- POST /api/unload-module {module_id} - unloads a module
- Fixed double-proxy-destroy crash in GraphEngine
- Graceful failure when module not available (no crash)
Frontend:
- + Add Device button in toolbar with dropdown menu
- Null Sink option (creates virtual audio output)
- Loopback Device option (creates paired input+output)
- Dropdown closes on outside click
Note: null-sink requires libpipewire-module-null-sink to be installed.
Loopback works on all PipeWire installations.
This commit is contained in:
@@ -48,6 +48,10 @@ public:
|
||||
bool setNodeVolume(uint32_t node_id, float volume);
|
||||
bool setNodeMute(uint32_t node_id, bool mute);
|
||||
|
||||
// Module loading (virtual devices)
|
||||
uint32_t loadModule(const char *name, const char *args);
|
||||
bool unloadModule(uint32_t module_id);
|
||||
|
||||
// PipeWire internal data (exposed for C callbacks)
|
||||
struct PwData {
|
||||
pw_thread_loop *loop;
|
||||
|
||||
Reference in New Issue
Block a user