20#define AUD_BUILD_PLUGIN
34#include <audioclient.h>
35#include <mmdeviceapi.h>
47 IMMDeviceEnumerator* m_imm_device_enumerator;
48 IMMDevice* m_imm_device;
49 IAudioClient* m_audio_client;
50 WAVEFORMATEXTENSIBLE m_wave_format_extensible;
51 bool m_default_device_changed;
52 LONG m_reference_count;
54 AUD_LOCAL HRESULT setupRenderClient(IAudioRenderClient*& render_client, UINT32& buffer_size);
64 ULONG STDMETHODCALLTYPE AddRef();
65 ULONG STDMETHODCALLTYPE Release();
66 HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid,
void **ppvObject);
68 HRESULT STDMETHODCALLTYPE OnDeviceStateChanged(LPCWSTR pwstrDeviceId, DWORD dwNewState);
69 HRESULT STDMETHODCALLTYPE OnDeviceAdded(LPCWSTR pwstrDeviceId);
70 HRESULT STDMETHODCALLTYPE OnDeviceRemoved(LPCWSTR pwstrDeviceId);
71 HRESULT STDMETHODCALLTYPE OnDefaultDeviceChanged(EDataFlow flow, ERole role, LPCWSTR pwstrDeviceId);
72 HRESULT STDMETHODCALLTYPE OnPropertyValueChanged(LPCWSTR pwstrDeviceId,
const PROPERTYKEY key);
#define AUD_DEFAULT_BUFFER_SIZE
The default playback buffer size of a device.
Definition Audaspace.h:103
#define AUD_NAMESPACE_END
Closes the audaspace namespace aud.
Definition Audaspace.h:119
#define AUD_LOCAL
Used for hiding symbols from export in the shared library.
Definition Audaspace.h:80
#define AUD_NAMESPACE_BEGIN
Opens the audaspace namespace aud.
Definition Audaspace.h:116
#define AUD_PLUGIN_API
Used for exporting symbols in the shared library.
Definition Audaspace.h:94
The ThreadedDevice class.
This device extends the SoftwareDevice with code for running mixing in a separate thread.
Definition ThreadedDevice.h:35
This device plays back through WASAPI, the Windows audio API.
Definition WASAPIDevice.h:44
WASAPIDevice(DeviceSpecs specs, int buffersize=AUD_DEFAULT_BUFFER_SIZE)
Opens the WASAPI audio device for playback.
static void registerPlugin()
Registers this plugin.
virtual ~WASAPIDevice()
Closes the WASAPI audio device.
Specification of a sound device.
Definition Specification.h:129