46class AUD_PLUGIN_API WASAPIDevice : IMMNotificationClient,
public ThreadedDevice
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);
78 WASAPIDevice(
const WASAPIDevice&) =
delete;
79 WASAPIDevice& operator=(
const WASAPIDevice&) =
delete;