From: Davide Beatrici git@davidebeatrici.dev
--- dlls/mmdevapi/Makefile.in | 1 + dlls/mmdevapi/audioclient.c | 228 ++++++++++++++++++++++++++++++++++++ 2 files changed, 229 insertions(+) create mode 100644 dlls/mmdevapi/audioclient.c
diff --git a/dlls/mmdevapi/Makefile.in b/dlls/mmdevapi/Makefile.in index 85a52d87184..30e9079b442 100644 --- a/dlls/mmdevapi/Makefile.in +++ b/dlls/mmdevapi/Makefile.in @@ -2,6 +2,7 @@ MODULE = mmdevapi.dll IMPORTS = uuid ole32 oleaut32 user32 advapi32
C_SRCS = \ + audioclient.c \ audiosessionmanager.c \ audiovolume.c \ devenum.c \ diff --git a/dlls/mmdevapi/audioclient.c b/dlls/mmdevapi/audioclient.c new file mode 100644 index 00000000000..d89b0908e96 --- /dev/null +++ b/dlls/mmdevapi/audioclient.c @@ -0,0 +1,228 @@ +/* + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#define COBJMACROS + +#include <audiopolicy.h> +#include <mmdeviceapi.h> + +#include <wine/debug.h> + +#include "mmdevdrv.h" + +WINE_DEFAULT_DEBUG_CHANNEL(mmdevapi); + +static inline struct audio_client *impl_from_IAudioClient3(IAudioClient3 *iface) +{ + return CONTAINING_RECORD(iface, struct audio_client, IAudioClient3_iface); +} + +static HRESULT WINAPI AudioClient_QueryInterface(IAudioClient3 *iface, REFIID riid, void **ppv) +{ + struct audio_client *This = impl_from_IAudioClient3(iface); + FIXME("(%p)->(%s, %p) - stub\n", This, debugstr_guid(riid), ppv); + return E_NOTIMPL; +} + +static ULONG WINAPI AudioClient_AddRef(IAudioClient3 *iface) +{ + struct audio_client *This = impl_from_IAudioClient3(iface); + FIXME("(%p) - stub\n", This); + return 0; +} + +static ULONG WINAPI AudioClient_Release(IAudioClient3 *iface) +{ + struct audio_client *This = impl_from_IAudioClient3(iface); + FIXME("(%p) - stub\n", This); + return 0; +} + +static HRESULT WINAPI AudioClient_Initialize(IAudioClient3 *iface, AUDCLNT_SHAREMODE mode, + DWORD flags, REFERENCE_TIME duration, + REFERENCE_TIME period, const WAVEFORMATEX *fmt, + const GUID *sessionguid) +{ + struct audio_client *This = impl_from_IAudioClient3(iface); + FIXME("(%p)->(%x, %lx, %s, %s, %p, %s) - stub\n", This, mode, flags, + wine_dbgstr_longlong(duration), + wine_dbgstr_longlong(period), fmt, + debugstr_guid(sessionguid)); + return E_NOTIMPL; +} + +static HRESULT WINAPI AudioClient_GetBufferSize(IAudioClient3 *iface, UINT32 *out) +{ + struct audio_client *This = impl_from_IAudioClient3(iface); + FIXME("(%p)->(%p) - stub\n", This, out); + return E_NOTIMPL; +} + +static HRESULT WINAPI AudioClient_GetStreamLatency(IAudioClient3 *iface, REFERENCE_TIME *latency) +{ + struct audio_client *This = impl_from_IAudioClient3(iface); + FIXME("(%p)->(%p) - stub\n", This, latency); + return E_NOTIMPL; +} + +static HRESULT WINAPI AudioClient_GetCurrentPadding(IAudioClient3 *iface, UINT32 *out) +{ + struct audio_client *This = impl_from_IAudioClient3(iface); + FIXME("(%p)->(%p) - stub\n", This, out); + return E_NOTIMPL; +} + +static HRESULT WINAPI AudioClient_IsFormatSupported(IAudioClient3 *iface, AUDCLNT_SHAREMODE mode, + const WAVEFORMATEX *fmt, WAVEFORMATEX **out) +{ + struct audio_client *This = impl_from_IAudioClient3(iface); + FIXME("(%p)->(%x, %p, %p) - stub\n", This, mode, fmt, out); + return E_NOTIMPL; +} + +static HRESULT WINAPI AudioClient_GetMixFormat(IAudioClient3 *iface, WAVEFORMATEX **pwfx) +{ + struct audio_client *This = impl_from_IAudioClient3(iface); + FIXME("(%p)->(%p) - stub\n", This, pwfx); + return E_NOTIMPL; +} + +static HRESULT WINAPI AudioClient_GetDevicePeriod(IAudioClient3 *iface, REFERENCE_TIME *defperiod, + REFERENCE_TIME *minperiod) +{ + struct audio_client *This = impl_from_IAudioClient3(iface); + FIXME("(%p)->(%p, %p) - stub\n", This, defperiod, minperiod); + return E_NOTIMPL; +} + +static HRESULT WINAPI AudioClient_Start(IAudioClient3 *iface) +{ + struct audio_client *This = impl_from_IAudioClient3(iface); + FIXME("(%p) - stub\n", This); + return E_NOTIMPL; +} + +static HRESULT WINAPI AudioClient_Stop(IAudioClient3 *iface) +{ + struct audio_client *This = impl_from_IAudioClient3(iface); + FIXME("(%p) - stub\n", This); + return E_NOTIMPL; +} + +static HRESULT WINAPI AudioClient_Reset(IAudioClient3 *iface) +{ + struct audio_client *This = impl_from_IAudioClient3(iface); + FIXME("(%p) - stub\n", This); + return E_NOTIMPL; +} + +static HRESULT WINAPI AudioClient_SetEventHandle(IAudioClient3 *iface, HANDLE event) +{ + struct audio_client *This = impl_from_IAudioClient3(iface); + FIXME("(%p)->(%p) - stub\n", This, event); + return E_NOTIMPL; +} + +static HRESULT WINAPI AudioClient_GetService(IAudioClient3 *iface, REFIID riid, void **ppv) +{ + struct audio_client *This = impl_from_IAudioClient3(iface); + FIXME("(%p)->(%s, %p) - stub\n", This, debugstr_guid(riid), ppv); + return E_NOTIMPL; +} + +static HRESULT WINAPI AudioClient_IsOffloadCapable(IAudioClient3 *iface, + AUDIO_STREAM_CATEGORY category, BOOL *offload_capable) +{ + struct audio_client *This = impl_from_IAudioClient3(iface); + FIXME("(%p)->(0x%x, %p) - stub\n", This, category, offload_capable); + return E_NOTIMPL; +} + +static HRESULT WINAPI AudioClient_SetClientProperties(IAudioClient3 *iface, + const AudioClientProperties *prop) +{ + struct audio_client *This = impl_from_IAudioClient3(iface); + FIXME("(%p)->(%p) - stub\n", This, prop); + return E_NOTIMPL; +} + +static HRESULT WINAPI AudioClient_GetBufferSizeLimits(IAudioClient3 *iface, + const WAVEFORMATEX *format, BOOL event_driven, + REFERENCE_TIME *min_duration, + REFERENCE_TIME *max_duration) +{ + struct audio_client *This = impl_from_IAudioClient3(iface); + FIXME("(%p)->(%p, %u, %p, %p) - stub\n", This, format, event_driven, min_duration, max_duration); + return E_NOTIMPL; +} + +static HRESULT WINAPI AudioClient_GetSharedModeEnginePeriod(IAudioClient3 *iface, + const WAVEFORMATEX *format, + UINT32 *default_period_frames, + UINT32 *unit_period_frames, + UINT32 *min_period_frames, + UINT32 *max_period_frames) +{ + struct audio_client *This = impl_from_IAudioClient3(iface); + FIXME("(%p)->(%p, %p, %p, %p, %p) - stub\n", This, format, default_period_frames, + unit_period_frames, min_period_frames, + max_period_frames); + return E_NOTIMPL; +} + +static HRESULT WINAPI AudioClient_GetCurrentSharedModeEnginePeriod(IAudioClient3 *iface, + WAVEFORMATEX **cur_format, + UINT32 *cur_period_frames) +{ + struct audio_client *This = impl_from_IAudioClient3(iface); + FIXME("(%p)->(%p, %p) - stub\n", This, cur_format, cur_period_frames); + return E_NOTIMPL; +} + +static HRESULT WINAPI AudioClient_InitializeSharedAudioStream(IAudioClient3 *iface, DWORD flags, + UINT32 period_frames, + const WAVEFORMATEX *format, + const GUID *session_guid) +{ + struct audio_client *This = impl_from_IAudioClient3(iface); + FIXME("(%p)->(0x%lx, %u, %p, %s) - stub\n", This, flags, period_frames, format, debugstr_guid(session_guid)); + return E_NOTIMPL; +} + +const IAudioClient3Vtbl AudioClient3_Vtbl = +{ + AudioClient_QueryInterface, + AudioClient_AddRef, + AudioClient_Release, + AudioClient_Initialize, + AudioClient_GetBufferSize, + AudioClient_GetStreamLatency, + AudioClient_GetCurrentPadding, + AudioClient_IsFormatSupported, + AudioClient_GetMixFormat, + AudioClient_GetDevicePeriod, + AudioClient_Start, + AudioClient_Stop, + AudioClient_Reset, + AudioClient_SetEventHandle, + AudioClient_GetService, + AudioClient_IsOffloadCapable, + AudioClient_SetClientProperties, + AudioClient_GetBufferSizeLimits, + AudioClient_GetSharedModeEnginePeriod, + AudioClient_GetCurrentSharedModeEnginePeriod, + AudioClient_InitializeSharedAudioStream, +};