From: Brendan McGrath bmcgrath@codeweavers.com
These tests ensure that the transform will work with input and output buffers that have differing height values. --- dlls/mf/tests/nv12frame-extra-height-2d.bmp | Bin 0 -> 78902 bytes dlls/mf/tests/nv12frame-extra-height.bmp | Bin 0 -> 59190 bytes .../tests/nv12frame-extra-width-height-2d.bmp | Bin 0 -> 118326 bytes .../mf/tests/nv12frame-extra-width-height.bmp | Bin 0 -> 88758 bytes dlls/mf/tests/resource.rc | 32 +++ dlls/mf/tests/rgb32frame-extra-height-2d.bmp | Bin 0 -> 43062 bytes dlls/mf/tests/rgb32frame-extra-height.bmp | Bin 0 -> 43062 bytes .../rgb32frame-extra-width-height-2d.bmp | Bin 0 -> 64566 bytes .../tests/rgb32frame-extra-width-height.bmp | Bin 0 -> 64566 bytes dlls/mf/tests/transform.c | 192 +++++++++++++++++- 10 files changed, 220 insertions(+), 4 deletions(-) create mode 100644 dlls/mf/tests/nv12frame-extra-height-2d.bmp create mode 100644 dlls/mf/tests/nv12frame-extra-height.bmp create mode 100644 dlls/mf/tests/nv12frame-extra-width-height-2d.bmp create mode 100644 dlls/mf/tests/nv12frame-extra-width-height.bmp create mode 100644 dlls/mf/tests/rgb32frame-extra-height-2d.bmp create mode 100644 dlls/mf/tests/rgb32frame-extra-height.bmp create mode 100644 dlls/mf/tests/rgb32frame-extra-width-height-2d.bmp create mode 100644 dlls/mf/tests/rgb32frame-extra-width-height.bmp
diff --git a/dlls/mf/tests/nv12frame-extra-height-2d.bmp b/dlls/mf/tests/nv12frame-extra-height-2d.bmp new file mode 100644 index 0000000000000000000000000000000000000000..42c90555126aa84f3f743aa36f1dd7a73c14c433 GIT binary patch literal 78902 zcmeI3F;3k;5QfPOe1wQ9TmY1kP*YIQAmsu<La9=_LzIt(6YvnCc(;f|q-_ut1&V}H zQNRs0YpOBDt{$G%*q(2#eKO+3zxV(C8E-7{ZGZdk#@pCVpI_2!)BKs{r;X3)GmXD* zpS_Q!Z6njpgAhWroUpfJ-+6DzzSD+3{K<e_2B?2K@5hjP_`}~a17oNG&-Y--zSH*X z{TSA6&Hp+5AA~u;gVVEkpXSZw>O&L$1H2zYcH!^4f50F9^nbq@p#J@`@Ae<?hd=$_ zZw9D;zwGJ%zS+Yc{`7y}8JIZ#yXHJH2Y9e|5r3yS)%X9fAHcq=9r*k1AMl4i{oii} zsDHogdH(xm4}bX6|9xiw{_to2?>7U~zhCw<*#BKGo5&pC!PRbDra9I3|F9pxzN;Ph z`|cm`hd=$_Zw9D;zwCMb`(_V+_|yM=X8`{2XaDav1Ju7?_A}W3Ep|2|bASim_v0eX zslNY*{Q&k|?ZDr6|A0UI>HmH+K>hn=&-33md-%hj{_i^j@P|M9f4>=^{{6C_!T#^~ z_AxRCc<|>T{z!AG@Bd*xfPGgx@b}$6;17TLzuyc{|9;u?{P)cs{_v;&`_2IT;m`ix zZw9D;zwBqQ|2sH(iOc~W{Q4IU)12!2f7lOT-_;KMefJOe!=L`|Hv`naU-mrzeY1x@ z{OSL`GXQ`1v;X&-0qWl``x)&2wq8#nbASg=ZTy<%RNw!@egONfcHr;3f50F9^nbq@ zp#J@`=lSoOJ^bNM|M#5%_`{$5zuyc{|9;ueVE^~g_tyNo)ra5tOYcGm(Q?Xr;arF5 zIzC#m@3hysSH7#C5BTeQI;EV#AO4mZm{P6G@m?+2ciMCGbV_T2KmFe_15>J%Io_)! zd-}h9?}5KP1IxYwfB0KwplRF4wDZ7{eWwk3JNBLT@VE8fI{)y8zhwrj^Y2~Xl6|M` z-GA%#!=L_dnE~tkd)K#Q|JMJTx+7_1M_u)%$%?06qF>hm{Led3*Zp$-pS8#RO>g8^ zAA+|0Gy3>193X#r2dF<~2PW2k?zG2mQGDq%pS}>Z<?qn%0l@#f1LRNH0qSp3^>?j3 zmc8W{`@gpQHTpdO`R*42{wq5`{>YzjVC?m`P#<FP>9n+db@>JQ(gFO>J3#)l9gyjx z{`2VzLEHVsn*Hxsd;D0Bzqb4_`aJ-p{NcZ{1LTkV2?xere+Sy*P%J*3me#K=e}H}u z0RHD4Ab-jZP=AxEzb)<YwYU6Y|JRn^Lca$f-~B?se`N>AANdmwjJ^KEtyVcLt-p$> zxG4I02ZU8sPV?#^R1p;yML+L=u&T;wULF2bOcxg|`EULA2k6&z0RDLg>bhV4`x|Th zw(`ikA3|mM7X7>f+Ww!OU9RMjSJ&r{zI6X`h5va6nseP_?_xdwb=8}5^zmOhkWYUI z%SQLO+Lh|%{-dkDY|zJl=|Cy}JDa-4_kF2e&cCku&L;Z!FC8f5|MpS$`12su%lX$; zzkNg>|D^+^{2#sO9>4xc^>Y4o)sJ4#$A9TSDgUo0y2n#1)yw(URewD}AOEETrTok9 o);LE$??4UD<u&u_A;|C6I3K&d_WS?$*DJ06{r9zhMnCVse}%m&tN;K2
literal 0 HcmV?d00001
diff --git a/dlls/mf/tests/nv12frame-extra-height.bmp b/dlls/mf/tests/nv12frame-extra-height.bmp new file mode 100644 index 0000000000000000000000000000000000000000..082d0dc15a5c858bd61f13af721eed0c7c95cb22 GIT binary patch literal 59190 zcmeI5v1(f}6hPBIc%M)_)jtrEG0p73Ll#4za}1_a=C_56_L48~ON|HrMZg(NrVL&} zCJ*)>sCrF@Xt_}7R#)vi64ziv?vqcBu7oi7>+tl)$**?mU%&YH=Ht7MPbZ)Kt8c%@ z-`~8yR(0(N7~lX7-~bNb01n^)4&XpH9N7EwKas%T_Rc-~SS{930s92@t-J8IUBB>$ zf0y?V{KtR%k2?FbXC}@+oPYjl2dMwHYZ(6UXa9}ff49}#5eW<~?%ku0*!v&YC$Mkb zg}?3kg+KheyocaF{^LLAA1eo_Khz&9_eyv!{^NfM9$L*I(f?&rIU<3<!?|mG#NPkF zK7oDfF8poRFZ|)(<vj%d@gM&=|5!Od{h|I?xmUt-@gM(7@X%@wiT=+9Jx3%kxEi{d zkJ$Sk*e9@W-G#sH`h`FIyS#_sKmOxC=N~Hvs6W&nEB8uxF8<?x2_9O_A<_TIX6J|m z22U^U+DGjD59|}zx9-B<cKyO1{$1Wf@E`y2pYxBE1JobtkCl5RJQx4*zXT7h=8)+B zXnb%)0)v}3cj+Vc{s;C6>|1x?Z@Yfs5C1OjA^4B~_|N&r$^q&R^~cJ+5}u3y_+NsD zR&z-7zki%MB7wnc?aq9}-v7Wpfqm;P{B74S{Ndl_Jp}*pAOAW3SUEubq5fF8SHg4g zAOB16&}t5e{>R>1@ON>)_YOC>;Q$Wc01n^)4&VR|-~bNb01n^)4&-*As%uBU00(dY z2XFufZ~zBz00%naKt+Q<cM0sZ+w&@D+UfV?myyB;J~9D$G_yZj?e-XypOtp{E%{}n z@PUs^KpxHP&r-WJVg1ogza+nm6h82g3CN?F{h6t^u>Pp0pOIf?3Lp5$1mw}Y{!Fyn zbvS?R^b_*SNZ|t?nSeZ+*`JYiyA11(cKQ+dWu)+dk4!)w&FoKKyPbvgM>~C={4!Gb zz(*z^k7o8KtQNe300bbAk3e_7`NSuOK;^&YOZ%S)+}<tLAG`KvBfm^EH=k;*+b`}v z+Ot^eX0PVtmx<=)(^R_s;XL$5H+xf&UnZKH&!DH<uZE#Ny4eRk^2<bX^V#fl`_oJ4 zk8bwOj{Gvw+<e9d-G1{H`lFkDd?3F}G&i5)RJXs@p+CCWk5lr?M04{A|J%HSz@HJ2 LZxa~(+XQ|B;m5&E
literal 0 HcmV?d00001
diff --git a/dlls/mf/tests/nv12frame-extra-width-height-2d.bmp b/dlls/mf/tests/nv12frame-extra-width-height-2d.bmp new file mode 100644 index 0000000000000000000000000000000000000000..9d8396792c6431849378b4865a12267951b389fc GIT binary patch literal 118326 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
literal 0 HcmV?d00001
diff --git a/dlls/mf/tests/nv12frame-extra-width-height.bmp b/dlls/mf/tests/nv12frame-extra-width-height.bmp new file mode 100644 index 0000000000000000000000000000000000000000..d30529daeba0242a368e9956715d8973f46b1050 GIT binary patch literal 88758 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 H?U8>0gOW0%
literal 0 HcmV?d00001
diff --git a/dlls/mf/tests/resource.rc b/dlls/mf/tests/resource.rc index ca4b3d9cc00..d020615e1c0 100644 --- a/dlls/mf/tests/resource.rc +++ b/dlls/mf/tests/resource.rc @@ -149,6 +149,22 @@ rgb32frame-extra-width.bmp RCDATA rgb32frame-extra-width.bmp /* @makedep: rgb32frame-extra-width-2d.bmp */ rgb32frame-extra-width-2d.bmp RCDATA rgb32frame-extra-width-2d.bmp
+/* Generated from running the tests on Windows */ +/* @makedep: rgb32frame-extra-height.bmp */ +rgb32frame-extra-height.bmp RCDATA rgb32frame-extra-height.bmp + +/* Generated from running the tests on Windows */ +/* @makedep: rgb32frame-extra-height-2d.bmp */ +rgb32frame-extra-height-2d.bmp RCDATA rgb32frame-extra-height-2d.bmp + +/* Generated from running the tests on Windows */ +/* @makedep: rgb32frame-extra-width-height.bmp */ +rgb32frame-extra-width-height.bmp RCDATA rgb32frame-extra-width-height.bmp + +/* Generated from running the tests on Windows */ +/* @makedep: rgb32frame-extra-width-height-2d.bmp */ +rgb32frame-extra-width-height-2d.bmp RCDATA rgb32frame-extra-width-height-2d.bmp + /* Generated from running the tests on Windows */ /* @makedep: nv12frame-extra-width.bmp */ nv12frame-extra-width.bmp RCDATA nv12frame-extra-width.bmp @@ -157,6 +173,22 @@ nv12frame-extra-width.bmp RCDATA nv12frame-extra-width.bmp /* @makedep: nv12frame-extra-width-2d.bmp */ nv12frame-extra-width-2d.bmp RCDATA nv12frame-extra-width-2d.bmp
+/* Generated from running the tests on Windows */ +/* @makedep: nv12frame-extra-height.bmp */ +nv12frame-extra-height.bmp RCDATA nv12frame-extra-height.bmp + +/* Generated from running the tests on Windows */ +/* @makedep: nv12frame-extra-height-2d.bmp */ +nv12frame-extra-height-2d.bmp RCDATA nv12frame-extra-height-2d.bmp + +/* Generated from running the tests on Windows */ +/* @makedep: nv12frame-extra-width-height.bmp */ +nv12frame-extra-width-height.bmp RCDATA nv12frame-extra-width-height.bmp + +/* Generated from running the tests on Windows */ +/* @makedep: nv12frame-extra-width-height-2d.bmp */ +nv12frame-extra-width-height-2d.bmp RCDATA nv12frame-extra-width-height-2d.bmp + /* Generated from running the tests on Windows */ /* @makedep: rgb555frame.bmp */ rgb555frame.bmp RCDATA rgb555frame.bmp diff --git a/dlls/mf/tests/rgb32frame-extra-height-2d.bmp b/dlls/mf/tests/rgb32frame-extra-height-2d.bmp new file mode 100644 index 0000000000000000000000000000000000000000..ce36d080e34de8516074734ca65098fb00f34f14 GIT binary patch literal 43062 zcmeI*JxW7C6o%pPr_TaJ5DU>-&|a`qZ0zl9EL=kNV4<~zxCOyhJ6pj8s36!VHcC96 z7;yogAKo1DUYHP(nLE5Zxr9qdHn!Hz+xM}SkIOmsavbKEY76<8$It&qfBZg1K4Z`T z0~o*n1~7mD3}65Q6JQ`X^aAfW^)1I$j=nf@8i!bb{$e=OH2RxDip$Vn3}>1~e^W?t z8TyOiOw;IZ3Mno_e=(eC8vRWn#bxL(hBHm0zbT}+jG=$aQ!}&%tFICJj}e!b8Bx6d zLwl|Lup9mLb`E#+r@zBd)iv;s|EhK!`^G>19geE5fq(p0wd>e7{_FdX&y>K>8aypU z+-}Fm*{OX0hxUK)M}N(&>-A25`nxPuTnGR7ujtmbXZ+*eWvSvi_{V=mx2`?ozr6pM z{PYh)Yq0XL7&|wcadLbl-~XY#)_&NH{(3uyJNnb#;i&2w_{V=$yN-S1AO8+VRoB2j z{;S$`>>K~}{ST%h7+QnR=|RNod)&?4%J+Y0ueBd`qrcwH;g0_FcQ~rL2LAD1)vjaT z_{YD)QPnl@kN>K69s9<AegCZu@_W7+N`txf7VGUf4tm$}{U7DL%o%y5f48q&`qO`s zuSNLBKmK|D)0F|PKU{yhvNsOr#XtVX!C_Z>aQM%gKlvp_45h(K>&1PWkBjMD`Tmb` zUgnIv(!bl+E&b^~$=4$M;~)RL|LMvA*B`DwUD+Fl^Wq=><KVEXJy`tr_1~^ifAflY yG{*o2Fn|FJU;qOczyJm?fB_6(00aMLpyg+O7&O2D1~7mD3}65Q7{I_}82AF~X_=n@
literal 0 HcmV?d00001
diff --git a/dlls/mf/tests/rgb32frame-extra-height.bmp b/dlls/mf/tests/rgb32frame-extra-height.bmp new file mode 100644 index 0000000000000000000000000000000000000000..ce36d080e34de8516074734ca65098fb00f34f14 GIT binary patch literal 43062 zcmeI*JxW7C6o%pPr_TaJ5DU>-&|a`qZ0zl9EL=kNV4<~zxCOyhJ6pj8s36!VHcC96 z7;yogAKo1DUYHP(nLE5Zxr9qdHn!Hz+xM}SkIOmsavbKEY76<8$It&qfBZg1K4Z`T z0~o*n1~7mD3}65Q6JQ`X^aAfW^)1I$j=nf@8i!bb{$e=OH2RxDip$Vn3}>1~e^W?t z8TyOiOw;IZ3Mno_e=(eC8vRWn#bxL(hBHm0zbT}+jG=$aQ!}&%tFICJj}e!b8Bx6d zLwl|Lup9mLb`E#+r@zBd)iv;s|EhK!`^G>19geE5fq(p0wd>e7{_FdX&y>K>8aypU z+-}Fm*{OX0hxUK)M}N(&>-A25`nxPuTnGR7ujtmbXZ+*eWvSvi_{V=mx2`?ozr6pM z{PYh)Yq0XL7&|wcadLbl-~XY#)_&NH{(3uyJNnb#;i&2w_{V=$yN-S1AO8+VRoB2j z{;S$`>>K~}{ST%h7+QnR=|RNod)&?4%J+Y0ueBd`qrcwH;g0_FcQ~rL2LAD1)vjaT z_{YD)QPnl@kN>K69s9<AegCZu@_W7+N`txf7VGUf4tm$}{U7DL%o%y5f48q&`qO`s zuSNLBKmK|D)0F|PKU{yhvNsOr#XtVX!C_Z>aQM%gKlvp_45h(K>&1PWkBjMD`Tmb` zUgnIv(!bl+E&b^~$=4$M;~)RL|LMvA*B`DwUD+Fl^Wq=><KVEXJy`tr_1~^ifAflY yG{*o2Fn|FJU;qOczyJm?fB_6(00aMLpyg+O7&O2D1~7mD3}65Q7{I_}82AF~X_=n@
literal 0 HcmV?d00001
diff --git a/dlls/mf/tests/rgb32frame-extra-width-height-2d.bmp b/dlls/mf/tests/rgb32frame-extra-width-height-2d.bmp new file mode 100644 index 0000000000000000000000000000000000000000..e4484622f19ac9240ec3f1a4bd5f3de760231118 GIT binary patch literal 64566 zcmeI)v27GV7>40>LLG!u-~x!D7bFUBOh$%~=zt=S$Q_Uq(E&N~F~?dIFt4Q@YoC+m z1VW#^`_HrAowbKwzrFpl{d?Sw=T~EW9P8a!H`~kcJRXn#zW?R_^JV<WI%o#>&-}s8 zvDeNs=X1{wKgBRV{P1(EfpQI&y;~t$&Rw><UBN&(1_ru;GQ+ZWD`d;L%XWJ!7%0bZ z@#quyF}}pz+$wvwLbeajSGe#4L74zQWqPvwFi<AIPnn)9KMa%!@KdHI%MSx(0{oQe z$@0TMnE*d!da@_>vyI)i+6=yZA49yGTPxhdD#yT1vvZvvKYfO0cE}Gu#Xmp%@H6)= zsLV}vzwY#p{wdc2Km73H^{W^tS^cAb_|ZSbK*{PK{lm{(|BzGUJZ8UsI_>>0e)ySd zo;}46Km0s_f$}L9uV3R+2nX-MbN>GP@KgNq!w)}GZ-cyUJ;Cd?{?R}BNB<N9C98k* z4?p^+7%15j_s`9ko7HCU`OAmX-v45!*}2Y-pFYDgJLHF-;-4RW_?i0g>%PoQcE9fQ zkNzpw0zdrl<Mpc;C|UiZfB4Zq#X!mGAN|A6T>m_bk55@`2A3DVPkaB1oo44cKYscQ z&+L#Neu{s7_~FO<=VG8_^^gAHNB<N9C98k*4?p^+7${l&qks6(KgB@Fp1FUv?crjz z8NA<qo%a40JI&5@e*E+qp4lNk{1pHE@WapC&tGM3vio(XfAmke7Wm<ZAFp4<K*{PK z{lky`DF#Yb|L7ln=K5#c{2ISP+$uBpxxG2<{jV}N+5NiXNB@*-fggVO@&2b6C|UiZ zfB4Zq#X!mGAN|9R{wW4ZR{!W9e)LZ<P_p_*|L`-}KX>EzuUUu9U~bpeNwIV6^|OwI zxg+6+pE)^uiXVRXIo3eA2Fu>9kS*sf+ug2Upd14O-9VXP*}E08<=kbvy%h|UV_={g zC^Ia3w?ej@yKJ|&f`M`j40Ho!hGp+o$d+@L?e<nMP>x|6|M$x}ZU$xVR>-n*oSp0J zS1?eHfggVOIo3eA2Fu>9kS*sf+ug2Upd14O-9VXP*}E08<=kbvy%h|UV_={gC^Ia3 Hw?g(WEVa!9
literal 0 HcmV?d00001
diff --git a/dlls/mf/tests/rgb32frame-extra-width-height.bmp b/dlls/mf/tests/rgb32frame-extra-width-height.bmp new file mode 100644 index 0000000000000000000000000000000000000000..e4484622f19ac9240ec3f1a4bd5f3de760231118 GIT binary patch literal 64566 zcmeI)v27GV7>40>LLG!u-~x!D7bFUBOh$%~=zt=S$Q_Uq(E&N~F~?dIFt4Q@YoC+m z1VW#^`_HrAowbKwzrFpl{d?Sw=T~EW9P8a!H`~kcJRXn#zW?R_^JV<WI%o#>&-}s8 zvDeNs=X1{wKgBRV{P1(EfpQI&y;~t$&Rw><UBN&(1_ru;GQ+ZWD`d;L%XWJ!7%0bZ z@#quyF}}pz+$wvwLbeajSGe#4L74zQWqPvwFi<AIPnn)9KMa%!@KdHI%MSx(0{oQe z$@0TMnE*d!da@_>vyI)i+6=yZA49yGTPxhdD#yT1vvZvvKYfO0cE}Gu#Xmp%@H6)= zsLV}vzwY#p{wdc2Km73H^{W^tS^cAb_|ZSbK*{PK{lm{(|BzGUJZ8UsI_>>0e)ySd zo;}46Km0s_f$}L9uV3R+2nX-MbN>GP@KgNq!w)}GZ-cyUJ;Cd?{?R}BNB<N9C98k* z4?p^+7%15j_s`9ko7HCU`OAmX-v45!*}2Y-pFYDgJLHF-;-4RW_?i0g>%PoQcE9fQ zkNzpw0zdrl<Mpc;C|UiZfB4Zq#X!mGAN|A6T>m_bk55@`2A3DVPkaB1oo44cKYscQ z&+L#Neu{s7_~FO<=VG8_^^gAHNB<N9C98k*4?p^+7${l&qks6(KgB@Fp1FUv?crjz z8NA<qo%a40JI&5@e*E+qp4lNk{1pHE@WapC&tGM3vio(XfAmke7Wm<ZAFp4<K*{PK z{lky`DF#Yb|L7ln=K5#c{2ISP+$uBpxxG2<{jV}N+5NiXNB@*-fggVO@&2b6C|UiZ zfB4Zq#X!mGAN|9R{wW4ZR{!W9e)LZ<P_p_*|L`-}KX>EzuUUu9U~bpeNwIV6^|OwI zxg+6+pE)^uiXVRXIo3eA2Fu>9kS*sf+ug2Upd14O-9VXP*}E08<=kbvy%h|UV_={g zC^Ia3w?ej@yKJ|&f`M`j40Ho!hGp+o$d+@L?e<nMP>x|6|M$x}ZU$xVR>-n*oSp0J zS1?eHfggVOIo3eA2Fu>9kS*sf+ug2Upd14O-9VXP*}E08<=kbvy%h|UV_={gC^Ia3 Hw?g(WEVa!9
literal 0 HcmV?d00001
diff --git a/dlls/mf/tests/transform.c b/dlls/mf/tests/transform.c index c53451f46d7..c3830f22824 100644 --- a/dlls/mf/tests/transform.c +++ b/dlls/mf/tests/transform.c @@ -7640,7 +7640,7 @@ static void test_video_processor(BOOL use_2d_buffer) static const MFVideoArea actual_aperture = {.Area={82,84}}; static const DWORD actual_width = 96, actual_height = 96; static const DWORD nv12_aligned_width = 128; - static const DWORD extra_width = actual_width + 0x30; + static const DWORD extra_width = actual_width + 0x30, extra_height = actual_height + 0x10; static const DWORD nv12_aligned_extra_width = 192; const struct attribute_desc rgb32_with_aperture[] = { @@ -7666,6 +7666,13 @@ static void test_video_processor(BOOL use_2d_buffer) ATTR_RATIO(MF_MT_FRAME_SIZE, actual_width, actual_height, .required = TRUE), {0}, }; + const struct attribute_desc nv12_extra_height[] = + { + ATTR_GUID(MF_MT_MAJOR_TYPE, MFMediaType_Video, .required = TRUE), + ATTR_GUID(MF_MT_SUBTYPE, MFVideoFormat_NV12, .required = TRUE), + ATTR_RATIO(MF_MT_FRAME_SIZE, actual_width, extra_height, .required = TRUE), + {0}, + }; const struct attribute_desc rgb32_default_stride[] = { ATTR_GUID(MF_MT_MAJOR_TYPE, MFMediaType_Video, .required = TRUE), @@ -7673,6 +7680,14 @@ static void test_video_processor(BOOL use_2d_buffer) ATTR_RATIO(MF_MT_FRAME_SIZE, actual_width, actual_height, .required = TRUE), {0}, }; + const struct attribute_desc rgb32_extra_height[] = + { + ATTR_GUID(MF_MT_MAJOR_TYPE, MFMediaType_Video, .required = TRUE), + ATTR_GUID(MF_MT_SUBTYPE, MFVideoFormat_RGB32, .required = TRUE), + ATTR_RATIO(MF_MT_FRAME_SIZE, actual_width, extra_height, .required = TRUE), + ATTR_UINT32(MF_MT_DEFAULT_STRIDE, actual_width * 4), + {0}, + }; const struct attribute_desc rgb32_negative_stride[] = { ATTR_GUID(MF_MT_MAJOR_TYPE, MFMediaType_Video, .required = TRUE), @@ -7750,6 +7765,20 @@ static void test_video_processor(BOOL use_2d_buffer) .stride = nv12_aligned_extra_width, .length = nv12_aligned_extra_width * actual_height * 3 / 2, }; + const struct buffer2d_desc nv12_extra_height_2d = { + .width = actual_width, + .height = extra_height, + .fourCC = MFVideoFormat_NV12.Data1, + .stride = nv12_aligned_width, + .length = nv12_aligned_width * extra_height * 3 / 2, + }; + const struct buffer2d_desc nv12_extra_width_height_2d = { + .width = extra_width, + .height = extra_height, + .fourCC = MFVideoFormat_NV12.Data1, + .stride = nv12_aligned_extra_width, + .length = nv12_aligned_extra_width * extra_height * 3 / 2, + }; const struct buffer2d_desc rgb32_negative_stride_2d = { .width = actual_width, .height = actual_height, @@ -7772,6 +7801,20 @@ static void test_video_processor(BOOL use_2d_buffer) .stride = extra_width * 4, .length = extra_width * actual_height * 4, }; + const struct buffer2d_desc rgb32_extra_height_2d = { + .width = actual_width, + .height = extra_height, + .fourCC = MFVideoFormat_RGB32.Data1, + .stride = actual_width * 4, + .length = actual_width * extra_height * 4, + }; + const struct buffer2d_desc rgb32_extra_width_height_2d = { + .width = extra_width, + .height = extra_height, + .fourCC = MFVideoFormat_RGB32.Data1, + .stride = extra_width * 4, + .length = extra_width * extra_height * 4, + }; const struct buffer2d_desc rgb32_no_aperture_2d = { .width = 82, .height = 84, @@ -7851,6 +7894,38 @@ static void test_video_processor(BOOL use_2d_buffer) .buffer_count = 1, .buffers = &rgb32_extra_width_buffer_desc, };
+ const struct buffer_desc rgb32_extra_height_buffer_desc = + { + .length = actual_width * extra_height * 4, + .compare = compare_rgb32, .compare_rect = {.top = 12, .right = 82, .bottom = 96}, + .dump = dump_rgb32, .size = {.cx = actual_width, .cy = extra_height}, + .length_1d = actual_width * extra_height * 4, + .length_2d = actual_width * extra_height * 4, .abs_stride = actual_width * 4, + .size_2d = {.cx = actual_width, .cy = extra_height}, + }; + const struct sample_desc rgb32_extra_height_sample_desc = + { + .attributes = output_sample_attributes, + .sample_time = 0, .sample_duration = 10000000, + .buffer_count = 1, .buffers = &rgb32_extra_height_buffer_desc, + }; + + const struct buffer_desc rgb32_extra_width_height_buffer_desc = + { + .length = extra_width * extra_height * 4, + .compare = compare_rgb32, .compare_rect = {.top = 12, .right = 82, .bottom = 96}, + .dump = dump_rgb32, .size = {.cx = extra_width, .cy = extra_height}, + .length_1d = actual_width * extra_height * 4, + .length_2d = extra_width * extra_height * 4, .abs_stride = extra_width * 4, + .size_2d = {.cx = extra_width, .cy = extra_height}, + }; + const struct sample_desc rgb32_extra_width_height_sample_desc = + { + .attributes = output_sample_attributes, + .sample_time = 0, .sample_duration = 10000000, + .buffer_count = 1, .buffers = &rgb32_extra_width_height_buffer_desc, + }; + const struct buffer_desc rgb555_buffer_desc = { .length = actual_width * actual_height * 2, @@ -7897,6 +7972,38 @@ static void test_video_processor(BOOL use_2d_buffer) .buffer_count = 1, .buffers = &nv12_extra_width_buffer_desc, };
+ const struct buffer_desc nv12_extra_height_buffer_desc = + { + .length = actual_width * extra_height * 3 / 2, + .compare = compare_nv12, .compare_rect = {.top = 12, .right = 82, .bottom = 96}, + .dump = dump_nv12, .size = {.cx = actual_width, .cy = extra_height}, + .length_1d = actual_width * extra_height * 3 / 2, + .length_2d = nv12_aligned_width * extra_height * 3 / 2, .abs_stride = nv12_aligned_width, + .size_2d = {.cx = nv12_aligned_width, .cy = extra_height}, + }; + const struct sample_desc nv12_extra_height_sample_desc = + { + .attributes = output_sample_attributes, + .sample_time = 0, .sample_duration = 10000000, + .buffer_count = 1, .buffers = &nv12_extra_height_buffer_desc, + }; + + const struct buffer_desc nv12_extra_width_height_buffer_desc = + { + .length = extra_width * extra_height * 3 / 2, + .compare = compare_nv12, .compare_rect = {.top = 12, .right = 82, .bottom = 96}, + .dump = dump_nv12, .size = {.cx = extra_width, .cy = extra_height}, + .length_1d = actual_width * extra_height * 3 / 2, + .length_2d = nv12_aligned_extra_width * extra_height * 3 / 2, .abs_stride = nv12_aligned_extra_width, + .size_2d = {.cx = nv12_aligned_extra_width, .cy = extra_height}, + }; + const struct sample_desc nv12_extra_width_height_sample_desc = + { + .attributes = output_sample_attributes, + .sample_time = 0, .sample_duration = 10000000, + .buffer_count = 1, .buffers = &nv12_extra_width_height_buffer_desc, + }; + const struct transform_desc { const struct attribute_desc *input_type_desc; @@ -8126,6 +8233,44 @@ static void test_video_processor(BOOL use_2d_buffer) .test_2d_only = TRUE, .is_todo_wine = TRUE, }, + /* Test 25 */ + { + .input_type_desc = nv12_default_stride, .input_bitmap = L"nv12frame.bmp", + .output_type_desc = rgb32_extra_height, .output_bitmap = L"rgb32frame-extra-height.bmp", + .output_2d_bitmap = L"rgb32frame-extra-height-2d.bmp", + .output_sample_desc = &rgb32_extra_height_sample_desc, + .input_2d_desc = &nv12_default_stride_2d, .output_2d_desc = &rgb32_extra_height_2d, + .is_todo_wine = TRUE, + }, + /* Test 26 */ + { + .input_type_desc = rgb32_positive_stride, .input_bitmap = L"rgb32frame.bmp", + .output_type_desc = nv12_extra_height, .output_bitmap = L"nv12frame-extra-height.bmp", + .output_2d_bitmap = L"nv12frame-extra-height-2d.bmp", + .output_sample_desc = &nv12_extra_height_sample_desc, .delta = 2, /* Windows returns 1, Wine needs 2 */ + .input_2d_desc = &rgb32_positive_stride_2d, .output_2d_desc = &nv12_extra_height_2d, + .is_todo_wine = TRUE, + }, + /* Test 27 */ + { + .input_type_desc = nv12_default_stride, .input_bitmap = L"nv12frame.bmp", + .output_type_desc = rgb32_extra_height, .output_bitmap = L"rgb32frame-extra-width-height.bmp", + .output_2d_bitmap = L"rgb32frame-extra-width-height-2d.bmp", + .output_sample_desc = &rgb32_extra_width_height_sample_desc, + .input_2d_desc = &nv12_default_stride_2d, .output_2d_desc = &rgb32_extra_width_height_2d, + .test_2d_only = TRUE, + .is_todo_wine = TRUE, + }, + /* Test 28 */ + { + .input_type_desc = rgb32_default_stride, .input_bitmap = L"rgb32frame.bmp", + .output_type_desc = nv12_extra_height, .output_bitmap = L"nv12frame-extra-width-height.bmp", + .output_2d_bitmap = L"nv12frame-extra-width-height-2d.bmp", + .output_sample_desc = &nv12_extra_width_height_sample_desc, + .input_2d_desc = &rgb32_positive_stride_2d, .output_2d_desc = &nv12_extra_width_height_2d, + .test_2d_only = TRUE, + .is_todo_wine = TRUE, + }, };
MFT_REGISTER_TYPE_INFO output_type = {MFMediaType_Video, MFVideoFormat_NV12}; @@ -8492,6 +8637,18 @@ static void test_video_processor(BOOL use_2d_buffer) output_info.cbSize = actual_aperture.Area.cx * actual_aperture.Area.cy * 4; check_mft_get_output_stream_info(transform, S_OK, &output_info); } + else if (test->output_sample_desc == &nv12_extra_height_sample_desc + || test->output_sample_desc == &nv12_extra_width_height_sample_desc) + { + output_info.cbSize = actual_width * extra_height * 3 / 2; + check_mft_get_output_stream_info(transform, S_OK, &output_info); + } + else if (test->output_sample_desc == &rgb32_extra_height_sample_desc + || test->output_sample_desc == &rgb32_extra_width_height_sample_desc) + { + output_info.cbSize = actual_width * extra_height * 4; + check_mft_get_output_stream_info(transform, S_OK, &output_info); + } else { output_info.cbSize = actual_width * actual_height * 4; @@ -8500,8 +8657,16 @@ static void test_video_processor(BOOL use_2d_buffer)
if (test->output_2d_desc == &rgb32_extra_width_2d) output_size = rgb32_extra_width_2d.width * rgb32_extra_width_2d.height * 4; + else if (test->output_2d_desc == &rgb32_extra_height_2d) + output_size = rgb32_extra_height_2d.width * rgb32_extra_height_2d.height * 4; + else if (test->output_2d_desc == &rgb32_extra_width_height_2d) + output_size = rgb32_extra_width_height_2d.width * rgb32_extra_width_height_2d.height * 4; else if (test->output_2d_desc == &nv12_extra_width_2d) output_size = nv12_extra_width_2d.width * nv12_extra_width_2d.height * 3 / 2; + else if (test->output_2d_desc == &nv12_extra_height_2d) + output_size = nv12_extra_height_2d.width * nv12_extra_height_2d.height * 3 / 2; + else if (test->output_2d_desc == &nv12_extra_width_height_2d) + output_size = nv12_extra_width_height_2d.width * nv12_extra_width_height_2d.height * 3 / 2; else output_size = output_info.cbSize;
@@ -8520,6 +8685,16 @@ static void test_video_processor(BOOL use_2d_buffer) input_info.cbSize = 82 * 84 * 4; check_mft_get_input_stream_info(transform, S_OK, &input_info); } + else if (test->input_type_desc == nv12_extra_height) + { + input_info.cbSize = actual_width * extra_height * 3 / 2; + check_mft_get_input_stream_info(transform, S_OK, &input_info); + } + else if (test->input_type_desc == rgb32_extra_height) + { + input_info.cbSize = actual_width * extra_height * 4; + check_mft_get_input_stream_info(transform, S_OK, &input_info); + } else { input_info.cbSize = actual_width * actual_height * 4; @@ -8527,7 +8702,8 @@ static void test_video_processor(BOOL use_2d_buffer) }
load_resource(test->input_bitmap, &input_data, &input_data_len); - if (test->input_type_desc == nv12_default_stride || test->input_type_desc == nv12_with_aperture) + if (test->input_type_desc == nv12_default_stride || test->input_type_desc == nv12_with_aperture + || test->input_type_desc == nv12_extra_height) { /* skip BMP header and RGB data from the dump */ length = *(DWORD *)(input_data + 2); @@ -8542,8 +8718,16 @@ static void test_video_processor(BOOL use_2d_buffer)
if (test->input_2d_desc == &rgb32_extra_width_2d) expected_input_size = rgb32_extra_width_2d.width * rgb32_extra_width_2d.height * 4; + else if (test->input_2d_desc == &rgb32_extra_height_2d) + expected_input_size = rgb32_extra_height_2d.width * rgb32_extra_height_2d.height * 4; + else if (test->input_2d_desc == &rgb32_extra_width_height_2d) + expected_input_size = rgb32_extra_width_height_2d.width * rgb32_extra_width_height_2d.height * 4; else if (test->input_2d_desc == &nv12_extra_width_2d) expected_input_size = nv12_extra_width_2d.width * nv12_extra_width_2d.height * 3 / 2; + else if (test->input_2d_desc == &nv12_extra_height_2d) + expected_input_size = nv12_extra_height_2d.width * nv12_extra_height_2d.height * 3 / 2; + else if (test->input_2d_desc == &nv12_extra_width_height_2d) + expected_input_size = nv12_extra_width_height_2d.width * nv12_extra_width_height_2d.height * 3 / 2; else expected_input_size = input_info.cbSize;
@@ -8586,12 +8770,12 @@ static void test_video_processor(BOOL use_2d_buffer)
ret = check_mf_sample_collection(output_samples, test->output_sample_desc, test->output_bitmap); todo_wine_if(test->is_todo_wine) - ok(ret <= test->delta || broken(test->broken), "got %lu%% diff\n", ret); + ok(ret <= test->delta || broken(test->broken), "1d got %lu%% diff\n", ret); if (use_2d_buffer) { ret = check_2d_mf_sample_collection(output_samples, test->output_sample_desc, test->output_2d_bitmap); todo_wine_if(test->is_todo_wine) - ok(ret <= test->delta || broken(test->broken), "got %lu%% diff\n", ret); + ok(ret <= test->delta || broken(test->broken), "2d got %lu%% diff\n", ret); } IMFCollection_Release(output_samples);