From: Giovanni Mascellani <gmascellani@codeweavers.com> PCM 24-bit samples can either be stored packed or aligned to 32 bits. It's useful to test both variants, since some audio backend don't handle them properly. --- dlls/winmm/tests/rsrc.rc | 10 ++++++++++ dlls/winmm/tests/test_s24_32le.wav | Bin 0 -> 17742 bytes dlls/winmm/tests/test_s24le.wav | Bin 0 -> 13332 bytes dlls/winmm/tests/wave.c | 6 ++++++ 4 files changed, 16 insertions(+) create mode 100644 dlls/winmm/tests/test_s24_32le.wav create mode 100644 dlls/winmm/tests/test_s24le.wav diff --git a/dlls/winmm/tests/rsrc.rc b/dlls/winmm/tests/rsrc.rc index b36fa3c407d..b77f501344e 100644 --- a/dlls/winmm/tests/rsrc.rc +++ b/dlls/winmm/tests/rsrc.rc @@ -24,6 +24,16 @@ /* @makedep: test.mpg */ test.mpg RCDATA "test.mpg" +/* ffmpeg -f lavfi -i "sine=frequency=1000" -t 0.1 -c:a pcm_s24le test_s24le.wav */ +/* @makedep: test_s24le.wav */ +test_s24le.wav WAVE "test_s24le.wav" + +/* ffmpeg does't directly support 24 useful bits in 32 bit words, so let's generate 32 bit and than patch the header. */ +/* ffmpeg -f lavfi -i "sine=frequency=1000" -t 0.1 -c:a pcm_s32le test_s24_32le.wav */ +/* xxd -r <(echo 00000026: 1800) test_s24_32le.wav */ +/* @makedep: test_s24_32le.wav */ +test_s24_32le.wav WAVE "test_s24_32le.wav" + /* ffmpeg -f lavfi -i "sine=frequency=1000" -t 0.1 -c:a pcm_alaw test_alaw.wav */ /* @makedep: test_alaw.wav */ test_alaw.wav WAVE "test_alaw.wav" diff --git a/dlls/winmm/tests/test_s24_32le.wav b/dlls/winmm/tests/test_s24_32le.wav new file mode 100644 index 0000000000000000000000000000000000000000..31f397b6aa6901b8830ed8a870acf6532d29c694 GIT binary patch literal 17742 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 literal 0 HcmV?d00001 diff --git a/dlls/winmm/tests/test_s24le.wav b/dlls/winmm/tests/test_s24le.wav new file mode 100644 index 0000000000000000000000000000000000000000..1de39ff2965a60087cde4e3af48be12e830dbc8a GIT binary patch literal 13332 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 CDm<zH literal 0 HcmV?d00001 diff --git a/dlls/winmm/tests/wave.c b/dlls/winmm/tests/wave.c index 3846fad0908..dd349d0d9da 100644 --- a/dlls/winmm/tests/wave.c +++ b/dlls/winmm/tests/wave.c @@ -1910,6 +1910,12 @@ static void test_PlaySound(void) } /* Test a few more exotic formats. */ + br = PlaySoundA("test_s24le.wav", GetModuleHandleA(NULL), SND_RESOURCE | SND_NODEFAULT); + ok(br, "PlaySound failed, got %d\n", br); + + br = PlaySoundA("test_s24_32le.wav", GetModuleHandleA(NULL), SND_RESOURCE | SND_NODEFAULT); + ok(br, "PlaySound failed, got %d\n", br); + br = PlaySoundA("test_alaw.wav", GetModuleHandleA(NULL), SND_RESOURCE | SND_NODEFAULT); ok(br, "PlaySound failed, got %d\n", br); -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/10175