diff options
Diffstat (limited to 'drivers/wasapi/audio_driver_wasapi.h')
-rw-r--r-- | drivers/wasapi/audio_driver_wasapi.h | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/drivers/wasapi/audio_driver_wasapi.h b/drivers/wasapi/audio_driver_wasapi.h index f3ee5976eb..084d0c2e3f 100644 --- a/drivers/wasapi/audio_driver_wasapi.h +++ b/drivers/wasapi/audio_driver_wasapi.h @@ -44,19 +44,30 @@ class AudioDriverWASAPI : public AudioDriver { HANDLE event; + // Audio out IAudioClient *audio_client; IAudioRenderClient *render_client; + // Microphone + class MicrophoneDeviceOutputDirectWASAPI : public MicrophoneDeviceOutputDirect { + public: + IAudioClient *audio_client; + IAudioCaptureClient *capture_client; + }; + // Mutex *mutex; Thread *thread; String device_name; String new_device; + String capture_device_default_name; WORD format_tag; WORD bits_per_sample; Vector<int32_t> samples_in; + Map<StringName, StringName> capture_device_id_map; + unsigned int buffer_size; unsigned int channels; unsigned int wasapi_channels; @@ -70,8 +81,13 @@ class AudioDriverWASAPI : public AudioDriver { _FORCE_INLINE_ void write_sample(AudioDriverWASAPI *ad, BYTE *buffer, int i, int32_t sample); static void thread_func(void *p_udata); - Error init_device(bool reinit = false); - Error finish_device(); + StringName get_default_capture_device_name(IMMDeviceEnumerator *p_enumerator); + + Error init_render_device(bool reinit = false); + Error init_capture_devices(bool reinit = false); + + Error finish_render_device(); + Error finish_capture_devices(); public: virtual const char *get_name() const { @@ -89,6 +105,11 @@ public: virtual void unlock(); virtual void finish(); + virtual bool capture_device_start(StringName p_name); + virtual bool capture_device_stop(StringName p_name); + virtual PoolStringArray capture_device_get_names(); + virtual StringName capture_device_get_default_name(); + AudioDriverWASAPI(); }; |