From: Giovanni Mascellani <gmascellani(a)codeweavers.com> --- dlls/mmdevapi/client.c | 7 ++++++- dlls/mmdevapi/tests/render.c | 1 - 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/dlls/mmdevapi/client.c b/dlls/mmdevapi/client.c index 61b9167f3c6..6401f231e4f 100644 --- a/dlls/mmdevapi/client.c +++ b/dlls/mmdevapi/client.c @@ -400,12 +400,17 @@ static HRESULT stream_init(struct audio_client *client, const BOOLEAN force_def_ if (mode == AUDCLNT_SHAREMODE_SHARED) { WAVEFORMATEX *mix_fmt; + BOOL compatible; HRESULT hr; if (FAILED(hr = IAudioClient3_GetMixFormat(&client->IAudioClient3_iface, &mix_fmt))) return hr; - if (fmt->nChannels != mix_fmt->nChannels || fmt->nSamplesPerSec != mix_fmt->nSamplesPerSec) + compatible = fmt->nChannels == mix_fmt->nChannels; + if (!(flags & AUDCLNT_STREAMFLAGS_RATEADJUST)) + compatible &= fmt->nSamplesPerSec == mix_fmt->nSamplesPerSec; + + if (!compatible) { CoTaskMemFree(mix_fmt); return AUDCLNT_E_UNSUPPORTED_FORMAT; diff --git a/dlls/mmdevapi/tests/render.c b/dlls/mmdevapi/tests/render.c index ea0caf4b6b0..7ad890320e0 100644 --- a/dlls/mmdevapi/tests/render.c +++ b/dlls/mmdevapi/tests/render.c @@ -628,7 +628,6 @@ static void test_formats(AUDCLNT_SHAREMODE mode) hr = IAudioClient_Initialize(ac, mode, AUDCLNT_STREAMFLAGS_RATEADJUST, 5000000, 0, &fmt, NULL); if (mode == AUDCLNT_SHAREMODE_SHARED) - todo_wine_if(hr == AUDCLNT_E_UNSUPPORTED_FORMAT && compatible) ok(hr == expected || broken(hr == E_INVALIDARG) /* Vista */, "Initialize(shared, %c%lux%2ux%u) returns %08lx\n", format_chr, fmt.nSamplesPerSec, fmt.wBitsPerSample, fmt.nChannels, hr); -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/8598