20#define AUD_BUILD_PLUGIN
34#include <audioclient.h>
35#include <mmdeviceapi.h>
37#include <wrl/client.h>
41using Microsoft::WRL::ComPtr;
50 ComPtr<IMMDeviceEnumerator> m_imm_device_enumerator;
51 ComPtr<IMMDevice> m_imm_device;
52 ComPtr<IAudioClient> m_audio_client;
53 WAVEFORMATEXTENSIBLE m_wave_format_extensible;
54 bool m_default_device_changed;
55 LONG m_reference_count;
57 AUD_LOCAL HRESULT setupRenderClient(IAudioRenderClient*& render_client, UINT32& buffer_size);
67 ULONG STDMETHODCALLTYPE AddRef();
68 ULONG STDMETHODCALLTYPE Release();
69 HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid,
void **ppvObject);
71 HRESULT STDMETHODCALLTYPE OnDeviceStateChanged(LPCWSTR pwstrDeviceId, DWORD dwNewState);
72 HRESULT STDMETHODCALLTYPE OnDeviceAdded(LPCWSTR pwstrDeviceId);
73 HRESULT STDMETHODCALLTYPE OnDeviceRemoved(LPCWSTR pwstrDeviceId);
74 HRESULT STDMETHODCALLTYPE OnDefaultDeviceChanged(EDataFlow flow, ERole role, LPCWSTR pwstrDeviceId);
75 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:47
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