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.h29
1 files changed, 14 insertions, 15 deletions
diff --git a/audio/out/ao_wasapi.h b/audio/out/ao_wasapi.h
index 8df45f042e..a0ce654d4d 100755
--- a/audio/out/ao_wasapi.h
+++ b/audio/out/ao_wasapi.h
@@ -34,25 +34,11 @@ typedef struct wasapi_state {
/* Init phase */
int init_ret;
HANDLE init_done;
- HANDLE fatal_error; /* signal to indicate unrecoverable error */
int share_mode;
- /* Events */
- HANDLE hPause;
-
- /* Play */
- HANDLE hPlay;
- int is_playing;
-
- /* Reset */
- HANDLE hReset;
-
- /* uninit */
HANDLE hUninit;
- LONG immed;
/* volume control */
- HANDLE hGetvol, hSetvol, hDoneVol;
DWORD vol_hw_support, status;
float audio_volume;
@@ -70,10 +56,23 @@ typedef struct wasapi_state {
IAudioRenderClient *pRenderClient;
IAudioEndpointVolume *pEndpointVolume;
HANDLE hFeed; /* wasapi event */
+ HANDLE hForceFeed; /* forces writing a buffer (e.g. before audio_resume) */
+ HANDLE hFeedDone; /* set only after a hForceFeed */
HANDLE hTask; /* AV thread */
DWORD taskIndex; /* AV task ID */
WAVEFORMATEXTENSIBLE format;
+ /* WASAPI proxy handles, for Single-Threaded Apartment communication.
+ One is needed for each object that's accessed by a different thread. */
+ IAudioClient *pAudioClientProxy;
+ IAudioEndpointVolume *pEndpointVolumeProxy;
+
+ /* Streams used to marshal the proxy objects. The thread owning the actual objects
+ needs to marshal proxy objects into these streams, and the thread that wants the
+ proxies unmarshals them from here. */
+ IStream *sAudioClient;
+ IStream *sEndpointVolume;
+
/* WASAPI internal clock information, for estimating delay */
IAudioClock *pAudioClock;
UINT64 clock_frequency; /* scale for the "samples" returned by the clock */
@@ -92,4 +91,4 @@ typedef struct wasapi_state {
} VistaBlob;
} wasapi_state;
-#endif \ No newline at end of file
+#endif