From: Davide Beatrici git@davidebeatrici.dev
--- dlls/mmdevapi/client.c | 63 +++++++++++++++++++++++++++++++++ dlls/winepulse.drv/mmdevdrv.c | 66 +++++------------------------------ 2 files changed, 72 insertions(+), 57 deletions(-)
diff --git a/dlls/mmdevapi/client.c b/dlls/mmdevapi/client.c index 59b055ab435..1853bbaf04d 100644 --- a/dlls/mmdevapi/client.c +++ b/dlls/mmdevapi/client.c @@ -244,6 +244,69 @@ const IAudioCaptureClientVtbl AudioCaptureClient_Vtbl = capture_GetNextPacketSize };
+HRESULT WINAPI client_GetBufferSize(IAudioClient3 *iface, UINT32 *out) +{ + struct audio_client *This = impl_from_IAudioClient3(iface); + struct get_buffer_size_params params; + + TRACE("(%p)->(%p)\n", This, out); + + if (!out) + return E_POINTER; + + if (!This->stream) + return AUDCLNT_E_NOT_INITIALIZED; + + params.stream = This->stream; + params.frames = out; + + WINE_UNIX_CALL(get_buffer_size, ¶ms); + + return params.result; +} + +HRESULT WINAPI client_GetStreamLatency(IAudioClient3 *iface, REFERENCE_TIME *latency) +{ + struct audio_client *This = impl_from_IAudioClient3(iface); + struct get_latency_params params; + + TRACE("(%p)->(%p)\n", This, latency); + + if (!latency) + return E_POINTER; + + if (!This->stream) + return AUDCLNT_E_NOT_INITIALIZED; + + params.stream = This->stream; + params.latency = latency; + + WINE_UNIX_CALL(get_latency, ¶ms); + + return params.result; +} + +HRESULT WINAPI client_GetCurrentPadding(IAudioClient3 *iface, UINT32 *out) +{ + struct audio_client *This = impl_from_IAudioClient3(iface); + struct get_current_padding_params params; + + TRACE("(%p)->(%p)\n", This, out); + + if (!out) + return E_POINTER; + + if (!This->stream) + return AUDCLNT_E_NOT_INITIALIZED; + + params.stream = This->stream; + params.padding = out; + + WINE_UNIX_CALL(get_current_padding, ¶ms); + + return params.result; +} + HRESULT WINAPI client_IsFormatSupported(IAudioClient3 *iface, AUDCLNT_SHAREMODE mode, const WAVEFORMATEX *fmt, WAVEFORMATEX **out) { diff --git a/dlls/winepulse.drv/mmdevdrv.c b/dlls/winepulse.drv/mmdevdrv.c index f6663c8d467..12e36fae827 100644 --- a/dlls/winepulse.drv/mmdevdrv.c +++ b/dlls/winepulse.drv/mmdevdrv.c @@ -796,62 +796,14 @@ static HRESULT WINAPI AudioClient_Initialize(IAudioClient3 *iface, return S_OK; }
-static HRESULT WINAPI AudioClient_GetBufferSize(IAudioClient3 *iface, - UINT32 *out) -{ - ACImpl *This = impl_from_IAudioClient3(iface); - struct get_buffer_size_params params; - - TRACE("(%p)->(%p)\n", This, out); - - if (!out) - return E_POINTER; - if (!This->stream) - return AUDCLNT_E_NOT_INITIALIZED; - - params.stream = This->stream; - params.frames = out; - pulse_call(get_buffer_size, ¶ms); - return params.result; -} - -static HRESULT WINAPI AudioClient_GetStreamLatency(IAudioClient3 *iface, - REFERENCE_TIME *latency) -{ - ACImpl *This = impl_from_IAudioClient3(iface); - struct get_latency_params params; - - TRACE("(%p)->(%p)\n", This, latency); +extern HRESULT WINAPI client_GetBufferSize(IAudioClient3 *iface, + UINT32 *out);
- if (!latency) - return E_POINTER; - if (!This->stream) - return AUDCLNT_E_NOT_INITIALIZED; - - params.stream = This->stream; - params.latency = latency; - pulse_call(get_latency, ¶ms); - return params.result; -} - -static HRESULT WINAPI AudioClient_GetCurrentPadding(IAudioClient3 *iface, - UINT32 *out) -{ - ACImpl *This = impl_from_IAudioClient3(iface); - struct get_current_padding_params params; - - TRACE("(%p)->(%p)\n", This, out); - - if (!out) - return E_POINTER; - if (!This->stream) - return AUDCLNT_E_NOT_INITIALIZED; +extern HRESULT WINAPI client_GetStreamLatency(IAudioClient3 *iface, + REFERENCE_TIME *latency);
- params.stream = This->stream; - params.padding = out; - pulse_call(get_current_padding, ¶ms); - return params.result; -} +extern HRESULT WINAPI client_GetCurrentPadding(IAudioClient3 *iface, + UINT32 *out);
extern HRESULT WINAPI client_IsFormatSupported(IAudioClient3 *iface, AUDCLNT_SHAREMODE mode, const WAVEFORMATEX *fmt, @@ -902,9 +854,9 @@ static const IAudioClient3Vtbl AudioClient3_Vtbl = AudioClient_AddRef, AudioClient_Release, AudioClient_Initialize, - AudioClient_GetBufferSize, - AudioClient_GetStreamLatency, - AudioClient_GetCurrentPadding, + client_GetBufferSize, + client_GetStreamLatency, + client_GetCurrentPadding, client_IsFormatSupported, client_GetMixFormat, client_GetDevicePeriod,