From: David McFarland corngood@gmail.com
Also, implement IAudioClient3_GetSharedModeEnginePeriod with min/max/default all set to ~10ms. --- dlls/mmdevapi/client.c | 26 ++++++++++++++++++++------ dlls/mmdevapi/tests/render.c | 2 -- 2 files changed, 20 insertions(+), 8 deletions(-)
diff --git a/dlls/mmdevapi/client.c b/dlls/mmdevapi/client.c index 8146f8a53b4..220352dd1fe 100644 --- a/dlls/mmdevapi/client.c +++ b/dlls/mmdevapi/client.c @@ -929,10 +929,17 @@ static HRESULT WINAPI client_GetSharedModeEnginePeriod(IAudioClient3 *iface, 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; + FIXME("(%p)->(%p, %p, %p, %p, %p) - partial stub\n", + This, format, default_period_frames, + unit_period_frames, min_period_frames, + max_period_frames); + + *default_period_frames = + *min_period_frames = + *max_period_frames = + format->nSamplesPerSec / 100; // ~10ms + *unit_period_frames = 1; + return S_OK; }
static HRESULT WINAPI client_GetCurrentSharedModeEnginePeriod(IAudioClient3 *iface, @@ -949,9 +956,16 @@ static HRESULT WINAPI client_InitializeSharedAudioStream(IAudioClient3 *iface, D 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; + REFERENCE_TIME duration; + FIXME("(%p)->(0x%lx, %u, %p, %s) - partial stub\n", This, flags, period_frames, format, debugstr_guid(session_guid)); + + if (!format) + return E_POINTER; + + duration = period_frames * (REFERENCE_TIME)10000000 / format->nSamplesPerSec; + return client_Initialize(iface, AUDCLNT_SHAREMODE_SHARED, flags, duration, 0, format, session_guid); }
const IAudioClient3Vtbl AudioClient3_Vtbl = diff --git a/dlls/mmdevapi/tests/render.c b/dlls/mmdevapi/tests/render.c index fb346958437..bbd766c0bfc 100644 --- a/dlls/mmdevapi/tests/render.c +++ b/dlls/mmdevapi/tests/render.c @@ -330,12 +330,10 @@ static void test_audioclient(void)
hr = IAudioClient3_GetSharedModeEnginePeriod( ac3, pwfx, &default_period, &unit_period, &min_period, &max_period); - todo_wine ok(hr == S_OK, "GetSharedModeEnginePeriod returns %08lx\n", hr);
hr = IAudioClient3_InitializeSharedAudioStream( ac3, AUDCLNT_SHAREMODE_SHARED, default_period, pwfx, NULL); - todo_wine ok(hr == S_OK, "InitializeSharedAudioStream returns %08lx\n", hr);
IAudioClient3_Release(ac3);