From 08fee13b06e739237e5d6092d2a1c6fdf2eb54ac Mon Sep 17 00:00:00 2001 From: CJ Rogers Date: Thu, 29 Feb 2024 16:12:44 -0800 Subject: [PATCH 1/3] Initial commit with projects --- .../SyncMFTSample/App.xaml | 16 ++ .../SyncMFTSample/App.xaml.cpp | 43 ++++ .../SyncMFTSample/App.xaml.h | 16 ++ .../Assets/LockScreenLogo.scale-200.png | Bin 0 -> 432 bytes .../Assets/SplashScreen.scale-200.png | Bin 0 -> 5372 bytes .../Assets/Square150x150Logo.scale-200.png | Bin 0 -> 1755 bytes .../Assets/Square44x44Logo.scale-200.png | Bin 0 -> 637 bytes ...x44Logo.targetsize-24_altform-unplated.png | Bin 0 -> 283 bytes .../SyncMFTSample/Assets/StoreLogo.png | Bin 0 -> 456 bytes .../Assets/Wide310x150Logo.scale-200.png | Bin 0 -> 2097 bytes .../SyncMFTSample/MainWindow.idl | 9 + .../SyncMFTSample/MainWindow.xaml | 14 ++ .../SyncMFTSample/MainWindow.xaml.cpp | 29 +++ .../SyncMFTSample/MainWindow.xaml.h | 27 +++ .../SyncMFTSample/Package.appxmanifest | 51 +++++ .../SyncMFTSample/SyncMFTSample.vcxproj | 192 ++++++++++++++++++ .../SyncMFTSample.vcxproj.filters | 59 ++++++ .../SyncMFTSample/app.manifest | 19 ++ .../SyncMFTSample/packages.config | 7 + .../XamlSwapchainSample/SyncMFTSample/pch.cpp | 1 + .../XamlSwapchainSample/SyncMFTSample/pch.h | 25 +++ .../SyncMFTSample/readme.txt | 27 +++ .../XamlSwapchainSample/App.xaml | 16 ++ .../XamlSwapchainSample/App.xaml.cpp | 43 ++++ .../XamlSwapchainSample/App.xaml.h | 16 ++ .../Assets/LockScreenLogo.scale-200.png | Bin 0 -> 432 bytes .../Assets/SplashScreen.scale-200.png | Bin 0 -> 5372 bytes .../Assets/Square150x150Logo.scale-200.png | Bin 0 -> 1755 bytes .../Assets/Square44x44Logo.scale-200.png | Bin 0 -> 637 bytes ...x44Logo.targetsize-24_altform-unplated.png | Bin 0 -> 283 bytes .../XamlSwapchainSample/Assets/StoreLogo.png | Bin 0 -> 456 bytes .../Assets/Wide310x150Logo.scale-200.png | Bin 0 -> 2097 bytes .../XamlSwapchainSample/MainWindow.idl | 9 + .../XamlSwapchainSample/MainWindow.xaml | 14 ++ .../XamlSwapchainSample/MainWindow.xaml.cpp | 29 +++ .../XamlSwapchainSample/MainWindow.xaml.h | 27 +++ .../XamlSwapchainSample/Package.appxmanifest | 51 +++++ .../XamlSwapchainSample.sln | 63 ++++++ .../XamlSwapchainSample.vcxproj | 192 ++++++++++++++++++ .../XamlSwapchainSample.vcxproj.filters | 59 ++++++ .../XamlSwapchainSample/app.manifest | 19 ++ .../XamlSwapchainSample/packages.config | 7 + .../XamlSwapchainSample/pch.cpp | 1 + .../XamlSwapchainSample/pch.h | 25 +++ .../XamlSwapchainSample/readme.txt | 27 +++ 45 files changed, 1133 insertions(+) create mode 100644 samples/XamlSwapchainSample/SyncMFTSample/App.xaml create mode 100644 samples/XamlSwapchainSample/SyncMFTSample/App.xaml.cpp create mode 100644 samples/XamlSwapchainSample/SyncMFTSample/App.xaml.h create mode 100644 samples/XamlSwapchainSample/SyncMFTSample/Assets/LockScreenLogo.scale-200.png create mode 100644 samples/XamlSwapchainSample/SyncMFTSample/Assets/SplashScreen.scale-200.png create mode 100644 samples/XamlSwapchainSample/SyncMFTSample/Assets/Square150x150Logo.scale-200.png create mode 100644 samples/XamlSwapchainSample/SyncMFTSample/Assets/Square44x44Logo.scale-200.png create mode 100644 samples/XamlSwapchainSample/SyncMFTSample/Assets/Square44x44Logo.targetsize-24_altform-unplated.png create mode 100644 samples/XamlSwapchainSample/SyncMFTSample/Assets/StoreLogo.png create mode 100644 samples/XamlSwapchainSample/SyncMFTSample/Assets/Wide310x150Logo.scale-200.png create mode 100644 samples/XamlSwapchainSample/SyncMFTSample/MainWindow.idl create mode 100644 samples/XamlSwapchainSample/SyncMFTSample/MainWindow.xaml create mode 100644 samples/XamlSwapchainSample/SyncMFTSample/MainWindow.xaml.cpp create mode 100644 samples/XamlSwapchainSample/SyncMFTSample/MainWindow.xaml.h create mode 100644 samples/XamlSwapchainSample/SyncMFTSample/Package.appxmanifest create mode 100644 samples/XamlSwapchainSample/SyncMFTSample/SyncMFTSample.vcxproj create mode 100644 samples/XamlSwapchainSample/SyncMFTSample/SyncMFTSample.vcxproj.filters create mode 100644 samples/XamlSwapchainSample/SyncMFTSample/app.manifest create mode 100644 samples/XamlSwapchainSample/SyncMFTSample/packages.config create mode 100644 samples/XamlSwapchainSample/SyncMFTSample/pch.cpp create mode 100644 samples/XamlSwapchainSample/SyncMFTSample/pch.h create mode 100644 samples/XamlSwapchainSample/SyncMFTSample/readme.txt create mode 100644 samples/XamlSwapchainSample/XamlSwapchainSample/App.xaml create mode 100644 samples/XamlSwapchainSample/XamlSwapchainSample/App.xaml.cpp create mode 100644 samples/XamlSwapchainSample/XamlSwapchainSample/App.xaml.h create mode 100644 samples/XamlSwapchainSample/XamlSwapchainSample/Assets/LockScreenLogo.scale-200.png create mode 100644 samples/XamlSwapchainSample/XamlSwapchainSample/Assets/SplashScreen.scale-200.png create mode 100644 samples/XamlSwapchainSample/XamlSwapchainSample/Assets/Square150x150Logo.scale-200.png create mode 100644 samples/XamlSwapchainSample/XamlSwapchainSample/Assets/Square44x44Logo.scale-200.png create mode 100644 samples/XamlSwapchainSample/XamlSwapchainSample/Assets/Square44x44Logo.targetsize-24_altform-unplated.png create mode 100644 samples/XamlSwapchainSample/XamlSwapchainSample/Assets/StoreLogo.png create mode 100644 samples/XamlSwapchainSample/XamlSwapchainSample/Assets/Wide310x150Logo.scale-200.png create mode 100644 samples/XamlSwapchainSample/XamlSwapchainSample/MainWindow.idl create mode 100644 samples/XamlSwapchainSample/XamlSwapchainSample/MainWindow.xaml create mode 100644 samples/XamlSwapchainSample/XamlSwapchainSample/MainWindow.xaml.cpp create mode 100644 samples/XamlSwapchainSample/XamlSwapchainSample/MainWindow.xaml.h create mode 100644 samples/XamlSwapchainSample/XamlSwapchainSample/Package.appxmanifest create mode 100644 samples/XamlSwapchainSample/XamlSwapchainSample/XamlSwapchainSample.sln create mode 100644 samples/XamlSwapchainSample/XamlSwapchainSample/XamlSwapchainSample.vcxproj create mode 100644 samples/XamlSwapchainSample/XamlSwapchainSample/XamlSwapchainSample.vcxproj.filters create mode 100644 samples/XamlSwapchainSample/XamlSwapchainSample/app.manifest create mode 100644 samples/XamlSwapchainSample/XamlSwapchainSample/packages.config create mode 100644 samples/XamlSwapchainSample/XamlSwapchainSample/pch.cpp create mode 100644 samples/XamlSwapchainSample/XamlSwapchainSample/pch.h create mode 100644 samples/XamlSwapchainSample/XamlSwapchainSample/readme.txt diff --git a/samples/XamlSwapchainSample/SyncMFTSample/App.xaml b/samples/XamlSwapchainSample/SyncMFTSample/App.xaml new file mode 100644 index 0000000..02fe220 --- /dev/null +++ b/samples/XamlSwapchainSample/SyncMFTSample/App.xaml @@ -0,0 +1,16 @@ + + + + + + + + + + + + diff --git a/samples/XamlSwapchainSample/SyncMFTSample/App.xaml.cpp b/samples/XamlSwapchainSample/SyncMFTSample/App.xaml.cpp new file mode 100644 index 0000000..4a7cd97 --- /dev/null +++ b/samples/XamlSwapchainSample/SyncMFTSample/App.xaml.cpp @@ -0,0 +1,43 @@ +#include "pch.h" +#include "App.xaml.h" +#include "MainWindow.xaml.h" + +using namespace winrt; +using namespace Microsoft::UI::Xaml; + +// To learn more about WinUI, the WinUI project structure, +// and more about our project templates, see: http://aka.ms/winui-project-info. + +namespace winrt::SyncMFTSample::implementation +{ + /// + /// Initializes the singleton application object. This is the first line of authored code + /// executed, and as such is the logical equivalent of main() or WinMain(). + /// + App::App() + { + // Xaml objects should not call InitializeComponent during construction. + // See https://github.com/microsoft/cppwinrt/tree/master/nuget#initializecomponent + +#if defined _DEBUG && !defined DISABLE_XAML_GENERATED_BREAK_ON_UNHANDLED_EXCEPTION + UnhandledException([](IInspectable const&, UnhandledExceptionEventArgs const& e) + { + if (IsDebuggerPresent()) + { + auto errorMessage = e.Message(); + __debugbreak(); + } + }); +#endif + } + + /// + /// Invoked when the application is launched. + /// + /// Details about the launch request and process. + void App::OnLaunched([[maybe_unused]] LaunchActivatedEventArgs const& e) + { + window = make(); + window.Activate(); + } +} diff --git a/samples/XamlSwapchainSample/SyncMFTSample/App.xaml.h b/samples/XamlSwapchainSample/SyncMFTSample/App.xaml.h new file mode 100644 index 0000000..66f750e --- /dev/null +++ b/samples/XamlSwapchainSample/SyncMFTSample/App.xaml.h @@ -0,0 +1,16 @@ +#pragma once + +#include "App.xaml.g.h" + +namespace winrt::SyncMFTSample::implementation +{ + struct App : AppT + { + App(); + + void OnLaunched(Microsoft::UI::Xaml::LaunchActivatedEventArgs const&); + + private: + winrt::Microsoft::UI::Xaml::Window window{ nullptr }; + }; +} diff --git a/samples/XamlSwapchainSample/SyncMFTSample/Assets/LockScreenLogo.scale-200.png b/samples/XamlSwapchainSample/SyncMFTSample/Assets/LockScreenLogo.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..7440f0d4bf7c7e26e4e36328738c68e624ee851e GIT binary patch literal 432 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezr3(FqV6|IEGZ*x-#9g>~Mkr+x6^F zy~CDX2QIMs&Gcs3RnRBoxBA!*(Mfw0KTCYuYk0WlEIV>qBmPl! zq4ukrvfADX@#p8fbLY(H47N+k`FZ(FZh?cDro7>{8mkBO3>^oaIx`3!Jl)Qq)HI!+ z(S=1{o~eT)&W^=Ea8C`-17(Jv5(nHFJ{dOjGdxLVkY_y6&S1whfuFI4MM0kF0f&cO zPDVpV%nz;Id$>+0Ga5e9625-JcI)oq=#Pa3p^>8BB}21BUw@eN!-6@w%X+^`+Vn?! zryu|3T>kVWNBYyBc=7Y6H#s1Ah!OI_nezW zXTqOdkv2Az6KKBV=$yHdF^R3Fqw(TZEoNSZX>reXJ#bwX42%f|Pgg&ebxsLQ010xn AssI20 literal 0 HcmV?d00001 diff --git a/samples/XamlSwapchainSample/SyncMFTSample/Assets/SplashScreen.scale-200.png b/samples/XamlSwapchainSample/SyncMFTSample/Assets/SplashScreen.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..32f486a86792a5e34cd9a8261b394c49b48f86be GIT binary patch literal 5372 zcmd5=Z){Ul6u)iv53sCbIJKLzl(EF%0tzcEY@|pLrfgF~2Dk$KFtU+$kbYqDN5W%7 z>?DBo!@y06eh{Oux>brrNT^{MO(tkiC@nH(2}}G_1|uvcMD(0{?|W^Gxo!tG~hW2Rn&7%b`-Kd_^`BCrb>XVtRKONoEw6%NswzMxk+kbocuk&}kJ#hSP z>8uR{r%LJ?I#)aaWW;uEixz+DzyTpp)MTEo&R%nEA92~g{^eXQwKV1m{xl5K<@k3FacT+Z zrwfy=VocIptI>t%@p5a;Rt=WXVnU;2SUdr7Yk>gw_2z_ICK^23$|Cg7{3Eg5j@N*F zetT?>30(*S_7ld-Yt&u7T{(hEjjM#vPlXibjrq?;pBBx3*>_2~VFGdsH5L zQKme_LAebV}aOX#+rQafZtp+4jK}V!>pn1?+eUH$0%6}z(Kul9!^2z zXi+d@jnx)RW7!j9uFEdv5N&1sCW#Z6Ej5Y7c;o28Q7i%U0(2v5J>o9P zl$#C8&9r)nL;?J65^GIeSOHYr3B7}}R~}@2Tx_xo5*YdU#g1bO}95cq69J!efdlE+xj1qG#ZUqh~1Sn#dBsZfDvcupM zXOFoyJ0$s+RHQKpzr#T>c&EUbq)lGvZDxuI!9unMI=#;ob2&gT)WqOjt6^X`_N21r`&eh6h0xpT!n6Z9rvE&+bFU$vTJO2? z#^tBNOx*2N)~(+TH8d>ep6``8V=3JEfdUUahVZ-xN+k#V&32x|%qnX(XBii5<@`%^ zV#Ky4f1!6RJqJXBU3M4~tmj2;;r`8_j&w?h5g35uMH(QI$Xpesb zG|*XRT?kh6M(jj0Y&vF^M*9g-iDMW%G%9%Pa}6ERQ9b0%6z1v}Ja=|L@G#5ZI>JS9 z*(K12nMvS?oyG8s9|q~{w`ajtI`KSHSiJ;)%X@M&eCE(VqI#F(XL?L@A$TUT?6av5 zkPWIR391XjSC%d6L}7F71Qpw(;c_~)mSZo-&Fm^FHlPX|Fu}1B3E+9j0}o1a(4HFS zUItE22CC%XZi!b4%~vWn>rpV9&CUEvt!?Q{Pr*L~51&(0Sz{VJJFrJtWw2PwXd|J{ zgH%3vAY$flodH=4&ruCHX;(3t;o}n?!0~3EE|5qRz$!VIkphxa4@_jyfiE9m;0 zjcYJ2;26N&MTB8X4joZ&?SUe|VS$^I%dt{!c2O;%3SdqW@K_14r8eyC1s&VcU5+2~ z_O1Cc*w|aIA=VC6AT_EFoL}W#Rl;7CZe)e}RS*e;8CVyM6i8a(yO@|S709VYY(y2g zc+QxB>Bw^B^2Db~*o)=i$m-aUNQFkYy5(eJW$cez>C{POds*p3cy#tHnvActP;dBP zdEf)C;lq}&#PE?XCD<~ngrzYUg|nS`#MS`Rd7cT>xlR19P#~4Qg5!J}@glCUq)z_2 zjvyv%aSq0 z)njao1dV0XNw&c@qmj1e*jgQ$l@_urW5G4RSY#rT1z`#%3;{EB`aJK|TH^lb_3nAT z-_Q4X-(K&IS8UyqsnjYdippfmN-HT!X2MT;Dpcy~-#$k6V z|MR4vU#O&p7TC46pTflb3 zoUJ;ZRf#&8&EwXy5s%!&(q6cN62swD#FH%O-RJsjWPZN3^^@FCIQ&MxXIFo7!I#VI zkpIstuWqUV5uhgs07?k$*!`uiZ=5b#$lI|0c+XJvj(}zSE3MN#EyOK zql(#yA}~Ibl*r(s1}Z^5mmn*-n93g?-ccM+^PN?6HH~h0hjy6@XY*^i<-V)+OZ;p7 z7j`p_sT55xnYsedNIIel^QIIg7i@`2Qi}x5$!tk29$2OQI zs^kQXAKE}5ZJu$)2@Dxn?}}O@f@6@^!%9Tj+o>=jd!^ZuvBE4jb4g}Z5WMBtcmy^~ zoFGVS5|0FA!(1Q%fL?Bj*L+9ZL{mjSO8lzqrQ0UCZ)X zPwk$1HNFgaK%NxGpuXz}#ywXvf2JQ?BQ5uOZM2up4S#ieaxS$!o9o6Z=czNQb} zwAh|xLZ>+WyN%o?^uCAQw&&4o?S$DJ`WP(Hr*grL*qNXlqU0osCQ(Up5F(^$Z5;n&oJIO4uF`k&QL*j{f zU=;#MZ5{@b%qMbjTB3dh-5#mqY>%{0jgS+WdHyG literal 0 HcmV?d00001 diff --git a/samples/XamlSwapchainSample/SyncMFTSample/Assets/Square44x44Logo.scale-200.png b/samples/XamlSwapchainSample/SyncMFTSample/Assets/Square44x44Logo.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..f713bba67f551ef91020b75716a4dc8ebd744b1c GIT binary patch literal 637 zcmeAS@N?(olHy`uVBq!ia0vp^5g^RL1|$oo8kjIJFu8cTIEGZ*dUI*J;2{SImxtDO zm%3!R$UazoY}x{$j0P5ABYXWr(l=jxJ6ps1W{tV=^>{Dl><3nv3A}sm=EZ)#l3`NR zpZda3^rNox*D1%NC98Z~L*6zipLw~Gxn&(Y-;KmJ+aR6eLabU-L#y8HW%7P-E_-VlLqIabbHPHKT*)fT@9iWJ7iWgOT9%0}Lrj>lztPxWq6sPw3pi z#-<=#$jjrP_DD*i!RLsn0mIA=>4~N)IMYWIf=j%-zuKCdMG%tHYot70D1| zvWa0wMhauW#S>1CnI_;>!1Q3zMA17@DOVq{MQ+{U7^a&yA+%dMCG;WNPV0i;w$tu; zX^b}UKziPM)(<;)ruW;-`)bBN+rQNM*Zs_>?n$|FVFo-e*PZb*@U7VAd+tHb4e?=Blc~}S6K)wL}r*Gf`BM#QB z+y>N$mCswb4d{^{S9v_!eQj4fTRMOwOCi?lSk9%<=vAz}jM-*PQtH@Odn1LZcd^j#o> hW$4xn+CT+ep9lJ{OAO?njobhL002ovPDHLkV1nYebbkN< literal 0 HcmV?d00001 diff --git a/samples/XamlSwapchainSample/SyncMFTSample/Assets/StoreLogo.png b/samples/XamlSwapchainSample/SyncMFTSample/Assets/StoreLogo.png new file mode 100644 index 0000000000000000000000000000000000000000..a4586f26bdf7841cad10f39cdffe2aca3af252c1 GIT binary patch literal 456 zcmeAS@N?(olHy`uVBq!ia0vp^Mj*_=1|;R|J2o;fF!p=8IEGZ*dUM0H=rDtTTVkd2 z(%lbKn@VS_lUaADVB&;Z6F#LM+mPsa?e>FnHo;HND^!P`-lX%BH~FOg%y&x+t*x!? zg$#_1A1kgsSvO(fw`bOmo;lrJX8byO1j^gf7qohR%mmt z@L)WX;>gqgK|tWJvQ5j;4;=gt4HXVKSMYRv5RhY5vS~TqfK_NAP*r{h!!g^BZ;w4r z7CGdsai)y;fJQc`7{Zc2b==h%o`Op$|bg6a&nL{*m7-=0>k4M4-PXlU;G-?%*(*g>iFt^ U$m#7DfHB12>FVdQ&MBb@0G`#n8vpc0sq%A~kJcD9FY~qQRMt?ZR3YyDZt}Od;|mgpc{2dv9AHF){kXU%k({ z=Y8JidEayHTkG@twPZ|U3_^%3ct-OgLSiFAqDN!|tbCX@c@?4P`2x*TMK!+Q4b?k0 ziW7!!KF6dPWcF<%I|iznM~`QJ_V7sHGV_D`dhgpA9Vd@&X}ErK+j~_rdv;Bp?OA@a zFXOk7eWOJe5NcK;6h$FaM&7JxNc#-@QTwzW6x#d_zmQNkz5) zPI;kh;3d;5UCJU+9a(cOxX(|edWoOiAEdGU#kPJ&xnc2||3vDbuhBCkj-pb0as$Zl z5;}4n=**n6(1g`JEtSy;SG6X;#-F~Oz3lESG2b5`j@wAwY4Yp<=4Xeb>iH=6aicF?DxD&q{`!&}ct zBI)aycwuobQAf&678Uf+Mmh-@9RUhyH~>?w0dixO0#jZjEc9R^=5NZw=|a(kcB?9^ zfnTiEFXp-q#B;Tn>(O%$A*ud^Rg&eVH6Y_5Y%!E39RR&s?XpG`gKwU!6FE1 z7X)DC7)*(5g}lh`4`{i~DZcWupZI`K)_4P)VE{@gc7@Xsd^86zl~_mOYH?I4!aGeX z^E(_=L6?PgveDQ+r%P@UISEXrkn`LHJZ##+!-anV>6h)IkKp;E@p8+3&(5%kS2)ld*J*rJccZM0iyaAx7+F~GW1UWFK&3X$PE1^}NH zgAG9ck5K!{07OwU@j@Do>TbH=CDEo#4m0cEyAuXy_<&jlzJVcKweSJ5 z&=q~iIn18$w8yb=rmEmHxVEUA^?RwnB?6Qlp1os8@*dWTGL2bhzZ!s*xqScR?EPL` zo(JwNdKUUYy7GtvZ3asXm)cgFvCx9EmAi;|w=a0iGiv%%VYKh`P0Wma4y`Xyx|T~( zAmfGbgbEEC7)j8b@WA@+5W3a61HJXC1dX@6_T|Czk0I0zBk%tnW~()VWITGI!`$c< gARL?UBrYYkwoDw4eo*CrzXGTrZ@;GF>596)00d&n@&Et; literal 0 HcmV?d00001 diff --git a/samples/XamlSwapchainSample/SyncMFTSample/MainWindow.idl b/samples/XamlSwapchainSample/SyncMFTSample/MainWindow.idl new file mode 100644 index 0000000..9c53df8 --- /dev/null +++ b/samples/XamlSwapchainSample/SyncMFTSample/MainWindow.idl @@ -0,0 +1,9 @@ +namespace SyncMFTSample +{ + [default_interface] + runtimeclass MainWindow : Microsoft.UI.Xaml.Window + { + MainWindow(); + Int32 MyProperty; + } +} diff --git a/samples/XamlSwapchainSample/SyncMFTSample/MainWindow.xaml b/samples/XamlSwapchainSample/SyncMFTSample/MainWindow.xaml new file mode 100644 index 0000000..17af96c --- /dev/null +++ b/samples/XamlSwapchainSample/SyncMFTSample/MainWindow.xaml @@ -0,0 +1,14 @@ + + + + + + + diff --git a/samples/XamlSwapchainSample/SyncMFTSample/MainWindow.xaml.cpp b/samples/XamlSwapchainSample/SyncMFTSample/MainWindow.xaml.cpp new file mode 100644 index 0000000..448f361 --- /dev/null +++ b/samples/XamlSwapchainSample/SyncMFTSample/MainWindow.xaml.cpp @@ -0,0 +1,29 @@ +#include "pch.h" +#include "MainWindow.xaml.h" +#if __has_include("MainWindow.g.cpp") +#include "MainWindow.g.cpp" +#endif + +using namespace winrt; +using namespace Microsoft::UI::Xaml; + +// To learn more about WinUI, the WinUI project structure, +// and more about our project templates, see: http://aka.ms/winui-project-info. + +namespace winrt::SyncMFTSample::implementation +{ + int32_t MainWindow::MyProperty() + { + throw hresult_not_implemented(); + } + + void MainWindow::MyProperty(int32_t /* value */) + { + throw hresult_not_implemented(); + } + + void MainWindow::myButton_Click(IInspectable const&, RoutedEventArgs const&) + { + myButton().Content(box_value(L"Clicked")); + } +} diff --git a/samples/XamlSwapchainSample/SyncMFTSample/MainWindow.xaml.h b/samples/XamlSwapchainSample/SyncMFTSample/MainWindow.xaml.h new file mode 100644 index 0000000..33cbb00 --- /dev/null +++ b/samples/XamlSwapchainSample/SyncMFTSample/MainWindow.xaml.h @@ -0,0 +1,27 @@ +#pragma once + +#include "MainWindow.g.h" + +namespace winrt::SyncMFTSample::implementation +{ + struct MainWindow : MainWindowT + { + MainWindow() + { + // Xaml objects should not call InitializeComponent during construction. + // See https://github.com/microsoft/cppwinrt/tree/master/nuget#initializecomponent + } + + int32_t MyProperty(); + void MyProperty(int32_t value); + + void myButton_Click(IInspectable const& sender, Microsoft::UI::Xaml::RoutedEventArgs const& args); + }; +} + +namespace winrt::SyncMFTSample::factory_implementation +{ + struct MainWindow : MainWindowT + { + }; +} diff --git a/samples/XamlSwapchainSample/SyncMFTSample/Package.appxmanifest b/samples/XamlSwapchainSample/SyncMFTSample/Package.appxmanifest new file mode 100644 index 0000000..11f8adb --- /dev/null +++ b/samples/XamlSwapchainSample/SyncMFTSample/Package.appxmanifest @@ -0,0 +1,51 @@ + + + + + + + + + + SyncMFTSample + cjrogers + Assets\StoreLogo.png + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/XamlSwapchainSample/SyncMFTSample/SyncMFTSample.vcxproj b/samples/XamlSwapchainSample/SyncMFTSample/SyncMFTSample.vcxproj new file mode 100644 index 0000000..dacdb5c --- /dev/null +++ b/samples/XamlSwapchainSample/SyncMFTSample/SyncMFTSample.vcxproj @@ -0,0 +1,192 @@ + + + + + + + true + true + true + {8c974f7d-281c-4c4e-b1fd-b571ddf7dd77} + SyncMFTSample + SyncMFTSample + + $(RootNamespace) + en-US + 16.0 + false + true + Windows Store + 10.0 + 10.0 + 10.0.17763.0 + true + true + + + + + Debug + Win32 + + + Debug + x64 + + + Debug + ARM64 + + + Release + Win32 + + + Release + x64 + + + Release + ARM64 + + + + Application + v143 + Unicode + true + + + true + true + + + false + true + false + + + + + + + + + + + Use + pch.h + $(IntDir)pch.pch + Level4 + %(AdditionalOptions) /bigobj + + + + + _DEBUG;%(PreprocessorDefinitions) + + + + + NDEBUG;%(PreprocessorDefinitions) + + + true + true + + + + + Designer + + + + + + + + + App.xaml + + + MainWindow.xaml + + + + + + + + + Create + + + App.xaml + + + MainWindow.xaml + + + + + + Code + MainWindow.xaml + + + + + false + + + + + + + + + + + + + + + + + + + + + true + + + + + + + + + + + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + + + + + + + + \ No newline at end of file diff --git a/samples/XamlSwapchainSample/SyncMFTSample/SyncMFTSample.vcxproj.filters b/samples/XamlSwapchainSample/SyncMFTSample/SyncMFTSample.vcxproj.filters new file mode 100644 index 0000000..1b6fdf0 --- /dev/null +++ b/samples/XamlSwapchainSample/SyncMFTSample/SyncMFTSample.vcxproj.filters @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + Assets + + + Assets + + + Assets + + + Assets + + + Assets + + + Assets + + + Assets + + + + + {8c974f7d-281c-4c4e-b1fd-b571ddf7dd77} + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/samples/XamlSwapchainSample/SyncMFTSample/app.manifest b/samples/XamlSwapchainSample/SyncMFTSample/app.manifest new file mode 100644 index 0000000..3ab1b9a --- /dev/null +++ b/samples/XamlSwapchainSample/SyncMFTSample/app.manifest @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + PerMonitorV2 + + + \ No newline at end of file diff --git a/samples/XamlSwapchainSample/SyncMFTSample/packages.config b/samples/XamlSwapchainSample/SyncMFTSample/packages.config new file mode 100644 index 0000000..152b1d8 --- /dev/null +++ b/samples/XamlSwapchainSample/SyncMFTSample/packages.config @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/samples/XamlSwapchainSample/SyncMFTSample/pch.cpp b/samples/XamlSwapchainSample/SyncMFTSample/pch.cpp new file mode 100644 index 0000000..1d9f38c --- /dev/null +++ b/samples/XamlSwapchainSample/SyncMFTSample/pch.cpp @@ -0,0 +1 @@ +#include "pch.h" diff --git a/samples/XamlSwapchainSample/SyncMFTSample/pch.h b/samples/XamlSwapchainSample/SyncMFTSample/pch.h new file mode 100644 index 0000000..6d06556 --- /dev/null +++ b/samples/XamlSwapchainSample/SyncMFTSample/pch.h @@ -0,0 +1,25 @@ +#pragma once +#include +#include +#include +#include + +// Undefine GetCurrentTime macro to prevent +// conflict with Storyboard::GetCurrentTime +#undef GetCurrentTime + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include diff --git a/samples/XamlSwapchainSample/SyncMFTSample/readme.txt b/samples/XamlSwapchainSample/SyncMFTSample/readme.txt new file mode 100644 index 0000000..c648d73 --- /dev/null +++ b/samples/XamlSwapchainSample/SyncMFTSample/readme.txt @@ -0,0 +1,27 @@ +======================================================================== + SyncMFTSample Project Overview +======================================================================== + +This project demonstrates how to get started writing WinUI3 apps directly +with standard C++, using the Windows App SDK and C++/WinRT packages and +XAML compiler support to generate implementation headers from interface +(IDL) files. These headers can then be used to implement the local +Windows Runtime classes referenced in the app's XAML pages. + +Steps: +1. Create an interface (IDL) file to define any local Windows Runtime + classes referenced in the app's XAML pages. +2. Build the project once to generate implementation templates under + the "Generated Files" folder, as well as skeleton class definitions + under "Generated Files\sources". +3. Use the skeleton class definitions for reference to implement your + Windows Runtime classes. + +======================================================================== +Learn more about Windows App SDK here: +https://docs.microsoft.com/windows/apps/windows-app-sdk/ +Learn more about WinUI3 here: +https://docs.microsoft.com/windows/apps/winui/winui3/ +Learn more about C++/WinRT here: +http://aka.ms/cppwinrt/ +======================================================================== diff --git a/samples/XamlSwapchainSample/XamlSwapchainSample/App.xaml b/samples/XamlSwapchainSample/XamlSwapchainSample/App.xaml new file mode 100644 index 0000000..9231c72 --- /dev/null +++ b/samples/XamlSwapchainSample/XamlSwapchainSample/App.xaml @@ -0,0 +1,16 @@ + + + + + + + + + + + + diff --git a/samples/XamlSwapchainSample/XamlSwapchainSample/App.xaml.cpp b/samples/XamlSwapchainSample/XamlSwapchainSample/App.xaml.cpp new file mode 100644 index 0000000..34f40e8 --- /dev/null +++ b/samples/XamlSwapchainSample/XamlSwapchainSample/App.xaml.cpp @@ -0,0 +1,43 @@ +#include "pch.h" +#include "App.xaml.h" +#include "MainWindow.xaml.h" + +using namespace winrt; +using namespace Microsoft::UI::Xaml; + +// To learn more about WinUI, the WinUI project structure, +// and more about our project templates, see: http://aka.ms/winui-project-info. + +namespace winrt::XamlSwapchainSample::implementation +{ + /// + /// Initializes the singleton application object. This is the first line of authored code + /// executed, and as such is the logical equivalent of main() or WinMain(). + /// + App::App() + { + // Xaml objects should not call InitializeComponent during construction. + // See https://github.com/microsoft/cppwinrt/tree/master/nuget#initializecomponent + +#if defined _DEBUG && !defined DISABLE_XAML_GENERATED_BREAK_ON_UNHANDLED_EXCEPTION + UnhandledException([](IInspectable const&, UnhandledExceptionEventArgs const& e) + { + if (IsDebuggerPresent()) + { + auto errorMessage = e.Message(); + __debugbreak(); + } + }); +#endif + } + + /// + /// Invoked when the application is launched. + /// + /// Details about the launch request and process. + void App::OnLaunched([[maybe_unused]] LaunchActivatedEventArgs const& e) + { + window = make(); + window.Activate(); + } +} diff --git a/samples/XamlSwapchainSample/XamlSwapchainSample/App.xaml.h b/samples/XamlSwapchainSample/XamlSwapchainSample/App.xaml.h new file mode 100644 index 0000000..bf343a0 --- /dev/null +++ b/samples/XamlSwapchainSample/XamlSwapchainSample/App.xaml.h @@ -0,0 +1,16 @@ +#pragma once + +#include "App.xaml.g.h" + +namespace winrt::XamlSwapchainSample::implementation +{ + struct App : AppT + { + App(); + + void OnLaunched(Microsoft::UI::Xaml::LaunchActivatedEventArgs const&); + + private: + winrt::Microsoft::UI::Xaml::Window window{ nullptr }; + }; +} diff --git a/samples/XamlSwapchainSample/XamlSwapchainSample/Assets/LockScreenLogo.scale-200.png b/samples/XamlSwapchainSample/XamlSwapchainSample/Assets/LockScreenLogo.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..7440f0d4bf7c7e26e4e36328738c68e624ee851e GIT binary patch literal 432 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezr3(FqV6|IEGZ*x-#9g>~Mkr+x6^F zy~CDX2QIMs&Gcs3RnRBoxBA!*(Mfw0KTCYuYk0WlEIV>qBmPl! zq4ukrvfADX@#p8fbLY(H47N+k`FZ(FZh?cDro7>{8mkBO3>^oaIx`3!Jl)Qq)HI!+ z(S=1{o~eT)&W^=Ea8C`-17(Jv5(nHFJ{dOjGdxLVkY_y6&S1whfuFI4MM0kF0f&cO zPDVpV%nz;Id$>+0Ga5e9625-JcI)oq=#Pa3p^>8BB}21BUw@eN!-6@w%X+^`+Vn?! zryu|3T>kVWNBYyBc=7Y6H#s1Ah!OI_nezW zXTqOdkv2Az6KKBV=$yHdF^R3Fqw(TZEoNSZX>reXJ#bwX42%f|Pgg&ebxsLQ010xn AssI20 literal 0 HcmV?d00001 diff --git a/samples/XamlSwapchainSample/XamlSwapchainSample/Assets/SplashScreen.scale-200.png b/samples/XamlSwapchainSample/XamlSwapchainSample/Assets/SplashScreen.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..32f486a86792a5e34cd9a8261b394c49b48f86be GIT binary patch literal 5372 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 literal 0 HcmV?d00001 diff --git a/samples/XamlSwapchainSample/XamlSwapchainSample/Assets/Square44x44Logo.scale-200.png b/samples/XamlSwapchainSample/XamlSwapchainSample/Assets/Square44x44Logo.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..f713bba67f551ef91020b75716a4dc8ebd744b1c GIT binary patch literal 637 zcmeAS@N?(olHy`uVBq!ia0vp^5g^RL1|$oo8kjIJFu8cTIEGZ*dUI*J;2{SImxtDO zm%3!R$UazoY}x{$j0P5ABYXWr(l=jxJ6ps1W{tV=^>{Dl><3nv3A}sm=EZ)#l3`NR zpZda3^rNox*D1%NC98Z~L*6zipLw~Gxn&(Y-;KmJ+aR6eLabU-L#y8HW%7P-E_-VlLqIabbHPHKT*)fT@9iWJ7iWgOT9%0}Lrj>lztPxWq6sPw3pi z#-<=#$jjrP_DD*i!RLsn0mIA=>4~N)IMYWIf=j%-zuKCdMG%tHYot70D1| zvWa0wMhauW#S>1CnI_;>!1Q3zMA17@DOVq{MQ+{U7^a&yA+%dMCG;WNPV0i;w$tu; zX^b}UKziPM)(<;)ruW;-`)bBN+rQNM*Zs_>?n$|FVFo-e*PZb*@U7VAd+tHb4e?=Blc~}S6K)wL}r*Gf`BM#QB z+y>N$mCswb4d{^{S9v_!eQj4fTRMOwOCi?lSk9%<=vAz}jM-*PQtH@Odn1LZcd^j#o> hW$4xn+CT+ep9lJ{OAO?njobhL002ovPDHLkV1nYebbkN< literal 0 HcmV?d00001 diff --git a/samples/XamlSwapchainSample/XamlSwapchainSample/Assets/StoreLogo.png b/samples/XamlSwapchainSample/XamlSwapchainSample/Assets/StoreLogo.png new file mode 100644 index 0000000000000000000000000000000000000000..a4586f26bdf7841cad10f39cdffe2aca3af252c1 GIT binary patch literal 456 zcmeAS@N?(olHy`uVBq!ia0vp^Mj*_=1|;R|J2o;fF!p=8IEGZ*dUM0H=rDtTTVkd2 z(%lbKn@VS_lUaADVB&;Z6F#LM+mPsa?e>FnHo;HND^!P`-lX%BH~FOg%y&x+t*x!? zg$#_1A1kgsSvO(fw`bOmo;lrJX8byO1j^gf7qohR%mmt z@L)WX;>gqgK|tWJvQ5j;4;=gt4HXVKSMYRv5RhY5vS~TqfK_NAP*r{h!!g^BZ;w4r z7CGdsai)y;fJQc`7{Zc2b==h%o`Op$|bg6a&nL{*m7-=0>k4M4-PXlU;G-?%*(*g>iFt^ U$m#7DfHB12>FVdQ&MBb@0G`#n8vpc0sq%A~kJcD9FY~qQRMt?ZR3YyDZt}Od;|mgpc{2dv9AHF){kXU%k({ z=Y8JidEayHTkG@twPZ|U3_^%3ct-OgLSiFAqDN!|tbCX@c@?4P`2x*TMK!+Q4b?k0 ziW7!!KF6dPWcF<%I|iznM~`QJ_V7sHGV_D`dhgpA9Vd@&X}ErK+j~_rdv;Bp?OA@a zFXOk7eWOJe5NcK;6h$FaM&7JxNc#-@QTwzW6x#d_zmQNkz5) zPI;kh;3d;5UCJU+9a(cOxX(|edWoOiAEdGU#kPJ&xnc2||3vDbuhBCkj-pb0as$Zl z5;}4n=**n6(1g`JEtSy;SG6X;#-F~Oz3lESG2b5`j@wAwY4Yp<=4Xeb>iH=6aicF?DxD&q{`!&}ct zBI)aycwuobQAf&678Uf+Mmh-@9RUhyH~>?w0dixO0#jZjEc9R^=5NZw=|a(kcB?9^ zfnTiEFXp-q#B;Tn>(O%$A*ud^Rg&eVH6Y_5Y%!E39RR&s?XpG`gKwU!6FE1 z7X)DC7)*(5g}lh`4`{i~DZcWupZI`K)_4P)VE{@gc7@Xsd^86zl~_mOYH?I4!aGeX z^E(_=L6?PgveDQ+r%P@UISEXrkn`LHJZ##+!-anV>6h)IkKp;E@p8+3&(5%kS2)ld*J*rJccZM0iyaAx7+F~GW1UWFK&3X$PE1^}NH zgAG9ck5K!{07OwU@j@Do>TbH=CDEo#4m0cEyAuXy_<&jlzJVcKweSJ5 z&=q~iIn18$w8yb=rmEmHxVEUA^?RwnB?6Qlp1os8@*dWTGL2bhzZ!s*xqScR?EPL` zo(JwNdKUUYy7GtvZ3asXm)cgFvCx9EmAi;|w=a0iGiv%%VYKh`P0Wma4y`Xyx|T~( zAmfGbgbEEC7)j8b@WA@+5W3a61HJXC1dX@6_T|Czk0I0zBk%tnW~()VWITGI!`$c< gARL?UBrYYkwoDw4eo*CrzXGTrZ@;GF>596)00d&n@&Et; literal 0 HcmV?d00001 diff --git a/samples/XamlSwapchainSample/XamlSwapchainSample/MainWindow.idl b/samples/XamlSwapchainSample/XamlSwapchainSample/MainWindow.idl new file mode 100644 index 0000000..20b999d --- /dev/null +++ b/samples/XamlSwapchainSample/XamlSwapchainSample/MainWindow.idl @@ -0,0 +1,9 @@ +namespace XamlSwapchainSample +{ + [default_interface] + runtimeclass MainWindow : Microsoft.UI.Xaml.Window + { + MainWindow(); + Int32 MyProperty; + } +} diff --git a/samples/XamlSwapchainSample/XamlSwapchainSample/MainWindow.xaml b/samples/XamlSwapchainSample/XamlSwapchainSample/MainWindow.xaml new file mode 100644 index 0000000..7b36cd5 --- /dev/null +++ b/samples/XamlSwapchainSample/XamlSwapchainSample/MainWindow.xaml @@ -0,0 +1,14 @@ + + + + + + + diff --git a/samples/XamlSwapchainSample/XamlSwapchainSample/MainWindow.xaml.cpp b/samples/XamlSwapchainSample/XamlSwapchainSample/MainWindow.xaml.cpp new file mode 100644 index 0000000..d8dc641 --- /dev/null +++ b/samples/XamlSwapchainSample/XamlSwapchainSample/MainWindow.xaml.cpp @@ -0,0 +1,29 @@ +#include "pch.h" +#include "MainWindow.xaml.h" +#if __has_include("MainWindow.g.cpp") +#include "MainWindow.g.cpp" +#endif + +using namespace winrt; +using namespace Microsoft::UI::Xaml; + +// To learn more about WinUI, the WinUI project structure, +// and more about our project templates, see: http://aka.ms/winui-project-info. + +namespace winrt::XamlSwapchainSample::implementation +{ + int32_t MainWindow::MyProperty() + { + throw hresult_not_implemented(); + } + + void MainWindow::MyProperty(int32_t /* value */) + { + throw hresult_not_implemented(); + } + + void MainWindow::myButton_Click(IInspectable const&, RoutedEventArgs const&) + { + myButton().Content(box_value(L"Clicked")); + } +} diff --git a/samples/XamlSwapchainSample/XamlSwapchainSample/MainWindow.xaml.h b/samples/XamlSwapchainSample/XamlSwapchainSample/MainWindow.xaml.h new file mode 100644 index 0000000..4703bf9 --- /dev/null +++ b/samples/XamlSwapchainSample/XamlSwapchainSample/MainWindow.xaml.h @@ -0,0 +1,27 @@ +#pragma once + +#include "MainWindow.g.h" + +namespace winrt::XamlSwapchainSample::implementation +{ + struct MainWindow : MainWindowT + { + MainWindow() + { + // Xaml objects should not call InitializeComponent during construction. + // See https://github.com/microsoft/cppwinrt/tree/master/nuget#initializecomponent + } + + int32_t MyProperty(); + void MyProperty(int32_t value); + + void myButton_Click(IInspectable const& sender, Microsoft::UI::Xaml::RoutedEventArgs const& args); + }; +} + +namespace winrt::XamlSwapchainSample::factory_implementation +{ + struct MainWindow : MainWindowT + { + }; +} diff --git a/samples/XamlSwapchainSample/XamlSwapchainSample/Package.appxmanifest b/samples/XamlSwapchainSample/XamlSwapchainSample/Package.appxmanifest new file mode 100644 index 0000000..523c51a --- /dev/null +++ b/samples/XamlSwapchainSample/XamlSwapchainSample/Package.appxmanifest @@ -0,0 +1,51 @@ + + + + + + + + + + XamlSwapchainSample + cjrogers + Assets\StoreLogo.png + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/XamlSwapchainSample/XamlSwapchainSample/XamlSwapchainSample.sln b/samples/XamlSwapchainSample/XamlSwapchainSample/XamlSwapchainSample.sln new file mode 100644 index 0000000..b118e01 --- /dev/null +++ b/samples/XamlSwapchainSample/XamlSwapchainSample/XamlSwapchainSample.sln @@ -0,0 +1,63 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.9.34607.119 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XamlSwapchainSample", "XamlSwapchainSample.vcxproj", "{7CB39A7B-FB5D-4575-BDB1-CBF2BB968D9C}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SyncMFTSample", "..\SyncMFTSample\SyncMFTSample.vcxproj", "{8C974F7D-281C-4C4E-B1FD-B571DDF7DD77}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|ARM64 = Debug|ARM64 + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|ARM64 = Release|ARM64 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {7CB39A7B-FB5D-4575-BDB1-CBF2BB968D9C}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {7CB39A7B-FB5D-4575-BDB1-CBF2BB968D9C}.Debug|ARM64.Build.0 = Debug|ARM64 + {7CB39A7B-FB5D-4575-BDB1-CBF2BB968D9C}.Debug|ARM64.Deploy.0 = Debug|ARM64 + {7CB39A7B-FB5D-4575-BDB1-CBF2BB968D9C}.Debug|x64.ActiveCfg = Debug|x64 + {7CB39A7B-FB5D-4575-BDB1-CBF2BB968D9C}.Debug|x64.Build.0 = Debug|x64 + {7CB39A7B-FB5D-4575-BDB1-CBF2BB968D9C}.Debug|x64.Deploy.0 = Debug|x64 + {7CB39A7B-FB5D-4575-BDB1-CBF2BB968D9C}.Debug|x86.ActiveCfg = Debug|Win32 + {7CB39A7B-FB5D-4575-BDB1-CBF2BB968D9C}.Debug|x86.Build.0 = Debug|Win32 + {7CB39A7B-FB5D-4575-BDB1-CBF2BB968D9C}.Debug|x86.Deploy.0 = Debug|Win32 + {7CB39A7B-FB5D-4575-BDB1-CBF2BB968D9C}.Release|ARM64.ActiveCfg = Release|ARM64 + {7CB39A7B-FB5D-4575-BDB1-CBF2BB968D9C}.Release|ARM64.Build.0 = Release|ARM64 + {7CB39A7B-FB5D-4575-BDB1-CBF2BB968D9C}.Release|ARM64.Deploy.0 = Release|ARM64 + {7CB39A7B-FB5D-4575-BDB1-CBF2BB968D9C}.Release|x64.ActiveCfg = Release|x64 + {7CB39A7B-FB5D-4575-BDB1-CBF2BB968D9C}.Release|x64.Build.0 = Release|x64 + {7CB39A7B-FB5D-4575-BDB1-CBF2BB968D9C}.Release|x64.Deploy.0 = Release|x64 + {7CB39A7B-FB5D-4575-BDB1-CBF2BB968D9C}.Release|x86.ActiveCfg = Release|Win32 + {7CB39A7B-FB5D-4575-BDB1-CBF2BB968D9C}.Release|x86.Build.0 = Release|Win32 + {7CB39A7B-FB5D-4575-BDB1-CBF2BB968D9C}.Release|x86.Deploy.0 = Release|Win32 + {8C974F7D-281C-4C4E-B1FD-B571DDF7DD77}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {8C974F7D-281C-4C4E-B1FD-B571DDF7DD77}.Debug|ARM64.Build.0 = Debug|ARM64 + {8C974F7D-281C-4C4E-B1FD-B571DDF7DD77}.Debug|ARM64.Deploy.0 = Debug|ARM64 + {8C974F7D-281C-4C4E-B1FD-B571DDF7DD77}.Debug|x64.ActiveCfg = Debug|x64 + {8C974F7D-281C-4C4E-B1FD-B571DDF7DD77}.Debug|x64.Build.0 = Debug|x64 + {8C974F7D-281C-4C4E-B1FD-B571DDF7DD77}.Debug|x64.Deploy.0 = Debug|x64 + {8C974F7D-281C-4C4E-B1FD-B571DDF7DD77}.Debug|x86.ActiveCfg = Debug|Win32 + {8C974F7D-281C-4C4E-B1FD-B571DDF7DD77}.Debug|x86.Build.0 = Debug|Win32 + {8C974F7D-281C-4C4E-B1FD-B571DDF7DD77}.Debug|x86.Deploy.0 = Debug|Win32 + {8C974F7D-281C-4C4E-B1FD-B571DDF7DD77}.Release|ARM64.ActiveCfg = Release|ARM64 + {8C974F7D-281C-4C4E-B1FD-B571DDF7DD77}.Release|ARM64.Build.0 = Release|ARM64 + {8C974F7D-281C-4C4E-B1FD-B571DDF7DD77}.Release|ARM64.Deploy.0 = Release|ARM64 + {8C974F7D-281C-4C4E-B1FD-B571DDF7DD77}.Release|x64.ActiveCfg = Release|x64 + {8C974F7D-281C-4C4E-B1FD-B571DDF7DD77}.Release|x64.Build.0 = Release|x64 + {8C974F7D-281C-4C4E-B1FD-B571DDF7DD77}.Release|x64.Deploy.0 = Release|x64 + {8C974F7D-281C-4C4E-B1FD-B571DDF7DD77}.Release|x86.ActiveCfg = Release|Win32 + {8C974F7D-281C-4C4E-B1FD-B571DDF7DD77}.Release|x86.Build.0 = Release|Win32 + {8C974F7D-281C-4C4E-B1FD-B571DDF7DD77}.Release|x86.Deploy.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {BF914B6A-D07A-4CA0-830B-1ADC1928491D} + EndGlobalSection +EndGlobal diff --git a/samples/XamlSwapchainSample/XamlSwapchainSample/XamlSwapchainSample.vcxproj b/samples/XamlSwapchainSample/XamlSwapchainSample/XamlSwapchainSample.vcxproj new file mode 100644 index 0000000..8163b00 --- /dev/null +++ b/samples/XamlSwapchainSample/XamlSwapchainSample/XamlSwapchainSample.vcxproj @@ -0,0 +1,192 @@ + + + + + + + true + true + true + {7cb39a7b-fb5d-4575-bdb1-cbf2bb968d9c} + XamlSwapchainSample + XamlSwapchainSample + + $(RootNamespace) + en-US + 16.0 + false + true + Windows Store + 10.0 + 10.0 + 10.0.17763.0 + true + true + + + + + Debug + Win32 + + + Debug + x64 + + + Debug + ARM64 + + + Release + Win32 + + + Release + x64 + + + Release + ARM64 + + + + Application + v143 + Unicode + true + + + true + true + + + false + true + false + + + + + + + + + + + Use + pch.h + $(IntDir)pch.pch + Level4 + %(AdditionalOptions) /bigobj + + + + + _DEBUG;%(PreprocessorDefinitions) + + + + + NDEBUG;%(PreprocessorDefinitions) + + + true + true + + + + + Designer + + + + + + + + + App.xaml + + + MainWindow.xaml + + + + + + + + + Create + + + App.xaml + + + MainWindow.xaml + + + + + + Code + MainWindow.xaml + + + + + false + + + + + + + + + + + + + + + + + + + + + true + + + + + + + + + + + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + + + + + + + + \ No newline at end of file diff --git a/samples/XamlSwapchainSample/XamlSwapchainSample/XamlSwapchainSample.vcxproj.filters b/samples/XamlSwapchainSample/XamlSwapchainSample/XamlSwapchainSample.vcxproj.filters new file mode 100644 index 0000000..87edad9 --- /dev/null +++ b/samples/XamlSwapchainSample/XamlSwapchainSample/XamlSwapchainSample.vcxproj.filters @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + Assets + + + Assets + + + Assets + + + Assets + + + Assets + + + Assets + + + Assets + + + + + {7cb39a7b-fb5d-4575-bdb1-cbf2bb968d9c} + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/samples/XamlSwapchainSample/XamlSwapchainSample/app.manifest b/samples/XamlSwapchainSample/XamlSwapchainSample/app.manifest new file mode 100644 index 0000000..0e0c702 --- /dev/null +++ b/samples/XamlSwapchainSample/XamlSwapchainSample/app.manifest @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + PerMonitorV2 + + + \ No newline at end of file diff --git a/samples/XamlSwapchainSample/XamlSwapchainSample/packages.config b/samples/XamlSwapchainSample/XamlSwapchainSample/packages.config new file mode 100644 index 0000000..152b1d8 --- /dev/null +++ b/samples/XamlSwapchainSample/XamlSwapchainSample/packages.config @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/samples/XamlSwapchainSample/XamlSwapchainSample/pch.cpp b/samples/XamlSwapchainSample/XamlSwapchainSample/pch.cpp new file mode 100644 index 0000000..1d9f38c --- /dev/null +++ b/samples/XamlSwapchainSample/XamlSwapchainSample/pch.cpp @@ -0,0 +1 @@ +#include "pch.h" diff --git a/samples/XamlSwapchainSample/XamlSwapchainSample/pch.h b/samples/XamlSwapchainSample/XamlSwapchainSample/pch.h new file mode 100644 index 0000000..6d06556 --- /dev/null +++ b/samples/XamlSwapchainSample/XamlSwapchainSample/pch.h @@ -0,0 +1,25 @@ +#pragma once +#include +#include +#include +#include + +// Undefine GetCurrentTime macro to prevent +// conflict with Storyboard::GetCurrentTime +#undef GetCurrentTime + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include diff --git a/samples/XamlSwapchainSample/XamlSwapchainSample/readme.txt b/samples/XamlSwapchainSample/XamlSwapchainSample/readme.txt new file mode 100644 index 0000000..5b0aba8 --- /dev/null +++ b/samples/XamlSwapchainSample/XamlSwapchainSample/readme.txt @@ -0,0 +1,27 @@ +======================================================================== + XamlSwapchainSample Project Overview +======================================================================== + +This project demonstrates how to get started writing WinUI3 apps directly +with standard C++, using the Windows App SDK and C++/WinRT packages and +XAML compiler support to generate implementation headers from interface +(IDL) files. These headers can then be used to implement the local +Windows Runtime classes referenced in the app's XAML pages. + +Steps: +1. Create an interface (IDL) file to define any local Windows Runtime + classes referenced in the app's XAML pages. +2. Build the project once to generate implementation templates under + the "Generated Files" folder, as well as skeleton class definitions + under "Generated Files\sources". +3. Use the skeleton class definitions for reference to implement your + Windows Runtime classes. + +======================================================================== +Learn more about Windows App SDK here: +https://docs.microsoft.com/windows/apps/windows-app-sdk/ +Learn more about WinUI3 here: +https://docs.microsoft.com/windows/apps/winui/winui3/ +Learn more about C++/WinRT here: +http://aka.ms/cppwinrt/ +======================================================================== From 4ab4ff6a17cd0fddf934353720b54a53832b0dd1 Mon Sep 17 00:00:00 2001 From: CJ Rogers Date: Mon, 11 Mar 2024 17:42:12 -0700 Subject: [PATCH 2/3] Update with XAML samples projects --- .../BasicMFTClass/BasicMFT.cpp | 233 ++++++++ .../BasicMFTClass/BasicMFT.h | 53 ++ .../BasicMFTClass/BasicMFTClass.vcxproj | 162 ++++++ .../BasicMFTClass.vcxproj.filters | 39 ++ .../packages.config | 8 +- .../XamlSwapchainSample/BasicMFTClass/pch.cpp | 5 + .../XamlSwapchainSample/BasicMFTClass/pch.h | 35 ++ .../BasicMFTDLL/BasicMFT.def | 5 + .../BasicMFTDLL/BasicMFTDLL.vcxproj | 192 +++++++ .../BasicMFTDLL/BasicMFTDLL.vcxproj.filters | 42 ++ .../BasicMFTDLL/dllmain.cpp | 36 ++ .../BasicMFTDLL/framework.h | 5 + .../packages.config | 8 +- .../XamlSwapchainSample/BasicMFTDLL/pch.cpp | 5 + samples/XamlSwapchainSample/BasicMFTDLL/pch.h | 22 + .../SyncMFTSample/MainWindow.xaml.cpp | 29 - .../SyncMFTSample/MainWindow.xaml.h | 27 - .../SyncMFTSample/readme.txt | 27 - .../{SyncMFTSample => XAMLSample}/App.xaml | 4 +- .../App.xaml.cpp | 5 +- .../{SyncMFTSample => XAMLSample}/App.xaml.h | 2 +- .../Assets/LockScreenLogo.scale-200.png | Bin .../Assets/SplashScreen.scale-200.png | Bin .../Assets/Square150x150Logo.scale-200.png | Bin .../Assets/Square44x44Logo.scale-200.png | Bin ...x44Logo.targetsize-24_altform-unplated.png | Bin .../Assets/StoreLogo.png | Bin .../Assets/Wide310x150Logo.scale-200.png | Bin .../MainWindow.idl | 3 +- .../MainWindow.xaml | 11 +- .../XAMLSample/MainWindow.xaml.cpp | 361 ++++++++++++ .../XAMLSample/MainWindow.xaml.h | 40 ++ .../Package.appxmanifest | 14 +- samples/XamlSwapchainSample/XAMLSample/Util.h | 59 ++ .../XAMLSample.vcxproj} | 40 +- .../XAMLSample.vcxproj.filters} | 5 +- .../app.manifest | 2 +- .../XAMLSample/packages.config | 7 + .../{SyncMFTSample => XAMLSample}/pch.cpp | 0 .../{XamlSwapchainSample => XAMLSample}/pch.h | 17 + .../App.xaml | 4 +- .../XAMLSample_MFTClass/App.xaml.cpp | 42 ++ .../App.xaml.h | 2 +- .../Assets/LockScreenLogo.scale-200.png | Bin .../Assets/SplashScreen.scale-200.png | Bin .../Assets/Square150x150Logo.scale-200.png | Bin .../Assets/Square44x44Logo.scale-200.png | Bin ...x44Logo.targetsize-24_altform-unplated.png | Bin .../Assets/StoreLogo.png | Bin .../Assets/Wide310x150Logo.scale-200.png | Bin .../Assets/docs_BBBScreenshot.png | Bin 0 -> 260684 bytes .../MainWindow.idl | 3 +- .../XAMLSample_MFTClass/MainWindow.xaml | 15 + .../XAMLSample_MFTClass/MainWindow.xaml.cpp | 506 +++++++++++++++++ .../XAMLSample_MFTClass/MainWindow.xaml.h | 44 ++ .../XAMLSample_MFTClass/Package.appxmanifest | 51 ++ .../XAMLSample_MFTClass/Util.h | 58 ++ .../XAMLSample_MFTClass.vcxproj} | 46 +- .../XAMLSample_MFTClass.vcxproj.filters | 60 ++ .../app.manifest | 2 +- .../XAMLSample_MFTClass/packages.config | 7 + .../pch.cpp | 0 .../pch.h | 28 + .../XAMLSample_MFTDLL/App.xaml | 16 + .../App.xaml.cpp | 5 +- .../XAMLSample_MFTDLL/App.xaml.h | 16 + .../Assets/LockScreenLogo.scale-200.png | Bin 0 -> 432 bytes .../Assets/SplashScreen.scale-200.png | Bin 0 -> 5372 bytes .../Assets/Square150x150Logo.scale-200.png | Bin 0 -> 1755 bytes .../Assets/Square44x44Logo.scale-200.png | Bin 0 -> 637 bytes ...x44Logo.targetsize-24_altform-unplated.png | Bin 0 -> 283 bytes .../XAMLSample_MFTDLL/Assets/StoreLogo.png | Bin 0 -> 456 bytes .../Assets/Wide310x150Logo.scale-200.png | Bin 0 -> 2097 bytes .../XAMLSample_MFTDLL/MainWindow.idl | 8 + .../MainWindow.xaml | 11 +- .../XAMLSample_MFTDLL/MainWindow.xaml.cpp | 536 ++++++++++++++++++ .../XAMLSample_MFTDLL/MainWindow.xaml.h | 45 ++ .../Package.appxmanifest | 14 +- .../XAMLSample_MFTDLL/Util.h | 58 ++ .../XAMLSample_MFTDLL.vcxproj | 207 +++++++ .../XAMLSample_MFTDLL.vcxproj.filters} | 3 +- .../XAMLSample_MFTDLL/app.manifest | 19 + .../XAMLSample_MFTDLL/packages.config | 7 + .../XAMLSample_MFTDLL/pch.cpp | 1 + .../XAMLSample_MFTDLL/pch.h | 54 ++ samples/XamlSwapchainSample/XAMLSamples.sln | 142 +++++ .../XamlSwapchainSample/MainWindow.xaml.cpp | 29 - .../XamlSwapchainSample/MainWindow.xaml.h | 27 - .../XamlSwapchainSample.sln | 63 -- .../XamlSwapchainSample/readme.txt | 27 - samples/XamlSwapchainSample/readme.md | 86 +++ .../resources/MF-XAML-Sample.png | Bin 0 -> 18814 bytes .../resources/debug_ouput.png | Bin 0 -> 18779 bytes .../resources/docs_BBBScreenshot.png | Bin 0 -> 260684 bytes 94 files changed, 3427 insertions(+), 318 deletions(-) create mode 100644 samples/XamlSwapchainSample/BasicMFTClass/BasicMFT.cpp create mode 100644 samples/XamlSwapchainSample/BasicMFTClass/BasicMFT.h create mode 100644 samples/XamlSwapchainSample/BasicMFTClass/BasicMFTClass.vcxproj create mode 100644 samples/XamlSwapchainSample/BasicMFTClass/BasicMFTClass.vcxproj.filters rename samples/XamlSwapchainSample/{SyncMFTSample => BasicMFTClass}/packages.config (54%) create mode 100644 samples/XamlSwapchainSample/BasicMFTClass/pch.cpp create mode 100644 samples/XamlSwapchainSample/BasicMFTClass/pch.h create mode 100644 samples/XamlSwapchainSample/BasicMFTDLL/BasicMFT.def create mode 100644 samples/XamlSwapchainSample/BasicMFTDLL/BasicMFTDLL.vcxproj create mode 100644 samples/XamlSwapchainSample/BasicMFTDLL/BasicMFTDLL.vcxproj.filters create mode 100644 samples/XamlSwapchainSample/BasicMFTDLL/dllmain.cpp create mode 100644 samples/XamlSwapchainSample/BasicMFTDLL/framework.h rename samples/XamlSwapchainSample/{XamlSwapchainSample => BasicMFTDLL}/packages.config (54%) create mode 100644 samples/XamlSwapchainSample/BasicMFTDLL/pch.cpp create mode 100644 samples/XamlSwapchainSample/BasicMFTDLL/pch.h delete mode 100644 samples/XamlSwapchainSample/SyncMFTSample/MainWindow.xaml.cpp delete mode 100644 samples/XamlSwapchainSample/SyncMFTSample/MainWindow.xaml.h delete mode 100644 samples/XamlSwapchainSample/SyncMFTSample/readme.txt rename samples/XamlSwapchainSample/{SyncMFTSample => XAMLSample}/App.xaml (89%) rename samples/XamlSwapchainSample/{SyncMFTSample => XAMLSample}/App.xaml.cpp (92%) rename samples/XamlSwapchainSample/{SyncMFTSample => XAMLSample}/App.xaml.h (84%) rename samples/XamlSwapchainSample/{SyncMFTSample => XAMLSample}/Assets/LockScreenLogo.scale-200.png (100%) rename samples/XamlSwapchainSample/{SyncMFTSample => XAMLSample}/Assets/SplashScreen.scale-200.png (100%) rename samples/XamlSwapchainSample/{SyncMFTSample => XAMLSample}/Assets/Square150x150Logo.scale-200.png (100%) rename samples/XamlSwapchainSample/{SyncMFTSample => XAMLSample}/Assets/Square44x44Logo.scale-200.png (100%) rename samples/XamlSwapchainSample/{SyncMFTSample => XAMLSample}/Assets/Square44x44Logo.targetsize-24_altform-unplated.png (100%) rename samples/XamlSwapchainSample/{SyncMFTSample => XAMLSample}/Assets/StoreLogo.png (100%) rename samples/XamlSwapchainSample/{SyncMFTSample => XAMLSample}/Assets/Wide310x150Logo.scale-200.png (100%) rename samples/XamlSwapchainSample/{SyncMFTSample => XAMLSample}/MainWindow.idl (70%) rename samples/XamlSwapchainSample/{SyncMFTSample => XAMLSample}/MainWindow.xaml (53%) create mode 100644 samples/XamlSwapchainSample/XAMLSample/MainWindow.xaml.cpp create mode 100644 samples/XamlSwapchainSample/XAMLSample/MainWindow.xaml.h rename samples/XamlSwapchainSample/{SyncMFTSample => XAMLSample}/Package.appxmanifest (79%) create mode 100644 samples/XamlSwapchainSample/XAMLSample/Util.h rename samples/XamlSwapchainSample/{XamlSwapchainSample/XamlSwapchainSample.vcxproj => XAMLSample/XAMLSample.vcxproj} (63%) rename samples/XamlSwapchainSample/{XamlSwapchainSample/XamlSwapchainSample.vcxproj.filters => XAMLSample/XAMLSample.vcxproj.filters} (92%) rename samples/XamlSwapchainSample/{SyncMFTSample => XAMLSample}/app.manifest (93%) create mode 100644 samples/XamlSwapchainSample/XAMLSample/packages.config rename samples/XamlSwapchainSample/{SyncMFTSample => XAMLSample}/pch.cpp (100%) rename samples/XamlSwapchainSample/{XamlSwapchainSample => XAMLSample}/pch.h (65%) rename samples/XamlSwapchainSample/{XamlSwapchainSample => XAMLSample_MFTClass}/App.xaml (87%) create mode 100644 samples/XamlSwapchainSample/XAMLSample_MFTClass/App.xaml.cpp rename samples/XamlSwapchainSample/{XamlSwapchainSample => XAMLSample_MFTClass}/App.xaml.h (82%) rename samples/XamlSwapchainSample/{XamlSwapchainSample => XAMLSample_MFTClass}/Assets/LockScreenLogo.scale-200.png (100%) rename samples/XamlSwapchainSample/{XamlSwapchainSample => XAMLSample_MFTClass}/Assets/SplashScreen.scale-200.png (100%) rename samples/XamlSwapchainSample/{XamlSwapchainSample => XAMLSample_MFTClass}/Assets/Square150x150Logo.scale-200.png (100%) rename samples/XamlSwapchainSample/{XamlSwapchainSample => XAMLSample_MFTClass}/Assets/Square44x44Logo.scale-200.png (100%) rename samples/XamlSwapchainSample/{XamlSwapchainSample => XAMLSample_MFTClass}/Assets/Square44x44Logo.targetsize-24_altform-unplated.png (100%) rename samples/XamlSwapchainSample/{XamlSwapchainSample => XAMLSample_MFTClass}/Assets/StoreLogo.png (100%) rename samples/XamlSwapchainSample/{XamlSwapchainSample => XAMLSample_MFTClass}/Assets/Wide310x150Logo.scale-200.png (100%) create mode 100644 samples/XamlSwapchainSample/XAMLSample_MFTClass/Assets/docs_BBBScreenshot.png rename samples/XamlSwapchainSample/{XamlSwapchainSample => XAMLSample_MFTClass}/MainWindow.idl (67%) create mode 100644 samples/XamlSwapchainSample/XAMLSample_MFTClass/MainWindow.xaml create mode 100644 samples/XamlSwapchainSample/XAMLSample_MFTClass/MainWindow.xaml.cpp create mode 100644 samples/XamlSwapchainSample/XAMLSample_MFTClass/MainWindow.xaml.h create mode 100644 samples/XamlSwapchainSample/XAMLSample_MFTClass/Package.appxmanifest create mode 100644 samples/XamlSwapchainSample/XAMLSample_MFTClass/Util.h rename samples/XamlSwapchainSample/{SyncMFTSample/SyncMFTSample.vcxproj => XAMLSample_MFTClass/XAMLSample_MFTClass.vcxproj} (61%) create mode 100644 samples/XamlSwapchainSample/XAMLSample_MFTClass/XAMLSample_MFTClass.vcxproj.filters rename samples/XamlSwapchainSample/{XamlSwapchainSample => XAMLSample_MFTClass}/app.manifest (93%) create mode 100644 samples/XamlSwapchainSample/XAMLSample_MFTClass/packages.config rename samples/XamlSwapchainSample/{XamlSwapchainSample => XAMLSample_MFTClass}/pch.cpp (100%) rename samples/XamlSwapchainSample/{SyncMFTSample => XAMLSample_MFTClass}/pch.h (56%) create mode 100644 samples/XamlSwapchainSample/XAMLSample_MFTDLL/App.xaml rename samples/XamlSwapchainSample/{XamlSwapchainSample => XAMLSample_MFTDLL}/App.xaml.cpp (91%) create mode 100644 samples/XamlSwapchainSample/XAMLSample_MFTDLL/App.xaml.h create mode 100644 samples/XamlSwapchainSample/XAMLSample_MFTDLL/Assets/LockScreenLogo.scale-200.png create mode 100644 samples/XamlSwapchainSample/XAMLSample_MFTDLL/Assets/SplashScreen.scale-200.png create mode 100644 samples/XamlSwapchainSample/XAMLSample_MFTDLL/Assets/Square150x150Logo.scale-200.png create mode 100644 samples/XamlSwapchainSample/XAMLSample_MFTDLL/Assets/Square44x44Logo.scale-200.png create mode 100644 samples/XamlSwapchainSample/XAMLSample_MFTDLL/Assets/Square44x44Logo.targetsize-24_altform-unplated.png create mode 100644 samples/XamlSwapchainSample/XAMLSample_MFTDLL/Assets/StoreLogo.png create mode 100644 samples/XamlSwapchainSample/XAMLSample_MFTDLL/Assets/Wide310x150Logo.scale-200.png create mode 100644 samples/XamlSwapchainSample/XAMLSample_MFTDLL/MainWindow.idl rename samples/XamlSwapchainSample/{XamlSwapchainSample => XAMLSample_MFTDLL}/MainWindow.xaml (52%) create mode 100644 samples/XamlSwapchainSample/XAMLSample_MFTDLL/MainWindow.xaml.cpp create mode 100644 samples/XamlSwapchainSample/XAMLSample_MFTDLL/MainWindow.xaml.h rename samples/XamlSwapchainSample/{XamlSwapchainSample => XAMLSample_MFTDLL}/Package.appxmanifest (78%) create mode 100644 samples/XamlSwapchainSample/XAMLSample_MFTDLL/Util.h create mode 100644 samples/XamlSwapchainSample/XAMLSample_MFTDLL/XAMLSample_MFTDLL.vcxproj rename samples/XamlSwapchainSample/{SyncMFTSample/SyncMFTSample.vcxproj.filters => XAMLSample_MFTDLL/XAMLSample_MFTDLL.vcxproj.filters} (94%) create mode 100644 samples/XamlSwapchainSample/XAMLSample_MFTDLL/app.manifest create mode 100644 samples/XamlSwapchainSample/XAMLSample_MFTDLL/packages.config create mode 100644 samples/XamlSwapchainSample/XAMLSample_MFTDLL/pch.cpp create mode 100644 samples/XamlSwapchainSample/XAMLSample_MFTDLL/pch.h create mode 100644 samples/XamlSwapchainSample/XAMLSamples.sln delete mode 100644 samples/XamlSwapchainSample/XamlSwapchainSample/MainWindow.xaml.cpp delete mode 100644 samples/XamlSwapchainSample/XamlSwapchainSample/MainWindow.xaml.h delete mode 100644 samples/XamlSwapchainSample/XamlSwapchainSample/XamlSwapchainSample.sln delete mode 100644 samples/XamlSwapchainSample/XamlSwapchainSample/readme.txt create mode 100644 samples/XamlSwapchainSample/readme.md create mode 100644 samples/XamlSwapchainSample/resources/MF-XAML-Sample.png create mode 100644 samples/XamlSwapchainSample/resources/debug_ouput.png create mode 100644 samples/XamlSwapchainSample/resources/docs_BBBScreenshot.png diff --git a/samples/XamlSwapchainSample/BasicMFTClass/BasicMFT.cpp b/samples/XamlSwapchainSample/BasicMFTClass/BasicMFT.cpp new file mode 100644 index 0000000..1629859 --- /dev/null +++ b/samples/XamlSwapchainSample/BasicMFTClass/BasicMFT.cpp @@ -0,0 +1,233 @@ +#include "pch.h" +#include "BasicMFT.h" + + +IFACEMETHODIMP_(HRESULT __stdcall) BasicMFT::GetStreamLimits(DWORD* pdwInputMinimum, DWORD* pdwInputMaximum, DWORD* pdwOutputMinimum, DWORD* pdwOutputMaximum) +{ + if ((pdwInputMinimum == nullptr) || (pdwInputMaximum == nullptr) || (pdwOutputMinimum == nullptr) || (pdwOutputMaximum == nullptr)) + { + return E_POINTER; + } + + // This MFT has a fixed number of streams. + *pdwInputMinimum = 1; + *pdwInputMaximum = 1; + *pdwOutputMinimum = 1; + *pdwOutputMaximum = 1; + return S_OK; +} + +IFACEMETHODIMP_(HRESULT __stdcall) BasicMFT::GetStreamCount(DWORD* pcInputStreams, DWORD* pcOutputStreams) +{ + if ((pcInputStreams == nullptr) || (pcOutputStreams == nullptr)) + { + return E_POINTER; + } + + // This MFT has a fixed number of streams. + *pcInputStreams = 1; + *pcOutputStreams = 1; + return S_OK; +} + +IFACEMETHODIMP BasicMFT::GetInputStreamInfo(DWORD dwInputStreamID, MFT_INPUT_STREAM_INFO* pStreamInfo) +{ + if (dwInputStreamID != 0) + { + return MF_E_INVALIDSTREAMNUMBER; + } + + if (pStreamInfo == nullptr) + { + return E_POINTER; + } + + pStreamInfo->dwFlags = MFT_INPUT_STREAM_PROCESSES_IN_PLACE; + + return S_OK; +} + +IFACEMETHODIMP BasicMFT::GetOutputStreamInfo(DWORD dwOutputStreamID, MFT_OUTPUT_STREAM_INFO* pStreamInfo) +{ + if (dwOutputStreamID != 0) + { + return MF_E_INVALIDSTREAMNUMBER; + } + + if (pStreamInfo == nullptr) + { + return E_POINTER; + } + + pStreamInfo->dwFlags = MFT_OUTPUT_STREAM_PROVIDES_SAMPLES; + + return S_OK; +} + +IFACEMETHODIMP_(HRESULT __stdcall) BasicMFT::SetInputType(DWORD dwInputStreamID, IMFMediaType* pType, DWORD dwFlags) +{ + if (dwInputStreamID != 0) + { + return MF_E_INVALIDSTREAMNUMBER; + } + + RETURN_IF_FAILED(MFCreateMediaType(&m_inputType)); + RETURN_IF_FAILED(pType->CopyAllItems(m_inputType.Get())); + return S_OK; +} + +IFACEMETHODIMP_(HRESULT __stdcall) BasicMFT::SetOutputType(DWORD dwOutputStreamID, IMFMediaType* pType, DWORD dwFlags) +{ + if (dwOutputStreamID != 0) + { + return MF_E_INVALIDSTREAMNUMBER; + } + + RETURN_IF_FAILED(MFCreateMediaType(&m_outputType)); + RETURN_IF_FAILED(pType->CopyAllItems(m_outputType.Get())); + return S_OK; +} + +IFACEMETHODIMP_(HRESULT __stdcall) BasicMFT::GetInputCurrentType(DWORD dwInputStreamID, IMFMediaType** ppType) +{ + if (ppType == nullptr) + { + return E_POINTER; + } + + if (dwInputStreamID != 0) + { + return MF_E_INVALIDSTREAMNUMBER; + } + + if (!m_inputType) + { + return MF_E_TRANSFORM_TYPE_NOT_SET; + } + + return m_inputType->CopyAllItems(*ppType); +} + +IFACEMETHODIMP_(HRESULT __stdcall) BasicMFT::GetOutputCurrentType(DWORD dwOutputStreamID, IMFMediaType** ppType) +{ + if (ppType == nullptr) + { + return E_POINTER; + } + + if (dwOutputStreamID != 0) + { + return MF_E_INVALIDSTREAMNUMBER; + } + + if (!m_outputType) + { + return MF_E_TRANSFORM_TYPE_NOT_SET; + } + + return m_outputType->CopyAllItems(*ppType); +} + +IFACEMETHODIMP BasicMFT::GetInputStatus(DWORD dwInputStreamID, DWORD* pdwFlags) +{ + if (dwInputStreamID != 0) + { + return MF_E_INVALIDSTREAMNUMBER; + } + + if (m_inputType == nullptr || m_outputType == nullptr) + { + return MF_E_TRANSFORM_TYPE_NOT_SET; + } + + *pdwFlags = m_sample == nullptr ? 1 : 0; + + return S_OK; +} + +IFACEMETHODIMP_(HRESULT __stdcall) BasicMFT::ProcessMessage(MFT_MESSAGE_TYPE eMessage, ULONG_PTR ulParam) +{ + switch (eMessage) + { + case MFT_MESSAGE_COMMAND_FLUSH: + // Flush the MFT. + m_sample = nullptr; + break; + + case MFT_MESSAGE_NOTIFY_BEGIN_STREAMING: + m_streamingInitialized = true; + break; + + case MFT_MESSAGE_NOTIFY_END_STREAMING: + m_streamingInitialized = false; + break; + + // The remaining messages require no action + case MFT_MESSAGE_SET_D3D_MANAGER: + case MFT_MESSAGE_NOTIFY_END_OF_STREAM: + case MFT_MESSAGE_NOTIFY_START_OF_STREAM: + case MFT_MESSAGE_COMMAND_DRAIN: + break; + } + return S_OK; +} + +IFACEMETHODIMP_(HRESULT __stdcall) BasicMFT::ProcessInput(DWORD dwInputStreamID, IMFSample* pSample, DWORD dwFlags) +{ + // Check input parameters. + if (pSample == nullptr) + { + return E_POINTER; + } + + if (dwInputStreamID != 0) + { + return MF_E_INVALIDSTREAMNUMBER; + } + + auto lock = m_critSec.Lock(); + + // Check for valid media types. + // The client must set input and output types before calling ProcessInput. + // Check if an input sample is already queued. + if (!m_inputType || !m_outputType || (m_sample != nullptr)) + { + return MF_E_NOTACCEPTING; + } + + // Cache the sample. We do the actual work in ProcessOutput. + m_sample = pSample; + return S_OK; +} + +IFACEMETHODIMP_(HRESULT __stdcall) BasicMFT::ProcessOutput(DWORD dwFlags, DWORD cOutputBufferCount, MFT_OUTPUT_DATA_BUFFER* pOutputSamples, DWORD* pdwStatus) +{ + if (dwFlags != 0 || cOutputBufferCount != 1) + { + return E_INVALIDARG; + } + + if (pOutputSamples == nullptr || pdwStatus == nullptr) + { + return E_POINTER; + } + + if (pOutputSamples->pSample != nullptr) + { + return E_INVALIDARG; + } + + auto lock = m_critSec.Lock(); + + if (m_sample == nullptr) + { + return MF_E_TRANSFORM_NEED_MORE_INPUT; + } + + RETURN_IF_FAILED(m_sample.CopyTo(IID_PPV_ARGS(&pOutputSamples[0].pSample))); + pOutputSamples[0].dwStatus = 0; + + m_sample = nullptr; + + return S_OK; +} diff --git a/samples/XamlSwapchainSample/BasicMFTClass/BasicMFT.h b/samples/XamlSwapchainSample/BasicMFTClass/BasicMFT.h new file mode 100644 index 0000000..5a67180 --- /dev/null +++ b/samples/XamlSwapchainSample/BasicMFTClass/BasicMFT.h @@ -0,0 +1,53 @@ +#pragma once + +#include "pch.h" +#include +#include + +using namespace Microsoft::WRL; +using Microsoft::WRL::ComPtr; +using Microsoft::WRL::Wrappers::CriticalSection; + +class __declspec(uuid("F1BF74F0-65F4-4F47-925C-E8B564A9A87E")) BasicMFT : + public RuntimeClass < + RuntimeClassFlags< RuntimeClassType::WinRtClassicComMix >, + IMFTransform > +{ +public: + IFACEMETHOD(RuntimeClassInitialize)() { return S_OK; } + + BasicMFT() {} + + // IMFTransform + IFACEMETHODIMP GetStreamLimits(DWORD* pdwInputMinimum, DWORD* pdwInputMaximum, DWORD* pdwOutputMinimum, DWORD* pdwOutputMaximum); + IFACEMETHODIMP GetStreamCount(DWORD* pcInputStreams, DWORD* pcOutputStreams); + IFACEMETHODIMP GetInputStreamInfo(DWORD dwInputStreamID, MFT_INPUT_STREAM_INFO* pStreamInfo); + IFACEMETHODIMP GetOutputStreamInfo(DWORD dwOutputStreamID, MFT_OUTPUT_STREAM_INFO* pStreamInfo); + IFACEMETHODIMP GetAttributes(IMFAttributes** pAttributes) { return E_NOTIMPL; } + IFACEMETHODIMP GetInputAvailableType(DWORD dwInputStreamID, DWORD dwTypeIndex, IMFMediaType** ppType) { return E_NOTIMPL; } + IFACEMETHODIMP GetOutputAvailableType(DWORD dwOutputStreamID, DWORD dwTypeIndex, IMFMediaType** ppType) { return E_NOTIMPL; } + IFACEMETHODIMP SetInputType(DWORD dwInputStreamID, IMFMediaType* pType, DWORD dwFlags); + IFACEMETHODIMP SetOutputType(DWORD dwOutputStreamID, IMFMediaType* pType, DWORD dwFlags); + IFACEMETHODIMP GetInputCurrentType(DWORD dwInputStreamID, IMFMediaType** ppType); + IFACEMETHODIMP GetOutputCurrentType(DWORD dwOutputStreamID, IMFMediaType** ppType); + IFACEMETHODIMP GetInputStatus(DWORD dwInputStreamID, DWORD* pdwFlags); + IFACEMETHODIMP GetOutputStatus(DWORD* pdwFlags) { return E_NOTIMPL; } + IFACEMETHODIMP ProcessMessage(MFT_MESSAGE_TYPE eMessage, ULONG_PTR ulParam); + IFACEMETHODIMP ProcessInput(DWORD dwInputStreamID, IMFSample* pSample, DWORD dwFlags); + IFACEMETHODIMP ProcessOutput(DWORD dwFlags, DWORD cOutputBufferCount, MFT_OUTPUT_DATA_BUFFER* pOutputSamples, DWORD* pdwStatus); + IFACEMETHODIMP GetOutputStreamAttributes(DWORD dwOutputStreamID, IMFAttributes** ppAttributes) { return E_NOTIMPL; } + IFACEMETHODIMP GetStreamIDs(DWORD, DWORD*, DWORD, DWORD*) { return E_NOTIMPL; } + IFACEMETHODIMP GetInputStreamAttributes(DWORD, IMFAttributes**) { return E_NOTIMPL; } + IFACEMETHODIMP DeleteInputStream(DWORD) { return E_NOTIMPL; } + IFACEMETHODIMP AddInputStreams(DWORD, DWORD*) { return E_NOTIMPL; } + IFACEMETHODIMP SetOutputBounds(LONGLONG, LONGLONG) { return E_NOTIMPL; } + IFACEMETHODIMP ProcessEvent(DWORD, IMFMediaEvent*) { return E_NOTIMPL; } + +private: + bool m_streamingInitialized = false; + ComPtr m_sample; // Input sample. + ComPtr m_inputType; // Input media type. + ComPtr m_outputType; // Output media type. + + CriticalSection m_critSec; +}; \ No newline at end of file diff --git a/samples/XamlSwapchainSample/BasicMFTClass/BasicMFTClass.vcxproj b/samples/XamlSwapchainSample/BasicMFTClass/BasicMFTClass.vcxproj new file mode 100644 index 0000000..107d26e --- /dev/null +++ b/samples/XamlSwapchainSample/BasicMFTClass/BasicMFTClass.vcxproj @@ -0,0 +1,162 @@ + + + + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + Win32Proj + {c8f9fe66-1689-422b-828e-cbe91844e6cd} + BasicMFTClass + 10.0 + + + + StaticLibrary + true + v143 + Unicode + + + StaticLibrary + false + v143 + true + Unicode + + + StaticLibrary + true + v143 + Unicode + + + StaticLibrary + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + Level3 + true + WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + Level3 + true + _DEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + + + + + Level3 + true + true + true + NDEBUG;_CONSOLE;%(PreprocessorDefinitions) + true + + + Console + true + true + true + + + + + + + + + + + + + + + + + + + + + + + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + + + + + + + + \ No newline at end of file diff --git a/samples/XamlSwapchainSample/BasicMFTClass/BasicMFTClass.vcxproj.filters b/samples/XamlSwapchainSample/BasicMFTClass/BasicMFTClass.vcxproj.filters new file mode 100644 index 0000000..6440dc8 --- /dev/null +++ b/samples/XamlSwapchainSample/BasicMFTClass/BasicMFTClass.vcxproj.filters @@ -0,0 +1,39 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Header Files + + + Header Files + + + + + Source Files + + + Source Files + + + + + + + + + \ No newline at end of file diff --git a/samples/XamlSwapchainSample/SyncMFTSample/packages.config b/samples/XamlSwapchainSample/BasicMFTClass/packages.config similarity index 54% rename from samples/XamlSwapchainSample/SyncMFTSample/packages.config rename to samples/XamlSwapchainSample/BasicMFTClass/packages.config index 152b1d8..245a2b5 100644 --- a/samples/XamlSwapchainSample/SyncMFTSample/packages.config +++ b/samples/XamlSwapchainSample/BasicMFTClass/packages.config @@ -1,7 +1,7 @@  - - - - + + + + \ No newline at end of file diff --git a/samples/XamlSwapchainSample/BasicMFTClass/pch.cpp b/samples/XamlSwapchainSample/BasicMFTClass/pch.cpp new file mode 100644 index 0000000..64b7eef --- /dev/null +++ b/samples/XamlSwapchainSample/BasicMFTClass/pch.cpp @@ -0,0 +1,5 @@ +// pch.cpp: source file corresponding to the pre-compiled header + +#include "pch.h" + +// When you are using pre-compiled headers, this source file is necessary for compilation to succeed. diff --git a/samples/XamlSwapchainSample/BasicMFTClass/pch.h b/samples/XamlSwapchainSample/BasicMFTClass/pch.h new file mode 100644 index 0000000..9befa1c --- /dev/null +++ b/samples/XamlSwapchainSample/BasicMFTClass/pch.h @@ -0,0 +1,35 @@ +#pragma once + +// pch.h: This is a precompiled header file. +// Files listed below are compiled only once, improving build performance for future builds. +// This also affects IntelliSense performance, including code completion and many code browsing features. +// However, files listed here are ALL re-compiled if any one of them is updated between builds. +// Do not add files here that you will be updating frequently as this negates the performance advantage. + +#ifndef PCH_H +#define PCH_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + + +#endif //PCH_H diff --git a/samples/XamlSwapchainSample/BasicMFTDLL/BasicMFT.def b/samples/XamlSwapchainSample/BasicMFTDLL/BasicMFT.def new file mode 100644 index 0000000..7679693 --- /dev/null +++ b/samples/XamlSwapchainSample/BasicMFTDLL/BasicMFT.def @@ -0,0 +1,5 @@ +LIBRARY BasicMFT.dll + +EXPORTS + DllCanUnloadNow PRIVATE + DllGetClassObject PRIVATE \ No newline at end of file diff --git a/samples/XamlSwapchainSample/BasicMFTDLL/BasicMFTDLL.vcxproj b/samples/XamlSwapchainSample/BasicMFTDLL/BasicMFTDLL.vcxproj new file mode 100644 index 0000000..c8033cb --- /dev/null +++ b/samples/XamlSwapchainSample/BasicMFTDLL/BasicMFTDLL.vcxproj @@ -0,0 +1,192 @@ + + + + + + + + Debug + Win32 + + + Release + Win32 + + + Debug + x64 + + + Release + x64 + + + + 17.0 + Win32Proj + {6db84c92-341f-4b3e-b3f4-83869e4b2920} + BasicMFTDLL + 10.0 + BasicMFTDLL + + + + DynamicLibrary + true + v143 + Unicode + + + DynamicLibrary + false + v143 + true + Unicode + + + DynamicLibrary + true + v143 + Unicode + + + DynamicLibrary + false + v143 + true + Unicode + + + + + + + + + + + + + + + + + + + + + + Level3 + true + WIN32;_DEBUG;BASICMFTDLL_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + true + Use + pch.h + + + Windows + true + false + BasicMFT.def + + + + + Level3 + true + true + true + WIN32;NDEBUG;BASICMFTDLL_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + true + Use + pch.h + + + Windows + true + true + true + false + BasicMFT.def + + + + + Level3 + true + _DEBUG;BASICMFTDLL_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + true + Use + pch.h + ../../XamlSwapchainSample;%(AdditionalIncludeDirectories) + + + Windows + true + false + BasicMFT.def + mfuuid.lib;%(AdditionalDependencies) + + + + + Level3 + true + true + true + NDEBUG;BASICMFTDLL_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions) + true + Use + pch.h + + + Windows + true + true + true + false + BasicMFT.def + + + + + + + + + + Create + Create + Create + Create + + + + + + + + + {c8f9fe66-1689-422b-828e-cbe91844e6cd} + + + + + + + + + + + + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + + + + + + + + \ No newline at end of file diff --git a/samples/XamlSwapchainSample/BasicMFTDLL/BasicMFTDLL.vcxproj.filters b/samples/XamlSwapchainSample/BasicMFTDLL/BasicMFTDLL.vcxproj.filters new file mode 100644 index 0000000..b463305 --- /dev/null +++ b/samples/XamlSwapchainSample/BasicMFTDLL/BasicMFTDLL.vcxproj.filters @@ -0,0 +1,42 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms + + + + + Header Files + + + Header Files + + + + + Source Files + + + Source Files + + + + + + Source Files + + + + + + \ No newline at end of file diff --git a/samples/XamlSwapchainSample/BasicMFTDLL/dllmain.cpp b/samples/XamlSwapchainSample/BasicMFTDLL/dllmain.cpp new file mode 100644 index 0000000..3ed1a30 --- /dev/null +++ b/samples/XamlSwapchainSample/BasicMFTDLL/dllmain.cpp @@ -0,0 +1,36 @@ +// dllmain.cpp : Defines the entry point for the DLL application. +#include "pch.h" +#include "BasicMFTClass\BasicMFT.h" + +CoCreatableClass(BasicMFT); + +BOOL APIENTRY DllMain( HMODULE hModule, + DWORD ul_reason_for_call, + LPVOID lpReserved + ) +{ + switch (ul_reason_for_call) + { + case DLL_PROCESS_ATTACH: + Module::GetModule().Create(); + break; + case DLL_PROCESS_DETACH: + Module::GetModule().Terminate(); + break; + } + return TRUE; +} + +HRESULT __stdcall DllCanUnloadNow() +{ + auto& module = Microsoft::WRL::Module::GetModule(); + HRESULT hr = (module.Terminate()) ? S_OK : S_FALSE; + return hr; +} + +HRESULT __stdcall DllGetClassObject(REFCLSID clsid, REFIID iid, LPVOID* ppv) +{ + RETURN_HR_IF(E_POINTER, !ppv); + RETURN_IF_FAILED(Module::GetModule().GetClassObject(clsid, iid, ppv)); + return S_OK; +} diff --git a/samples/XamlSwapchainSample/BasicMFTDLL/framework.h b/samples/XamlSwapchainSample/BasicMFTDLL/framework.h new file mode 100644 index 0000000..54b83e9 --- /dev/null +++ b/samples/XamlSwapchainSample/BasicMFTDLL/framework.h @@ -0,0 +1,5 @@ +#pragma once + +#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers +// Windows Header Files +#include diff --git a/samples/XamlSwapchainSample/XamlSwapchainSample/packages.config b/samples/XamlSwapchainSample/BasicMFTDLL/packages.config similarity index 54% rename from samples/XamlSwapchainSample/XamlSwapchainSample/packages.config rename to samples/XamlSwapchainSample/BasicMFTDLL/packages.config index 152b1d8..245a2b5 100644 --- a/samples/XamlSwapchainSample/XamlSwapchainSample/packages.config +++ b/samples/XamlSwapchainSample/BasicMFTDLL/packages.config @@ -1,7 +1,7 @@  - - - - + + + + \ No newline at end of file diff --git a/samples/XamlSwapchainSample/BasicMFTDLL/pch.cpp b/samples/XamlSwapchainSample/BasicMFTDLL/pch.cpp new file mode 100644 index 0000000..64b7eef --- /dev/null +++ b/samples/XamlSwapchainSample/BasicMFTDLL/pch.cpp @@ -0,0 +1,5 @@ +// pch.cpp: source file corresponding to the pre-compiled header + +#include "pch.h" + +// When you are using pre-compiled headers, this source file is necessary for compilation to succeed. diff --git a/samples/XamlSwapchainSample/BasicMFTDLL/pch.h b/samples/XamlSwapchainSample/BasicMFTDLL/pch.h new file mode 100644 index 0000000..707cf5d --- /dev/null +++ b/samples/XamlSwapchainSample/BasicMFTDLL/pch.h @@ -0,0 +1,22 @@ +// pch.h: This is a precompiled header file. +// Files listed below are compiled only once, improving build performance for future builds. +// This also affects IntelliSense performance, including code completion and many code browsing features. +// However, files listed here are ALL re-compiled if any one of them is updated between builds. +// Do not add files here that you will be updating frequently as this negates the performance advantage. + +#ifndef PCH_H +#define PCH_H + +// add headers that you want to pre-compile here +#include "framework.h" + +#include +#include +#include +#include +#include +#include +#include +#include + +#endif //PCH_H diff --git a/samples/XamlSwapchainSample/SyncMFTSample/MainWindow.xaml.cpp b/samples/XamlSwapchainSample/SyncMFTSample/MainWindow.xaml.cpp deleted file mode 100644 index 448f361..0000000 --- a/samples/XamlSwapchainSample/SyncMFTSample/MainWindow.xaml.cpp +++ /dev/null @@ -1,29 +0,0 @@ -#include "pch.h" -#include "MainWindow.xaml.h" -#if __has_include("MainWindow.g.cpp") -#include "MainWindow.g.cpp" -#endif - -using namespace winrt; -using namespace Microsoft::UI::Xaml; - -// To learn more about WinUI, the WinUI project structure, -// and more about our project templates, see: http://aka.ms/winui-project-info. - -namespace winrt::SyncMFTSample::implementation -{ - int32_t MainWindow::MyProperty() - { - throw hresult_not_implemented(); - } - - void MainWindow::MyProperty(int32_t /* value */) - { - throw hresult_not_implemented(); - } - - void MainWindow::myButton_Click(IInspectable const&, RoutedEventArgs const&) - { - myButton().Content(box_value(L"Clicked")); - } -} diff --git a/samples/XamlSwapchainSample/SyncMFTSample/MainWindow.xaml.h b/samples/XamlSwapchainSample/SyncMFTSample/MainWindow.xaml.h deleted file mode 100644 index 33cbb00..0000000 --- a/samples/XamlSwapchainSample/SyncMFTSample/MainWindow.xaml.h +++ /dev/null @@ -1,27 +0,0 @@ -#pragma once - -#include "MainWindow.g.h" - -namespace winrt::SyncMFTSample::implementation -{ - struct MainWindow : MainWindowT - { - MainWindow() - { - // Xaml objects should not call InitializeComponent during construction. - // See https://github.com/microsoft/cppwinrt/tree/master/nuget#initializecomponent - } - - int32_t MyProperty(); - void MyProperty(int32_t value); - - void myButton_Click(IInspectable const& sender, Microsoft::UI::Xaml::RoutedEventArgs const& args); - }; -} - -namespace winrt::SyncMFTSample::factory_implementation -{ - struct MainWindow : MainWindowT - { - }; -} diff --git a/samples/XamlSwapchainSample/SyncMFTSample/readme.txt b/samples/XamlSwapchainSample/SyncMFTSample/readme.txt deleted file mode 100644 index c648d73..0000000 --- a/samples/XamlSwapchainSample/SyncMFTSample/readme.txt +++ /dev/null @@ -1,27 +0,0 @@ -======================================================================== - SyncMFTSample Project Overview -======================================================================== - -This project demonstrates how to get started writing WinUI3 apps directly -with standard C++, using the Windows App SDK and C++/WinRT packages and -XAML compiler support to generate implementation headers from interface -(IDL) files. These headers can then be used to implement the local -Windows Runtime classes referenced in the app's XAML pages. - -Steps: -1. Create an interface (IDL) file to define any local Windows Runtime - classes referenced in the app's XAML pages. -2. Build the project once to generate implementation templates under - the "Generated Files" folder, as well as skeleton class definitions - under "Generated Files\sources". -3. Use the skeleton class definitions for reference to implement your - Windows Runtime classes. - -======================================================================== -Learn more about Windows App SDK here: -https://docs.microsoft.com/windows/apps/windows-app-sdk/ -Learn more about WinUI3 here: -https://docs.microsoft.com/windows/apps/winui/winui3/ -Learn more about C++/WinRT here: -http://aka.ms/cppwinrt/ -======================================================================== diff --git a/samples/XamlSwapchainSample/SyncMFTSample/App.xaml b/samples/XamlSwapchainSample/XAMLSample/App.xaml similarity index 89% rename from samples/XamlSwapchainSample/SyncMFTSample/App.xaml rename to samples/XamlSwapchainSample/XAMLSample/App.xaml index 02fe220..0c38c61 100644 --- a/samples/XamlSwapchainSample/SyncMFTSample/App.xaml +++ b/samples/XamlSwapchainSample/XAMLSample/App.xaml @@ -1,9 +1,9 @@ + xmlns:local="using:XAMLSample"> diff --git a/samples/XamlSwapchainSample/SyncMFTSample/App.xaml.cpp b/samples/XamlSwapchainSample/XAMLSample/App.xaml.cpp similarity index 92% rename from samples/XamlSwapchainSample/SyncMFTSample/App.xaml.cpp rename to samples/XamlSwapchainSample/XAMLSample/App.xaml.cpp index 4a7cd97..3e07deb 100644 --- a/samples/XamlSwapchainSample/SyncMFTSample/App.xaml.cpp +++ b/samples/XamlSwapchainSample/XAMLSample/App.xaml.cpp @@ -2,13 +2,12 @@ #include "App.xaml.h" #include "MainWindow.xaml.h" -using namespace winrt; -using namespace Microsoft::UI::Xaml; +using namespace winrt::Microsoft::UI::Xaml; // To learn more about WinUI, the WinUI project structure, // and more about our project templates, see: http://aka.ms/winui-project-info. -namespace winrt::SyncMFTSample::implementation +namespace winrt::XAMLSample::implementation { /// /// Initializes the singleton application object. This is the first line of authored code diff --git a/samples/XamlSwapchainSample/SyncMFTSample/App.xaml.h b/samples/XamlSwapchainSample/XAMLSample/App.xaml.h similarity index 84% rename from samples/XamlSwapchainSample/SyncMFTSample/App.xaml.h rename to samples/XamlSwapchainSample/XAMLSample/App.xaml.h index 66f750e..2c25911 100644 --- a/samples/XamlSwapchainSample/SyncMFTSample/App.xaml.h +++ b/samples/XamlSwapchainSample/XAMLSample/App.xaml.h @@ -2,7 +2,7 @@ #include "App.xaml.g.h" -namespace winrt::SyncMFTSample::implementation +namespace winrt::XAMLSample::implementation { struct App : AppT { diff --git a/samples/XamlSwapchainSample/SyncMFTSample/Assets/LockScreenLogo.scale-200.png b/samples/XamlSwapchainSample/XAMLSample/Assets/LockScreenLogo.scale-200.png similarity index 100% rename from samples/XamlSwapchainSample/SyncMFTSample/Assets/LockScreenLogo.scale-200.png rename to samples/XamlSwapchainSample/XAMLSample/Assets/LockScreenLogo.scale-200.png diff --git a/samples/XamlSwapchainSample/SyncMFTSample/Assets/SplashScreen.scale-200.png b/samples/XamlSwapchainSample/XAMLSample/Assets/SplashScreen.scale-200.png similarity index 100% rename from samples/XamlSwapchainSample/SyncMFTSample/Assets/SplashScreen.scale-200.png rename to samples/XamlSwapchainSample/XAMLSample/Assets/SplashScreen.scale-200.png diff --git a/samples/XamlSwapchainSample/SyncMFTSample/Assets/Square150x150Logo.scale-200.png b/samples/XamlSwapchainSample/XAMLSample/Assets/Square150x150Logo.scale-200.png similarity index 100% rename from samples/XamlSwapchainSample/SyncMFTSample/Assets/Square150x150Logo.scale-200.png rename to samples/XamlSwapchainSample/XAMLSample/Assets/Square150x150Logo.scale-200.png diff --git a/samples/XamlSwapchainSample/SyncMFTSample/Assets/Square44x44Logo.scale-200.png b/samples/XamlSwapchainSample/XAMLSample/Assets/Square44x44Logo.scale-200.png similarity index 100% rename from samples/XamlSwapchainSample/SyncMFTSample/Assets/Square44x44Logo.scale-200.png rename to samples/XamlSwapchainSample/XAMLSample/Assets/Square44x44Logo.scale-200.png diff --git a/samples/XamlSwapchainSample/SyncMFTSample/Assets/Square44x44Logo.targetsize-24_altform-unplated.png b/samples/XamlSwapchainSample/XAMLSample/Assets/Square44x44Logo.targetsize-24_altform-unplated.png similarity index 100% rename from samples/XamlSwapchainSample/SyncMFTSample/Assets/Square44x44Logo.targetsize-24_altform-unplated.png rename to samples/XamlSwapchainSample/XAMLSample/Assets/Square44x44Logo.targetsize-24_altform-unplated.png diff --git a/samples/XamlSwapchainSample/SyncMFTSample/Assets/StoreLogo.png b/samples/XamlSwapchainSample/XAMLSample/Assets/StoreLogo.png similarity index 100% rename from samples/XamlSwapchainSample/SyncMFTSample/Assets/StoreLogo.png rename to samples/XamlSwapchainSample/XAMLSample/Assets/StoreLogo.png diff --git a/samples/XamlSwapchainSample/SyncMFTSample/Assets/Wide310x150Logo.scale-200.png b/samples/XamlSwapchainSample/XAMLSample/Assets/Wide310x150Logo.scale-200.png similarity index 100% rename from samples/XamlSwapchainSample/SyncMFTSample/Assets/Wide310x150Logo.scale-200.png rename to samples/XamlSwapchainSample/XAMLSample/Assets/Wide310x150Logo.scale-200.png diff --git a/samples/XamlSwapchainSample/SyncMFTSample/MainWindow.idl b/samples/XamlSwapchainSample/XAMLSample/MainWindow.idl similarity index 70% rename from samples/XamlSwapchainSample/SyncMFTSample/MainWindow.idl rename to samples/XamlSwapchainSample/XAMLSample/MainWindow.idl index 9c53df8..91e8b3f 100644 --- a/samples/XamlSwapchainSample/SyncMFTSample/MainWindow.idl +++ b/samples/XamlSwapchainSample/XAMLSample/MainWindow.idl @@ -1,9 +1,8 @@ -namespace SyncMFTSample +namespace XAMLSample { [default_interface] runtimeclass MainWindow : Microsoft.UI.Xaml.Window { MainWindow(); - Int32 MyProperty; } } diff --git a/samples/XamlSwapchainSample/SyncMFTSample/MainWindow.xaml b/samples/XamlSwapchainSample/XAMLSample/MainWindow.xaml similarity index 53% rename from samples/XamlSwapchainSample/SyncMFTSample/MainWindow.xaml rename to samples/XamlSwapchainSample/XAMLSample/MainWindow.xaml index 17af96c..10927bf 100644 --- a/samples/XamlSwapchainSample/SyncMFTSample/MainWindow.xaml +++ b/samples/XamlSwapchainSample/XAMLSample/MainWindow.xaml @@ -1,14 +1,15 @@ - - - + + + + diff --git a/samples/XamlSwapchainSample/XAMLSample/MainWindow.xaml.cpp b/samples/XamlSwapchainSample/XAMLSample/MainWindow.xaml.cpp new file mode 100644 index 0000000..3eadc62 --- /dev/null +++ b/samples/XamlSwapchainSample/XAMLSample/MainWindow.xaml.cpp @@ -0,0 +1,361 @@ +#include "pch.h" +#include "MainWindow.xaml.h" +#if __has_include("MainWindow.g.cpp") +#include "MainWindow.g.cpp" +#endif + +#include "Util.h" + +using namespace Microsoft::WRL::Wrappers; +using namespace winrt::Windows::Media; +using namespace winrt::Microsoft::UI::Xaml; + +using Microsoft::WRL::ComPtr; + +HRESULT CreateSourceReader( + IUnknown* unkDeviceMgr, + LPCWSTR fileURL, + BOOL useSoftWareDecoder, + GUID colorspace, + IMFSourceReader** reader, + DWORD* width, + DWORD* height) +{ + ComPtr sourceReader; + ComPtr partialType; + ComPtr nativeMediaType; + ComPtr mfAttributes; + + if (unkDeviceMgr != nullptr) + { + RETURN_IF_FAILED(MFCreateAttributes(&mfAttributes, 1)); + RETURN_IF_FAILED(mfAttributes->SetUnknown(MF_SOURCE_READER_D3D_MANAGER, unkDeviceMgr)); + if (useSoftWareDecoder) + { + RETURN_IF_FAILED(mfAttributes->SetUINT32(MF_READWRITE_ENABLE_HARDWARE_TRANSFORMS, FALSE)); + RETURN_IF_FAILED(mfAttributes->SetUINT32(MF_SOURCE_READER_DISABLE_DXVA, TRUE)); + } + else + { + RETURN_IF_FAILED(mfAttributes->SetUINT32(MF_READWRITE_ENABLE_HARDWARE_TRANSFORMS, TRUE)); + RETURN_IF_FAILED(mfAttributes->SetUINT32(MF_SOURCE_READER_DISABLE_DXVA, FALSE)); + } + } + RETURN_IF_FAILED(MFCreateSourceReaderFromURL(fileURL, mfAttributes.Get(), &sourceReader)); + RETURN_IF_FAILED(sourceReader->SetStreamSelection((DWORD)MF_SOURCE_READER_ALL_STREAMS, FALSE)); + RETURN_IF_FAILED(sourceReader->SetStreamSelection((DWORD)MF_SOURCE_READER_FIRST_VIDEO_STREAM, TRUE)); + RETURN_IF_FAILED(MFCreateMediaType(&partialType)); + RETURN_IF_FAILED(partialType->SetGUID(MF_MT_MAJOR_TYPE, MFMediaType_Video)); + + RETURN_IF_FAILED(partialType->SetGUID(MF_MT_SUBTYPE, colorspace)); + RETURN_IF_FAILED(sourceReader->SetCurrentMediaType((DWORD)MF_SOURCE_READER_FIRST_VIDEO_STREAM, NULL, partialType.Get())); + RETURN_IF_FAILED(sourceReader->GetNativeMediaType((DWORD)MF_SOURCE_READER_FIRST_VIDEO_STREAM, 0, &nativeMediaType)); + RETURN_IF_FAILED(MFGetAttributeSize(nativeMediaType.Get(), MF_MT_FRAME_SIZE, (UINT*)width, (UINT*)height)); + + *reader = sourceReader.Detach(); + + return S_OK; +} + + +HRESULT ReadUnCompressedSample( + IMFSourceReader* reader, + IMFMediaBuffer** buffer, + LONGLONG* start, + LONGLONG* duration, + DWORD* width, + DWORD* height, + bool* eos) +{ + ComPtr mediaType; + ComPtr sample; + DWORD streamIndex; + DWORD flags; + LONGLONG timestamp; + RETURN_IF_FAILED(reader->ReadSample((DWORD)MF_SOURCE_READER_FIRST_VIDEO_STREAM, 0, &streamIndex, &flags, ×tamp, &sample)); + *eos = (flags & MF_SOURCE_READERF_ENDOFSTREAM) ? TRUE : FALSE; + if (*eos) + { + return S_OK; + } + + RETURN_IF_FAILED(sample->GetBufferByIndex(0, buffer)); + RETURN_IF_FAILED(sample->GetSampleTime(start)); + RETURN_IF_FAILED(sample->GetSampleDuration(duration)); + RETURN_IF_FAILED(reader->GetCurrentMediaType((DWORD)MF_SOURCE_READER_FIRST_VIDEO_STREAM, &mediaType)); + RETURN_IF_FAILED(MFGetAttributeSize(mediaType.Get(), MF_MT_FRAME_SIZE, (UINT*)width, (UINT*)height)); + + return S_OK; +} + +namespace winrt::XAMLSample::implementation +{ + MainWindow::MainWindow() + { + InitializeComponent(); + + MFStartup(MF_VERSION); + + InitializeGraphics(); + } + + void MainWindow::OnPanelLoaded(IInspectable const&, RoutedEventArgs const&) + { + winrt::com_ptr ref; + + util::MFPutWorkItem([&, ref]() + { + PlayVideo(); + }); + } + + HRESULT MainWindow::InitializeGraphics() + { + D3D_FEATURE_LEVEL featureLevels[] = + { + D3D_FEATURE_LEVEL_11_0, + D3D_FEATURE_LEVEL_10_0 + }; + + D3D_FEATURE_LEVEL featureLevel; + + ComPtr dxgiDevice; + ComPtr dxgiAdapter; + ComPtr dxgiFactory; + DXGI_SWAP_CHAIN_DESC1 desc = { 0 }; + ComPtr texture; + ComPtr multithread; + D3D11_TEXTURE2D_DESC Desc; + auto panelNative{ swapChainPanel().as() }; + + RETURN_IF_FAILED(D3D11CreateDevice( + nullptr, + D3D_DRIVER_TYPE_HARDWARE, + nullptr, + D3D11_CREATE_DEVICE_BGRA_SUPPORT | D3D11_CREATE_DEVICE_VIDEO_SUPPORT, + featureLevels, + _countof(featureLevels), + D3D11_SDK_VERSION, + m_device.ReleaseAndGetAddressOf(), + &featureLevel, + m_deviceContext.ReleaseAndGetAddressOf() + )); + + RETURN_IF_FAILED(m_device.As(&multithread)); + + multithread->SetMultithreadProtected(TRUE); + + RETURN_IF_FAILED(m_device.As(&dxgiDevice)); + RETURN_IF_FAILED(dxgiDevice->GetParent(IID_PPV_ARGS(&dxgiAdapter))); + + RETURN_IF_FAILED(dxgiAdapter->GetParent(IID_PPV_ARGS(&dxgiFactory))); + + desc.BufferCount = 2; + desc.Width = 1920; + desc.Height = 1080; + desc.Format = DXGI_FORMAT_B8G8R8A8_UNORM; + desc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT; + desc.SwapEffect = DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL; + desc.SampleDesc.Count = 1; + desc.SampleDesc.Quality = 0; + desc.AlphaMode = DXGI_ALPHA_MODE_UNSPECIFIED; + + RETURN_IF_FAILED(dxgiFactory->CreateSwapChainForComposition(m_device.Get(), &desc, nullptr, m_swapChain.ReleaseAndGetAddressOf())); + + winrt::check_hresult( + panelNative->SetSwapChain(m_swapChain.Get()) + ); + + RETURN_IF_FAILED(m_swapChain->GetBuffer(0, IID_PPV_ARGS(&texture))); + RETURN_IF_FAILED(m_device->CreateRenderTargetView(texture.Get(), nullptr, m_backbufferView.ReleaseAndGetAddressOf())); + m_deviceContext->OMSetRenderTargets(1, m_backbufferView.GetAddressOf(), nullptr); + texture->GetDesc(&Desc); + + return S_OK; + } + + HRESULT MainWindow::InitializeVideoProcessor( + DWORD width, + DWORD height, + ID3D11VideoDevice* videoDevice, + ID3D11VideoProcessorEnumerator** d3d11VideoProcEnum, + ID3D11VideoProcessor** d3d11VideoProc, + ID3D11VideoContext* d3d11VideoContext) + { + D3D11_VIDEO_PROCESSOR_CONTENT_DESC vpcdesc = {}; + RECT rcDst = {}; + + vpcdesc.InputFrameFormat = D3D11_VIDEO_FRAME_FORMAT_PROGRESSIVE; + vpcdesc.InputFrameRate.Numerator = 60; + vpcdesc.InputFrameRate.Denominator = 1; + vpcdesc.InputWidth = width; + vpcdesc.InputHeight = height; + vpcdesc.OutputFrameRate.Numerator = 60; + vpcdesc.OutputFrameRate.Denominator = 1; + vpcdesc.OutputWidth = 1920; + vpcdesc.OutputHeight = 1080; + vpcdesc.Usage = D3D11_VIDEO_USAGE_PLAYBACK_NORMAL; + RETURN_IF_FAILED(videoDevice->CreateVideoProcessorEnumerator(&vpcdesc, d3d11VideoProcEnum)); + RETURN_IF_FAILED(videoDevice->CreateVideoProcessor(*d3d11VideoProcEnum, 0, d3d11VideoProc)); + + d3d11VideoContext->VideoProcessorSetStreamFrameFormat(*d3d11VideoProc, 0, D3D11_VIDEO_FRAME_FORMAT_PROGRESSIVE); + rcDst.right = 1920; + rcDst.bottom = 1080; + d3d11VideoContext->VideoProcessorSetStreamDestRect(*d3d11VideoProc, 0, TRUE, &rcDst); + + D3D11_VIDEO_PROCESSOR_COLOR_SPACE streamColorSpace = {}; + streamColorSpace.Usage = 0; + streamColorSpace.YCbCr_xvYCC = 1; + streamColorSpace.RGB_Range = 1; + streamColorSpace.YCbCr_Matrix = 1; + d3d11VideoContext->VideoProcessorSetStreamColorSpace(*d3d11VideoProc, 0, &streamColorSpace); + + // Output color space + D3D11_VIDEO_PROCESSOR_COLOR_SPACE outputColorSpace = {}; + outputColorSpace.Usage = 0; + outputColorSpace.YCbCr_xvYCC = 1; + outputColorSpace.RGB_Range = 1; + outputColorSpace.YCbCr_Matrix = 1; + d3d11VideoContext->VideoProcessorSetOutputColorSpace(*d3d11VideoProc, &outputColorSpace); + d3d11VideoContext->VideoProcessorSetStreamAutoProcessingMode(*d3d11VideoProc, 0, FALSE/*enableVQ */); + + return S_OK; + } + + void MainWindow::PlayVideo() + { + DoPresentationLoop(); + } + + HRESULT MainWindow::DoPresentationLoop() + { + float clearColor[] = { 0.39f, 0.58f, 0.929f, 0.0f }; + UINT resetToken = 0; + DWORD width; + DWORD height; + HANDLE deviceHandle = NULL; + ComPtr videoDevice; + ComPtr d3d11VideoProcEnum; + ComPtr d3d11VideoProc; + ComPtr d3d11VideoContext; + ComPtr d3dDDevContext; + ComPtr d3dDevice; + LONGLONG totalDecodeTime = 0; + LONGLONG lastReportedTime = 0; + LARGE_INTEGER performanceFreq = { 0 }; + LONGLONG decodeTime = 0; + LONGLONG totalDecodedFrames = 0; + LONGLONG lastReportedDecodedFrames = 0; + double dperformanceFreq; + + QueryPerformanceFrequency(&performanceFreq), HRESULT_FROM_WIN32(GetLastError()); + dperformanceFreq = double(performanceFreq.QuadPart) / 1000.0; + + MFCreateDXGIDeviceManager(&resetToken, m_deviceMgr.ReleaseAndGetAddressOf()); + m_deviceMgr->ResetDevice(m_device.Get(), resetToken); + + RETURN_IF_FAILED(CreateSourceReader(m_deviceMgr.Get(), MEDIA_FILE_NAME, FALSE, MFVideoFormat_NV12, &m_sourceReader, &width, &height)); + + m_deviceContext->ClearRenderTargetView(nullptr, clearColor); + + RETURN_IF_FAILED(m_deviceMgr->OpenDeviceHandle(&deviceHandle)); + m_device->GetImmediateContext(&d3dDDevContext); + + RETURN_IF_FAILED(m_deviceMgr->GetVideoService(deviceHandle, __uuidof(ID3D11VideoDevice), (void**)(videoDevice.ReleaseAndGetAddressOf()))); + d3dDDevContext.As(&d3d11VideoContext); + + RETURN_IF_FAILED(InitializeVideoProcessor(width, height, videoDevice.Get(), &d3d11VideoProcEnum, &d3d11VideoProc, d3d11VideoContext.Get())); + + while (true) + { + // clear the window to a deep blue + bool fEOS; + LONGLONG start; + LONGLONG duration; + ComPtr dxgiBuffer; + ComPtr resourceTexture; + ComPtr buffer; + ComPtr backTexture; + ComPtr inputView; + ComPtr outputView; + UINT indexSrc; + + static const FLOAT color[4] = { 0.0f, 0.0f, 0.0f, 0.0f }; + + LARGE_INTEGER startTime = { 0 }; + LARGE_INTEGER endTime = { 0 }; + + QueryPerformanceCounter(&startTime); + + // Read the next sample from the source + RETURN_IF_FAILED(ReadUnCompressedSample(m_sourceReader.Get(), &buffer, &start, &duration, &width, &height, &fEOS)); + + if (fEOS) + { + break; + } + + // Get the DXGI buffer from the output of the MFT + buffer->QueryInterface(IID_PPV_ARGS(&dxgiBuffer)); + RETURN_IF_FAILED(dxgiBuffer->GetResource(IID_PPV_ARGS(&resourceTexture))); + RETURN_IF_FAILED(dxgiBuffer->GetSubresourceIndex(&indexSrc)); + + // convert NV12 decoded texture to backbuffer using video proc + D3D11_VIDEO_PROCESSOR_STREAM vpStream = {}; + D3D11_VIDEO_PROCESSOR_INPUT_VIEW_DESC inputdesc = {}; + D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC outputDesc = {}; + + RETURN_IF_FAILED(m_swapChain->GetBuffer(0, IID_PPV_ARGS(&backTexture))); + + // render decoder texture to backbuffer using video processor + + inputdesc.Texture2D.MipSlice = 0; + inputdesc.Texture2D.ArraySlice = indexSrc; + inputdesc.ViewDimension = D3D11_VPIV_DIMENSION_TEXTURE2D; + + RETURN_IF_FAILED(videoDevice->CreateVideoProcessorInputView(resourceTexture.Get(), + d3d11VideoProcEnum.Get(), + &inputdesc, + &inputView)); + + outputDesc.ViewDimension = D3D11_VPOV_DIMENSION_TEXTURE2DARRAY; + outputDesc.Texture2DArray.FirstArraySlice = 0; + outputDesc.Texture2DArray.ArraySize = 1; + outputDesc.Texture2DArray.MipSlice = 0; + RETURN_IF_FAILED(videoDevice->CreateVideoProcessorOutputView(backTexture.Get(), + d3d11VideoProcEnum.Get(), + &outputDesc, + &outputView)); + + vpStream.Enable = TRUE; + vpStream.pInputSurface = inputView.Get(); + + RETURN_IF_FAILED(d3d11VideoContext->VideoProcessorBlt(d3d11VideoProc.Get(), outputView.Get(), 0, 1, &vpStream)); + + RETURN_IF_FAILED(m_swapChain->Present(1, 0)); + + // Stats logging + QueryPerformanceCounter(&endTime); + decodeTime = endTime.QuadPart - startTime.QuadPart; + totalDecodeTime += decodeTime; + totalDecodedFrames++; + + if (double(totalDecodeTime - lastReportedTime) > 1000.0 * dperformanceFreq) + { + wchar_t szOutputBuffer[1024]; + StringCchPrintfW(szOutputBuffer, _countof(szOutputBuffer), L"[XAMLSample] %d Frames were decoded in %f ms, at %f FPS\n", totalDecodedFrames - lastReportedDecodedFrames, double(totalDecodeTime - lastReportedTime) / dperformanceFreq, 1000.0 * (totalDecodedFrames - lastReportedDecodedFrames) * dperformanceFreq / (totalDecodeTime - lastReportedTime)); + OutputDebugStringW(szOutputBuffer); + lastReportedTime = totalDecodeTime; + lastReportedDecodedFrames = totalDecodedFrames; + } + } + + wchar_t szOutputBuffer[1024]; + StringCchPrintfW(szOutputBuffer, _countof(szOutputBuffer), L"[XAMLSample] A total of %d Frames were decoded in %f ms, at %f FPS\n", totalDecodedFrames, double(totalDecodeTime) / dperformanceFreq, 1000.0 * totalDecodedFrames * dperformanceFreq / totalDecodeTime); + OutputDebugStringW(szOutputBuffer); + + m_sourceReader = nullptr; + MFShutdown(); + return S_OK; + } +} diff --git a/samples/XamlSwapchainSample/XAMLSample/MainWindow.xaml.h b/samples/XamlSwapchainSample/XAMLSample/MainWindow.xaml.h new file mode 100644 index 0000000..080229a --- /dev/null +++ b/samples/XamlSwapchainSample/XAMLSample/MainWindow.xaml.h @@ -0,0 +1,40 @@ +#pragma once + +#include "MainWindow.g.h" +#include "pch.h" + +using Microsoft::WRL::ComPtr; + +namespace winrt::XAMLSample::implementation +{ + struct MainWindow : MainWindowT + { + MainWindow(); + + void OnPanelLoaded(IInspectable const& sender, Microsoft::UI::Xaml::RoutedEventArgs const& args); + + private: + // Basic graphics + ComPtr m_device; + ComPtr m_deviceContext; + ComPtr m_backbufferView; + ComPtr m_swapChain; + + ComPtr m_deviceMgr; + + ComPtr m_sourceReader; + + HRESULT InitializeGraphics(); + HRESULT InitializeVideoProcessor( + DWORD width, DWORD height, ID3D11VideoDevice* videoDevice, ID3D11VideoProcessorEnumerator** d3d11VideoProcEnum, ID3D11VideoProcessor** d3d11VideoProc, ID3D11VideoContext* d3d11VideoContext); + HRESULT DoPresentationLoop(); + void PlayVideo(); + }; +} + +namespace winrt::XAMLSample::factory_implementation +{ + struct MainWindow : MainWindowT + { + }; +} diff --git a/samples/XamlSwapchainSample/SyncMFTSample/Package.appxmanifest b/samples/XamlSwapchainSample/XAMLSample/Package.appxmanifest similarity index 79% rename from samples/XamlSwapchainSample/SyncMFTSample/Package.appxmanifest rename to samples/XamlSwapchainSample/XAMLSample/Package.appxmanifest index 11f8adb..e0059b7 100644 --- a/samples/XamlSwapchainSample/SyncMFTSample/Package.appxmanifest +++ b/samples/XamlSwapchainSample/XAMLSample/Package.appxmanifest @@ -8,15 +8,15 @@ IgnorableNamespaces="uap rescap"> - + - SyncMFTSample - cjrogers + XAMLSample + Microsoft Assets\StoreLogo.png @@ -34,8 +34,8 @@ Executable="$targetnametoken$.exe" EntryPoint="$targetentrypoint$"> diff --git a/samples/XamlSwapchainSample/XAMLSample/Util.h b/samples/XamlSwapchainSample/XAMLSample/Util.h new file mode 100644 index 0000000..11be4b3 --- /dev/null +++ b/samples/XamlSwapchainSample/XAMLSample/Util.h @@ -0,0 +1,59 @@ +#pragma once + +#include "pch.h" +#include + +namespace util +{ + + class MFCallbackBase : public winrt::implements + { + public: + MFCallbackBase(DWORD flags = 0, DWORD queue = MFASYNC_CALLBACK_QUEUE_MULTITHREADED) : m_flags(flags), m_queue(queue) {} + + DWORD GetQueue() const { return m_queue; } + DWORD GetFlags() const { return m_flags; } + + // IMFAsyncCallback methods + IFACEMETHODIMP GetParameters(_Out_ DWORD* flags, _Out_ DWORD* queue) + { + *flags = m_flags; + *queue = m_queue; + return S_OK; + } + + private: + DWORD m_flags = 0; + DWORD m_queue = 0; + }; + + + class MFWorkItem : public MFCallbackBase + { + public: + MFWorkItem(std::function callback, DWORD flags = 0, DWORD queue = MFASYNC_CALLBACK_QUEUE_MULTITHREADED) : MFCallbackBase(flags, queue) + { + m_callback = callback; + } + + // IMFAsyncCallback methods + + IFACEMETHODIMP Invoke(_In_opt_ IMFAsyncResult* /*result*/) noexcept override + try + { + m_callback(); + return S_OK; + } + CATCH_RETURN(); + + private: + std::function m_callback; + }; + + inline void MFPutWorkItem(std::function callback) + { + winrt::com_ptr workItem = winrt::make_self(callback); + THROW_IF_FAILED(MFPutWorkItem2(workItem->GetQueue(), 0, workItem.get(), nullptr)); + } + +} \ No newline at end of file diff --git a/samples/XamlSwapchainSample/XamlSwapchainSample/XamlSwapchainSample.vcxproj b/samples/XamlSwapchainSample/XAMLSample/XAMLSample.vcxproj similarity index 63% rename from samples/XamlSwapchainSample/XamlSwapchainSample/XamlSwapchainSample.vcxproj rename to samples/XamlSwapchainSample/XAMLSample/XAMLSample.vcxproj index 8163b00..eaec106 100644 --- a/samples/XamlSwapchainSample/XamlSwapchainSample/XamlSwapchainSample.vcxproj +++ b/samples/XamlSwapchainSample/XAMLSample/XAMLSample.vcxproj @@ -1,15 +1,15 @@  - - - + + + true true true - {7cb39a7b-fb5d-4575-bdb1-cbf2bb968d9c} - XamlSwapchainSample - XamlSwapchainSample + {5ea11a87-1cbc-4475-b66c-727334b4dc70} + XAMLSample + XAMLSample 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�XD3kvjB0>eP${i(!HCgdr>86QU)7f~{g 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 literal 0 HcmV?d00001 diff --git a/samples/XamlSwapchainSample/XamlSwapchainSample/MainWindow.idl b/samples/XamlSwapchainSample/XAMLSample_MFTClass/MainWindow.idl similarity index 67% rename from samples/XamlSwapchainSample/XamlSwapchainSample/MainWindow.idl rename to samples/XamlSwapchainSample/XAMLSample_MFTClass/MainWindow.idl index 20b999d..24bada3 100644 --- a/samples/XamlSwapchainSample/XamlSwapchainSample/MainWindow.idl +++ b/samples/XamlSwapchainSample/XAMLSample_MFTClass/MainWindow.idl @@ -1,9 +1,8 @@ -namespace XamlSwapchainSample +namespace XAMLSample_MFTClass { [default_interface] runtimeclass MainWindow : Microsoft.UI.Xaml.Window { MainWindow(); - Int32 MyProperty; } } diff --git a/samples/XamlSwapchainSample/XAMLSample_MFTClass/MainWindow.xaml b/samples/XamlSwapchainSample/XAMLSample_MFTClass/MainWindow.xaml new file mode 100644 index 0000000..e25b0a6 --- /dev/null +++ b/samples/XamlSwapchainSample/XAMLSample_MFTClass/MainWindow.xaml @@ -0,0 +1,15 @@ + + + + + + + + diff --git a/samples/XamlSwapchainSample/XAMLSample_MFTClass/MainWindow.xaml.cpp b/samples/XamlSwapchainSample/XAMLSample_MFTClass/MainWindow.xaml.cpp new file mode 100644 index 0000000..620ffd7 --- /dev/null +++ b/samples/XamlSwapchainSample/XAMLSample_MFTClass/MainWindow.xaml.cpp @@ -0,0 +1,506 @@ +#include "pch.h" +#include "MainWindow.xaml.h" +#include "BasicMFTClass\BasicMFT.h" +#include "Util.h" + +#if __has_include("MainWindow.g.cpp") +#include "MainWindow.g.cpp" +#endif + +using namespace Microsoft::WRL::Wrappers; +using namespace winrt::Windows::Media; +using namespace winrt::Microsoft::UI::Xaml; + +using Microsoft::WRL::ComPtr; + +// To learn more about WinUI, the WinUI project structure, +// and more about our project templates, see: http://aka.ms/winui-project-info. + +HRESULT CreateSourceReader( + IUnknown* unkDeviceMgr, + LPCWSTR fileURL, + BOOL useSoftWareDecoder, + GUID colorspace, + IMFSourceReader** reader, + DWORD* width, + DWORD* height) +{ + ComPtr sourceReader; + ComPtr partialType; + ComPtr nativeMediaType; + ComPtr mfAttributes; + + if (unkDeviceMgr != nullptr) + { + RETURN_IF_FAILED(MFCreateAttributes(&mfAttributes, 1)); + RETURN_IF_FAILED(mfAttributes->SetUnknown(MF_SOURCE_READER_D3D_MANAGER, unkDeviceMgr)); + if (useSoftWareDecoder) + { + RETURN_IF_FAILED(mfAttributes->SetUINT32(MF_READWRITE_ENABLE_HARDWARE_TRANSFORMS, FALSE)); + RETURN_IF_FAILED(mfAttributes->SetUINT32(MF_SOURCE_READER_DISABLE_DXVA, TRUE)); + } + else + { + RETURN_IF_FAILED(mfAttributes->SetUINT32(MF_READWRITE_ENABLE_HARDWARE_TRANSFORMS, TRUE)); + RETURN_IF_FAILED(mfAttributes->SetUINT32(MF_SOURCE_READER_DISABLE_DXVA, FALSE)); + } + } + RETURN_IF_FAILED(MFCreateSourceReaderFromURL(fileURL, mfAttributes.Get(), &sourceReader)); + RETURN_IF_FAILED(sourceReader->SetStreamSelection((DWORD)MF_SOURCE_READER_ALL_STREAMS, FALSE)); + RETURN_IF_FAILED(sourceReader->SetStreamSelection((DWORD)MF_SOURCE_READER_FIRST_VIDEO_STREAM, TRUE)); + RETURN_IF_FAILED(MFCreateMediaType(&partialType)); + RETURN_IF_FAILED(partialType->SetGUID(MF_MT_MAJOR_TYPE, MFMediaType_Video)); + + RETURN_IF_FAILED(partialType->SetGUID(MF_MT_SUBTYPE, colorspace)); + RETURN_IF_FAILED(sourceReader->SetCurrentMediaType((DWORD)MF_SOURCE_READER_FIRST_VIDEO_STREAM, NULL, partialType.Get())); + RETURN_IF_FAILED(sourceReader->GetNativeMediaType((DWORD)MF_SOURCE_READER_FIRST_VIDEO_STREAM, 0, &nativeMediaType)); + RETURN_IF_FAILED(MFGetAttributeSize(nativeMediaType.Get(), MF_MT_FRAME_SIZE, (UINT*)width, (UINT*)height)); + + *reader = sourceReader.Detach(); + + return S_OK; +} + + +HRESULT ReadUnCompressedSample( + IMFSourceReader* reader, + IMFMediaBuffer** buffer, + LONGLONG* start, + LONGLONG* duration, + DWORD* width, + DWORD* height, + bool* eos) +{ + ComPtr mediaType; + ComPtr sample; + DWORD streamIndex; + DWORD flags; + LONGLONG timestamp; + RETURN_IF_FAILED(reader->ReadSample((DWORD)MF_SOURCE_READER_FIRST_VIDEO_STREAM, 0, &streamIndex, &flags, ×tamp, &sample)); + *eos = (flags & MF_SOURCE_READERF_ENDOFSTREAM) ? TRUE : FALSE; + if (*eos) + { + return S_OK; + } + + RETURN_IF_FAILED(sample->GetBufferByIndex(0, buffer)); + RETURN_IF_FAILED(sample->GetSampleTime(start)); + RETURN_IF_FAILED(sample->GetSampleDuration(duration)); + RETURN_IF_FAILED(reader->GetCurrentMediaType((DWORD)MF_SOURCE_READER_FIRST_VIDEO_STREAM, &mediaType)); + RETURN_IF_FAILED(MFGetAttributeSize(mediaType.Get(), MF_MT_FRAME_SIZE, (UINT*)width, (UINT*)height)); + + return S_OK; +} + +namespace winrt::XAMLSample_MFTClass::implementation +{ + MainWindow::MainWindow() + { + InitializeComponent(); + + MFStartup(MF_VERSION); + + InitializeGraphics(); + } + + void MainWindow::OnPanelLoaded(IInspectable const&, RoutedEventArgs const&) + { + winrt::com_ptr ref; + + util::MFPutWorkItem([&, ref]() + { + PlayVideo(); + }); + } + + HRESULT MainWindow::InitializeGraphics() + { + D3D_FEATURE_LEVEL featureLevels[] = + { + D3D_FEATURE_LEVEL_11_0, + D3D_FEATURE_LEVEL_10_0 + }; + + D3D_FEATURE_LEVEL featureLevel; + + ComPtr dxgiDevice; + ComPtr dxgiAdapter; + ComPtr dxgiFactory; + DXGI_SWAP_CHAIN_DESC1 desc = { 0 }; + ComPtr texture; + ComPtr multithread; + D3D11_TEXTURE2D_DESC Desc; + auto panelNative{ swapChainPanel().as() }; + + RETURN_IF_FAILED(D3D11CreateDevice( + nullptr, + D3D_DRIVER_TYPE_HARDWARE, + nullptr, + D3D11_CREATE_DEVICE_BGRA_SUPPORT | D3D11_CREATE_DEVICE_VIDEO_SUPPORT, + featureLevels, + _countof(featureLevels), + D3D11_SDK_VERSION, + m_device.ReleaseAndGetAddressOf(), + &featureLevel, + m_deviceContext.ReleaseAndGetAddressOf() + )); + + RETURN_IF_FAILED(m_device.As(&multithread)); + + multithread->SetMultithreadProtected(TRUE); + + RETURN_IF_FAILED(m_device.As(&dxgiDevice)); + RETURN_IF_FAILED(dxgiDevice->GetParent(IID_PPV_ARGS(&dxgiAdapter))); + + RETURN_IF_FAILED(dxgiAdapter->GetParent(IID_PPV_ARGS(&dxgiFactory))); + + desc.BufferCount = 2; + desc.Width = 1920; + desc.Height = 1080; + desc.Format = DXGI_FORMAT_B8G8R8A8_UNORM; + desc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT; + desc.SwapEffect = DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL; + desc.SampleDesc.Count = 1; + desc.SampleDesc.Quality = 0; + desc.AlphaMode = DXGI_ALPHA_MODE_UNSPECIFIED; + + RETURN_IF_FAILED(dxgiFactory->CreateSwapChainForComposition(m_device.Get(), &desc, nullptr, m_swapChain.ReleaseAndGetAddressOf())); + + winrt::check_hresult( + panelNative->SetSwapChain(m_swapChain.Get()) + ); + + RETURN_IF_FAILED(m_swapChain->GetBuffer(0, IID_PPV_ARGS(&texture))); + RETURN_IF_FAILED(m_device->CreateRenderTargetView(texture.Get(), nullptr, m_backbufferView.ReleaseAndGetAddressOf())); + m_deviceContext->OMSetRenderTargets(1, m_backbufferView.GetAddressOf(), nullptr); + texture->GetDesc(&Desc); + + return S_OK; + } + + HRESULT MainWindow::InitializeMFT() + { + //Init Variables + GUID videoSubtype = MFVideoFormat_NV12; + ComPtr inputType; + ComPtr decoderOutType; + + MFT_REGISTER_TYPE_INFO outputInfo = { 0 }; + outputInfo.guidMajorType = MFMediaType_Video; + outputInfo.guidSubtype = MFVideoFormat_ARGB32; + + //Insantiate MFT + m_syncMFT = Make(); + + if (!m_syncMFT) + { + return E_FAIL; + } + + OutputDebugString(L"[XAMLSample] Created MFT.\n"); + + RETURN_IF_FAILED(m_sourceReader->GetCurrentMediaType((DWORD)MF_SOURCE_READER_FIRST_VIDEO_STREAM, &inputType)); + + RETURN_IF_FAILED(m_syncMFT->SetInputType(0, inputType.Get(), 0)); + + RETURN_IF_FAILED(MFCreateMediaType(&decoderOutType)); + RETURN_IF_FAILED(decoderOutType->SetGUID(MF_MT_SUBTYPE, outputInfo.guidSubtype)); + + HRESULT hr = m_syncMFT->SetOutputType(0, decoderOutType.Get(), 0); + + // This check is not explicitly required for this example MFT, but is an example of a fallback path. + if (FAILED(hr)) + { + if (outputInfo.guidSubtype == MFVideoFormat_P010) + { + // Fallback to 8bits NV12 + RETURN_IF_FAILED(decoderOutType->SetGUID(MF_MT_SUBTYPE, MFVideoFormat_NV12)); + RETURN_IF_FAILED(m_syncMFT->SetOutputType(0, decoderOutType.Get(), 0)); + hr = S_OK; + } + else + { + RETURN_IF_FAILED(hr); + } + } + + // Set messages to start streaming + RETURN_IF_FAILED(m_syncMFT->ProcessMessage(MFT_MESSAGE_NOTIFY_BEGIN_STREAMING, 0)); + RETURN_IF_FAILED(m_syncMFT->ProcessMessage(MFT_MESSAGE_NOTIFY_START_OF_STREAM, 0)); + + OutputDebugString(L"[XAMLSample] MFT setup completed.\n"); + + return S_OK; + } + + HRESULT MainWindow::InitializeVideoProcessor( + DWORD width, + DWORD height, + ID3D11VideoDevice* videoDevice, + ID3D11VideoProcessorEnumerator** d3d11VideoProcEnum, + ID3D11VideoProcessor** d3d11VideoProc, + ID3D11VideoContext* d3d11VideoContext) + { + D3D11_VIDEO_PROCESSOR_CONTENT_DESC vpcdesc = {}; + RECT rcDst = {}; + + vpcdesc.InputFrameFormat = D3D11_VIDEO_FRAME_FORMAT_PROGRESSIVE; + vpcdesc.InputFrameRate.Numerator = 60; + vpcdesc.InputFrameRate.Denominator = 1; + vpcdesc.InputWidth = width; + vpcdesc.InputHeight = height; + vpcdesc.OutputFrameRate.Numerator = 60; + vpcdesc.OutputFrameRate.Denominator = 1; + vpcdesc.OutputWidth = 1920; + vpcdesc.OutputHeight = 1080; + vpcdesc.Usage = D3D11_VIDEO_USAGE_PLAYBACK_NORMAL; + RETURN_IF_FAILED(videoDevice->CreateVideoProcessorEnumerator(&vpcdesc, d3d11VideoProcEnum)); + RETURN_IF_FAILED(videoDevice->CreateVideoProcessor(*d3d11VideoProcEnum, 0, d3d11VideoProc)); + + d3d11VideoContext->VideoProcessorSetStreamFrameFormat(*d3d11VideoProc, 0, D3D11_VIDEO_FRAME_FORMAT_PROGRESSIVE); + rcDst.right = 1920; + rcDst.bottom = 1080; + d3d11VideoContext->VideoProcessorSetStreamDestRect(*d3d11VideoProc, 0, TRUE, &rcDst); + + D3D11_VIDEO_PROCESSOR_COLOR_SPACE streamColorSpace = {}; + streamColorSpace.Usage = 0; + streamColorSpace.YCbCr_xvYCC = 1; + streamColorSpace.RGB_Range = 1; + streamColorSpace.YCbCr_Matrix = 1; + d3d11VideoContext->VideoProcessorSetStreamColorSpace(*d3d11VideoProc, 0, &streamColorSpace); + + // Output color space + D3D11_VIDEO_PROCESSOR_COLOR_SPACE outputColorSpace = {}; + outputColorSpace.Usage = 0; + outputColorSpace.YCbCr_xvYCC = 1; + outputColorSpace.RGB_Range = 1; + outputColorSpace.YCbCr_Matrix = 1; + d3d11VideoContext->VideoProcessorSetOutputColorSpace(*d3d11VideoProc, &outputColorSpace); + d3d11VideoContext->VideoProcessorSetStreamAutoProcessingMode(*d3d11VideoProc, 0, FALSE/*enableVQ */); + + return S_OK; + } + + HRESULT MainWindow::DriveMFT( + IMFSample* inSample, + IMFMediaBuffer** outBuffer) + { + bool hasOutputReady = false; + MFT_OUTPUT_DATA_BUFFER mftOutputDataBuffer = { 0 }; + + // Wait until the sample has finished processing. + while (!hasOutputReady) + { + MFT_OUTPUT_STREAM_INFO outputStreamInfo = {}; + + ComPtr outSample; + DWORD status = 0; + memset(&mftOutputDataBuffer, 0, sizeof(mftOutputDataBuffer)); + + // Setup the output buffer + RETURN_IF_FAILED(m_syncMFT->GetOutputStreamInfo(0, &outputStreamInfo)); + if ((outputStreamInfo.dwFlags & MFT_OUTPUT_STREAM_PROVIDES_SAMPLES) == 0) + { + ComPtr outputBuffer; + RETURN_IF_FAILED(MFCreateAlignedMemoryBuffer(outputStreamInfo.cbSize, outputStreamInfo.cbAlignment, &outputBuffer)); + RETURN_IF_FAILED(MFCreateSample(&outSample)); + RETURN_IF_FAILED(outSample->AddBuffer(outputBuffer.Get())); + mftOutputDataBuffer.dwStreamID = 0; + mftOutputDataBuffer.pSample = outSample.Detach(); + } + else + { + mftOutputDataBuffer.pSample = nullptr; + } + // Check if the MFT has produced output, or is waiting for input + HRESULT processOutputResult = m_syncMFT->ProcessOutput(0, 1, &mftOutputDataBuffer, &status); + if (processOutputResult == MF_E_TRANSFORM_STREAM_CHANGE) + { + ComPtr mediaType; + RETURN_IF_FAILED(m_syncMFT->GetOutputAvailableType(0, 0, &mediaType)); + RETURN_IF_FAILED(m_syncMFT->SetOutputType(0, mediaType.Get(), 0)); + } + else if (processOutputResult == MF_E_TRANSFORM_NEED_MORE_INPUT) + { + // Pass input to the MFT for processing. + m_syncMFT->ProcessInput(0, inSample, 0); + } + else if (SUCCEEDED(processOutputResult)) + { + // Pass the data to be rendered on the display. + auto outputHR = mftOutputDataBuffer.pSample->GetBufferByIndex(0, outBuffer); + if (FAILED(outputHR)) + { + OutputDebugString(L"[XAMLSample] Failed to get buffer.\n"); + } + hasOutputReady = true; + } + + SAFE_RELEASE(mftOutputDataBuffer.pSample); + SAFE_RELEASE(mftOutputDataBuffer.pEvents); + } + + SAFE_RELEASE(mftOutputDataBuffer.pSample); + SAFE_RELEASE(mftOutputDataBuffer.pEvents); + + return S_OK; + } + + void MainWindow::PlayVideo() + { + DoPresentationLoop(); + } + + HRESULT MainWindow::DoPresentationLoop() + { + float clearColor[] = { 0.39f, 0.58f, 0.929f, 0.0f }; + UINT resetToken = 0; + DWORD width; + DWORD height; + HANDLE deviceHandle = NULL; + ComPtr videoDevice; + ComPtr d3d11VideoProcEnum; + ComPtr d3d11VideoProc; + ComPtr d3d11VideoContext; + ComPtr d3dDDevContext; + ComPtr d3dDevice; + LONGLONG totalDecodeTime = 0; + LONGLONG lastReportedTime = 0; + LARGE_INTEGER performanceFreq = { 0 }; + LONGLONG decodeTime = 0; + LONGLONG totalDecodedFrames = 0; + LONGLONG lastReportedDecodedFrames = 0; + double dperformanceFreq; + + QueryPerformanceFrequency(&performanceFreq), HRESULT_FROM_WIN32(GetLastError()); + dperformanceFreq = double(performanceFreq.QuadPart) / 1000.0; + + MFCreateDXGIDeviceManager(&resetToken, m_deviceMgr.ReleaseAndGetAddressOf()); + m_deviceMgr->ResetDevice(m_device.Get(), resetToken); + + RETURN_IF_FAILED(CreateSourceReader(m_deviceMgr.Get(), MEDIA_FILE_NAME, FALSE, MFVideoFormat_NV12, &m_sourceReader, &width, &height)); + + m_deviceContext->ClearRenderTargetView(nullptr, clearColor); + + RETURN_IF_FAILED(m_deviceMgr->OpenDeviceHandle(&deviceHandle)); + m_device->GetImmediateContext(&d3dDDevContext); + + RETURN_IF_FAILED(InitializeMFT()); + + RETURN_IF_FAILED(m_deviceMgr->GetVideoService(deviceHandle, __uuidof(ID3D11VideoDevice), (void**)(videoDevice.ReleaseAndGetAddressOf()))); + d3dDDevContext.As(&d3d11VideoContext); + + RETURN_IF_FAILED(InitializeVideoProcessor(width, height, videoDevice.Get(), &d3d11VideoProcEnum, &d3d11VideoProc, d3d11VideoContext.Get())); + + while (true) + { + // clear the window to a deep blue + bool fEOS; + LONGLONG start; + LONGLONG duration; + ComPtr dxgiBuffer; + ComPtr resourceTexture; + ComPtr buffer; + ComPtr backTexture; + ComPtr inputView; + ComPtr outputView; + UINT indexSrc; + + static const FLOAT color[4] = { 0.0f, 0.0f, 0.0f, 0.0f }; + + LARGE_INTEGER startTime = { 0 }; + LARGE_INTEGER endTime = { 0 }; + + QueryPerformanceCounter(&startTime); + + // Read the next sample from the source + RETURN_IF_FAILED(ReadUnCompressedSample(m_sourceReader.Get(), &buffer, &start, &duration, &width, &height, &fEOS)); + + if (fEOS) + { + // Notify the MFT of End of stream to allow it to cleanup. + RETURN_IF_FAILED(m_syncMFT->ProcessMessage(MFT_MESSAGE_NOTIFY_END_OF_STREAM, 0)); + RETURN_IF_FAILED(m_syncMFT->ProcessMessage(MFT_MESSAGE_COMMAND_DRAIN, 0)); + break; + } + + // MFT driving + + // Add the buffer from the source to a sample + ComPtr inSample; + RETURN_IF_FAILED(MFCreateSample(&inSample)); + RETURN_IF_FAILED(inSample->AddBuffer(buffer.Get())); + + ComPtr outBuffer; + + RETURN_IF_FAILED(DriveMFT(inSample.Get(), &outBuffer)); + + + // Get the DXGI buffer from the output of the MFT + outBuffer->QueryInterface(IID_PPV_ARGS(&dxgiBuffer)); + RETURN_IF_FAILED(dxgiBuffer->GetResource(IID_PPV_ARGS(&resourceTexture))); + RETURN_IF_FAILED(dxgiBuffer->GetSubresourceIndex(&indexSrc)); + + // convert NV12 decoded texture to backbuffer using video proc + D3D11_VIDEO_PROCESSOR_STREAM vpStream = {}; + D3D11_VIDEO_PROCESSOR_INPUT_VIEW_DESC inputdesc = {}; + D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC outputDesc = {}; + + RETURN_IF_FAILED(m_swapChain->GetBuffer(0, IID_PPV_ARGS(&backTexture))); + + // render decoder texture to backbuffer using video processor + + inputdesc.Texture2D.MipSlice = 0; + inputdesc.Texture2D.ArraySlice = indexSrc; + inputdesc.ViewDimension = D3D11_VPIV_DIMENSION_TEXTURE2D; + + RETURN_IF_FAILED(videoDevice->CreateVideoProcessorInputView(resourceTexture.Get(), + d3d11VideoProcEnum.Get(), + &inputdesc, + &inputView)); + + outputDesc.ViewDimension = D3D11_VPOV_DIMENSION_TEXTURE2DARRAY; + outputDesc.Texture2DArray.FirstArraySlice = 0; + outputDesc.Texture2DArray.ArraySize = 1; + outputDesc.Texture2DArray.MipSlice = 0; + RETURN_IF_FAILED(videoDevice->CreateVideoProcessorOutputView(backTexture.Get(), + d3d11VideoProcEnum.Get(), + &outputDesc, + &outputView)); + + vpStream.Enable = TRUE; + vpStream.pInputSurface = inputView.Get(); + + RETURN_IF_FAILED(d3d11VideoContext->VideoProcessorBlt(d3d11VideoProc.Get(), outputView.Get(), 0, 1, &vpStream)); + + RETURN_IF_FAILED(m_swapChain->Present(1, 0)); + + // Stats logging + QueryPerformanceCounter(&endTime); + decodeTime = endTime.QuadPart - startTime.QuadPart; + totalDecodeTime += decodeTime; + totalDecodedFrames++; + + if (double(totalDecodeTime - lastReportedTime) > 1000.0 * dperformanceFreq) + { + wchar_t szOutputBuffer[1024]; + StringCchPrintfW(szOutputBuffer, _countof(szOutputBuffer), L"[XAMLSample] %d Frames were decoded in %f ms, at %f FPS\n", totalDecodedFrames - lastReportedDecodedFrames, double(totalDecodeTime - lastReportedTime) / dperformanceFreq, 1000.0 * (totalDecodedFrames - lastReportedDecodedFrames) * dperformanceFreq / (totalDecodeTime - lastReportedTime)); + OutputDebugStringW(szOutputBuffer); + lastReportedTime = totalDecodeTime; + lastReportedDecodedFrames = totalDecodedFrames; + } + } + + // Notify the MFT of End of stream to allow it to cleanup. + RETURN_IF_FAILED(m_syncMFT->ProcessMessage(MFT_MESSAGE_COMMAND_FLUSH, 0)); + RETURN_IF_FAILED(m_syncMFT->ProcessMessage(MFT_MESSAGE_NOTIFY_END_STREAMING, 0)); + + wchar_t szOutputBuffer[1024]; + StringCchPrintfW(szOutputBuffer, _countof(szOutputBuffer), L"[XAMLSample] A total of %d Frames were decoded in %f ms, at %f FPS\n", totalDecodedFrames, double(totalDecodeTime) / dperformanceFreq, 1000.0 * totalDecodedFrames * dperformanceFreq / totalDecodeTime); + OutputDebugStringW(szOutputBuffer); + + m_sourceReader = nullptr; + MFShutdown(); + return S_OK; + } +} diff --git a/samples/XamlSwapchainSample/XAMLSample_MFTClass/MainWindow.xaml.h b/samples/XamlSwapchainSample/XAMLSample_MFTClass/MainWindow.xaml.h new file mode 100644 index 0000000..0528d0d --- /dev/null +++ b/samples/XamlSwapchainSample/XAMLSample_MFTClass/MainWindow.xaml.h @@ -0,0 +1,44 @@ +#pragma once + +#include "MainWindow.g.h" +#include "pch.h" + +using Microsoft::WRL::ComPtr; + +namespace winrt::XAMLSample_MFTClass::implementation +{ + struct MainWindow : MainWindowT + { + MainWindow(); + + void OnPanelLoaded(IInspectable const& sender, Microsoft::UI::Xaml::RoutedEventArgs const& args); + + private: + // Basic graphics + ComPtr m_device; + ComPtr m_deviceContext; + ComPtr m_backbufferView; + ComPtr m_swapChain; + + ComPtr m_deviceMgr; + + ComPtr m_syncMFT; + ComPtr m_sourceReader; + + HRESULT InitializeGraphics(); + HRESULT InitializeMFT(); + HRESULT InitializeVideoProcessor( + DWORD width, DWORD height, ID3D11VideoDevice* videoDevice, ID3D11VideoProcessorEnumerator** d3d11VideoProcEnum, ID3D11VideoProcessor** d3d11VideoProc, ID3D11VideoContext* d3d11VideoContext); + HRESULT DoPresentationLoop(); + void PlayVideo(); + + HRESULT DriveMFT(IMFSample* inSample, IMFMediaBuffer** outBuffer); + }; +} + +namespace winrt::XAMLSample_MFTClass::factory_implementation +{ + struct MainWindow : MainWindowT + { + }; +} diff --git a/samples/XamlSwapchainSample/XAMLSample_MFTClass/Package.appxmanifest b/samples/XamlSwapchainSample/XAMLSample_MFTClass/Package.appxmanifest new file mode 100644 index 0000000..4eeb016 --- /dev/null +++ b/samples/XamlSwapchainSample/XAMLSample_MFTClass/Package.appxmanifest @@ -0,0 +1,51 @@ + + + + + + + + + + XAMLSample_MFTClass + Microsoft + Assets\StoreLogo.png + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/XamlSwapchainSample/XAMLSample_MFTClass/Util.h b/samples/XamlSwapchainSample/XAMLSample_MFTClass/Util.h new file mode 100644 index 0000000..74ae750 --- /dev/null +++ b/samples/XamlSwapchainSample/XAMLSample_MFTClass/Util.h @@ -0,0 +1,58 @@ +#pragma once + +#include "pch.h" + +namespace util +{ + + class MFCallbackBase : public winrt::implements + { + public: + MFCallbackBase(DWORD flags = 0, DWORD queue = MFASYNC_CALLBACK_QUEUE_MULTITHREADED) : m_flags(flags), m_queue(queue) {} + + DWORD GetQueue() const { return m_queue; } + DWORD GetFlags() const { return m_flags; } + + // IMFAsyncCallback methods + IFACEMETHODIMP GetParameters(_Out_ DWORD* flags, _Out_ DWORD* queue) + { + *flags = m_flags; + *queue = m_queue; + return S_OK; + } + + private: + DWORD m_flags = 0; + DWORD m_queue = 0; + }; + + + class MFWorkItem : public MFCallbackBase + { + public: + MFWorkItem(std::function callback, DWORD flags = 0, DWORD queue = MFASYNC_CALLBACK_QUEUE_MULTITHREADED) : MFCallbackBase(flags, queue) + { + m_callback = callback; + } + + // IMFAsyncCallback methods + + IFACEMETHODIMP Invoke(_In_opt_ IMFAsyncResult* /*result*/) noexcept override + try + { + m_callback(); + return S_OK; + } + CATCH_RETURN(); + + private: + std::function m_callback; + }; + + inline void MFPutWorkItem(std::function callback) + { + winrt::com_ptr workItem = winrt::make_self(callback); + THROW_IF_FAILED(MFPutWorkItem2(workItem->GetQueue(), 0, workItem.get(), nullptr)); + } + +} \ No newline at end of file diff --git a/samples/XamlSwapchainSample/SyncMFTSample/SyncMFTSample.vcxproj b/samples/XamlSwapchainSample/XAMLSample_MFTClass/XAMLSample_MFTClass.vcxproj similarity index 61% rename from samples/XamlSwapchainSample/SyncMFTSample/SyncMFTSample.vcxproj rename to samples/XamlSwapchainSample/XAMLSample_MFTClass/XAMLSample_MFTClass.vcxproj index dacdb5c..cbe08d7 100644 --- a/samples/XamlSwapchainSample/SyncMFTSample/SyncMFTSample.vcxproj +++ b/samples/XamlSwapchainSample/XAMLSample_MFTClass/XAMLSample_MFTClass.vcxproj @@ -1,15 +1,15 @@  - - - + + + true true true - {8c974f7d-281c-4c4e-b1fd-b571ddf7dd77} - SyncMFTSample - SyncMFTSample + {83387d14-7229-4d6a-98c0-61382d188fc6} + XAMLSample_MFTClass + XAMLSample_MFTClass + + + + + diff --git a/samples/XamlSwapchainSample/XamlSwapchainSample/App.xaml.cpp b/samples/XamlSwapchainSample/XAMLSample_MFTDLL/App.xaml.cpp similarity index 91% rename from samples/XamlSwapchainSample/XamlSwapchainSample/App.xaml.cpp rename to samples/XamlSwapchainSample/XAMLSample_MFTDLL/App.xaml.cpp index 34f40e8..de3307a 100644 --- a/samples/XamlSwapchainSample/XamlSwapchainSample/App.xaml.cpp +++ b/samples/XamlSwapchainSample/XAMLSample_MFTDLL/App.xaml.cpp @@ -2,13 +2,12 @@ #include "App.xaml.h" #include "MainWindow.xaml.h" -using namespace winrt; -using namespace Microsoft::UI::Xaml; +using namespace winrt::Microsoft::UI::Xaml; // To learn more about WinUI, the WinUI project structure, // and more about our project templates, see: http://aka.ms/winui-project-info. -namespace winrt::XamlSwapchainSample::implementation +namespace winrt::XAMLSample_MFTDLL::implementation { ///

