summaryrefslogtreecommitdiffstats
path: root/audio/out/ao_wasapi.h
diff options
context:
space:
mode:
Diffstat (limited to 'audio/out/ao_wasapi.h')
-rwxr-xr-xaudio/out/ao_wasapi.h20
1 files changed, 19 insertions, 1 deletions
diff --git a/audio/out/ao_wasapi.h b/audio/out/ao_wasapi.h
index 36428b4aea..7e7cc6cd06 100755
--- a/audio/out/ao_wasapi.h
+++ b/audio/out/ao_wasapi.h
@@ -30,12 +30,26 @@
#include "osdep/atomics.h"
+typedef struct change_notify {
+ IMMNotificationClient client; /* this must be first in the structure! */
+ LPWSTR monitored; /* Monitored device */
+ struct ao *ao;
+} change_notify;
+
+HRESULT wasapi_change_init(struct ao* ao);
+void wasapi_change_uninit(struct ao* ao);
+
+#define EXIT_ON_ERROR(hres) \
+ do { if (FAILED(hres)) { goto exit_label; } } while(0)
+#define SAFE_RELEASE(unk, release) \
+ do { if ((unk) != NULL) { release; (unk) = NULL; } } while(0)
+
typedef struct wasapi_state {
struct mp_log *log;
HANDLE threadLoop;
/* Init phase */
- int init_ret;
+ HRESULT init_ret;
HANDLE init_done;
int share_mode;
@@ -62,6 +76,8 @@ typedef struct wasapi_state {
ISimpleAudioVolume *pAudioVolume;
IAudioEndpointVolume *pEndpointVolume;
IAudioSessionControl *pSessionControl;
+ IMMDeviceEnumerator *pEnumerator;
+
HANDLE hFeed; /* wasapi event */
HANDLE hForceFeed; /* forces writing a buffer (e.g. before audio_resume) */
HANDLE hFeedDone; /* set only after a hForceFeed */
@@ -100,6 +116,8 @@ typedef struct wasapi_state {
HANDLE (WINAPI *pAvSetMmThreadCharacteristicsW)(LPCWSTR, LPDWORD);
WINBOOL (WINAPI *pAvRevertMmThreadCharacteristics)(HANDLE);
} VistaBlob;
+
+ change_notify change;
} wasapi_state;
#endif