From: Davide Beatrici git@davidebeatrici.dev
--- dlls/winecoreaudio.drv/mmdevdrv.c | 134 ++++-------------------------- 1 file changed, 15 insertions(+), 119 deletions(-)
diff --git a/dlls/winecoreaudio.drv/mmdevdrv.c b/dlls/winecoreaudio.drv/mmdevdrv.c index 79f1374286f..76f06dad8fe 100644 --- a/dlls/winecoreaudio.drv/mmdevdrv.c +++ b/dlls/winecoreaudio.drv/mmdevdrv.c @@ -635,125 +635,21 @@ end: return params.result; }
-static HRESULT WINAPI AudioClient_GetBufferSize(IAudioClient3 *iface, - UINT32 *frames) -{ - ACImpl *This = impl_from_IAudioClient3(iface); - struct get_buffer_size_params params; - - TRACE("(%p)->(%p)\n", This, frames); - - if(!frames) - return E_POINTER; - - if(!This->stream) - return AUDCLNT_E_NOT_INITIALIZED; +extern HRESULT WINAPI client_GetBufferSize(IAudioClient3 *iface, + UINT32 *frames);
- params.stream = This->stream; - params.frames = frames; - UNIX_CALL(get_buffer_size, ¶ms); - return params.result; -} - -static HRESULT WINAPI AudioClient_GetStreamLatency(IAudioClient3 *iface, - REFERENCE_TIME *out) -{ - ACImpl *This = impl_from_IAudioClient3(iface); - struct get_latency_params params; - - TRACE("(%p)->(%p)\n", This, out); - - if(!out) - return E_POINTER; +extern HRESULT WINAPI client_GetStreamLatency(IAudioClient3 *iface, + REFERENCE_TIME *out);
- if(!This->stream) - return AUDCLNT_E_NOT_INITIALIZED; - - params.stream = This->stream; - params.latency = out; - UNIX_CALL(get_latency, ¶ms); - return params.result; -} - -static HRESULT WINAPI AudioClient_GetCurrentPadding(IAudioClient3 *iface, - UINT32 *numpad) -{ - ACImpl *This = impl_from_IAudioClient3(iface); - struct get_current_padding_params params; - - TRACE("(%p)->(%p)\n", This, numpad); - - if(!numpad) - return E_POINTER; - - if(!This->stream) - return AUDCLNT_E_NOT_INITIALIZED; - - params.stream = This->stream; - params.padding = numpad; - UNIX_CALL(get_current_padding, ¶ms); - return params.result; -} +extern HRESULT WINAPI client_GetCurrentPadding(IAudioClient3 *iface, + UINT32 *numpad);
-static HRESULT WINAPI AudioClient_IsFormatSupported(IAudioClient3 *iface, +extern HRESULT WINAPI client_IsFormatSupported(IAudioClient3 *iface, AUDCLNT_SHAREMODE mode, const WAVEFORMATEX *pwfx, - WAVEFORMATEX **outpwfx) -{ - ACImpl *This = impl_from_IAudioClient3(iface); - struct is_format_supported_params params; - - TRACE("(%p)->(%x, %p, %p)\n", This, mode, pwfx, outpwfx); - if(pwfx) dump_fmt(pwfx); - - params.device = This->device_name; - params.flow = This->dataflow; - params.share = mode; - params.fmt_in = pwfx; - params.fmt_out = NULL; - - if(outpwfx){ - *outpwfx = NULL; - if(mode == AUDCLNT_SHAREMODE_SHARED) - params.fmt_out = CoTaskMemAlloc(sizeof(*params.fmt_out)); - } - UNIX_CALL(is_format_supported, ¶ms); - - if(params.result == S_FALSE) - *outpwfx = ¶ms.fmt_out->Format; - else - CoTaskMemFree(params.fmt_out); - - return params.result; -} + WAVEFORMATEX **outpwfx);
-static HRESULT WINAPI AudioClient_GetMixFormat(IAudioClient3 *iface, - WAVEFORMATEX **pwfx) -{ - ACImpl *This = impl_from_IAudioClient3(iface); - struct get_mix_format_params params; - - TRACE("(%p)->(%p)\n", This, pwfx); - - if(!pwfx) - return E_POINTER; - *pwfx = NULL; - - params.device = This->device_name; - params.flow = This->dataflow; - params.fmt = CoTaskMemAlloc(sizeof(WAVEFORMATEXTENSIBLE)); - if(!params.fmt) - return E_OUTOFMEMORY; - - UNIX_CALL(get_mix_format, ¶ms); - - if(SUCCEEDED(params.result)){ - *pwfx = ¶ms.fmt->Format; - dump_fmt(*pwfx); - }else - CoTaskMemFree(params.fmt); - - return params.result; -} +extern HRESULT WINAPI client_GetMixFormat(IAudioClient3 *iface, + WAVEFORMATEX **pwfx);
extern HRESULT WINAPI client_GetDevicePeriod(IAudioClient3 *iface, REFERENCE_TIME *defperiod, REFERENCE_TIME *minperiod); @@ -797,11 +693,11 @@ static const IAudioClient3Vtbl AudioClient3_Vtbl = AudioClient_AddRef, AudioClient_Release, AudioClient_Initialize, - AudioClient_GetBufferSize, - AudioClient_GetStreamLatency, - AudioClient_GetCurrentPadding, - AudioClient_IsFormatSupported, - AudioClient_GetMixFormat, + client_GetBufferSize, + client_GetStreamLatency, + client_GetCurrentPadding, + client_IsFormatSupported, + client_GetMixFormat, client_GetDevicePeriod, client_Start, client_Stop,