[PATCH 6/6] mfreadwrite/tests: Add a native I420 video media type attributes test.

Rémi Bernon rbernon at codeweavers.com
Mon Nov 8 08:08:20 CST 2021


Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
---
 dlls/mfreadwrite/tests/mfplat.c            |  36 ++++++++++++++++++++-
 dlls/mfreadwrite/tests/resource.rc         |   3 ++
 dlls/mfreadwrite/tests/test-40x36-i420.avi | Bin 0 -> 66320 bytes
 3 files changed, 38 insertions(+), 1 deletion(-)
 create mode 100644 dlls/mfreadwrite/tests/test-40x36-i420.avi

diff --git a/dlls/mfreadwrite/tests/mfplat.c b/dlls/mfreadwrite/tests/mfplat.c
index 9d2e17de4f1..a219eecce36 100644
--- a/dlls/mfreadwrite/tests/mfplat.c
+++ b/dlls/mfreadwrite/tests/mfplat.c
@@ -1651,6 +1651,27 @@ static void test_media_types(void)
         },
     };
 
+    static const GUID unknown_attribute = {0xc496f370,0x2f8b,0x4f51,{0xae,0x46,0x9c,0xfc,0x1b,0xc8,0x2a,0x47}};
+    static const struct media_type_desc video_40x36_i420_desc =
+    {
+        .items =
+        {
+            {.key = &MF_MT_MAJOR_TYPE, .value = {.vt = VT_CLSID, .puuid = (GUID *)&MFMediaType_Video}},
+            {.key = &MF_MT_SUBTYPE, .value = {.vt = VT_CLSID, .puuid = (GUID *)&MFVideoFormat_I420}},
+            {.key = &MF_MT_ALL_SAMPLES_INDEPENDENT, .value = {.vt = VT_UI4, .ulVal = 1}},
+            {.key = &MF_MT_FIXED_SIZE_SAMPLES, .value = {.vt = VT_UI4, .ulVal = 1}, .todo_missing = TRUE},
+            {.key = &MF_MT_SAMPLE_SIZE, .value = {.vt = VT_UI4, .ulVal = 40 * 36}, .todo_missing = TRUE},
+            {.key = &MF_MT_DEFAULT_STRIDE, .value = {.vt = VT_UI4, .ulVal = 40}, .todo_missing = TRUE},
+            {.key = &MF_MT_FRAME_RATE, .value = {.vt = VT_UI8, .uhVal = {.QuadPart = (30ull << 32) | 1ull}}},
+            {.key = &MF_MT_FRAME_SIZE, .value = {.vt = VT_UI8, .uhVal = {.QuadPart = (40ull << 32) | 36ull}}},
+            {.key = &MF_MT_INTERLACE_MODE, .value = {.vt = VT_UI4, .ulVal = MFVideoInterlace_MixedInterlaceOrProgressive}, .optional = TRUE /* > win7 */, .todo_missing = TRUE},
+            {.key = &MF_MT_INTERLACE_MODE, .value = {.vt = VT_UI4, .ulVal = MFVideoInterlace_Progressive}, .optional = TRUE /* <= win7 */, .todo_missing = TRUE},
+            {.key = &MF_MT_PIXEL_ASPECT_RATIO, .value = {.vt = VT_UI8, .uhVal = {.QuadPart = (1ull << 32) | 1ull}}, .todo_missing = TRUE},
+            {.key = &MF_MT_TIMESTAMP_CAN_BE_DTS, .value = {.vt = VT_UI4, .ulVal = 1}, .optional = TRUE /* <= win7 */},
+            {.key = &unknown_attribute, .value = {.vt = VT_UI4, .ulVal = 12}},
+        },
+    };
+
     struct test_audio_format
     {
         GUID subtype;
@@ -1689,6 +1710,11 @@ static void test_media_types(void)
         {.subtype = MFVideoFormat_NV12, .current = &video_40x36_h264_nv12_desc, .actual = &video_48x48_h264_nv12_desc},
         {.subtype = MFVideoFormat_I420, .current = &video_40x36_h264_i420_desc, .actual = &video_48x48_h264_i420_desc},
     };
+    struct test_video_format test_i420_formats[] =
+    {
+        {.subtype = MFVideoFormat_NV12},
+        {.subtype = MFVideoFormat_I420, .current = &video_40x36_i420_desc, .actual = &video_40x36_i420_desc},
+    };
 
     struct test_media_type tests[] =
     {
@@ -1710,6 +1736,12 @@ static void test_media_types(void)
             .video_formats = test_h264_formats,
             .video_format_count = ARRAY_SIZE(test_h264_formats),
         },
