RetroArch
|
#include <stdlib.h>
#include <windows.h>
#include <winerror.h>
#include <propidl.h>
#include <initguid.h>
#include <mmdeviceapi.h>
#include <mmreg.h>
#include <audioclient.h>
#include <lists/string_list.h>
#include <queues/fifo_queue.h>
#include "../audio_driver.h"
#include "../../verbosity.h"
#include "../../configuration.h"
Classes | |
struct | wasapi_t |
Macros | |
#define | _WIN32_WINNT 0x0600 |
#define | WIN32_LEAN_AND_MEAN |
#define | _IMMDeviceCollection_Item(This, nDevice, ppdevice) (This)->lpVtbl->Item(This,nDevice,ppdevice) |
#define | _IAudioClient_Start(This) ( (This)->lpVtbl -> Start(This) ) |
#define | _IAudioClient_Stop(This) ( (This)->lpVtbl -> Stop(This) ) |
#define | _IAudioClient_GetCurrentPadding(This, pNumPaddingFrames) ( (This)->lpVtbl -> GetCurrentPadding(This,pNumPaddingFrames) ) |
#define | _IAudioRenderClient_GetBuffer(This, NumFramesRequested, ppData) ( (This)->lpVtbl -> GetBuffer(This,NumFramesRequested,ppData) ) |
#define | _IAudioRenderClient_ReleaseBuffer(This, NumFramesWritten, dwFlags) ( (This)->lpVtbl -> ReleaseBuffer(This,NumFramesWritten,dwFlags) ) |
#define | _IAudioClient_GetService(This, riid, ppv) ( (This)->lpVtbl -> GetService(This,&(riid),ppv) ) |
#define | _IAudioClient_SetEventHandle(This, eventHandle) ( (This)->lpVtbl -> SetEventHandle(This,eventHandle) ) |
#define | _IAudioClient_GetBufferSize(This, pNumBufferFrames) ( (This)->lpVtbl -> GetBufferSize(This,pNumBufferFrames) ) |
#define | _IAudioClient_GetStreamLatency(This, phnsLatency) ( (This)->lpVtbl -> GetStreamLatency(This,phnsLatency) ) |
#define | _IAudioClient_GetDevicePeriod(This, phnsDefaultDevicePeriod, phnsMinimumDevicePeriod) ( (This)->lpVtbl -> GetDevicePeriod(This,phnsDefaultDevicePeriod,phnsMinimumDevicePeriod) ) |
#define | _IMMDevice_Activate(This, iid, dwClsCtx, pActivationParams, ppv) ((This)->lpVtbl->Activate(This,&(iid),dwClsCtx,pActivationParams,ppv)) |
#define | _IMMDeviceEnumerator_EnumAudioEndpoints(This, dataFlow, dwStateMask, ppDevices) (This)->lpVtbl->EnumAudioEndpoints(This,dataFlow,dwStateMask,ppDevices) |
#define | _IMMDeviceEnumerator_GetDefaultAudioEndpoint(This, dataFlow, role, ppEndpoint) (This)->lpVtbl->GetDefaultAudioEndpoint(This,dataFlow,role,ppEndpoint) |
#define | _IMMDevice_OpenPropertyStore(This, stgmAccess, ppProperties) (This)->lpVtbl->OpenPropertyStore(This,stgmAccess,ppProperties) |
#define | _IMMDevice_GetId(This, ppstrId) (This)->lpVtbl->GetId(This,ppstrId) |
#define | _IPropertyStore_GetValue(This, key, pv) ( (This)->lpVtbl -> GetValue(This,&(key),pv) ) |
#define | _IMMDeviceCollection_GetCount(This, cProps) ( (This)->lpVtbl -> GetCount(This,cProps) ) |
#define | WASAPI_WARN(bool_exp, err_str, warn_exp) |
#define | WASAPI_CHECK(bool_exp, err_str, err_exp) |
#define | WASAPI_HR_CHECK(hr, fun_str, err_exp) |
#define | WASAPI_HR_WARN(hr, fun_str, warn_exp) |
#define | WASAPI_SR_CHECK(bool_exp, fun_str, err_exp) |
#define | WASAPI_RELEASE(iface) |
#define | WASAPI_FREE(ptr) |
#define | WASAPI_CO_FREE(ptr) |
Functions | |
DEFINE_PROPERTYKEY (PKEY_Device_FriendlyName, 0xa45c254e, 0xdf1c, 0x4efd, 0x80, 0x20, 0x67, 0xd1, 0x46, 0xa8, 0x50, 0xe0, 14) | |
static bool | wasapi_check_device_id (IMMDevice *device, const char *id) |
static IMMDevice * | wasapi_init_device (const char *id) |
static unsigned | wasapi_pref_rate (unsigned i) |
static void | wasapi_set_format (WAVEFORMATEXTENSIBLE *wf, bool float_fmt, unsigned rate) |
static IAudioClient * | wasapi_init_client_sh (IMMDevice *device, bool *float_fmt, unsigned *rate, unsigned latency) |
static IAudioClient * | wasapi_init_client_ex (IMMDevice *device, bool *float_fmt, unsigned *rate, unsigned latency) |
static IAudioClient * | wasapi_init_client (IMMDevice *device, bool *exclusive, bool *float_fmt, unsigned *rate, unsigned latency) |
static void * | wasapi_init (const char *dev_id, unsigned rate, unsigned latency, unsigned u1, unsigned *u2) |
static bool | wasapi_flush (wasapi_t *w, const void *data, size_t size) |
static bool | wasapi_flush_buffer (wasapi_t *w, size_t size) |
static ssize_t | wasapi_write_sh (wasapi_t *w, const void *data, size_t size) |
static ssize_t | wasapi_write_ex (wasapi_t *w, const void *data, size_t size) |
static ssize_t | wasapi_write (void *wh, const void *data, size_t size) |
static bool | wasapi_stop (void *wh) |
static bool | wasapi_start (void *wh, bool u) |
static bool | wasapi_alive (void *wh) |
static void | wasapi_set_nonblock_state (void *wh, bool nonblock) |
static void | wasapi_free (void *wh) |
static bool | wasapi_use_float (void *wh) |
static void * | wasapi_device_list_new (void *u) |
static void | wasapi_device_list_free (void *u, void *slp) |
static size_t | wasapi_write_avail (void *wh) |
static size_t | wasapi_buffer_size (void *wh) |
Variables | |
audio_driver_t | audio_wasapi |
#define _IAudioClient_GetBufferSize | ( | This, | |
pNumBufferFrames | |||
) | ( (This)->lpVtbl -> GetBufferSize(This,pNumBufferFrames) ) |
#define _IAudioClient_GetCurrentPadding | ( | This, | |
pNumPaddingFrames | |||
) | ( (This)->lpVtbl -> GetCurrentPadding(This,pNumPaddingFrames) ) |
#define _IAudioClient_GetDevicePeriod | ( | This, | |
phnsDefaultDevicePeriod, | |||
phnsMinimumDevicePeriod | |||
) | ( (This)->lpVtbl -> GetDevicePeriod(This,phnsDefaultDevicePeriod,phnsMinimumDevicePeriod) ) |
#define _IAudioClient_GetService | ( | This, | |
riid, | |||
ppv | |||
) | ( (This)->lpVtbl -> GetService(This,&(riid),ppv) ) |
#define _IAudioClient_GetStreamLatency | ( | This, | |
phnsLatency | |||
) | ( (This)->lpVtbl -> GetStreamLatency(This,phnsLatency) ) |
#define _IAudioClient_SetEventHandle | ( | This, | |
eventHandle | |||
) | ( (This)->lpVtbl -> SetEventHandle(This,eventHandle) ) |
#define _IAudioClient_Start | ( | This | ) | ( (This)->lpVtbl -> Start(This) ) |
#define _IAudioClient_Stop | ( | This | ) | ( (This)->lpVtbl -> Stop(This) ) |
#define _IAudioRenderClient_GetBuffer | ( | This, | |
NumFramesRequested, | |||
ppData | |||
) | ( (This)->lpVtbl -> GetBuffer(This,NumFramesRequested,ppData) ) |
#define _IAudioRenderClient_ReleaseBuffer | ( | This, | |
NumFramesWritten, | |||
dwFlags | |||
) | ( (This)->lpVtbl -> ReleaseBuffer(This,NumFramesWritten,dwFlags) ) |
#define _IMMDevice_Activate | ( | This, | |
iid, | |||
dwClsCtx, | |||
pActivationParams, | |||
ppv | |||
) | ((This)->lpVtbl->Activate(This,&(iid),dwClsCtx,pActivationParams,ppv)) |
#define _IMMDevice_GetId | ( | This, | |
ppstrId | |||
) | (This)->lpVtbl->GetId(This,ppstrId) |
#define _IMMDevice_OpenPropertyStore | ( | This, | |
stgmAccess, | |||
ppProperties | |||
) | (This)->lpVtbl->OpenPropertyStore(This,stgmAccess,ppProperties) |
#define _IMMDeviceCollection_GetCount | ( | This, | |
cProps | |||
) | ( (This)->lpVtbl -> GetCount(This,cProps) ) |
#define _IMMDeviceCollection_Item | ( | This, | |
nDevice, | |||
ppdevice | |||
) | (This)->lpVtbl->Item(This,nDevice,ppdevice) |
#define _IMMDeviceEnumerator_EnumAudioEndpoints | ( | This, | |
dataFlow, | |||
dwStateMask, | |||
ppDevices | |||
) | (This)->lpVtbl->EnumAudioEndpoints(This,dataFlow,dwStateMask,ppDevices) |
#define _IMMDeviceEnumerator_GetDefaultAudioEndpoint | ( | This, | |
dataFlow, | |||
role, | |||
ppEndpoint | |||
) | (This)->lpVtbl->GetDefaultAudioEndpoint(This,dataFlow,role,ppEndpoint) |
#define _IPropertyStore_GetValue | ( | This, | |
key, | |||
pv | |||
) | ( (This)->lpVtbl -> GetValue(This,&(key),pv) ) |
#define _WIN32_WINNT 0x0600 |
#define WASAPI_CHECK | ( | bool_exp, | |
err_str, | |||
err_exp | |||
) |
#define WASAPI_CO_FREE | ( | ptr | ) |
#define WASAPI_FREE | ( | ptr | ) |
#define WASAPI_HR_CHECK | ( | hr, | |
fun_str, | |||
err_exp | |||
) |
#define WASAPI_HR_WARN | ( | hr, | |
fun_str, | |||
warn_exp | |||
) |
#define WASAPI_RELEASE | ( | iface | ) |
#define WASAPI_SR_CHECK | ( | bool_exp, | |
fun_str, | |||
err_exp | |||
) |
#define WASAPI_WARN | ( | bool_exp, | |
err_str, | |||
warn_exp | |||
) |
#define WIN32_LEAN_AND_MEAN |
DEFINE_PROPERTYKEY | ( | PKEY_Device_FriendlyName | , |
0xa45c254e | , | ||
0xdf1c | , | ||
0x4efd | , | ||
0x80 | , | ||
0x20 | , | ||
0x67 | , | ||
0xd1 | , | ||
0x46 | , | ||
0xa8 | , | ||
0x50 | , | ||
0xe0 | , | ||
14 | |||
) |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
audio_driver_t audio_wasapi |