/// Initializes the singleton application object. This is the first line of authored code diff --git a/samples/XamlSwapchainSample/XAMLSample_MFTDLL/App.xaml.h b/samples/XamlSwapchainSample/XAMLSample_MFTDLL/App.xaml.h new file mode 100644 index 0000000..3c70f47 --- /dev/null +++ b/samples/XamlSwapchainSample/XAMLSample_MFTDLL/App.xaml.h @@ -0,0 +1,16 @@ +#pragma once + +#include "App.xaml.g.h" + +namespace winrt::XAMLSample_MFTDLL::implementation +{ + struct App : AppT + { + App(); + + void OnLaunched(Microsoft::UI::Xaml::LaunchActivatedEventArgs const&); + + private: + winrt::Microsoft::UI::Xaml::Window window{ nullptr }; + }; +} diff --git a/samples/XamlSwapchainSample/XAMLSample_MFTDLL/Assets/LockScreenLogo.scale-200.png b/samples/XamlSwapchainSample/XAMLSample_MFTDLL/Assets/LockScreenLogo.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..7440f0d4bf7c7e26e4e36328738c68e624ee851e GIT binary patch literal 432 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezr3(FqV6|IEGZ*x-#9g>~Mkr+x6^F zy~CDX2QIMs&Gcs3RnRBoxBA!*(Mfw0KTCYuYk0WlEIV>qBmPl! zq4ukrvfADX@#p8fbLY(H47N+k`FZ(FZh?cDro7>{8mkBO3>^oaIx`3!Jl)Qq)HI!+ z(S=1{o~eT)&W^=Ea8C`-17(Jv5(nHFJ{dOjGdxLVkY_y6&S1whfuFI4MM0kF0f&cO zPDVpV%nz;Id$>+0Ga5e9625-JcI)oq=#Pa3p^>8BB}21BUw@eN!-6@w%X+^`+Vn?! zryu|3T>kVWNBYyBc=7Y6H#s1Ah!OI_nezW zXTqOdkv2Az6KKBV=$yHdF^R3Fqw(TZEoNSZX>reXJ#bwX42%f|Pgg&ebxsLQ010xn AssI20 literal 0 HcmV?d00001 diff --git a/samples/XamlSwapchainSample/XAMLSample_MFTDLL/Assets/SplashScreen.scale-200.png b/samples/XamlSwapchainSample/XAMLSample_MFTDLL/Assets/SplashScreen.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..32f486a86792a5e34cd9a8261b394c49b48f86be GIT binary patch literal 5372 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 literal 0 HcmV?d00001 diff --git a/samples/XamlSwapchainSample/XAMLSample_MFTDLL/Assets/Square44x44Logo.scale-200.png b/samples/XamlSwapchainSample/XAMLSample_MFTDLL/Assets/Square44x44Logo.scale-200.png new file mode 100644 index 0000000000000000000000000000000000000000..f713bba67f551ef91020b75716a4dc8ebd744b1c GIT binary patch literal 637 zcmeAS@N?(olHy`uVBq!ia0vp^5g^RL1|$oo8kjIJFu8cTIEGZ*dUI*J;2{SImxtDO zm%3!R$UazoY}x{$j0P5ABYXWr(l=jxJ6ps1W{tV=^>{Dl><3nv3A}sm=EZ)#l3`NR zpZda3^rNox*D1%NC98Z~L*6zipLw~Gxn&(Y-;KmJ+aR6eLabU-L#y8HW%7P-E_-VlLqIabbHPHKT*)fT@9iWJ7iWgOT9%0}Lrj>lztPxWq6sPw3pi z#-<=#$jjrP_DD*i!RLsn0mIA=>4~N)IMYWIf=j%-zuKCdMG%tHYot70D1| zvWa0wMhauW#S>1CnI_;>!1Q3zMA17@DOVq{MQ+{U7^a&yA+%dMCG;WNPV0i;w$tu; zX^b}UKziPM)(<;)ruW;-`)bBN+rQNM*Zs_>?n$|FVFo-e*PZb*@U7VAd+tHb4e?=Blc~}S6K)wL}r*Gf`BM#QB z+y>N$mCswb4d{^{S9v_!eQj4fTRMOwOCi?lSk9%<=vAz}jM-*PQtH@Odn1LZcd^j#o> hW$4xn+CT+ep9lJ{OAO?njobhL002ovPDHLkV1nYebbkN< literal 0 HcmV?d00001 diff --git a/samples/XamlSwapchainSample/XAMLSample_MFTDLL/Assets/StoreLogo.png b/samples/XamlSwapchainSample/XAMLSample_MFTDLL/Assets/StoreLogo.png new file mode 100644 index 0000000000000000000000000000000000000000..a4586f26bdf7841cad10f39cdffe2aca3af252c1 GIT binary patch literal 456 zcmeAS@N?(olHy`uVBq!ia0vp^Mj*_=1|;R|J2o;fF!p=8IEGZ*dUM0H=rDtTTVkd2 z(%lbKn@VS_lUaADVB&;Z6F#LM+mPsa?e>FnHo;HND^!P`-lX%BH~FOg%y&x+t*x!? zg$#_1A1kgsSvO(fw`bOmo;lrJX8byO1j^gf7qohR%mmt z@L)WX;>gqgK|tWJvQ5j;4;=gt4HXVKSMYRv5RhY5vS~TqfK_NAP*r{h!!g^BZ;w4r z7CGdsai)y;fJQc`7{Zc2b==h%o`Op$|bg6a&nL{*m7-=0>k4M4-PXlU;G-?%*(*g>iFt^ U$m#7DfHB12>FVdQ&MBb@0G`#n8vpc0sq%A~kJcD9FY~qQRMt?ZR3YyDZt}Od;|mgpc{2dv9AHF){kXU%k({ z=Y8JidEayHTkG@twPZ|U3_^%3ct-OgLSiFAqDN!|tbCX@c@?4P`2x*TMK!+Q4b?k0 ziW7!!KF6dPWcF<%I|iznM~`QJ_V7sHGV_D`dhgpA9Vd@&X}ErK+j~_rdv;Bp?OA@a zFXOk7eWOJe5NcK;6h$FaM&7JxNc#-@QTwzW6x#d_zmQNkz5) zPI;kh;3d;5UCJU+9a(cOxX(|edWoOiAEdGU#kPJ&xnc2||3vDbuhBCkj-pb0as$Zl z5;}4n=**n6(1g`JEtSy;SG6X;#-F~Oz3lESG2b5`j@wAwY4Yp<=4Xeb>iH=6aicF?DxD&q{`!&}ct zBI)aycwuobQAf&678Uf+Mmh-@9RUhyH~>?w0dixO0#jZjEc9R^=5NZw=|a(kcB?9^ zfnTiEFXp-q#B;Tn>(O%$A*ud^Rg&eVH6Y_5Y%!E39RR&s?XpG`gKwU!6FE1 z7X)DC7)*(5g}lh`4`{i~DZcWupZI`K)_4P)VE{@gc7@Xsd^86zl~_mOYH?I4!aGeX z^E(_=L6?PgveDQ+r%P@UISEXrkn`LHJZ##+!-anV>6h)IkKp;E@p8+3&(5%kS2)ld*J*rJccZM0iyaAx7+F~GW1UWFK&3X$PE1^}NH zgAG9ck5K!{07OwU@j@Do>TbH=CDEo#4m0cEyAuXy_<&jlzJVcKweSJ5 z&=q~iIn18$w8yb=rmEmHxVEUA^?RwnB?6Qlp1os8@*dWTGL2bhzZ!s*xqScR?EPL` zo(JwNdKUUYy7GtvZ3asXm)cgFvCx9EmAi;|w=a0iGiv%%VYKh`P0Wma4y`Xyx|T~( zAmfGbgbEEC7)j8b@WA@+5W3a61HJXC1dX@6_T|Czk0I0zBk%tnW~()VWITGI!`$c< gARL?UBrYYkwoDw4eo*CrzXGTrZ@;GF>596)00d&n@&Et; literal 0 HcmV?d00001 diff --git a/samples/XamlSwapchainSample/XAMLSample_MFTDLL/MainWindow.idl b/samples/XamlSwapchainSample/XAMLSample_MFTDLL/MainWindow.idl new file mode 100644 index 0000000..d0c8bd4 --- /dev/null +++ b/samples/XamlSwapchainSample/XAMLSample_MFTDLL/MainWindow.idl @@ -0,0 +1,8 @@ +namespace XAMLSample_MFTDLL +{ + [default_interface] + runtimeclass MainWindow : Microsoft.UI.Xaml.Window + { + MainWindow(); + } +} diff --git a/samples/XamlSwapchainSample/XamlSwapchainSample/MainWindow.xaml b/samples/XamlSwapchainSample/XAMLSample_MFTDLL/MainWindow.xaml similarity index 52% rename from samples/XamlSwapchainSample/XamlSwapchainSample/MainWindow.xaml rename to samples/XamlSwapchainSample/XAMLSample_MFTDLL/MainWindow.xaml index 7b36cd5..bf7870c 100644 --- a/samples/XamlSwapchainSample/XamlSwapchainSample/MainWindow.xaml +++ b/samples/XamlSwapchainSample/XAMLSample_MFTDLL/MainWindow.xaml @@ -1,14 +1,15 @@ - - - + + + + diff --git a/samples/XamlSwapchainSample/XAMLSample_MFTDLL/MainWindow.xaml.cpp b/samples/XamlSwapchainSample/XAMLSample_MFTDLL/MainWindow.xaml.cpp new file mode 100644 index 0000000..782f068 --- /dev/null +++ b/samples/XamlSwapchainSample/XAMLSample_MFTDLL/MainWindow.xaml.cpp @@ -0,0 +1,536 @@ +#include "pch.h" +#include "MainWindow.xaml.h" +#include "Util.h" + +#if __has_include("MainWindow.g.cpp") +#include "MainWindow.g.cpp" +#endif + +using namespace Microsoft::WRL::Wrappers; +using namespace winrt::Windows::Media; +using namespace winrt::Microsoft::UI::Xaml; + +using Microsoft::WRL::ComPtr; + +#include +// {F1BF74F0-65F4-4F47-925C-E8B564A9A87E} +DEFINE_GUID(CLSID_BasicMFTDLL, + 0xF1BF74F0, 0x65F4, 0x4F47, 0x92, 0x5c, 0xE8, 0xB5, 0x64, 0xA9, 0xA8, 0x7E); + +const wchar_t* kMFTDllName = L"..\\BasicMFTDLL.dll"; + +wil::unique_hmodule g_mftModule; + +// To learn more about WinUI, the WinUI project structure, +// and more about our project templates, see: http://aka.ms/winui-project-info. + +HRESULT CreateSourceReader( + IUnknown* unkDeviceMgr, + LPCWSTR fileURL, + BOOL useSoftWareDecoder, + GUID colorspace, + IMFSourceReader** reader, + DWORD* width, + DWORD* height) +{ + ComPtr sourceReader; + ComPtr partialType; + ComPtr nativeMediaType; + ComPtr mfAttributes; + + if (unkDeviceMgr != nullptr) + { + RETURN_IF_FAILED(MFCreateAttributes(&mfAttributes, 1)); + RETURN_IF_FAILED(mfAttributes->SetUnknown(MF_SOURCE_READER_D3D_MANAGER, unkDeviceMgr)); + if (useSoftWareDecoder) + { + RETURN_IF_FAILED(mfAttributes->SetUINT32(MF_READWRITE_ENABLE_HARDWARE_TRANSFORMS, FALSE)); + RETURN_IF_FAILED(mfAttributes->SetUINT32(MF_SOURCE_READER_DISABLE_DXVA, TRUE)); + } + else + { + RETURN_IF_FAILED(mfAttributes->SetUINT32(MF_READWRITE_ENABLE_HARDWARE_TRANSFORMS, TRUE)); + RETURN_IF_FAILED(mfAttributes->SetUINT32(MF_SOURCE_READER_DISABLE_DXVA, FALSE)); + } + } + RETURN_IF_FAILED(MFCreateSourceReaderFromURL(fileURL, mfAttributes.Get(), &sourceReader)); + RETURN_IF_FAILED(sourceReader->SetStreamSelection((DWORD)MF_SOURCE_READER_ALL_STREAMS, FALSE)); + RETURN_IF_FAILED(sourceReader->SetStreamSelection((DWORD)MF_SOURCE_READER_FIRST_VIDEO_STREAM, TRUE)); + RETURN_IF_FAILED(MFCreateMediaType(&partialType)); + RETURN_IF_FAILED(partialType->SetGUID(MF_MT_MAJOR_TYPE, MFMediaType_Video)); + + RETURN_IF_FAILED(partialType->SetGUID(MF_MT_SUBTYPE, colorspace)); + RETURN_IF_FAILED(sourceReader->SetCurrentMediaType((DWORD)MF_SOURCE_READER_FIRST_VIDEO_STREAM, NULL, partialType.Get())); + RETURN_IF_FAILED(sourceReader->GetNativeMediaType((DWORD)MF_SOURCE_READER_FIRST_VIDEO_STREAM, 0, &nativeMediaType)); + RETURN_IF_FAILED(MFGetAttributeSize(nativeMediaType.Get(), MF_MT_FRAME_SIZE, (UINT*)width, (UINT*)height)); + + *reader = sourceReader.Detach(); + + return S_OK; +} + + +HRESULT ReadUnCompressedSample( + IMFSourceReader* reader, + IMFMediaBuffer** buffer, + LONGLONG* start, + LONGLONG* duration, + DWORD* width, + DWORD* height, + bool* eos) +{ + ComPtr mediaType; + ComPtr sample; + DWORD streamIndex; + DWORD flags; + LONGLONG timestamp; + RETURN_IF_FAILED(reader->ReadSample((DWORD)MF_SOURCE_READER_FIRST_VIDEO_STREAM, 0, &streamIndex, &flags, ×tamp, &sample)); + *eos = (flags & MF_SOURCE_READERF_ENDOFSTREAM) ? TRUE : FALSE; + if (*eos) + { + return S_OK; + } + + RETURN_IF_FAILED(sample->GetBufferByIndex(0, buffer)); + RETURN_IF_FAILED(sample->GetSampleTime(start)); + RETURN_IF_FAILED(sample->GetSampleDuration(duration)); + RETURN_IF_FAILED(reader->GetCurrentMediaType((DWORD)MF_SOURCE_READER_FIRST_VIDEO_STREAM, &mediaType)); + RETURN_IF_FAILED(MFGetAttributeSize(mediaType.Get(), MF_MT_FRAME_SIZE, (UINT*)width, (UINT*)height)); + + return S_OK; +} + +namespace winrt::XAMLSample_MFTDLL::implementation +{ + MainWindow::MainWindow() + { + InitializeComponent(); + + MFStartup(MF_VERSION); + + InitializeGraphics(); + } + + void MainWindow::OnPanelLoaded(IInspectable const&, RoutedEventArgs const&) + { + winrt::com_ptr ref; + + util::MFPutWorkItem([&, ref]() + { + PlayVideo(); + }); + } + + HRESULT MainWindow::InitializeGraphics() + { + D3D_FEATURE_LEVEL featureLevels[] = + { + D3D_FEATURE_LEVEL_11_0, + D3D_FEATURE_LEVEL_10_0 + }; + + D3D_FEATURE_LEVEL featureLevel; + + ComPtr dxgiDevice; + ComPtr dxgiAdapter; + ComPtr dxgiFactory; + DXGI_SWAP_CHAIN_DESC1 desc = { 0 }; + ComPtr texture; + ComPtr multithread; + D3D11_TEXTURE2D_DESC Desc; + auto panelNative{ swapChainPanel().as() }; + + RETURN_IF_FAILED(D3D11CreateDevice( + nullptr, + D3D_DRIVER_TYPE_HARDWARE, + nullptr, + D3D11_CREATE_DEVICE_BGRA_SUPPORT | D3D11_CREATE_DEVICE_VIDEO_SUPPORT, + featureLevels, + _countof(featureLevels), + D3D11_SDK_VERSION, + m_device.ReleaseAndGetAddressOf(), + &featureLevel, + m_deviceContext.ReleaseAndGetAddressOf() + )); + + RETURN_IF_FAILED(m_device.As(&multithread)); + + multithread->SetMultithreadProtected(TRUE); + + RETURN_IF_FAILED(m_device.As(&dxgiDevice)); + RETURN_IF_FAILED(dxgiDevice->GetParent(IID_PPV_ARGS(&dxgiAdapter))); + + RETURN_IF_FAILED(dxgiAdapter->GetParent(IID_PPV_ARGS(&dxgiFactory))); + + desc.BufferCount = 2; + desc.Width = 1920; + desc.Height = 1080; + desc.Format = DXGI_FORMAT_B8G8R8A8_UNORM; + desc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT; + desc.SwapEffect = DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL; + desc.SampleDesc.Count = 1; + desc.SampleDesc.Quality = 0; + desc.AlphaMode = DXGI_ALPHA_MODE_UNSPECIFIED; + + RETURN_IF_FAILED(dxgiFactory->CreateSwapChainForComposition(m_device.Get(), &desc, nullptr, m_swapChain.ReleaseAndGetAddressOf())); + + winrt::check_hresult( + panelNative->SetSwapChain(m_swapChain.Get()) + ); + + RETURN_IF_FAILED(m_swapChain->GetBuffer(0, IID_PPV_ARGS(&texture))); + RETURN_IF_FAILED(m_device->CreateRenderTargetView(texture.Get(), nullptr, m_backbufferView.ReleaseAndGetAddressOf())); + m_deviceContext->OMSetRenderTargets(1, m_backbufferView.GetAddressOf(), nullptr); + texture->GetDesc(&Desc); + + return S_OK; + } + + HRESULT MainWindow::LoadMftFromDll(IMFTransform** mft) + { + // Get current module path + wchar_t currentModulePath[MAX_PATH] = {}; + RETURN_LAST_ERROR_IF(GetModuleFileNameW(NULL, currentModulePath, ARRAYSIZE(currentModulePath)) == 0); + std::wstring mftPath = std::filesystem::path(currentModulePath).replace_filename(kMFTDllName).wstring(); + g_mftModule = wil::unique_hmodule(LoadLibraryExW(mftPath.c_str(), NULL, LOAD_LIBRARY_SEARCH_DEFAULT_DIRS)); + RETURN_LAST_ERROR_IF(!g_mftModule.is_valid()); + OutputDebugString(L"[XAMLSample] Loaded dll.\n"); + + typedef HRESULT(__stdcall* dllGetClassObjectPtr)(REFCLSID rclsid, REFIID riid, LPVOID FAR* ppv); + dllGetClassObjectPtr getClassObject = (dllGetClassObjectPtr)::GetProcAddress(g_mftModule.get(), "DllGetClassObject"); + RETURN_LAST_ERROR_IF(!getClassObject); + + ComPtr classFactory; + RETURN_IF_FAILED(getClassObject(CLSID_BasicMFTDLL, IID_PPV_ARGS(&classFactory))); + RETURN_IF_FAILED(classFactory->CreateInstance(nullptr, IID_PPV_ARGS(mft))); + OutputDebugString(L"[XAMLSample] Created instance of MFT from dll.\n"); + return S_OK; + } + + HRESULT MainWindow::InitializeMFT() + { + //Init Variables + GUID videoSubtype = MFVideoFormat_NV12; + ComPtr inputType; + ComPtr decoderOutType; + + MFT_REGISTER_TYPE_INFO outputInfo = { 0 }; + outputInfo.guidMajorType = MFMediaType_Video; + outputInfo.guidSubtype = MFVideoFormat_ARGB32; + + //Insantiate MFT from dll + LoadMftFromDll(&m_syncMFT); + + if (!m_syncMFT) + { + OutputDebugString(L"[XAMLSample] Failed to create MFT.\n"); + return E_FAIL; + } + + OutputDebugString(L"[XAMLSample] Successfully created MFT.\n"); + + RETURN_IF_FAILED(m_sourceReader->GetCurrentMediaType((DWORD)MF_SOURCE_READER_FIRST_VIDEO_STREAM, &inputType)); + + RETURN_IF_FAILED(m_syncMFT->SetInputType(0, inputType.Get(), 0)); + + RETURN_IF_FAILED(MFCreateMediaType(&decoderOutType)); + RETURN_IF_FAILED(decoderOutType->SetGUID(MF_MT_SUBTYPE, outputInfo.guidSubtype)); + + HRESULT hr = m_syncMFT->SetOutputType(0, decoderOutType.Get(), 0); + + // This check is not explicitly required for this example MFT, but is an example of a fallback path. + if (FAILED(hr)) + { + if (outputInfo.guidSubtype == MFVideoFormat_P010) + { + // Fallback to 8bits NV12 + RETURN_IF_FAILED(decoderOutType->SetGUID(MF_MT_SUBTYPE, MFVideoFormat_NV12)); + RETURN_IF_FAILED(m_syncMFT->SetOutputType(0, decoderOutType.Get(), 0)); + hr = S_OK; + } + else + { + RETURN_IF_FAILED(hr); + } + } + + // Set messages to start streaming + RETURN_IF_FAILED(m_syncMFT->ProcessMessage(MFT_MESSAGE_NOTIFY_BEGIN_STREAMING, 0)); + RETURN_IF_FAILED(m_syncMFT->ProcessMessage(MFT_MESSAGE_NOTIFY_START_OF_STREAM, 0)); + + OutputDebugString(L"[XAMLSample] MFT setup completed.\n"); + + return S_OK; + } + + HRESULT MainWindow::InitializeVideoProcessor( + DWORD width, + DWORD height, + ID3D11VideoDevice* videoDevice, + ID3D11VideoProcessorEnumerator** d3d11VideoProcEnum, + ID3D11VideoProcessor** d3d11VideoProc, + ID3D11VideoContext* d3d11VideoContext) + { + D3D11_VIDEO_PROCESSOR_CONTENT_DESC vpcdesc = {}; + RECT rcDst = {}; + + vpcdesc.InputFrameFormat = D3D11_VIDEO_FRAME_FORMAT_PROGRESSIVE; + vpcdesc.InputFrameRate.Numerator = 60; + vpcdesc.InputFrameRate.Denominator = 1; + vpcdesc.InputWidth = width; + vpcdesc.InputHeight = height; + vpcdesc.OutputFrameRate.Numerator = 60; + vpcdesc.OutputFrameRate.Denominator = 1; + vpcdesc.OutputWidth = 1920; + vpcdesc.OutputHeight = 1080; + vpcdesc.Usage = D3D11_VIDEO_USAGE_PLAYBACK_NORMAL; + RETURN_IF_FAILED(videoDevice->CreateVideoProcessorEnumerator(&vpcdesc, d3d11VideoProcEnum)); + RETURN_IF_FAILED(videoDevice->CreateVideoProcessor(*d3d11VideoProcEnum, 0, d3d11VideoProc)); + + d3d11VideoContext->VideoProcessorSetStreamFrameFormat(*d3d11VideoProc, 0, D3D11_VIDEO_FRAME_FORMAT_PROGRESSIVE); + rcDst.right = 1920; + rcDst.bottom = 1080; + d3d11VideoContext->VideoProcessorSetStreamDestRect(*d3d11VideoProc, 0, TRUE, &rcDst); + + D3D11_VIDEO_PROCESSOR_COLOR_SPACE streamColorSpace = {}; + streamColorSpace.Usage = 0; + streamColorSpace.YCbCr_xvYCC = 1; + streamColorSpace.RGB_Range = 1; + streamColorSpace.YCbCr_Matrix = 1; + d3d11VideoContext->VideoProcessorSetStreamColorSpace(*d3d11VideoProc, 0, &streamColorSpace); + + // Output color space + D3D11_VIDEO_PROCESSOR_COLOR_SPACE outputColorSpace = {}; + outputColorSpace.Usage = 0; + outputColorSpace.YCbCr_xvYCC = 1; + outputColorSpace.RGB_Range = 1; + outputColorSpace.YCbCr_Matrix = 1; + d3d11VideoContext->VideoProcessorSetOutputColorSpace(*d3d11VideoProc, &outputColorSpace); + d3d11VideoContext->VideoProcessorSetStreamAutoProcessingMode(*d3d11VideoProc, 0, FALSE/*enableVQ */); + + return S_OK; + } + + HRESULT MainWindow::DriveMFT( + IMFSample* inSample, + IMFMediaBuffer** outBuffer) + { + bool hasOutputReady = false; + MFT_OUTPUT_DATA_BUFFER mftOutputDataBuffer = { 0 }; + + // Wait until the sample has finished processing. + while (!hasOutputReady) + { + MFT_OUTPUT_STREAM_INFO outputStreamInfo = {}; + + ComPtr outSample; + DWORD status = 0; + memset(&mftOutputDataBuffer, 0, sizeof(mftOutputDataBuffer)); + + // Setup the output buffer + RETURN_IF_FAILED(m_syncMFT->GetOutputStreamInfo(0, &outputStreamInfo)); + if ((outputStreamInfo.dwFlags & MFT_OUTPUT_STREAM_PROVIDES_SAMPLES) == 0) + { + ComPtr outputBuffer; + RETURN_IF_FAILED(MFCreateAlignedMemoryBuffer(outputStreamInfo.cbSize, outputStreamInfo.cbAlignment, &outputBuffer)); + RETURN_IF_FAILED(MFCreateSample(&outSample)); + RETURN_IF_FAILED(outSample->AddBuffer(outputBuffer.Get())); + mftOutputDataBuffer.dwStreamID = 0; + mftOutputDataBuffer.pSample = outSample.Detach(); + } + else + { + mftOutputDataBuffer.pSample = nullptr; + } + // Check if the MFT has produced output, or is waiting for input + HRESULT processOutputResult = m_syncMFT->ProcessOutput(0, 1, &mftOutputDataBuffer, &status); + if (processOutputResult == MF_E_TRANSFORM_STREAM_CHANGE) + { + ComPtr mediaType; + RETURN_IF_FAILED(m_syncMFT->GetOutputAvailableType(0, 0, &mediaType)); + RETURN_IF_FAILED(m_syncMFT->SetOutputType(0, mediaType.Get(), 0)); + } + else if (processOutputResult == MF_E_TRANSFORM_NEED_MORE_INPUT) + { + // Pass input to the MFT for processing. + m_syncMFT->ProcessInput(0, inSample, 0); + } + else if (SUCCEEDED(processOutputResult)) + { + // Pass the data to be rendered on the display. + auto outputHR = mftOutputDataBuffer.pSample->GetBufferByIndex(0, outBuffer); + if (FAILED(outputHR)) + { + OutputDebugString(L"[XAMLSample] Failed to get buffer.\n"); + } + hasOutputReady = true; + } + + SAFE_RELEASE(mftOutputDataBuffer.pSample); + SAFE_RELEASE(mftOutputDataBuffer.pEvents); + } + + SAFE_RELEASE(mftOutputDataBuffer.pSample); + SAFE_RELEASE(mftOutputDataBuffer.pEvents); + + return S_OK; + } + + void MainWindow::PlayVideo() + { + DoPresentationLoop(); + } + + HRESULT MainWindow::DoPresentationLoop() + { + float clearColor[] = { 0.39f, 0.58f, 0.929f, 0.0f }; + UINT resetToken = 0; + DWORD width; + DWORD height; + HANDLE deviceHandle = NULL; + ComPtr videoDevice; + ComPtr d3d11VideoProcEnum; + ComPtr d3d11VideoProc; + ComPtr d3d11VideoContext; + ComPtr d3dDDevContext; + ComPtr d3dDevice; + LONGLONG totalDecodeTime = 0; + LONGLONG lastReportedTime = 0; + LARGE_INTEGER performanceFreq = { 0 }; + LONGLONG decodeTime = 0; + LONGLONG totalDecodedFrames = 0; + LONGLONG lastReportedDecodedFrames = 0; + double dperformanceFreq; + + QueryPerformanceFrequency(&performanceFreq), HRESULT_FROM_WIN32(GetLastError()); + dperformanceFreq = double(performanceFreq.QuadPart) / 1000.0; + + MFCreateDXGIDeviceManager(&resetToken, m_deviceMgr.ReleaseAndGetAddressOf()); + m_deviceMgr->ResetDevice(m_device.Get(), resetToken); + + RETURN_IF_FAILED(CreateSourceReader(m_deviceMgr.Get(), MEDIA_FILE_NAME, FALSE, MFVideoFormat_NV12, &m_sourceReader, &width, &height)); + + m_deviceContext->ClearRenderTargetView(nullptr, clearColor); + + RETURN_IF_FAILED(m_deviceMgr->OpenDeviceHandle(&deviceHandle)); + m_device->GetImmediateContext(&d3dDDevContext); + + RETURN_IF_FAILED(InitializeMFT()); + + RETURN_IF_FAILED(m_deviceMgr->GetVideoService(deviceHandle, __uuidof(ID3D11VideoDevice), (void**)(videoDevice.ReleaseAndGetAddressOf()))); + d3dDDevContext.As(&d3d11VideoContext); + + RETURN_IF_FAILED(InitializeVideoProcessor(width, height, videoDevice.Get(), &d3d11VideoProcEnum, &d3d11VideoProc, d3d11VideoContext.Get())); + + while (true) + { + // clear the window to a deep blue + bool fEOS; + LONGLONG start; + LONGLONG duration; + ComPtr dxgiBuffer; + ComPtr resourceTexture; + ComPtr buffer; + ComPtr backTexture; + ComPtr inputView; + ComPtr outputView; + UINT indexSrc; + + static const FLOAT color[4] = { 0.0f, 0.0f, 0.0f, 0.0f }; + + LARGE_INTEGER startTime = { 0 }; + LARGE_INTEGER endTime = { 0 }; + + QueryPerformanceCounter(&startTime); + + // Read the next sample from the source + RETURN_IF_FAILED(ReadUnCompressedSample(m_sourceReader.Get(), &buffer, &start, &duration, &width, &height, &fEOS)); + + if (fEOS) + { + // Notify the MFT of End of stream to allow it to cleanup. + RETURN_IF_FAILED(m_syncMFT->ProcessMessage(MFT_MESSAGE_NOTIFY_END_OF_STREAM, 0)); + RETURN_IF_FAILED(m_syncMFT->ProcessMessage(MFT_MESSAGE_COMMAND_DRAIN, 0)); + break; + } + + // MFT driving + + // Add the buffer from the source to a sample + ComPtr inSample; + RETURN_IF_FAILED(MFCreateSample(&inSample)); + RETURN_IF_FAILED(inSample->AddBuffer(buffer.Get())); + + ComPtr outBuffer; + + RETURN_IF_FAILED(DriveMFT(inSample.Get(), &outBuffer)); + + + // Get the DXGI buffer from the output of the MFT + outBuffer->QueryInterface(IID_PPV_ARGS(&dxgiBuffer)); + RETURN_IF_FAILED(dxgiBuffer->GetResource(IID_PPV_ARGS(&resourceTexture))); + RETURN_IF_FAILED(dxgiBuffer->GetSubresourceIndex(&indexSrc)); + + // convert NV12 decoded texture to backbuffer using video proc + D3D11_VIDEO_PROCESSOR_STREAM vpStream = {}; + D3D11_VIDEO_PROCESSOR_INPUT_VIEW_DESC inputdesc = {}; + D3D11_VIDEO_PROCESSOR_OUTPUT_VIEW_DESC outputDesc = {}; + + RETURN_IF_FAILED(m_swapChain->GetBuffer(0, IID_PPV_ARGS(&backTexture))); + + // render decoder texture to backbuffer using video processor + + inputdesc.Texture2D.MipSlice = 0; + inputdesc.Texture2D.ArraySlice = indexSrc; + inputdesc.ViewDimension = D3D11_VPIV_DIMENSION_TEXTURE2D; + + RETURN_IF_FAILED(videoDevice->CreateVideoProcessorInputView(resourceTexture.Get(), + d3d11VideoProcEnum.Get(), + &inputdesc, + &inputView)); + + outputDesc.ViewDimension = D3D11_VPOV_DIMENSION_TEXTURE2DARRAY; + outputDesc.Texture2DArray.FirstArraySlice = 0; + outputDesc.Texture2DArray.ArraySize = 1; + outputDesc.Texture2DArray.MipSlice = 0; + RETURN_IF_FAILED(videoDevice->CreateVideoProcessorOutputView(backTexture.Get(), + d3d11VideoProcEnum.Get(), + &outputDesc, + &outputView)); + + vpStream.Enable = TRUE; + vpStream.pInputSurface = inputView.Get(); + + RETURN_IF_FAILED(d3d11VideoContext->VideoProcessorBlt(d3d11VideoProc.Get(), outputView.Get(), 0, 1, &vpStream)); + + RETURN_IF_FAILED(m_swapChain->Present(1, 0)); + + // Stats logging + QueryPerformanceCounter(&endTime); + decodeTime = endTime.QuadPart - startTime.QuadPart; + totalDecodeTime += decodeTime; + totalDecodedFrames++; + + if (double(totalDecodeTime - lastReportedTime) > 1000.0 * dperformanceFreq) + { + wchar_t szOutputBuffer[1024]; + StringCchPrintfW(szOutputBuffer, _countof(szOutputBuffer), L"[XAMLSample] %d Frames were decoded in %f ms, at %f FPS\n", totalDecodedFrames - lastReportedDecodedFrames, double(totalDecodeTime - lastReportedTime) / dperformanceFreq, 1000.0 * (totalDecodedFrames - lastReportedDecodedFrames) * dperformanceFreq / (totalDecodeTime - lastReportedTime)); + OutputDebugStringW(szOutputBuffer); + lastReportedTime = totalDecodeTime; + lastReportedDecodedFrames = totalDecodedFrames; + } + } + + // Notify the MFT of End of stream to allow it to cleanup. + RETURN_IF_FAILED(m_syncMFT->ProcessMessage(MFT_MESSAGE_COMMAND_FLUSH, 0)); + RETURN_IF_FAILED(m_syncMFT->ProcessMessage(MFT_MESSAGE_NOTIFY_END_STREAMING, 0)); + + wchar_t szOutputBuffer[1024]; + StringCchPrintfW(szOutputBuffer, _countof(szOutputBuffer), L"[XAMLSample] A total of %d Frames were decoded in %f ms, at %f FPS\n", totalDecodedFrames, double(totalDecodeTime) / dperformanceFreq, 1000.0 * totalDecodedFrames * dperformanceFreq / totalDecodeTime); + OutputDebugStringW(szOutputBuffer); + + m_sourceReader = nullptr; + MFShutdown(); + return S_OK; + } +} diff --git a/samples/XamlSwapchainSample/XAMLSample_MFTDLL/MainWindow.xaml.h b/samples/XamlSwapchainSample/XAMLSample_MFTDLL/MainWindow.xaml.h new file mode 100644 index 0000000..dea0a13 --- /dev/null +++ b/samples/XamlSwapchainSample/XAMLSample_MFTDLL/MainWindow.xaml.h @@ -0,0 +1,45 @@ +#pragma once + +#include "MainWindow.g.h" +#include "pch.h" + +using Microsoft::WRL::ComPtr; + +namespace winrt::XAMLSample_MFTDLL::implementation +{ + struct MainWindow : MainWindowT + { + MainWindow(); + + void OnPanelLoaded(IInspectable const& sender, Microsoft::UI::Xaml::RoutedEventArgs const& args); + + private: + // Basic graphics + ComPtr m_device; + ComPtr m_deviceContext; + ComPtr m_backbufferView; + ComPtr m_swapChain; + + ComPtr m_deviceMgr; + + ComPtr m_syncMFT; + ComPtr m_sourceReader; + + HRESULT InitializeGraphics(); + HRESULT InitializeMFT(); + HRESULT InitializeVideoProcessor( + DWORD width, DWORD height, ID3D11VideoDevice* videoDevice, ID3D11VideoProcessorEnumerator** d3d11VideoProcEnum, ID3D11VideoProcessor** d3d11VideoProc, ID3D11VideoContext* d3d11VideoContext); + HRESULT DoPresentationLoop(); + void PlayVideo(); + + HRESULT LoadMftFromDll(IMFTransform** mft); + HRESULT DriveMFT(IMFSample* inSample, IMFMediaBuffer** outBuffer); + }; +} + +namespace winrt::XAMLSample_MFTDLL::factory_implementation +{ + struct MainWindow : MainWindowT + { + }; +} diff --git a/samples/XamlSwapchainSample/XamlSwapchainSample/Package.appxmanifest b/samples/XamlSwapchainSample/XAMLSample_MFTDLL/Package.appxmanifest similarity index 78% rename from samples/XamlSwapchainSample/XamlSwapchainSample/Package.appxmanifest rename to samples/XamlSwapchainSample/XAMLSample_MFTDLL/Package.appxmanifest index 523c51a..42d4c94 100644 --- a/samples/XamlSwapchainSample/XamlSwapchainSample/Package.appxmanifest +++ b/samples/XamlSwapchainSample/XAMLSample_MFTDLL/Package.appxmanifest @@ -8,15 +8,15 @@ IgnorableNamespaces="uap rescap"> - + - XamlSwapchainSample - cjrogers + XAMLSample_MFTDLL + Microsoft Assets\StoreLogo.png @@ -34,8 +34,8 @@ Executable="$targetnametoken$.exe" EntryPoint="$targetentrypoint$"> diff --git a/samples/XamlSwapchainSample/XAMLSample_MFTDLL/Util.h b/samples/XamlSwapchainSample/XAMLSample_MFTDLL/Util.h new file mode 100644 index 0000000..74ae750 --- /dev/null +++ b/samples/XamlSwapchainSample/XAMLSample_MFTDLL/Util.h @@ -0,0 +1,58 @@ +#pragma once + +#include "pch.h" + +namespace util +{ + + class MFCallbackBase : public winrt::implements + { + public: + MFCallbackBase(DWORD flags = 0, DWORD queue = MFASYNC_CALLBACK_QUEUE_MULTITHREADED) : m_flags(flags), m_queue(queue) {} + + DWORD GetQueue() const { return m_queue; } + DWORD GetFlags() const { return m_flags; } + + // IMFAsyncCallback methods + IFACEMETHODIMP GetParameters(_Out_ DWORD* flags, _Out_ DWORD* queue) + { + *flags = m_flags; + *queue = m_queue; + return S_OK; + } + + private: + DWORD m_flags = 0; + DWORD m_queue = 0; + }; + + + class MFWorkItem : public MFCallbackBase + { + public: + MFWorkItem(std::function callback, DWORD flags = 0, DWORD queue = MFASYNC_CALLBACK_QUEUE_MULTITHREADED) : MFCallbackBase(flags, queue) + { + m_callback = callback; + } + + // IMFAsyncCallback methods + + IFACEMETHODIMP Invoke(_In_opt_ IMFAsyncResult* /*result*/) noexcept override + try + { + m_callback(); + return S_OK; + } + CATCH_RETURN(); + + private: + std::function m_callback; + }; + + inline void MFPutWorkItem(std::function callback) + { + winrt::com_ptr workItem = winrt::make_self(callback); + THROW_IF_FAILED(MFPutWorkItem2(workItem->GetQueue(), 0, workItem.get(), nullptr)); + } + +} \ No newline at end of file diff --git a/samples/XamlSwapchainSample/XAMLSample_MFTDLL/XAMLSample_MFTDLL.vcxproj b/samples/XamlSwapchainSample/XAMLSample_MFTDLL/XAMLSample_MFTDLL.vcxproj new file mode 100644 index 0000000..356180b --- /dev/null +++ b/samples/XamlSwapchainSample/XAMLSample_MFTDLL/XAMLSample_MFTDLL.vcxproj @@ -0,0 +1,207 @@ + + + + + + + true + true + true + {cfa6e3a8-2299-468c-b4d6-a7e7650ead97} + XAMLSample_MFTDLL + XAMLSample_MFTDLL + + $(RootNamespace) + en-US + 16.0 + false + true + Windows Store + 10.0 + 10.0 + 10.0.17763.0 + true + true + + + + + Debug + Win32 + + + Debug + x64 + + + Debug + ARM64 + + + Release + Win32 + + + Release + x64 + + + Release + ARM64 + + + + Application + v143 + Unicode + true + + + true + true + + + false + true + false + + + + + + + + + + + Use + pch.h + $(IntDir)pch.pch + Level4 + %(AdditionalOptions) /bigobj + + + + + _DEBUG;%(PreprocessorDefinitions) + + + mfuuid.lib;%(AdditionalDependencies) + + + xcopy /y /d "..\$(IntDir)BasicMFTDLL.dll" "$(OutDir)" + + + Copy MFT dll + + + + + NDEBUG;%(PreprocessorDefinitions) + + + true + true + + + + + Designer + + + + + + + + + App.xaml + + + MainWindow.xaml + + + + + + + + + + Create + + + App.xaml + + + MainWindow.xaml + + + + + + Code + MainWindow.xaml + + + + + false + + + + + + + + + + + + + + + + + + + + + {6db84c92-341f-4b3e-b3f4-83869e4b2920} + + + + + true + + + + + + + + + + + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + + + + + + + + \ No newline at end of file diff --git a/samples/XamlSwapchainSample/SyncMFTSample/SyncMFTSample.vcxproj.filters b/samples/XamlSwapchainSample/XAMLSample_MFTDLL/XAMLSample_MFTDLL.vcxproj.filters similarity index 94% rename from samples/XamlSwapchainSample/SyncMFTSample/SyncMFTSample.vcxproj.filters rename to samples/XamlSwapchainSample/XAMLSample_MFTDLL/XAMLSample_MFTDLL.vcxproj.filters index 1b6fdf0..b777b4f 100644 --- a/samples/XamlSwapchainSample/SyncMFTSample/SyncMFTSample.vcxproj.filters +++ b/samples/XamlSwapchainSample/XAMLSample_MFTDLL/XAMLSample_MFTDLL.vcxproj.filters @@ -15,6 +15,7 @@ + @@ -41,7 +42,7 @@ - {8c974f7d-281c-4c4e-b1fd-b571ddf7dd77} + {cfa6e3a8-2299-468c-b4d6-a7e7650ead97} diff --git a/samples/XamlSwapchainSample/XAMLSample_MFTDLL/app.manifest b/samples/XamlSwapchainSample/XAMLSample_MFTDLL/app.manifest new file mode 100644 index 0000000..ec9ee65 --- /dev/null +++ b/samples/XamlSwapchainSample/XAMLSample_MFTDLL/app.manifest @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + PerMonitorV2 + + + \ No newline at end of file diff --git a/samples/XamlSwapchainSample/XAMLSample_MFTDLL/packages.config b/samples/XamlSwapchainSample/XAMLSample_MFTDLL/packages.config new file mode 100644 index 0000000..245a2b5 --- /dev/null +++ b/samples/XamlSwapchainSample/XAMLSample_MFTDLL/packages.config @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/samples/XamlSwapchainSample/XAMLSample_MFTDLL/pch.cpp b/samples/XamlSwapchainSample/XAMLSample_MFTDLL/pch.cpp new file mode 100644 index 0000000..1d9f38c --- /dev/null +++ b/samples/XamlSwapchainSample/XAMLSample_MFTDLL/pch.cpp @@ -0,0 +1 @@ +#include "pch.h" diff --git a/samples/XamlSwapchainSample/XAMLSample_MFTDLL/pch.h b/samples/XamlSwapchainSample/XAMLSample_MFTDLL/pch.h new file mode 100644 index 0000000..5a4b6a3 --- /dev/null +++ b/samples/XamlSwapchainSample/XAMLSample_MFTDLL/pch.h @@ -0,0 +1,54 @@ +#pragma once +#include +#include +#include +#include + +// Undefine GetCurrentTime macro to prevent +// conflict with Storyboard::GetCurrentTime +#undef GetCurrentTime + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +// MFT +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#define SAFE_RELEASE(x) { if (nullptr != (x)) {(void) (x)->Release(); (x) = nullptr;} } +#define MEDIA_FILE_NAME L"http://distribution.bbb3d.renderfarming.net/video/mp4/bbb_sunflower_1080p_30fps_normal.mp4" \ No newline at end of file diff --git a/samples/XamlSwapchainSample/XAMLSamples.sln b/samples/XamlSwapchainSample/XAMLSamples.sln new file mode 100644 index 0000000..0cac5a9 --- /dev/null +++ b/samples/XamlSwapchainSample/XAMLSamples.sln @@ -0,0 +1,142 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.9.34607.119 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XAMLSample", "XAMLSample\XAMLSample.vcxproj", "{5EA11A87-1CBC-4475-B66C-727334B4DC70}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XAMLSample_MFTClass", "XAMLSample_MFTClass\XAMLSample_MFTClass.vcxproj", "{83387D14-7229-4D6A-98C0-61382D188FC6}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "BasicMFTDLL", "BasicMFTDLL\BasicMFTDLL.vcxproj", "{6DB84C92-341F-4B3E-B3F4-83869E4B2920}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XAMLSample_MFTDLL", "XAMLSample_MFTDLL\XAMLSample_MFTDLL.vcxproj", "{CFA6E3A8-2299-468C-B4D6-A7E7650EAD97}" + ProjectSection(ProjectDependencies) = postProject + {6DB84C92-341F-4B3E-B3F4-83869E4B2920} = {6DB84C92-341F-4B3E-B3F4-83869E4B2920} + EndProjectSection +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "BasicMFTClass", "BasicMFTClass\BasicMFTClass.vcxproj", "{C8F9FE66-1689-422B-828E-CBE91844E6CD}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|ARM = Debug|ARM + Debug|ARM64 = Debug|ARM64 + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|ARM = Release|ARM + Release|ARM64 = Release|ARM64 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {5EA11A87-1CBC-4475-B66C-727334B4DC70}.Debug|ARM.ActiveCfg = Debug|x64 + {5EA11A87-1CBC-4475-B66C-727334B4DC70}.Debug|ARM.Build.0 = Debug|x64 + {5EA11A87-1CBC-4475-B66C-727334B4DC70}.Debug|ARM.Deploy.0 = Debug|x64 + {5EA11A87-1CBC-4475-B66C-727334B4DC70}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {5EA11A87-1CBC-4475-B66C-727334B4DC70}.Debug|ARM64.Build.0 = Debug|ARM64 + {5EA11A87-1CBC-4475-B66C-727334B4DC70}.Debug|ARM64.Deploy.0 = Debug|ARM64 + {5EA11A87-1CBC-4475-B66C-727334B4DC70}.Debug|x64.ActiveCfg = Debug|x64 + {5EA11A87-1CBC-4475-B66C-727334B4DC70}.Debug|x64.Build.0 = Debug|x64 + {5EA11A87-1CBC-4475-B66C-727334B4DC70}.Debug|x64.Deploy.0 = Debug|x64 + {5EA11A87-1CBC-4475-B66C-727334B4DC70}.Debug|x86.ActiveCfg = Debug|Win32 + {5EA11A87-1CBC-4475-B66C-727334B4DC70}.Debug|x86.Build.0 = Debug|Win32 + {5EA11A87-1CBC-4475-B66C-727334B4DC70}.Debug|x86.Deploy.0 = Debug|Win32 + {5EA11A87-1CBC-4475-B66C-727334B4DC70}.Release|ARM.ActiveCfg = Release|x64 + {5EA11A87-1CBC-4475-B66C-727334B4DC70}.Release|ARM.Build.0 = Release|x64 + {5EA11A87-1CBC-4475-B66C-727334B4DC70}.Release|ARM.Deploy.0 = Release|x64 + {5EA11A87-1CBC-4475-B66C-727334B4DC70}.Release|ARM64.ActiveCfg = Release|ARM64 + {5EA11A87-1CBC-4475-B66C-727334B4DC70}.Release|ARM64.Build.0 = Release|ARM64 + {5EA11A87-1CBC-4475-B66C-727334B4DC70}.Release|ARM64.Deploy.0 = Release|ARM64 + {5EA11A87-1CBC-4475-B66C-727334B4DC70}.Release|x64.ActiveCfg = Release|x64 + {5EA11A87-1CBC-4475-B66C-727334B4DC70}.Release|x64.Build.0 = Release|x64 + {5EA11A87-1CBC-4475-B66C-727334B4DC70}.Release|x64.Deploy.0 = Release|x64 + {5EA11A87-1CBC-4475-B66C-727334B4DC70}.Release|x86.ActiveCfg = Release|Win32 + {5EA11A87-1CBC-4475-B66C-727334B4DC70}.Release|x86.Build.0 = Release|Win32 + {5EA11A87-1CBC-4475-B66C-727334B4DC70}.Release|x86.Deploy.0 = Release|Win32 + {83387D14-7229-4D6A-98C0-61382D188FC6}.Debug|ARM.ActiveCfg = Debug|x64 + {83387D14-7229-4D6A-98C0-61382D188FC6}.Debug|ARM.Build.0 = Debug|x64 + {83387D14-7229-4D6A-98C0-61382D188FC6}.Debug|ARM.Deploy.0 = Debug|x64 + {83387D14-7229-4D6A-98C0-61382D188FC6}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {83387D14-7229-4D6A-98C0-61382D188FC6}.Debug|ARM64.Build.0 = Debug|ARM64 + {83387D14-7229-4D6A-98C0-61382D188FC6}.Debug|ARM64.Deploy.0 = Debug|ARM64 + {83387D14-7229-4D6A-98C0-61382D188FC6}.Debug|x64.ActiveCfg = Debug|x64 + {83387D14-7229-4D6A-98C0-61382D188FC6}.Debug|x64.Build.0 = Debug|x64 + {83387D14-7229-4D6A-98C0-61382D188FC6}.Debug|x64.Deploy.0 = Debug|x64 + {83387D14-7229-4D6A-98C0-61382D188FC6}.Debug|x86.ActiveCfg = Debug|Win32 + {83387D14-7229-4D6A-98C0-61382D188FC6}.Debug|x86.Build.0 = Debug|Win32 + {83387D14-7229-4D6A-98C0-61382D188FC6}.Debug|x86.Deploy.0 = Debug|Win32 + {83387D14-7229-4D6A-98C0-61382D188FC6}.Release|ARM.ActiveCfg = Release|x64 + {83387D14-7229-4D6A-98C0-61382D188FC6}.Release|ARM.Build.0 = Release|x64 + {83387D14-7229-4D6A-98C0-61382D188FC6}.Release|ARM.Deploy.0 = Release|x64 + {83387D14-7229-4D6A-98C0-61382D188FC6}.Release|ARM64.ActiveCfg = Release|ARM64 + {83387D14-7229-4D6A-98C0-61382D188FC6}.Release|ARM64.Build.0 = Release|ARM64 + {83387D14-7229-4D6A-98C0-61382D188FC6}.Release|ARM64.Deploy.0 = Release|ARM64 + {83387D14-7229-4D6A-98C0-61382D188FC6}.Release|x64.ActiveCfg = Release|x64 + {83387D14-7229-4D6A-98C0-61382D188FC6}.Release|x64.Build.0 = Release|x64 + {83387D14-7229-4D6A-98C0-61382D188FC6}.Release|x64.Deploy.0 = Release|x64 + {83387D14-7229-4D6A-98C0-61382D188FC6}.Release|x86.ActiveCfg = Release|Win32 + {83387D14-7229-4D6A-98C0-61382D188FC6}.Release|x86.Build.0 = Release|Win32 + {83387D14-7229-4D6A-98C0-61382D188FC6}.Release|x86.Deploy.0 = Release|Win32 + {6DB84C92-341F-4B3E-B3F4-83869E4B2920}.Debug|ARM.ActiveCfg = Debug|x64 + {6DB84C92-341F-4B3E-B3F4-83869E4B2920}.Debug|ARM.Build.0 = Debug|x64 + {6DB84C92-341F-4B3E-B3F4-83869E4B2920}.Debug|ARM64.ActiveCfg = Debug|x64 + {6DB84C92-341F-4B3E-B3F4-83869E4B2920}.Debug|ARM64.Build.0 = Debug|x64 + {6DB84C92-341F-4B3E-B3F4-83869E4B2920}.Debug|x64.ActiveCfg = Debug|x64 + {6DB84C92-341F-4B3E-B3F4-83869E4B2920}.Debug|x64.Build.0 = Debug|x64 + {6DB84C92-341F-4B3E-B3F4-83869E4B2920}.Debug|x86.ActiveCfg = Debug|Win32 + {6DB84C92-341F-4B3E-B3F4-83869E4B2920}.Debug|x86.Build.0 = Debug|Win32 + {6DB84C92-341F-4B3E-B3F4-83869E4B2920}.Release|ARM.ActiveCfg = Release|x64 + {6DB84C92-341F-4B3E-B3F4-83869E4B2920}.Release|ARM.Build.0 = Release|x64 + {6DB84C92-341F-4B3E-B3F4-83869E4B2920}.Release|ARM64.ActiveCfg = Release|x64 + {6DB84C92-341F-4B3E-B3F4-83869E4B2920}.Release|ARM64.Build.0 = Release|x64 + {6DB84C92-341F-4B3E-B3F4-83869E4B2920}.Release|x64.ActiveCfg = Release|x64 + {6DB84C92-341F-4B3E-B3F4-83869E4B2920}.Release|x64.Build.0 = Release|x64 + {6DB84C92-341F-4B3E-B3F4-83869E4B2920}.Release|x86.ActiveCfg = Release|Win32 + {6DB84C92-341F-4B3E-B3F4-83869E4B2920}.Release|x86.Build.0 = Release|Win32 + {CFA6E3A8-2299-468C-B4D6-A7E7650EAD97}.Debug|ARM.ActiveCfg = Debug|x64 + {CFA6E3A8-2299-468C-B4D6-A7E7650EAD97}.Debug|ARM.Build.0 = Debug|x64 + {CFA6E3A8-2299-468C-B4D6-A7E7650EAD97}.Debug|ARM.Deploy.0 = Debug|x64 + {CFA6E3A8-2299-468C-B4D6-A7E7650EAD97}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {CFA6E3A8-2299-468C-B4D6-A7E7650EAD97}.Debug|ARM64.Build.0 = Debug|ARM64 + {CFA6E3A8-2299-468C-B4D6-A7E7650EAD97}.Debug|ARM64.Deploy.0 = Debug|ARM64 + {CFA6E3A8-2299-468C-B4D6-A7E7650EAD97}.Debug|x64.ActiveCfg = Debug|x64 + {CFA6E3A8-2299-468C-B4D6-A7E7650EAD97}.Debug|x64.Build.0 = Debug|x64 + {CFA6E3A8-2299-468C-B4D6-A7E7650EAD97}.Debug|x64.Deploy.0 = Debug|x64 + {CFA6E3A8-2299-468C-B4D6-A7E7650EAD97}.Debug|x86.ActiveCfg = Debug|Win32 + {CFA6E3A8-2299-468C-B4D6-A7E7650EAD97}.Debug|x86.Build.0 = Debug|Win32 + {CFA6E3A8-2299-468C-B4D6-A7E7650EAD97}.Debug|x86.Deploy.0 = Debug|Win32 + {CFA6E3A8-2299-468C-B4D6-A7E7650EAD97}.Release|ARM.ActiveCfg = Release|x64 + {CFA6E3A8-2299-468C-B4D6-A7E7650EAD97}.Release|ARM.Build.0 = Release|x64 + {CFA6E3A8-2299-468C-B4D6-A7E7650EAD97}.Release|ARM.Deploy.0 = Release|x64 + {CFA6E3A8-2299-468C-B4D6-A7E7650EAD97}.Release|ARM64.ActiveCfg = Release|ARM64 + {CFA6E3A8-2299-468C-B4D6-A7E7650EAD97}.Release|ARM64.Build.0 = Release|ARM64 + {CFA6E3A8-2299-468C-B4D6-A7E7650EAD97}.Release|ARM64.Deploy.0 = Release|ARM64 + {CFA6E3A8-2299-468C-B4D6-A7E7650EAD97}.Release|x64.ActiveCfg = Release|x64 + {CFA6E3A8-2299-468C-B4D6-A7E7650EAD97}.Release|x64.Build.0 = Release|x64 + {CFA6E3A8-2299-468C-B4D6-A7E7650EAD97}.Release|x64.Deploy.0 = Release|x64 + {CFA6E3A8-2299-468C-B4D6-A7E7650EAD97}.Release|x86.ActiveCfg = Release|Win32 + {CFA6E3A8-2299-468C-B4D6-A7E7650EAD97}.Release|x86.Build.0 = Release|Win32 + {CFA6E3A8-2299-468C-B4D6-A7E7650EAD97}.Release|x86.Deploy.0 = Release|Win32 + {C8F9FE66-1689-422B-828E-CBE91844E6CD}.Debug|ARM.ActiveCfg = Debug|x64 + {C8F9FE66-1689-422B-828E-CBE91844E6CD}.Debug|ARM.Build.0 = Debug|x64 + {C8F9FE66-1689-422B-828E-CBE91844E6CD}.Debug|ARM64.ActiveCfg = Debug|x64 + {C8F9FE66-1689-422B-828E-CBE91844E6CD}.Debug|ARM64.Build.0 = Debug|x64 + {C8F9FE66-1689-422B-828E-CBE91844E6CD}.Debug|x64.ActiveCfg = Debug|x64 + {C8F9FE66-1689-422B-828E-CBE91844E6CD}.Debug|x64.Build.0 = Debug|x64 + {C8F9FE66-1689-422B-828E-CBE91844E6CD}.Debug|x86.ActiveCfg = Debug|Win32 + {C8F9FE66-1689-422B-828E-CBE91844E6CD}.Debug|x86.Build.0 = Debug|Win32 + {C8F9FE66-1689-422B-828E-CBE91844E6CD}.Release|ARM.ActiveCfg = Release|x64 + {C8F9FE66-1689-422B-828E-CBE91844E6CD}.Release|ARM.Build.0 = Release|x64 + {C8F9FE66-1689-422B-828E-CBE91844E6CD}.Release|ARM64.ActiveCfg = Release|x64 + {C8F9FE66-1689-422B-828E-CBE91844E6CD}.Release|ARM64.Build.0 = Release|x64 + {C8F9FE66-1689-422B-828E-CBE91844E6CD}.Release|x64.ActiveCfg = Release|x64 + {C8F9FE66-1689-422B-828E-CBE91844E6CD}.Release|x64.Build.0 = Release|x64 + {C8F9FE66-1689-422B-828E-CBE91844E6CD}.Release|x86.ActiveCfg = Release|Win32 + {C8F9FE66-1689-422B-828E-CBE91844E6CD}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {7C8E82F4-8BD8-4A01-9D5D-4E012F123BDD} + EndGlobalSection +EndGlobal diff --git a/samples/XamlSwapchainSample/XamlSwapchainSample/MainWindow.xaml.cpp b/samples/XamlSwapchainSample/XamlSwapchainSample/MainWindow.xaml.cpp deleted file mode 100644 index d8dc641..0000000 --- a/samples/XamlSwapchainSample/XamlSwapchainSample/MainWindow.xaml.cpp +++ /dev/null @@ -1,29 +0,0 @@ -#include "pch.h" -#include "MainWindow.xaml.h" -#if __has_include("MainWindow.g.cpp") -#include "MainWindow.g.cpp" -#endif - -using namespace winrt; -using namespace Microsoft::UI::Xaml; - -// To learn more about WinUI, the WinUI project structure, -// and more about our project templates, see: http://aka.ms/winui-project-info. - -namespace winrt::XamlSwapchainSample::implementation -{ - int32_t MainWindow::MyProperty() - { - throw hresult_not_implemented(); - } - - void MainWindow::MyProperty(int32_t /* value */) - { - throw hresult_not_implemented(); - } - - void MainWindow::myButton_Click(IInspectable const&, RoutedEventArgs const&) - { - myButton().Content(box_value(L"Clicked")); - } -} diff --git a/samples/XamlSwapchainSample/XamlSwapchainSample/MainWindow.xaml.h b/samples/XamlSwapchainSample/XamlSwapchainSample/MainWindow.xaml.h deleted file mode 100644 index 4703bf9..0000000 --- a/samples/XamlSwapchainSample/XamlSwapchainSample/MainWindow.xaml.h +++ /dev/null @@ -1,27 +0,0 @@ -#pragma once - -#include "MainWindow.g.h" - -namespace winrt::XamlSwapchainSample::implementation -{ - struct MainWindow : MainWindowT - { - MainWindow() - { - // Xaml objects should not call InitializeComponent during construction. - // See https://github.com/microsoft/cppwinrt/tree/master/nuget#initializecomponent - } - - int32_t MyProperty(); - void MyProperty(int32_t value); - - void myButton_Click(IInspectable const& sender, Microsoft::UI::Xaml::RoutedEventArgs const& args); - }; -} - -namespace winrt::XamlSwapchainSample::factory_implementation -{ - struct MainWindow : MainWindowT - { - }; -} diff --git a/samples/XamlSwapchainSample/XamlSwapchainSample/XamlSwapchainSample.sln b/samples/XamlSwapchainSample/XamlSwapchainSample/XamlSwapchainSample.sln deleted file mode 100644 index b118e01..0000000 --- a/samples/XamlSwapchainSample/XamlSwapchainSample/XamlSwapchainSample.sln +++ /dev/null @@ -1,63 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.9.34607.119 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "XamlSwapchainSample", "XamlSwapchainSample.vcxproj", "{7CB39A7B-FB5D-4575-BDB1-CBF2BB968D9C}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SyncMFTSample", "..\SyncMFTSample\SyncMFTSample.vcxproj", "{8C974F7D-281C-4C4E-B1FD-B571DDF7DD77}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|ARM64 = Debug|ARM64 - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 - Release|ARM64 = Release|ARM64 - Release|x64 = Release|x64 - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {7CB39A7B-FB5D-4575-BDB1-CBF2BB968D9C}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {7CB39A7B-FB5D-4575-BDB1-CBF2BB968D9C}.Debug|ARM64.Build.0 = Debug|ARM64 - {7CB39A7B-FB5D-4575-BDB1-CBF2BB968D9C}.Debug|ARM64.Deploy.0 = Debug|ARM64 - {7CB39A7B-FB5D-4575-BDB1-CBF2BB968D9C}.Debug|x64.ActiveCfg = Debug|x64 - {7CB39A7B-FB5D-4575-BDB1-CBF2BB968D9C}.Debug|x64.Build.0 = Debug|x64 - {7CB39A7B-FB5D-4575-BDB1-CBF2BB968D9C}.Debug|x64.Deploy.0 = Debug|x64 - {7CB39A7B-FB5D-4575-BDB1-CBF2BB968D9C}.Debug|x86.ActiveCfg = Debug|Win32 - {7CB39A7B-FB5D-4575-BDB1-CBF2BB968D9C}.Debug|x86.Build.0 = Debug|Win32 - {7CB39A7B-FB5D-4575-BDB1-CBF2BB968D9C}.Debug|x86.Deploy.0 = Debug|Win32 - {7CB39A7B-FB5D-4575-BDB1-CBF2BB968D9C}.Release|ARM64.ActiveCfg = Release|ARM64 - {7CB39A7B-FB5D-4575-BDB1-CBF2BB968D9C}.Release|ARM64.Build.0 = Release|ARM64 - {7CB39A7B-FB5D-4575-BDB1-CBF2BB968D9C}.Release|ARM64.Deploy.0 = Release|ARM64 - {7CB39A7B-FB5D-4575-BDB1-CBF2BB968D9C}.Release|x64.ActiveCfg = Release|x64 - {7CB39A7B-FB5D-4575-BDB1-CBF2BB968D9C}.Release|x64.Build.0 = Release|x64 - {7CB39A7B-FB5D-4575-BDB1-CBF2BB968D9C}.Release|x64.Deploy.0 = Release|x64 - {7CB39A7B-FB5D-4575-BDB1-CBF2BB968D9C}.Release|x86.ActiveCfg = Release|Win32 - {7CB39A7B-FB5D-4575-BDB1-CBF2BB968D9C}.Release|x86.Build.0 = Release|Win32 - {7CB39A7B-FB5D-4575-BDB1-CBF2BB968D9C}.Release|x86.Deploy.0 = Release|Win32 - {8C974F7D-281C-4C4E-B1FD-B571DDF7DD77}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {8C974F7D-281C-4C4E-B1FD-B571DDF7DD77}.Debug|ARM64.Build.0 = Debug|ARM64 - {8C974F7D-281C-4C4E-B1FD-B571DDF7DD77}.Debug|ARM64.Deploy.0 = Debug|ARM64 - {8C974F7D-281C-4C4E-B1FD-B571DDF7DD77}.Debug|x64.ActiveCfg = Debug|x64 - {8C974F7D-281C-4C4E-B1FD-B571DDF7DD77}.Debug|x64.Build.0 = Debug|x64 - {8C974F7D-281C-4C4E-B1FD-B571DDF7DD77}.Debug|x64.Deploy.0 = Debug|x64 - {8C974F7D-281C-4C4E-B1FD-B571DDF7DD77}.Debug|x86.ActiveCfg = Debug|Win32 - {8C974F7D-281C-4C4E-B1FD-B571DDF7DD77}.Debug|x86.Build.0 = Debug|Win32 - {8C974F7D-281C-4C4E-B1FD-B571DDF7DD77}.Debug|x86.Deploy.0 = Debug|Win32 - {8C974F7D-281C-4C4E-B1FD-B571DDF7DD77}.Release|ARM64.ActiveCfg = Release|ARM64 - {8C974F7D-281C-4C4E-B1FD-B571DDF7DD77}.Release|ARM64.Build.0 = Release|ARM64 - {8C974F7D-281C-4C4E-B1FD-B571DDF7DD77}.Release|ARM64.Deploy.0 = Release|ARM64 - {8C974F7D-281C-4C4E-B1FD-B571DDF7DD77}.Release|x64.ActiveCfg = Release|x64 - {8C974F7D-281C-4C4E-B1FD-B571DDF7DD77}.Release|x64.Build.0 = Release|x64 - {8C974F7D-281C-4C4E-B1FD-B571DDF7DD77}.Release|x64.Deploy.0 = Release|x64 - {8C974F7D-281C-4C4E-B1FD-B571DDF7DD77}.Release|x86.ActiveCfg = Release|Win32 - {8C974F7D-281C-4C4E-B1FD-B571DDF7DD77}.Release|x86.Build.0 = Release|Win32 - {8C974F7D-281C-4C4E-B1FD-B571DDF7DD77}.Release|x86.Deploy.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {BF914B6A-D07A-4CA0-830B-1ADC1928491D} - EndGlobalSection -EndGlobal diff --git a/samples/XamlSwapchainSample/XamlSwapchainSample/readme.txt b/samples/XamlSwapchainSample/XamlSwapchainSample/readme.txt deleted file mode 100644 index 5b0aba8..0000000 --- a/samples/XamlSwapchainSample/XamlSwapchainSample/readme.txt +++ /dev/null @@ -1,27 +0,0 @@ -======================================================================== - XamlSwapchainSample Project Overview -======================================================================== - -This project demonstrates how to get started writing WinUI3 apps directly -with standard C++, using the Windows App SDK and C++/WinRT packages and -XAML compiler support to generate implementation headers from interface -(IDL) files. These headers can then be used to implement the local -Windows Runtime classes referenced in the app's XAML pages. - -Steps: -1. Create an interface (IDL) file to define any local Windows Runtime - classes referenced in the app's XAML pages. -2. Build the project once to generate implementation templates under - the "Generated Files" folder, as well as skeleton class definitions - under "Generated Files\sources". -3. Use the skeleton class definitions for reference to implement your - Windows Runtime classes. - -======================================================================== -Learn more about Windows App SDK here: -https://docs.microsoft.com/windows/apps/windows-app-sdk/ -Learn more about WinUI3 here: -https://docs.microsoft.com/windows/apps/winui/winui3/ -Learn more about C++/WinRT here: -http://aka.ms/cppwinrt/ -======================================================================== diff --git a/samples/XamlSwapchainSample/readme.md b/samples/XamlSwapchainSample/readme.md new file mode 100644 index 0000000..8eb7f76 --- /dev/null +++ b/samples/XamlSwapchainSample/readme.md @@ -0,0 +1,86 @@ +# Overview of Projects +## About +This selection of samples is designed to show an implementation of a media pipeline using a XAML swapchain panel. The addition of the MFT in subsequent projects gives an outline of how an MFT might be used in these scenarios. MFTs have a wide range of uses from decoding to ML effects on video frames. +### How to Build +1. Open XAMLSamples.sln in Visual Studio 2022 or newer +2. Ensure that the Windows SDK is up to date (Version 17134 or newer) It can be installed here: [Windows SDK](https://developer.microsoft.com/en-us/windows/downloads/windows-sdk/) +3. Install the Windows App SDK if it is not already. It can be installed here: [Win App SDK](https://learn.microsoft.com/en-us/windows/apps/windows-app-sdk/downloads) +4. Build the solution + +### How to Run +There are two ways to run the sample. Within Visual Studio, the debug option can be used to run the sample. The sample is also be built into a standalone application that can be launched like a normal application. When run there are fps statics that can be viewed in the debug output terminal. + +![Debug output showing about 30fps for video playback](resources/debug_ouput.png) + + +### Example Screenshot +![WinUI Desktop app screenshot for Big Buck Bunny title](resources/docs_BBBScreenshot.png) + +When run, the applicaiton will open a WinUI Desktop window that will automatically start playback of the Big Buck Bunny source video. The window can be moved and resized, but the video itself will stay the same size in the window. + +### Block Diagram +![Block Diagram showing Source leading to Source Reader to MFT to Swapchain](resources/MF-XAML-Sample.png) + +This is a simplified block diagram for the full project. The [Source Reader](https://learn.microsoft.com/en-us/windows/win32/medfound/source-reader) gets a sample from the source file and decodes it. The sample is then passed to the MFT, which functions as a passthrough, before being given to the swapchain to present on the screen. +In the case of the *XAML SAMPLE* the MFT is removed from the pipeline and the Source Reader passes a sample directly to the swapchain. + +--- +## XAML Sample +### Overview +Sample app using a XAML swapchain panel, C++/WinRT, and D3D to do video playback. This sample does not feature an MFT, just a source reader to pass samples to the swapchain panel for presentation. This sample is the basis for the other samples in this project. + +### Files +**App.xaml**: Application entry point. Standard for a simple XAML application. + +**MainWindow(.idl, .xaml, .cpp)**: Defines the window and the operations of the application. The bulk of the code is in these files. The .idl file outlines the class interface. The XAML file outlines the UI, this application just features the SwapChainPanel with a StackPanel functioning as an overlay that is used to trigger playback on the loading event. +- *CreateSourceReader*: Handles the creation and setup of the source reader. +- *ReadUnCompressedSample*: Reads the next sample from the source and assign it to a buffer +- *OnPanelLoaded*: Triggered when the overlay panel is loaded. Starts playback on a separate thread using MFPutWorkItem. +- *InitializeGraphics*: Creates a D3D device and swapchain for composition to assign to the XAML swapchainPanel +- *InitializeVideoProcessor*: Setup input and output information for the VPBlt operation. +- *DoPresentationLoop*: Main function of playback. Initializes components, then frame by frame will present to the swapchain panel until the end of stream is reached. Calculates statistics for fps periodically as well. + +**Util.h**: Helper class for MFPutWorkItem + +--- +## Basic MFT (Class) +### Overview +Barebones example of a synchronous MFT. Functions as a passthrough for the sample from input to output. Builds as a static library for other projects in the solution to use. + +For more information on the IMFTransform interface view the docs here: [IMFTransform](https://learn.microsoft.com/en-us/windows/win32/api/mftransform/nn-mftransform-imftransform) +### Files +**BasicMFT.cpp**: Implementation of the IMFTransform interface. Defines GUID to be used to instantiate the MFT from a dll. +- *ProcessInput*: Caches the sample to be used as output +- *ProcessOutput*: Makes a copy of the cached sample to the output +- *GetInputStreamInfo*: Sets `MFT_INPUT_STREAM_PROCESSES_IN_PLACE` +- *GetOutputStreamInfo*: Sets `MFT_OUTPUT_STREAM_PROVIDES_SAMPLES` + +--- +## Basic MFT (DLL) +### Overview +Builds a dll for the BasicMFT class. + +### Files +**dllmain.cpp**: Defines the entry into the dll application. Defines the function used to create instances of the contained classes. +- `CoCreateableClass`: Defines the class factory for the BasicMFT class +- `DllGetClassObject`: Exposes the call to the WRL GetClassObject method to get the defined factory + +**BasicMFT.def**: Details the exported functions exposed by the dll and the name of the associated Library. + +--- +## XAML Sample with MFT (Class) +### Overview +Builds off the XAML Sample and gives an example of how to add an MFT to the pipeline by directly instantiating an instance of the MFT class. The only changes in this project are in the MainWindow class. +### Files +**MainWindow.cpp**: Added functionality for MFT usage. +- *InitializeMFT*: Calls make to get an instance of the BasicMFT class. Gets the current media type from the source reader and then sets that type on the MFT. Sets the output type on the MFT, then sends the message to the MFT that streaming is beginning. + - *DriveMFT*: This function handles manually driving the MFT in a synchronous manner. It checks for a ready output sample, will pass input if needed, then check again for output until it is available. There is some extra handling there that will account for a difference in the presence or absence of `MFT_OUTPUT_STREAM_PROVIDES_SAMPLES`. + +--- +## XAML Sample with MFT (DLL) +### Overview +Builds on the MFT (Class) sample and expands to include loading the MFT from the DLL built in the BasicMFTDll project. It also shows how to instatiate and use it in the application's pipeline. The only changes in this project are in the MainWindow Class, and an extra post-build event to copy the MFT dll to an accessible folder. + +### Files +**MainWindow.cpp**: Added functionality for loading the MFT from a dll +- *LoadMftFromDll*: Uses the defined dll name (kMFTDllName) to load the dll and hold a reference to it in a global (g_mftModule). From the module, the defined GUID (CLSID_BasicMFTDLL) from the BasicMFTClass definition is used to get the classFactory of that type from the dll. The factory is used to create an instance of the MFT and pass it back to the caller. \ No newline at end of file diff --git a/samples/XamlSwapchainSample/resources/MF-XAML-Sample.png b/samples/XamlSwapchainSample/resources/MF-XAML-Sample.png new file mode 100644 index 0000000000000000000000000000000000000000..e5e6727e9ee0ff8ff1e9f4d7294ef0f541b47bb7 GIT binary patch literal 18814 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 literal 0 HcmV?d00001 diff --git a/samples/XamlSwapchainSample/resources/debug_ouput.png b/samples/XamlSwapchainSample/resources/debug_ouput.png new file mode 100644 index 0000000000000000000000000000000000000000..227befb4d697d51ba3d05de334f7af7bcb7a7465 GIT binary patch literal 18779 zcmb`PbyQRf!>4T+T>&%Y@Qw9U*7|3Vgdh_ zJ899cBX4hl9iA1rx6>jv(;^a)$cUE)PY zohHtb9TqO15sGS&y{|5Im0_us-~@69jI!yt>W{JC3S3Aj+8=LH)VLi8FVs-Wx$HoJD;Xv5397Vb^&%002XK8qNxKo-9vG)hojo{=3G-(+^FIDuI`lD?^G=17ul=U>ToRY}A74Eg$6^t75(-<4_x{v3g!>t9i;@mgVXPQ*u@39AZ^%&lTPi5W zsr}19rLNb6cA>V^nfiE^D~av6-Oa=ZyH2>uFC@1|d);)S{Fi(_*ziwGcnS@>A-Z~8 zC&44-J9o{__?kT=r__tvXKmbKQ9%-Vn#;^|SNDjjnRfQ!3Y+~Wo(HU$*u0u&m{}*B z4Ht#mO@*UUO_*G7-mAMi@);Wks+t)%zY|w3mgU{T(B9yEV}P)AhPN6fmprQOJ<`k> zroS9U%jWU`Q`50B*NZj*aZ-4jUcL5)d^ojo>o_fG6dp{?SLh_XoY_&J?pkA9gt#n* zyX`PCYG&Je>sDqf^*jpaGvW%hlt6;hk0fBa=AS}m~=6IV*01tlJND%=V zy2{h)`IC-M`iUC3DPjI+$Bek~rmy@l(fcv!MUzEfF^ij~a(7sls(%9wcb9 zgp_E!qSwV69Hky#%tTV=N~&qyIcm#;H6w)egC7o1S8G4GQZk(@f9Ah5c0#d#VkA#9 z_v#Y7Ge_66*eSa!!8}iGNwwhvZRasZUFjT(k)(%>EZ=+q3c`5WIrscCn@6IME|C;t zDe44Rl`JjJOTyt^1ZHOP>@_0oC&bFNpr`wUdw~Kx8DBk2M;{K7vcJM3zOSV3ab$;D zN?}RR3`;jyL98D+Kvw&XKe++JZ$;2FCMExn);bUU*p2a2h6CMZRtYQT$2jOXLBfAC%|0`~x? zi3z0iIG3hbTY~-BiwQ45X)38U7re*OdXxcs$g-)d5*R}LmmT)O50Vj8r%z;6AHL-Y zvy0hu8n)N8FWb zcX|0pa+W1Y=N8;2(@&^jJtgDKb(uA7!$EYL=vZJfAK6Aeo@1k080p3s#^Ubj3Wq_L z9t0?_nHLL^C=scHTow~$+BLmpk4c#pE*SPgU+<$pFFtH8_urL{jLy9?^YIK`wYWyc ztHj$ftSh*QEum&ZDx&>46H~j^SpDNNVYL|jShj)O+zVEE%F;ZI7_JION#)$sNO?=U z?O1&DVBV95pp$j~1L`f__Xv0(T}_rz4>E^(!C)g+vSCJduZNdxGN|o96 zXmz@csr_8#3$(`g2HBkZQ~+T}4=sh)~I`<$by_6RQYeqff=3kvV&zE>juI+Ho z8(^m-^9?$1ChK8tBorxS3=bYttkT8;V>1{x0^fl99kh!6WGp~k;K7eQ(AjUn97S@E z!oDX};DX`Eg(47w;%h^IxND?S&Tf=feUhwk&{q`1--;1pi<4*Yq<0KOp=U3NRr?sv z@#t~g4Abf8mg_IkxlWB+Zn28C#;7~>#d)B9a3?KV$7`uqG$)SJ#@^UI_>F(waMad1 z`G#{FwiZI_dBl@M6oNuoHj?HZ))*UF2#;9u;6d;KfwhJPI6-?Sy!~+foL9v4!-;M$ z3ZKD!rH-mYa*2D-a6`HKa7;dYoMw;oH$>AITvSStgXEIOq_kbtIGJ;CzZ&UpJ5Kdg zI7*;Q+e+;1W4|)3*!`G*Vue#Jv13Dz5AK6cT_%?88(iP5MP{FvF0ByHD5*YM0ZqqH-M9_4?oQe;+nZYDmg%*2m%WD;yC-H%v;6bC<56s) zZzI>fq2hVDoZBti$+*f~0q1@_yj@YcVH0V!7`@mSwoU8m@rgV^R~dF3=JHb6XC{qO ze`P1F^S5@v3bj3>8!LaBr%^eLyx@zns%Uz|Qv59FJ->G*H)*{m8zXtoQ}J!$ zw#-K6B^zkUm8XY;-36Uk%aU`>aAq$_c~+kBktQL;&3N;g8VtM$#_0P&Ovk|Z(qofz zLyDRBoM|m%RniA0$sF}}fw_ndwOGOB2V}S#%K+v z>czrdJc>%pdUqwnYJGpu(syc0+4DsxF*VF8Er%6mqR?Y6o9f5gJsbyw3xTiTlwvjU zOsfYdM4O8OtFSyc1#>m|NXhNd#*pd-2E%k4+TYF> zXR*3Ycd|!hG%=P}y$K)AM1J%qGvg&xJpApgh5(}aRiX&pk*bR>Mjk`3GpF=|$IB=_ zqI$s@y4Ss7Uq|8gNjY?BZ{q^}?4m3ea|n}WwoyB(^JDH@azpcUlC44ll%2<8a}6pg z?p{l4`OXpO=h$(t?DTh~v-4j0fiZX|izvLpKB1ELH|&37Je*9tqZe@}5dYyT*XMP> zo1M{VpqG{NiI;a)GYrp$anUuhyDdMpPUTbL^U=l4N329P)^emE*bK58IynEbMYErarr$$o>Bq^-T#wjTic`x+j~ofIJjTlb~VyFgt|3$&&VxacTlt4w%7W3sY?TP*Y7r1xDzL1Q_{r(>x( z$YY{D)MF@tk!`AJh!T6GLxvz&{I-KJa0KK4tw2T-vl1b_xw>$2(C>$(Bq2hez3kt; z#spU@AQs2HRP=7|aWih;a@T&S^p;aXVnM_^`_P<|G&dWYhC)PZ4LG3-5tA175?U)_ z@PTOo@+5G$U3=WT?F4Q^XGP(v)T0YYd(}vH0I)=BJ}Wf925YuG0Qslz=Q-E(b>RU7 zjnYH_{bVT>00IbB#S!IpZ<(u^fR#5#cl%3rI)z4U5XVGf_Kvb4EA$V8RmTI6jxZwjft)-u-2-!K z^g5(n_SrrPK9jQHHa3)6!c9lM*^nqf?%YVF+;3NmOEli#SYnF!ke}MMm{+{$uBz5v z&@~|Zrs_XSA$~90D2*^-7V01Olc~wWznIzyFje9^Q{y-Ow@iiA z8F%;k2d18g{R30$bD;M`id_B65=OLP%D<|qdYY+$XGybILx3lHn9nzJDI7=?$=UTo zlum3s09Pplkt#-x3B0sykG6h;nGtE}o$;o7R8ptJgfb8*ulYZTih=cT6*}`IIRxj4 z^<=7-mDF5h(hO>>nznb2ORVbz{iRvgzacg0y9QmYc>DvYB9$;D@5H`JX1#^wi%cG? zB|4DS8KdD+d#P~GDl=g3aGRaxpA{(2#UBb(1osU(Z1_u)qlROi*)(tY;v@c}Dk*AO zV>XrAgKvt_%AQZA8hhSbdg%7Sz2F>7DTl@W)Q22OEGxFddjC(f`W^TB&vQnkdgc*M z4C6F2eS*<7cyqoVi=uwoJS5ym+pGsFqS8W^nFZD3prQUKrDk<|3X>-LjqzrAb+cmbr+aSBhI(K}Y4!oS-Lf}C} zf)eH(@hO_2F=*XzX00=WcML~-gB?r+2}&Jd?j~0*fk-?fQeZ1R4nA3}!qE^6bbZiv z^XO&Mo%Gi1%u|z3lhhl6+`AHQ% zgbD#SZXzqTM6|)qc4|lMxPRBAs+*VYFATLJ ztIZBlE}}4@;A@TAQbCjgsczp&joR&FjYuR++fMWk<5BYx&*1Lt`)E$`D_-5Z;z7^3 zGb4ZgQ@ zXGwV(4>7(9g-g@(M2l#Gk{8;;2msX+q~D)-Ggq%f4_xy?kyF8qnRyM#M91;_0!}af zy94z>$Q_T_0aHfd%sxJx4G^w$%^1HVr}95z@~2*PZ)bNb4X4XYYnB;w?Y2sWA^}F)J(w{l z*|hL)L6U|a_So0GPeDnyfA$#+~WEMs)x;0c-@R(-c+ z!@NlnzqXKKW9}*Tb)+&O66JM6_gQmmylFeogVr>}2zI~Lt9u$m|`x&Jj0Qw_l z{K3B7Fiq6+6-ns5ijK0rifbsLR91a7$}NA@ZK-nIXSE-{RP#@TyG~)^KZJ9;A-+^a zqxKA}8cwr~rbZr=l*n+?cNJI?7y)#Y=IEVSG=}MyOX-H?*;UPA75@3Xev1OFpWge& zm+L%N+r-SOarI_O*|Kq^zRGOdhR5RE(@wi69)H~M!?F#TckPWs;r|vLa^NHQ(QieS ztDkkTk1LoZ!dnz$?gS99V~-IJigA&;Ax|82%Xh)Cc(nTvjdvxpX7v^IJzY?jKXN!R z`pcIC>65>>$W3m)>>hZHQb8qUdaF3YbdZxKK~!-cq3dCez~ePfA|7l_9u7y$i%V`} zEKHmK&77^Xc1g2srkQ^xf?`*L+V)Y?sZ&+2Ni_u4x+};(TaMNm+i_Z%o{Qi1YJWl3 zLzmXB3roD(q)YfQW;5|-2kqr5-myeXOW)KBE^?5U(x&S(S9LGPT>^5FFBtJb@y2sa z)T~m}?&F-y%P56f6n^Um^JgKL{peO8^f$vc*OG=oQgD{n4n4)}#wAeo?ZqiB`C65^ zOC6&Xbs<|U7586MdPLt{x;9oo)=ORCW0Ro1SBOciEsPtUq3`;ny5?mAJAgyYES1OP zb{0Prrc@(eeULIbk;n>!JD=$o6$c$hDBIa&F-1PQDb2+Ol}KuAXtNw#cl36~NQ5J@ zMkbZ)a8IK3{B&l?1Qtmt`wPQR$)9beEjV8mj;A*zQQ9qjx>jRHSJ{CiHQNpkAx`W^c(m{g0m$O0b$+G{$G!e!i9v{5uSHVE!8n%|C(ufZ<>O zTJvu^HuS(wMdGoGkyej4?;d?ei~zMEM!cI$OzLPO_yqS8?FUM8BEC^{q6&^yl|dmE z@<>d_$NU6Ll6x7;0O^7VIG3IdA9m72o+2lh6lmXcbLQ09%8_D&u~D|+6KZz$u>1JZ zHKe*!F@B+s4kihf%u_B{<0)Fjl&aG|3dd4nIdyP*lKrcw78j{Q zT-eYh^(17BjVKm;+;4`t(&wNw8_-hP+KZbkM*lCx7Y+SjnU16_RxG>6wU9RQ}b*ybIy0r6%x8m@h^Xr@NCoQmo%nY(wULPmM30O?` z*vrJojPq&y3-9D1ylaxg?q*;H6kR~ml~05wmR`Ud9fQ)xuJ(<*DM0!KV3+?=faCuh zcm9-*=VFg6?wx5R_h#zJMt_NUEEbX3{c9!4-$)Iv&;}` znpYVjI*PtrSkkl0g79XYbNh)BkYc}wo9%^)b_{@={Rq*zl7fOOqu71b*+q<`v>4Q< zy}8~{UfYc?STBQJcsZZfor!*qBd&xpjoXGczQNJhk@)<czr)KpBRD|YnCJrIVij}sI&X;Y%&Sg!@CwUoM?pxM zQRLWVz(Wi@&xAWYx{bJScq?x`6U2DEfYCl=w0f}61{{YLoGJ0KWX%oVCc*F&O@P6g z4~W5tTQT@b^TvWF_jWWwDPFx}TX}3EYXfjz7Z-$Crhi!WH41rF*O= z!y+@jW-KGKO;eY@r1*djm|=#!f=(zBzoj6G`jOksTYgI3c}(IVe%Z|gBhx)t80i-Z z9p?2BSO>7*q9t@2Khumlip@OlDGAxjvUD6Ju>0dwpI)1w5f!}DVJto(P|xo-1fesv zn2Jlg6ufd2;OOcyk7D01%0F38*JajWa0^|K&oH43cHh_%~P(TUHhUC;JP8tHL6 zRIPCT3c%@0iI|dnt}g9ox9`HY7FU00Lu*dXZfH#D!B8o>rsGBn7ke9ga87yWlLLpn z8t(Reb2tXLu38z#g7Ge1;28L4tF=+cOJS0s)mXy4kH5}xku3r>vn0uEa>l!ZH)FyP z-I1!a?NQpdDnJ|EW8MaEm_etSQw4%$KxA+gghja`GnEaajW-i-9$b6PsF+>EUJxU6 z`i+EYmu+i&{~chuA|<7BBSe4Kh}P76$)oSf$q>^AvR_v_=(0%leU@}!u9xD?3X#2o zx3b{YN{xO`w~8Atp~43MH>0@&`#E?2VE#FuOC8=ma#_qo0=5`ATn31kx9FSQ!3R&d?zp}cE4 zO6YSb=)52qVtAYsYm&CRLaA*%n2ER(L;!qm2H&KPT(ges(;O zelB75oH!I&xE&Tf&F6}9LSXh!(?+H9Y!ToNcs>f;7MB1+njZ>Mt+;Ba{fn;=cD8-$ zurF15L{-og4Im6zCv*VY4SNcm-63<4Ax@tRR%ZNe(XWv5PhZt>jPuq1fR9RtxdY=J z3X(c8#k6fs9D(cHilh*WoP)SU%h6_5-iAL5b`bXfd9QSYtawgpE}qy2)7HeMw=yW4 z5&=D!{O=j1blRd~f@P#4+-z|eF*@-Iiqd?*M<|zY9zk`^mHm5)2 zVBznWGVWJQ$#xVQt9^fhO|p71-J!hdZtb}yE{2jEZEvD-ZC3usp#QlM^A9|V_~59s0{VmATx7;{%*F93#9Nxa&e zBuxO%0^m*vl_2`hT_DjwlM=u1lO<68VbJ>nioc!IKU2wD`}EdRjS>hx)?dGndjcWm zK4)Hr9!v6N)Cv7-k!>4M1cQ{#KQlRq^9-2`RtOsHu+t(r|yJ}0#@ z;oJ&%CqxcCbmU;e~ndqwq7Jwtu!e(E}4 z%F}MVGxLi!jolw&ocuDSnK{`ys>i>d`t552zpygJ5C&!V*v{_j(%QcM^qVhQbnMLtRnUSqL05KNQpqztd|DP6MlB%Z!55rF@<=Q4f=PuGfUyi zu37Uy$LSk{WeeXcJ2+t4go!<3yXaLkb`$`M?$ZB(#V9u2fXsXr2g7e#ltN-m;S`fx`J}$#Wv*lk77Dm2rLnp$Z8=78U@qP}mocg>;FS!A%hv zPZAC8Ot?!3_#`!1bz6ayFijG%Q=8TROWIYR9aBlEbN z;7{+=TyqONOZX)!^PA-OkW70aTXg%74AwVgv02vfKV%|9=@+K%Vp(dG$YYUAUm?1- z!Pr8K8mheK>BEdJJle6UG*gYmXj-PgyMcW+y#8x`htTQKmEYyn#0bJ#bL4Gr2e@4H z`XpS;R}poTT}1Z|zLV#NWh#IWqGJx7J8ug5pUXsJLN6{9N$&^lqhB?y@L;z5R65Ly zMGy0R>6Q^%Q+#|u{e@OT+A{mA`!phi2aGs-`GT=FaN@s|E z7Gp9x_55jKLple;a2QUy{eoqA6>>XjqRyfwMdmi#WsjLH0coK2b^EP%dJyg+ zjR!fC+QFja(*mYu0ufqP5uC=^T>dy4>(hMJvnI)(Js!JETqQq@Ipn_nzGVCwPi_j~ zpfjX-oPK7L#bkYyPUq8~FJ zW%v%>uEe^1KYjtKiHgtl2C=Y;7)!<6qx?ZxX~(hQM=M<@t$8@3`Z%Va9GQim+ny z>!rCA&-F8T&TDaJlAYxFpK@|J9_>o{#l#)^oVE6Bwl`%EBEm0T20Jl*?1ToD}~{@^|yR|X=$L`!z3>r1$skq^La7zsL- zN>_@oD8C~y0sw2$xW6drXOK+(|A&&xlW$JX_LmAz_mrPeq8xT-Ep%3HHt88>oz(2l zu0FxMm2!qXd$Dp)L|0Dv+iIvl{H8GxmKn3yA1$PJ?ygs^F->M!o`0Dy2Aos)Ba`=b zSn-pr({|a{FQ#jjjzY2JGh+)95v{_iUpnMZuwX}ErM_nAh16n@fm%$w+6LwUq`vBH z3ZF%bDKZN#=xc~}qdq;|$Q9a*v_~^9o@Abe9ar;ib{#rngOp%bThv+F6C+VZ0MGRH z6fs~p(S5c#Y$l0&d70~g&Qd-`>Q)xtLf9a~;di~gV~>v7SVW4ac3bwnm*WUc6)}-x)mQD$}~1wv3_9O)Kl+6;Laz)r09HpqcR|Vwjs8A&?#yhqD!; z7�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�XD3kvjB0>eP${i(!HCgdr>86QU)7f~{g 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 literal 0 HcmV?d00001 From 5f9865bdec4a310a5b92d961da8613a493f0fcb6 Mon Sep 17 00:00:00 2001 From: CJ Rogers Date: Tue, 12 Mar 2024 17:09:58 -0700 Subject: [PATCH 3/3] Add mfuuid.lib --- .../BasicMFTDLL/BasicMFTDLL.vcxproj | 3 +++ .../XamlSwapchainSample/XAMLSample/XAMLSample.vcxproj | 11 ++++++++++- .../XAMLSample_MFTClass/XAMLSample_MFTClass.vcxproj | 9 +++++++++ .../XAMLSample_MFTDLL/XAMLSample_MFTDLL.vcxproj | 9 +++++++++ 4 files changed, 31 insertions(+), 1 deletion(-) diff --git a/samples/XamlSwapchainSample/BasicMFTDLL/BasicMFTDLL.vcxproj b/samples/XamlSwapchainSample/BasicMFTDLL/BasicMFTDLL.vcxproj index c8033cb..9117716 100644 --- a/samples/XamlSwapchainSample/BasicMFTDLL/BasicMFTDLL.vcxproj +++ b/samples/XamlSwapchainSample/BasicMFTDLL/BasicMFTDLL.vcxproj @@ -88,6 +88,7 @@ true false BasicMFT.def + mfuuid.lib;%(AdditionalDependencies) @@ -108,6 +109,7 @@ true false BasicMFT.def + mfuuid.lib;%(AdditionalDependencies) @@ -146,6 +148,7 @@ true false BasicMFT.def + mfuuid.lib;%(AdditionalDependencies) diff --git a/samples/XamlSwapchainSample/XAMLSample/XAMLSample.vcxproj b/samples/XamlSwapchainSample/XAMLSample/XAMLSample.vcxproj index eaec106..f9716e4 100644 --- a/samples/XamlSwapchainSample/XAMLSample/XAMLSample.vcxproj +++ b/samples/XamlSwapchainSample/XAMLSample/XAMLSample.vcxproj @@ -91,6 +91,12 @@ mfuuid.lib;%(AdditionalDependencies) + + mfuuid.lib;%(AdditionalDependencies) + + + mfuuid.lib;%(AdditionalDependencies) + @@ -99,6 +105,9 @@ true true + mfuuid.lib;%(AdditionalDependencies) + mfuuid.lib;%(AdditionalDependencies) + mfuuid.lib;%(AdditionalDependencies) @@ -176,7 +185,7 @@ - + diff --git a/samples/XamlSwapchainSample/XAMLSample_MFTClass/XAMLSample_MFTClass.vcxproj b/samples/XamlSwapchainSample/XAMLSample_MFTClass/XAMLSample_MFTClass.vcxproj index cbe08d7..e18496a 100644 --- a/samples/XamlSwapchainSample/XAMLSample_MFTClass/XAMLSample_MFTClass.vcxproj +++ b/samples/XamlSwapchainSample/XAMLSample_MFTClass/XAMLSample_MFTClass.vcxproj @@ -92,6 +92,12 @@ mfuuid.lib;%(AdditionalDependencies) + + mfuuid.lib;%(AdditionalDependencies) + + + mfuuid.lib;%(AdditionalDependencies) + @@ -100,6 +106,9 @@ true true + mfuuid.lib;%(AdditionalDependencies) + mfuuid.lib;%(AdditionalDependencies) + mfuuid.lib;%(AdditionalDependencies) diff --git a/samples/XamlSwapchainSample/XAMLSample_MFTDLL/XAMLSample_MFTDLL.vcxproj b/samples/XamlSwapchainSample/XAMLSample_MFTDLL/XAMLSample_MFTDLL.vcxproj index 356180b..257ce94 100644 --- a/samples/XamlSwapchainSample/XAMLSample_MFTDLL/XAMLSample_MFTDLL.vcxproj +++ b/samples/XamlSwapchainSample/XAMLSample_MFTDLL/XAMLSample_MFTDLL.vcxproj @@ -97,6 +97,12 @@ Copy MFT dll + + mfuuid.lib;%(AdditionalDependencies) + + + mfuuid.lib;%(AdditionalDependencies) + @@ -105,6 +111,9 @@ true true + mfuuid.lib;%(AdditionalDependencies) + mfuuid.lib;%(AdditionalDependencies) + mfuuid.lib;%(AdditionalDependencies)