diff --git a/src/engine/agent/Agent_AudioManager.cpp b/src/engine/agent/Agent_AudioManager.cpp index f7da74c9..0145bd8f 100644 --- a/src/engine/agent/Agent_AudioManager.cpp +++ b/src/engine/agent/Agent_AudioManager.cpp @@ -167,6 +167,12 @@ void AudioManager::stop(int usageId) } } +void AudioManager::setAudioInput(Audio::PInputDevice input) +{ + LOCK_MANAGER; + mAudioInput = std::move(input); +} + void AudioManager::startPlayFile(int usageId, const std::string& path, AudioTarget target, LoopMode lm, int timelimit) { // Check if file exists diff --git a/src/engine/agent/Agent_AudioManager.h b/src/engine/agent/Agent_AudioManager.h index 8d6321de..8cb6e361 100644 --- a/src/engine/agent/Agent_AudioManager.h +++ b/src/engine/agent/Agent_AudioManager.h @@ -53,6 +53,11 @@ public: void start(int usageId); void stop(int usageId); + // Inject a custom input device. Must be called before start(): when set, + // start() skips construction of the default platform microphone. Pass an + // empty pointer to clear the override. + void setAudioInput(Audio::PInputDevice input); + enum AudioTarget { atNull,