Module: wine Branch: master Commit: 446a8f143a8318718769853ef62c3e0b05913917 URL: https://gitlab.winehq.org/wine/wine/-/commit/446a8f143a8318718769853ef62c3e0...
Author: Davide Beatrici git@davidebeatrici.dev Date: Tue May 16 03:12:46 2023 +0200
winecoreaudio: Use mmdevapi's AudioRenderClient.
---
dlls/winecoreaudio.drv/mmdevdrv.c | 86 +-------------------------------------- 1 file changed, 1 insertion(+), 85 deletions(-)
diff --git a/dlls/winecoreaudio.drv/mmdevdrv.c b/dlls/winecoreaudio.drv/mmdevdrv.c index 4c3fcbc5897..756aab93f71 100644 --- a/dlls/winecoreaudio.drv/mmdevdrv.c +++ b/dlls/winecoreaudio.drv/mmdevdrv.c @@ -52,7 +52,7 @@ static const REFERENCE_TIME DefaultPeriod = 100000; static const REFERENCE_TIME MinimumPeriod = 50000;
static const IAudioClient3Vtbl AudioClient3_Vtbl; -static const IAudioRenderClientVtbl AudioRenderClient_Vtbl; +extern const IAudioRenderClientVtbl AudioRenderClient_Vtbl; extern const IAudioCaptureClientVtbl AudioCaptureClient_Vtbl; extern const IAudioSessionControl2Vtbl AudioSessionControl2_Vtbl; extern const ISimpleAudioVolumeVtbl SimpleAudioVolume_Vtbl; @@ -90,11 +90,6 @@ static inline ACImpl *impl_from_IAudioClient3(IAudioClient3 *iface) return CONTAINING_RECORD(iface, ACImpl, IAudioClient3_iface); }
-static inline ACImpl *impl_from_IAudioRenderClient(IAudioRenderClient *iface) -{ - return CONTAINING_RECORD(iface, ACImpl, IAudioRenderClient_iface); -} - BOOL WINAPI DllMain(HINSTANCE dll, DWORD reason, void *reserved) { switch (reason) @@ -1092,85 +1087,6 @@ static const IAudioClient3Vtbl AudioClient3_Vtbl = AudioClient_InitializeSharedAudioStream, };
-static HRESULT WINAPI AudioRenderClient_QueryInterface( - IAudioRenderClient *iface, REFIID riid, void **ppv) -{ - ACImpl *This = impl_from_IAudioRenderClient(iface); - TRACE("(%p)->(%s, %p)\n", iface, debugstr_guid(riid), ppv); - - if(!ppv) - return E_POINTER; - *ppv = NULL; - - if(IsEqualIID(riid, &IID_IUnknown) || - IsEqualIID(riid, &IID_IAudioRenderClient)) - *ppv = iface; - else if(IsEqualIID(riid, &IID_IMarshal)) - return IUnknown_QueryInterface(This->marshal, riid, ppv); - - if(*ppv){ - IUnknown_AddRef((IUnknown*)*ppv); - return S_OK; - } - - WARN("Unknown interface %s\n", debugstr_guid(riid)); - return E_NOINTERFACE; -} - -static ULONG WINAPI AudioRenderClient_AddRef(IAudioRenderClient *iface) -{ - ACImpl *This = impl_from_IAudioRenderClient(iface); - return IAudioClient3_AddRef(&This->IAudioClient3_iface); -} - -static ULONG WINAPI AudioRenderClient_Release(IAudioRenderClient *iface) -{ - ACImpl *This = impl_from_IAudioRenderClient(iface); - return IAudioClient3_Release(&This->IAudioClient3_iface); -} - -static HRESULT WINAPI AudioRenderClient_GetBuffer(IAudioRenderClient *iface, - UINT32 frames, BYTE **data) -{ - ACImpl *This = impl_from_IAudioRenderClient(iface); - struct get_render_buffer_params params; - - TRACE("(%p)->(%u, %p)\n", This, frames, data); - - if(!data) - return E_POINTER; - *data = NULL; - - params.stream = This->stream; - params.frames = frames; - params.data = data; - UNIX_CALL(get_render_buffer, ¶ms); - return params.result; -} - -static HRESULT WINAPI AudioRenderClient_ReleaseBuffer( - IAudioRenderClient *iface, UINT32 frames, DWORD flags) -{ - ACImpl *This = impl_from_IAudioRenderClient(iface); - struct release_render_buffer_params params; - - TRACE("(%p)->(%u, %lx)\n", This, frames, flags); - - params.stream = This->stream; - params.written_frames = frames; - params.flags = flags; - UNIX_CALL(release_render_buffer, ¶ms); - return params.result; -} - -static const IAudioRenderClientVtbl AudioRenderClient_Vtbl = { - AudioRenderClient_QueryInterface, - AudioRenderClient_AddRef, - AudioRenderClient_Release, - AudioRenderClient_GetBuffer, - AudioRenderClient_ReleaseBuffer -}; - static AudioSessionWrapper *AudioSessionWrapper_Create(ACImpl *client) { AudioSessionWrapper *ret;