diff options
Diffstat (limited to 'audio/out/ao_wasapi.h')
-rwxr-xr-x | audio/out/ao_wasapi.h | 20 |
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 |