Module: wine Branch: master Commit: 7d7da2efb111fe7318a45891730be84b2b97a6f7 URL: https://gitlab.winehq.org/wine/wine/-/commit/7d7da2efb111fe7318a45891730be84...
Author: Davide Beatrici git@davidebeatrici.dev Date: Tue May 16 03:13:06 2023 +0200
wineoss: Use mmdevapi's AudioRenderClient.
---
dlls/wineoss.drv/mmdevdrv.c | 88 +-------------------------------------------- 1 file changed, 1 insertion(+), 87 deletions(-)
diff --git a/dlls/wineoss.drv/mmdevdrv.c b/dlls/wineoss.drv/mmdevdrv.c index 323e96359c4..dac5790e384 100644 --- a/dlls/wineoss.drv/mmdevdrv.c +++ b/dlls/wineoss.drv/mmdevdrv.c @@ -78,7 +78,7 @@ static struct list g_sessions = LIST_INIT(g_sessions); static AudioSessionWrapper *AudioSessionWrapper_Create(ACImpl *client);
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; @@ -102,11 +102,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) @@ -1084,87 +1079,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; - OSS_CALL(get_render_buffer, ¶ms); - - return params.result; -} - -static HRESULT WINAPI AudioRenderClient_ReleaseBuffer( - IAudioRenderClient *iface, UINT32 written_frames, DWORD flags) -{ - ACImpl *This = impl_from_IAudioRenderClient(iface); - struct release_render_buffer_params params; - - TRACE("(%p)->(%u, %lx)\n", This, written_frames, flags); - - params.stream = This->stream; - params.written_frames = written_frames; - params.flags = flags; - OSS_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;