From c97b8a8f1a5df34e3d03c405bda5f76356123da4 Mon Sep 17 00:00:00 2001 From: Shaun Ren Date: Fri, 2 Dec 2022 22:05:20 -0500 Subject: [PATCH] mfplay/tests: Add tests for MF_SD_LANGUAGE. --- dlls/mfplay/tests/mfplay.c | 70 +++++++++++++++++++++++++++++++ dlls/mfplay/tests/resource.rc | 27 ++++++++++++ dlls/mfplay/tests/test-ang.mp4 | Bin 0 -> 860 bytes dlls/mfplay/tests/test-ang.wma | Bin 0 -> 3867 bytes dlls/mfplay/tests/test-en-US.mp4 | Bin 0 -> 866 bytes dlls/mfplay/tests/test-en-US.wma | Bin 0 -> 3871 bytes dlls/mfplay/tests/test-en.wma | Bin 0 -> 3865 bytes dlls/mfplay/tests/test-eng.mp4 | Bin 0 -> 860 bytes dlls/mfplay/tests/test-eng.wma | Bin 0 -> 3867 bytes dlls/mfplay/tests/test-und.mp4 | Bin 0 -> 860 bytes dlls/mfplay/tests/test-und.wma | Bin 0 -> 3867 bytes 11 files changed, 97 insertions(+) create mode 100644 dlls/mfplay/tests/test-ang.mp4 create mode 100644 dlls/mfplay/tests/test-ang.wma create mode 100644 dlls/mfplay/tests/test-en-US.mp4 create mode 100644 dlls/mfplay/tests/test-en-US.wma create mode 100644 dlls/mfplay/tests/test-en.wma create mode 100644 dlls/mfplay/tests/test-eng.mp4 create mode 100644 dlls/mfplay/tests/test-eng.wma create mode 100644 dlls/mfplay/tests/test-und.mp4 create mode 100644 dlls/mfplay/tests/test-und.wma diff --git a/dlls/mfplay/tests/mfplay.c b/dlls/mfplay/tests/mfplay.c index 6cecd3bbdd9..fa66ccae57e 100644 --- a/dlls/mfplay/tests/mfplay.c +++ b/dlls/mfplay/tests/mfplay.c @@ -437,6 +437,75 @@ static void test_media_item(void) IMFPMediaPlayer_Release(player); } +#define check_media_language(player, resource_name, expected_lang) \ + _check_media_language(__LINE__, FALSE, player, resource_name, expected_lang) +#define todo_check_media_language(player, resource_name, expected_lang) \ + _check_media_language(__LINE__, TRUE, player, resource_name, expected_lang) +static void _check_media_language(unsigned line, BOOL todo, IMFPMediaPlayer *player, + const WCHAR *resource_name, const WCHAR *expected_lang) +{ + WCHAR *filename; + IMFPMediaItem *item; + PROPVARIANT propvar; + const WCHAR *lang = NULL; + HRESULT hr; + + filename = load_resource(resource_name); + + hr = IMFPMediaPlayer_CreateMediaItemFromURL(player, filename, TRUE, 123, &item); + ok_(__FILE__, line)(hr == S_OK || broken(hr == MF_E_UNSUPPORTED_BYTESTREAM_TYPE) /* win8 - win10 1507 */, + "Unexpected hr %#lx.\n", hr); + if (hr != S_OK) + { + DeleteFileW(filename); + return; + } + + hr = IMFPMediaItem_GetStreamAttribute(item, 0, &MF_SD_LANGUAGE, &propvar); + ok_(__FILE__, line)(hr == S_OK || hr == MF_E_ATTRIBUTENOTFOUND, "Unexpected hr %#lx.\n", hr); + + if (hr == S_OK) + { + ok_(__FILE__, line)(propvar.vt == VT_LPWSTR, "Unexpected vt %u.\n", propvar.vt); + if (propvar.vt == VT_LPWSTR) + lang = propvar.pwszVal; + } + + todo_wine_if(todo) + { + if (expected_lang) + ok_(__FILE__, line)(lang && !wcscmp(lang, expected_lang), "Unexpected value %s.\n", debugstr_w(lang)); + else + ok_(__FILE__, line)(!lang, "Unexpected value %s.\n", debugstr_w(lang)); + } + + PropVariantClear(&propvar); + IMFPMediaItem_Release(item); + DeleteFileW(filename); +} + +static void test_media_language(void) +{ + IMFPMediaPlayer *player; + HRESULT hr; + + hr = MFPCreateMediaPlayer(NULL, FALSE, 0, NULL, NULL, &player); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + + check_media_language(player, L"test-eng.mp4", L"en"); + check_media_language(player, L"test-ang.mp4", NULL); + check_media_language(player, L"test-und.mp4", NULL); + check_media_language(player, L"test-en-US.mp4", L"en"); + + check_media_language(player, L"test-en.wma", L"en"); + check_media_language(player, L"test-eng.wma", L"eng"); + check_media_language(player, L"test-ang.wma", L"ang"); + check_media_language(player, L"test-und.wma", L"und"); + todo_check_media_language(player, L"test-en-US.wma", L"en-US"); + + IMFPMediaPlayer_Release(player); +} + static void test_video_control(void) { MFVideoNormalizedRect rect; @@ -599,6 +668,7 @@ START_TEST(mfplay) test_create_player(); test_shutdown(); test_media_item(); + test_media_language(); test_video_control(); test_duration(); test_playback_rate(); diff --git a/dlls/mfplay/tests/resource.rc b/dlls/mfplay/tests/resource.rc index 38c4a5f9e01..bccf60db9ed 100644 --- a/dlls/mfplay/tests/resource.rc +++ b/dlls/mfplay/tests/resource.rc @@ -20,3 +20,30 @@ /* @makedep: test.mp4 */ test.mp4 RCDATA test.mp4 + +/* @makedep: test-eng.mp4 */ +test-eng.mp4 RCDATA test-eng.mp4 + +/* @makedep: test-ang.mp4 */ +test-ang.mp4 RCDATA test-ang.mp4 + +/* @makedep: test-und.mp4 */ +test-und.mp4 RCDATA test-und.mp4 + +/* @makedep: test-en-US.mp4 */ +test-en-US.mp4 RCDATA test-en-US.mp4 + +/* @makedep: test-en.wma */ +test-en.wma RCDATA test-en.wma + +/* @makedep: test-eng.wma */ +test-eng.wma RCDATA test-eng.wma + +/* @makedep: test-ang.wma */ +test-ang.wma RCDATA test-ang.wma + +/* @makedep: test-und.wma */ +test-und.wma RCDATA test-und.wma + +/* @makedep: test-en-US.wma */ +test-en-US.wma RCDATA test-en-US.wma diff --git a/dlls/mfplay/tests/test-ang.mp4 b/dlls/mfplay/tests/test-ang.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..864e5347eab75ecbf2c49d22c1cdff8b0da6db61 GIT binary patch literal 860 zcmZuw%}T>S5S}Eh^&rxNqDaIDEqG9A>mT0Y&4V|=gLp~1sTQ+M$ZiXIkRE*%A3=No z-@=>VThwnhiA{?`x8FD4%+Aj4W{Jq{>!)O(Vo78ZBSuFi$8927?x$f0+?68GUp8F@ zbkSXp1sHe3BhNFjXAb1XI=8?D z)|BqWxz2O;F}BowBG^geh<9%4Os8P3>fR^7B2r$ZI}$oT=vIaXIc>LmNx0ZFND{92 dX9t7qOK867nA_OK%itnhnBPYq@1tYh$1gSCZi)Z^ literal 0 HcmV?d00001 diff --git a/dlls/mfplay/tests/test-ang.wma b/dlls/mfplay/tests/test-ang.wma new file mode 100644 index 0000000000000000000000000000000000000000..ab15ca3c5af3d94aa347bc475055e69d6288fc36 GIT binary patch literal 3867 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 literal 0 HcmV?d00001 diff --git a/dlls/mfplay/tests/test-und.wma b/dlls/mfplay/tests/test-und.wma new file mode 100644 index 0000000000000000000000000000000000000000..54243cee77f47153e28360c435798562e1787451 GIT binary patch literal 3867 zcmXp|+f>?@c3yDVO@>trN#}AhnHa!;6-Y8NExfb3$9?5_!M-O92Y3{MQ!^lv7^EaW zRH(u3>b;F~85yD61HEq`%no6&hzt)z0%S=8kPX5IVi_2=GVhPq1KIN!V$Vvbe!)wZ zSMLIeKZA&~F;oL(R=PRYJb3@ddy}T6-95*cR%NJaMh1>jhCGH8AoujrXCg(%jGUWi zuFMQ#i;jwbDnX|}mP6eJb_k3OQU`J*%p)*;4ofavVt;%|aQX*^1t;TH1c2-U0Y(N5 zhHwU727LxspbL^2@`0|%1hUc@f*Dd7N`Mf;D+a5UVenx{WGG`uV=!f~WYA+UVlW4i zh71Nk$iOg>{m%C7NS-bN>tSGUn3ws(H~PHbioXmE@i8vi0cQ{I?@v50*u4oDbz2@O zK$S7b02v%W3~_rRFfttE85nkO1B04DfPo9F3?j#P04M}xIs{#8lQp~`xOfTBSIi#Y zV7_uh69?&HVh{)V6y%!}pfAfAiWwAu{!Rt^HxbBoWGDr*^MULz1`DulObm&PW@rg* z6ErD+6(A8HJ3xSuv5A2}F!lo2y$%dbkTk_{04N1YMF$uf{yQ)*AMhKpfDxS2z#fVj k79Ik{+9((efzc2c4S~@R7!85Z5Eu=C(GVC7fuR}#0K}&T=l}o! literal 0 HcmV?d00001