+        {
+            .resource = "test-40x36-i420.avi",
+            .native = &video_40x36_i420_desc,
+            .video_formats = test_i420_formats,
+            .video_format_count = ARRAY_SIZE(test_i420_formats),
+        },
     };
 
     struct test_audio_format audio_format;
@@ -1839,8 +1871,10 @@ static void test_media_types(void)
             hr = IMFMediaType_SetGUID(media_type, &MF_MT_SUBTYPE, &video_format.subtype);
             ok(hr == S_OK, "Failed to set attribute, hr %#x.\n", hr);
             hr = IMFSourceReader_SetCurrentMediaType(reader, MF_SOURCE_READER_FIRST_VIDEO_STREAM, NULL, media_type);
-            ok(hr == S_OK, "Failed setting current media type %u, hr %#x.\n", j, hr);
+            if (video_format.current) ok(hr == S_OK, "Failed setting current media type %u, hr %#x.\n", j, hr);
+            else ok(hr == MF_E_TOPO_CODEC_NOT_FOUND, "Succeeded setting current media type %u, hr %#x.\n", j, hr);
             IMFMediaType_Release(media_type);
+            if (hr != S_OK) continue;
 
             hr = IMFSourceReader_GetCurrentMediaType(reader, MF_SOURCE_READER_FIRST_VIDEO_STREAM, &media_type);
             ok(hr == S_OK, "Failed to get current mediatype, hr %#x.\n", hr);
diff --git a/dlls/mfreadwrite/tests/resource.rc b/dlls/mfreadwrite/tests/resource.rc
index 5ae9636d671..3f32c2abc30 100644
--- a/dlls/mfreadwrite/tests/resource.rc
+++ b/dlls/mfreadwrite/tests/resource.rc
@@ -26,3 +26,6 @@ test-48000.wav RCDATA test-48000.wav
 
 /* @makedep: test-40x36-h264.mp4 */
 test-40x36-h264.mp4 RCDATA test-40x36-h264.mp4
