summaryrefslogtreecommitdiff
path: root/drivers/wasapi/audio_driver_wasapi.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/wasapi/audio_driver_wasapi.h')
-rw-r--r--drivers/wasapi/audio_driver_wasapi.h25
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();
};