[PATCH 1/2] xaudio2/tests: Check that GetDeviceDetails returns a PCM format.
Far Cry 4 expects IXAudio27_GetDeviceDetails to return a PCM format GUID and refuses to create a source voice if the format is IEEE_FLOAT. Signed-off-by: Rémi Bernon <rbernon(a)codeweavers.com> --- dlls/xaudio2_7/tests/xaudio2.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/dlls/xaudio2_7/tests/xaudio2.c b/dlls/xaudio2_7/tests/xaudio2.c index 502b513fb6b..ea7e2ec121a 100644 --- a/dlls/xaudio2_7/tests/xaudio2.c +++ b/dlls/xaudio2_7/tests/xaudio2.c @@ -27,6 +27,8 @@ #include "xapo.h" #include "xapofx.h" #include "mmsystem.h" +#include "ks.h" +#include "ksmedia.h" static BOOL xaudio27; @@ -937,6 +939,10 @@ static UINT32 test_DeviceDetails(IXAudio27 *xa) ok(dd.Role == GlobalDefaultDevice, "Got wrong role for index 0: 0x%x\n", dd.Role); else ok(dd.Role == NotDefaultDevice, "Got wrong role for index %u: 0x%x\n", i, dd.Role); + + todo_wine + ok(IsEqualGUID(&dd.OutputFormat.SubFormat, &KSDATAFORMAT_SUBTYPE_PCM), + "got format %s\n", debugstr_guid(&dd.OutputFormat.SubFormat)); } return count; -- 2.34.0
And that a corresponding PCM format is supported. Signed-off-by: Rémi Bernon <rbernon(a)codeweavers.com> --- dlls/mmdevapi/tests/render.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/dlls/mmdevapi/tests/render.c b/dlls/mmdevapi/tests/render.c index 495c1c6f496..6b77edc569e 100644 --- a/dlls/mmdevapi/tests/render.c +++ b/dlls/mmdevapi/tests/render.c @@ -232,6 +232,14 @@ static void test_audioclient(void) IsEqualGUID(&pwfxe->SubFormat, &KSDATAFORMAT_SUBTYPE_PCM)?"PCM": (IsEqualGUID(&pwfxe->SubFormat, &KSDATAFORMAT_SUBTYPE_IEEE_FLOAT)?"FLOAT":"Other")); + ok(IsEqualGUID(&pwfxe->SubFormat, &KSDATAFORMAT_SUBTYPE_IEEE_FLOAT), + "got format %s\n", debugstr_guid(&pwfxe->SubFormat)); + + pwfxe->SubFormat = KSDATAFORMAT_SUBTYPE_PCM; + hr = IAudioClient_IsFormatSupported(ac, AUDCLNT_SHAREMODE_SHARED, pwfx, &pwfx2); + ok(hr == S_OK, "Valid IsFormatSupported(Shared) call returns %08x\n", hr); + ok(pwfx2 == NULL, "pwfx2 is non-null\n"); + CoTaskMemFree(pwfx2); } hr = IAudioClient_IsFormatSupported(ac, AUDCLNT_SHAREMODE_SHARED, pwfx, &pwfx2); -- 2.34.0
Hi, While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check? Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=104270 Your paranoid android. === w8 (32 bit report) === mmdevapi: render.c:1114: Test failed: Position 6656 too far after playing 100ms === w864 (32 bit report) === mmdevapi: render.c:1114: Test failed: Position 6656 too far after playing 100ms === w1064v1507 (32 bit report) === mmdevapi: render.c:1114: Test failed: Position 51120 too far after playing 100ms render.c:1114: Test failed: Position 6743 too far after playing 100ms render.c:1340: Test failed: GetBuffer large (20671) at iteration 1 === w1064v1809 (32 bit report) === mmdevapi: render.c:1114: Test failed: Position 51968 too far after playing 100ms render.c:1114: Test failed: Position 6797 too far after playing 100ms === w1064 (32 bit report) === mmdevapi: render.c:1114: Test failed: Position 58680 too far after playing 100ms render.c:1114: Test failed: Position 7039 too far after playing 100ms === w1064_tsign (32 bit report) === mmdevapi: render.c:1114: Test failed: Position 7677 too far after playing 100ms === w10pro64 (32 bit report) === mmdevapi: render.c:1114: Test failed: Position 58600 too far after playing 100ms render.c:1340: Test failed: GetBuffer large (22500) at iteration 3 render.c:1114: Test failed: Position 7196 too far after playing 100ms === w864 (64 bit report) === mmdevapi: render.c:1340: Test failed: GetBuffer large (20671) at iteration 4 render.c:1114: Test failed: Position 6656 too far after playing 100ms render.c:1340: Test failed: GetBuffer large (20671) at iteration 2 === w1064v1507 (64 bit report) === mmdevapi: render.c:1114: Test failed: Position 51168 too far after playing 100ms render.c:1114: Test failed: Position 6616 too far after playing 100ms === w1064v1809 (64 bit report) === mmdevapi: render.c:1114: Test failed: Position 52296 too far after playing 100ms render.c:1114: Test failed: Position 6417 too far after playing 100ms === w1064 (64 bit report) === mmdevapi: render.c:1114: Test failed: Position 58296 too far after playing 100ms render.c:1114: Test failed: Position 6809 too far after playing 100ms === w1064_2qxl (64 bit report) === mmdevapi: render.c:1114: Test failed: Position 58696 too far after playing 100ms render.c:1114: Test failed: Position 6843 too far after playing 100ms === w1064_tsign (64 bit report) === mmdevapi: render.c:1114: Test failed: Position 6911 too far after playing 100ms === w10pro64 (64 bit report) === mmdevapi: render.c:1114: Test failed: Position 55808 too far after playing 100ms render.c:1340: Test failed: GetBuffer large (22500) at iteration 2 render.c:1114: Test failed: Position 7036 too far after playing 100ms === w10pro64_ar (64 bit report) === mmdevapi: render.c:1114: Test failed: Position 58768 too far after playing 100ms render.c:1114: Test failed: Position 7090 too far after playing 100ms === w10pro64_he (64 bit report) === mmdevapi: render.c:1114: Test failed: Position 57640 too far after playing 100ms render.c:1340: Test failed: GetBuffer large (22500) at iteration 5 render.c:1340: Test failed: GetBuffer large (22500) at iteration 7 render.c:1114: Test failed: Position 7017 too far after playing 100ms === w10pro64_ja (64 bit report) === mmdevapi: render.c:1114: Test failed: Position 58736 too far after playing 100ms render.c:1114: Test failed: Position 7789 too far after playing 100ms === w10pro64_zh_CN (64 bit report) === mmdevapi: render.c:1114: Test failed: Position 57560 too far after playing 100ms render.c:1114: Test failed: Position 7798 too far after playing 100ms
Signed-off-by: Andrew Eikum <aeikum(a)codeweavers.com> On Mon, Dec 20, 2021 at 05:16:36PM +0100, Rémi Bernon wrote:
And that a corresponding PCM format is supported.
Signed-off-by: Rémi Bernon <rbernon(a)codeweavers.com> --- dlls/mmdevapi/tests/render.c | 8 ++++++++ 1 file changed, 8 insertions(+)
diff --git a/dlls/mmdevapi/tests/render.c b/dlls/mmdevapi/tests/render.c index 495c1c6f496..6b77edc569e 100644 --- a/dlls/mmdevapi/tests/render.c +++ b/dlls/mmdevapi/tests/render.c @@ -232,6 +232,14 @@ static void test_audioclient(void) IsEqualGUID(&pwfxe->SubFormat, &KSDATAFORMAT_SUBTYPE_PCM)?"PCM": (IsEqualGUID(&pwfxe->SubFormat, &KSDATAFORMAT_SUBTYPE_IEEE_FLOAT)?"FLOAT":"Other")); + ok(IsEqualGUID(&pwfxe->SubFormat, &KSDATAFORMAT_SUBTYPE_IEEE_FLOAT), + "got format %s\n", debugstr_guid(&pwfxe->SubFormat)); + + pwfxe->SubFormat = KSDATAFORMAT_SUBTYPE_PCM; + hr = IAudioClient_IsFormatSupported(ac, AUDCLNT_SHAREMODE_SHARED, pwfx, &pwfx2); + ok(hr == S_OK, "Valid IsFormatSupported(Shared) call returns %08x\n", hr); + ok(pwfx2 == NULL, "pwfx2 is non-null\n"); + CoTaskMemFree(pwfx2); }
hr = IAudioClient_IsFormatSupported(ac, AUDCLNT_SHAREMODE_SHARED, pwfx, &pwfx2); -- 2.34.0
Hi, While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check? Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=104269 Your paranoid android. === w10pro64_ja (64 bit report) === xaudio2_7: xaudio2.c:69: Test failed: Callbacks called out of order: 3 === debian11 (32 bit French report) === xaudio2_7: xaudio2.c:69: Test failed: Callbacks called out of order: 1
Signed-off-by: Andrew Eikum <aeikum(a)codeweavers.com> On Mon, Dec 20, 2021 at 05:16:35PM +0100, Rémi Bernon wrote:
Far Cry 4 expects IXAudio27_GetDeviceDetails to return a PCM format GUID and refuses to create a source voice if the format is IEEE_FLOAT.
Signed-off-by: Rémi Bernon <rbernon(a)codeweavers.com> --- dlls/xaudio2_7/tests/xaudio2.c | 6 ++++++ 1 file changed, 6 insertions(+)
diff --git a/dlls/xaudio2_7/tests/xaudio2.c b/dlls/xaudio2_7/tests/xaudio2.c index 502b513fb6b..ea7e2ec121a 100644 --- a/dlls/xaudio2_7/tests/xaudio2.c +++ b/dlls/xaudio2_7/tests/xaudio2.c @@ -27,6 +27,8 @@ #include "xapo.h" #include "xapofx.h" #include "mmsystem.h" +#include "ks.h" +#include "ksmedia.h"
static BOOL xaudio27;
@@ -937,6 +939,10 @@ static UINT32 test_DeviceDetails(IXAudio27 *xa) ok(dd.Role == GlobalDefaultDevice, "Got wrong role for index 0: 0x%x\n", dd.Role); else ok(dd.Role == NotDefaultDevice, "Got wrong role for index %u: 0x%x\n", i, dd.Role); + + todo_wine + ok(IsEqualGUID(&dd.OutputFormat.SubFormat, &KSDATAFORMAT_SUBTYPE_PCM), + "got format %s\n", debugstr_guid(&dd.OutputFormat.SubFormat)); }
return count; -- 2.34.0
participants (3)
-
Andrew Eikum -
Marvin -
Rémi Bernon