+
+/* @makedep: test-40x36-i420.avi */
+test-40x36-i420.avi RCDATA test-40x36-i420.avi
diff --git a/dlls/mfreadwrite/tests/test-40x36-i420.avi b/dlls/mfreadwrite/tests/test-40x36-i420.avi
new file mode 100644
index 0000000000000000000000000000000000000000..fde02cb07c7fffe8c4fadcd69addbb066a67e86f
GIT binary patch
literal 66320
zcmeI5c~Dc?m&eodo2lxmnLi>3iXvfG76oLHZZIH53}G>#fDOnJBZe)q35XyMltp9_
z0tl!qvZw?k5d>_(Ey at xahzLOi0tOY7fBdumnwkW<tITxjJoz;><1gM at Ebkn?ocHd_
z4d=so_uc2?=IZ+6KYk$W^K;Yna65eD_kSZ0Sj_n7u%rl<J%K>5%_0ym?;m7a1Oid^
zsk5?0Agp=_gdH;5 at DJaY-{i5%WU&$w<D+GtE3uLym<et+yDh)e$>aPPQ~o{n$1i`n
zx-I+taQS}z{FLwS2f}|5<gx1h<F9&}ub2B~*}nh%j~`iDG8unWA<y at E2ION?K9)~0
zW1?jrEcrN*k3G46<9`zfF{hFu<YPuY7MJC1e5JLlv=VuXTxs4b&19t^9Xc=afq=%r
zw>1t{-kijhw)&=B*<5`quew)WvE}vFeHnXs)sX+mk!|V98gWGZ<PEbXlViiMZnAN^
zDML3lCFUcn(^)oZW|*iqa!p{Jnyp82g3G*!(FE(-HU$Z0_USzIx(w^Mk8-R@%Nngr
zdsru;d?0_M7w_)d4C_*9EoxyUjF#7ISl8IUCxac?ED~S9Fe;H4*xbyvvl9x10RaJ@
zKYvzb-{;Rg7}g{dHepzEb2GNmrl%ia80YcyP#4DGa8`Z&{r$3yF4^E-wdG&`jt|2w
zmX>-GiCX&l5{X21lG$vwD*M>%WDIMUNZK(>HWXLSp^M8w46A%H{-6P)QmLyx4Gj(1
zM#Ji<U3Fo9$A`FM9B~%nN;z=<OOJ!~=83P32j at -i3U%=_a;P1n57xbwrYxMVdQ)UI
z0qdBgfvpc)lJujZV4X_ at FaNj1O&*nRVcnA!t at nb_2>yEptXs60f3{?FVJYMStmAQ=
z9cs$AQ*=^c-Mi$$^l|okQlT}hODnqkkaR!r$+0<AW(;M0L)`Iy!#jvO{<Z(^qyPWE
zt^fbOx7XuqIbpqZaNg`UFd8!As|TlXVBN{NtHp6WHjPpBu+F(B at j;V=vzpmPShwGf
zW4!c6f9z=ltmBDN`GcmV+sm|I-Ib2g6VD5mnnhP(U0&%fcjlW>&6BaPZaF9?>gl__
z8P^@K?$v}=#N=4fMdu1-xmlHch&vE>pzAE?`jfnPkH*2bI}X;HC%!fwoHx(j9SYvu
zFCKTK!8%uZUQczw;GH`ou<kfRkiWYlNc)B_tlRFJ8%4Gj$BKS|bxFJt8k@$i-((2u
z2JbDTZaN+-+=ElMA;kw<q;-!E-?|OQQ?E2Tm*`Y>s$dJO8?_IMmu~iI4HBp_V<_tz
z;ts?eDBpa$`R053zaI5hd0pviIbpqZaNaC^)tz^X{d|;!!yQbAEqb-hu8Uj7;CO?&
zPjt^e46O3RxgHbTA#mrC2eLmsgX0mY^A~Py%VZ>;gmt{#9tM7*?5ny$Sl8(`+eYG!
zX{O`wNeb^}T at bx~YEK;;&&T(Qm=ir-U-nd4ZdPR<;ts?eh&vE>pn8XlcvgnNw|PBq
zy?Nqm<H32;+?!>SH&8%w!nw}E%HcP?^}DFsB!%PcsNPWAcr!CbnhWcsHfIW at ZyW5-
zJHR?#hPxT1o28e12G%7O^qzR2DKhPjg>~v>f?NYvi-m3+ezKhnJth#J)=k0T6E}l)
zof{j4nLj;HWyVm}H^d!?I}mpu?m*muxPwUi>-{ls9 at cuAC1E|Bo^8y5b>53 at W=6d3
zy`olF$DrRn=kR!6HCqJhifMW;-quccN%z4zn#R3y=9QN&&yT~p*>3-6!I2WP86Q}8
z_wB|#rJs5P<?gV~ihH%ESQvibP8_Uj?=kbw-E?_JB|}+mR%IXJ4#XXZI}mpu?m*nJ
zcJ4T6zFd07*e5+U56-U*_Nj~Kw!8I7e}i>-AMEak)2Is{(qY|(i8?a-`t;Qq9;}O<
zIU4w;s`LaEhl_lCf+EC){E!B1INn>G6pbr2lsUgpSZBX^|JElZY-%M=eMiggdbB~n
zl}2NARb~ujeM8)VxC3zq;ts?eh&$HK9ctF8th*+qnRNkh9<G_}>prCJ+r5|o>wI?W
zJ^FboKU6CO)+Jv`GtD*5%GmY>)`=TN1W8oAS9)Anm-95lUzlO9Mbm|K;w5kW!25<h
z**MpM&c3zpoo$;Hk_O;-z8<7$Oz at Z~peW1Ds_aADfw%*42jULI9f&*D&K=b{Q!hzP
zzb+Ur!TI%EVNeS{Yv|{xNm$1d9XOnSBIR8)PJQBNs$k|p6eX63qst50HDl!7&CkP`
zFS?z7-dyjR^wB$0`1owKW~zE=6tU-NSa&e+WP<Gixiggt>(t#2w$9wzVn*pyWyVm}
zH^d!?I}mpu?m*muxMS_y(OQ+IK6v(A?J`b1;l|)ya>dKT>eeoB9yXtK(bTbxtP8=J
zr^<L9BamEhpOfJ1x7TW<zL{uE^*9CZH}dhTE4%Jd6Jv4KNu|6BsD8F(;%0&Xjz=OM
zDgQ<DaNb5sSl3r at s!+?KePf<jS#DNkAL0(g9f&&+cOdRS+_84<IAbjq>vvVx4PS=y
zE9dQR7TzcGHwju`ot0HVM at wbbF)7aa;`L+1iK1vu-=&XmyhFY-j<mL<u}|HwE}ot}
z=I__A#mxxTJuEzOGli9OcmQYJkYB><-_@}^{j+h_Nj3Fj*_*xWt9~}G%8a3`Z-_e(
zcOdRS+<~|QamU)Z<GwRl%b6Sc>mwGNuX`37922gpv4j_4ozsDneXkuS9ye*gy2{AR
zOZM#T9+o)uiN5?W-$OlSQ4U&gJSmYf;7$A4K|qFeT;YWr?z at J7o9(d93#%(HlZe?C
zIOiqauE6bZDt-7gnpY}&CJ1^y%lfkjS||P6To*x>ZNBMs8_ at A7Uq|bEJ1<|m-o|?C
z;QTtwEsfn6S?F;s2-Y=4xNfUr#l=%_=3_42`cQR!+A3%08XRvneMzKkS-8^=XFe-w
z+tV8v!>@XWaq1^(Y-7eUb$7{GoH|BK>p-fFui(hFNAU64etJ#n8 at jN>FNJlFQzeN@
zxqPwykg}S9D*I5qWBnOJ+4JoXcOdRSbtP0+`e*A(>&+8i8xPK#TKmq~G5Q%*98Xwx
zJ1xjy_xk|PUL5Z5X`(rFyfvV+aOwn1ugttWlisl6aCpDQC&+#}r at N2Y`NKN?RpARq
zn_aZ=HdyC!Wm85?t!9<`Jgn;^lRnmk=DxfA6xMC at 8wt9+rDRFSS7pXf);Gi*h&xa|
zMEUTa&4=Gx-QoYMzhBD<>#c+H=Fn7h*e9c1qNpdZZd-(~*)ckuw*hB<=geGbdDVTs
z`iX;ZywX;-bZ;i5zO4Y(*>#3-hQeJm_u{Mva^ns=pgcQ`n1NGgDazN&HGBV1%*R=W
z)JW&o+^7()WW*Xiz5_iS_0}bQadYO%a<eM?5O*N%K-_`21969pC{~8Sw^^54Z=U$t
zcyQh{>ohsL`O<OCNSyUH5_C4SHhD$oM7 at IJJ+m^nmS}8D7dFB=wwu6VvDV(CaX+l{
z=nOWp8exz)?_u5a)IhMKgT{mt&ODIJqEjh-{pQt_JUCuTWBFvvY1;6SC0J*hLC!4S
zzBRXDRFxS+S>F(MAnriifw%*42jY&k&nr!4r>Dk<XsNk4&#iy8*EO!PuHybyocW>)
zyMjMb0!F(`aPB`T6Af<7>Ke&S+5qQu`{)_=>1){{aXGA`@E(^l+?E#nYhc~5bZgh4
z3?H6T39Kups7I?8mIf6vVV!GXt~WhB&L(0>S#DNkAL0(g9f&&+cOdRS+_84<;F{be
zy9D<#F5QLm>w?jg#>NVf)VK-O&26qe&}=X@`2eS$kh;vrC{@Ad>27d5HH!l45~tmz
z6rA}Or at 5j=bqXWaL=49(KWN7>+4J1H7Vm!Bdkpt9(P#||XPxwCqFp(cEg0rOH&vN2
zl=Tg92jULI9f&&+cOdRqJ9jY4c9|uH6(uhC!uk5>8`pTo8K(d#&U}YfdZ1w$jqY_L
z3y$YwZ*Rm|roS1u4eLyMDhI1(+l}|)%-hhf&~eC=_<bNt;CN$dA3Q#!IPhu*U|kud
zr<-?cQecq=>!!z&2G}&6?w)RCxmlHch&vE>Anriifw%*4$J)80Kss+v@}>+}TfzAi
z<5t8l7%z@$;M6;gEe)CZHTD>BC*gQ3exaSH+K<Dg!8)#K|IR{AWE&l4{nI5=(hNIe
z^n*6eb7rk?wY-autB{_;;i63=+R4RSN8`XT`1pSE at 8GF5SR46WR%OOe);Gi*h&vE>
zAnriifw*Js+~F2(m2O at TRkrgUoL_fFX55L<;%V$V1naKO^fKIy#kuL9V4XN1Xe+bE
z`pQk5`&1&zc2)SzXx?(gnWuW}Y|k>iD0?6Q=Q_(2eZYV|RC?CU2|m8F?^z}`iF2if
zR9I(x at W?g?YsrIiS;}&=D*F(3Anriifw%*42jY&ka|cs@#NcS7c5rGKoL?tSYmMrQ
zB!`6$VO at U_?U>*fR_0tkth4BhW)CD+%vJmZ>mF2P$6wTpNwLA<ll1DubZ%iuy%48v
zlUcwv^`Lv at O!DFVPD>oiYusGD!!cM_6c*;VckD!ZAXAkYLs{PtcOdRS+<~|QaR=g#
zwR6WO>z4z5&JF6#$Km|Snt1nfQeDe((0N!VEgpA&Q{s8S3uhhjM?(Kv_cIS`{bt~J
znBg%uZZ6%_7N;Jglc!I6np-_N<p;+L9&QTvx&0#WkH^9hWn)I(R)2{|AP{6*y0SJO
z?$oo;yo1BSS^qSvs>-Qj59xxGtSmRHvJY_w;ts?eh&vE>$nwX^FhJ{fe3^T{-2Q8R
z^)bAhd^;pOLV`0dB6!Tb<4}5nniUQwWY##}ri4ySGK=B;9>03CX~wR|SO;hRM1wJN
zXoLTr<D2#1cn_ at tS$vYY5bu8A6wOeo=WIy+CY<|J`u2F;9L*G^hT+sZBz(1@^10l>
ztTa_-3}t;o+<~|QaR=fK#2tt`)?V+Zu+-kiu%WjM<2+BT*IkQE9J`;&$%pg5-y%cM
zU8Y%KWC-i3tPMwmnd7IWe-s|%MF&}1{iQGJ4xzk at OwU%WR8kNe at 8!ffQNbQfO}{Q!
zH$Gi|YreaH5<-D>XUs)h?du=Rs&UruXup{>c*2KQ`)jMR+^otz#2tt`5O*N%K-?kA
zTd3aAB5z;j)GxRHn%Bu~A*Y6?t>R~K<~z8T=%)tVRSW0fT<=(nY~7*Fiwn}j;f{p^
zQG?5^QQRBn;Nxou)-U_m))~F)1FWlTIm{wDhP~do9o7j03Y}|`Xu|~}SeJDEY`pvN
zsHUxfu+EB~p*=v(&o{fP%8a3`Z-_e(cOdRS+<~|QamU*09kY!TmrMJrCD(A)<;wER
z++h;rqgISl7jZV~Rcn9!ped*a&evP=j##8z5x>wYhjm4USa+Y07Jj`1*0osg_vBl3
zhK1C?x`0!|P5koSfI=L8YI~Y@{H~pAV4Vbx*G*my+mgyZr<JKJH><J_aR=fK#2tt`
z5O*N%SUYz-l46!_XKw6f;9PgO5bHLfIdv*%)E3UeYDdi$nwzd2$zZ`cQrzK0LE6%x
z;+L>4$+jbx?U>pvFo$&&lFefB{Kwh%IQ5AxN8f`xmMD7n65)9BVy}gtYUfA{oaen5
zg(Xmuh-au~Xq|Kn!=|SnVHoG}^iUVZ;c#RQS?llbmwoM$y*XFRl`ntCr|enrs_bL4
zlQFDaB5B9uQ;k;7p^M8w46A%H{-6P)QmLyx4Gj(1M#Ji<U3Fo9$7gBDWW at eRAjn?0
zZ at P|*j;}=4<k>$m5^*5n!2dlCzV<n8>#c+HtNI=?Wxr<3iH at _d&cmPLsg>LxlKC5~
zvlpg|gX`4avv8iLcBH;D;_|S!C^-|3NB8rfyfTw!U!%b~(IkUPDW*R<xf|BSJ9P`p
zsyVDh5v)7Ccf=+sC+<A;6Razi^0K2Cxd$k&s$APp);Cn|Q0;n01T)2I{s#g<&L3*B
z8@)FFgFujT$e;G*|5UVp+^A?{+KTq?hKhFVPDOjkR?!Y6E84GI6>a(<MSIX+(RL11
zw0l^Jwq=~6ed~;(t(&E2SLQ3)M2 at 1JcU93QG%DIDt%~;NPDPv5r)bYVSG13gD%v8k
WqD`Gsv>z`j+V-CnZQk#z_Wu9`QWzTm

literal 0
HcmV?d00001

-- 
2.33.1




More information about the wine-devel mailing list