From 6bcf419d2e8f739b432d4790d1ba9d48ab65365b Mon Sep 17 00:00:00 2001
From: fcolin
Date: Fri, 18 Nov 2011 12:14:12 +0000
Subject:
---
ARMFCaptureD3D/ARAnalyse.cpp | 1244 +++++++++++++++++
ARMFCaptureD3D/ARAnalyse.h | 143 ++
ARMFCaptureD3D/ARMFCaptureD3D.aps | Bin 0 -> 65600 bytes
ARMFCaptureD3D/ARMFCaptureD3D.h | 52 +
ARMFCaptureD3D/ARMFCaptureD3D.opensdf | Bin 0 -> 24 bytes
ARMFCaptureD3D/ARMFCaptureD3D.rc | 198 +++
ARMFCaptureD3D/ARMFCaptureD3D.sdf | Bin 0 -> 48779264 bytes
ARMFCaptureD3D/ARMFCaptureD3D.sln | 73 +
ARMFCaptureD3D/ARMFCaptureD3D.sln.cache | 241 ++++
ARMFCaptureD3D/ARMFCaptureD3D.suo | Bin 0 -> 82944 bytes
ARMFCaptureD3D/BufferLock.h | 125 ++
ARMFCaptureD3D/Calibration.cpp | 254 ++++
ARMFCaptureD3D/Calibration.h | 31 +
ARMFCaptureD3D/ConfigFile/AntBlueMaize.jpg | Bin 0 -> 6533 bytes
ARMFCaptureD3D/ConfigFile/ArrowHome.gif | Bin 0 -> 187 bytes
ARMFCaptureD3D/ConfigFile/ConfigFile.cpp | 142 ++
ARMFCaptureD3D/ConfigFile/ConfigFile.h | 253 ++++
ARMFCaptureD3D/ConfigFile/ConfigFile.html | 72 +
ARMFCaptureD3D/ConfigFile/Makefile | 24 +
ARMFCaptureD3D/ConfigFile/README | 57 +
ARMFCaptureD3D/ConfigFile/Triplet.h | 34 +
ARMFCaptureD3D/ConfigFile/example.cpp | 111 ++
ARMFCaptureD3D/ConfigFile/example.inp | 14 +
ARMFCaptureD3D/ConfigFile/main.css | 37 +
ARMFCaptureD3D/ConfigFile/test.inp | 83 ++
ARMFCaptureD3D/ConfigFile/tester.cpp | 331 +++++
ARMFCaptureD3D/Debug/ARAnalyse.obj | Bin 0 -> 1292265 bytes
.../Debug/ARMFCaptureD3D.Build.CppClean.log | 125 ++
ARMFCaptureD3D/Debug/ARMFCaptureD3D.exe | Bin 0 -> 873472 bytes
.../Debug/ARMFCaptureD3D.exe.embed.manifest | 15 +
.../Debug/ARMFCaptureD3D.exe.embed.manifest.res | Bin 0 -> 744 bytes
.../Debug/ARMFCaptureD3D.exe.intermediate.manifest | 15 +
ARMFCaptureD3D/Debug/ARMFCaptureD3D.ilk | Bin 0 -> 6546468 bytes
ARMFCaptureD3D/Debug/ARMFCaptureD3D.lastbuildstate | 2 +
ARMFCaptureD3D/Debug/ARMFCaptureD3D.pdb | Bin 0 -> 6614016 bytes
ARMFCaptureD3D/Debug/ARMFCaptureD3D.res | Bin 0 -> 668 bytes
ARMFCaptureD3D/Debug/ARMFCaptureD3D.write.1.tlog | 0
ARMFCaptureD3D/Debug/ARMFCaptureD3D_manifest.rc | Bin 0 -> 218 bytes
ARMFCaptureD3D/Debug/ARToolKitPlus.dll | Bin 0 -> 657920 bytes
ARMFCaptureD3D/Debug/ARToolKitPlus.exp | Bin 0 -> 45324 bytes
ARMFCaptureD3D/Debug/ARToolKitPlus.ilk | Bin 0 -> 4061144 bytes
ARMFCaptureD3D/Debug/ARToolKitPlus.lib | Bin 0 -> 76238 bytes
ARMFCaptureD3D/Debug/ARToolKitPlus.pdb | Bin 0 -> 2665472 bytes
ARMFCaptureD3D/Debug/CL.read.1.tlog | Bin 0 -> 238784 bytes
ARMFCaptureD3D/Debug/CL.write.1.tlog | Bin 0 -> 19216 bytes
ARMFCaptureD3D/Debug/Calibration.obj | Bin 0 -> 173762 bytes
ARMFCaptureD3D/Debug/ConfigFile.obj | Bin 0 -> 794939 bytes
ARMFCaptureD3D/Debug/Ivy.bsc | Bin 0 -> 11264 bytes
ARMFCaptureD3D/Debug/Ivy.dll | Bin 0 -> 314368 bytes
ARMFCaptureD3D/Debug/Ivy.exp | Bin 0 -> 17114 bytes
ARMFCaptureD3D/Debug/Ivy.ilk | Bin 0 -> 1395312 bytes
ARMFCaptureD3D/Debug/Ivy.lib | Bin 0 -> 28202 bytes
ARMFCaptureD3D/Debug/Ivy.pdb | Bin 0 -> 2878464 bytes
ARMFCaptureD3D/Debug/MFCaptureD3D.exe | Bin 0 -> 72704 bytes
ARMFCaptureD3D/Debug/MFCaptureD3D.lastbuildstate | 2 +
ARMFCaptureD3D/Debug/MFCaptureD3D.lib | Bin 0 -> 2308 bytes
ARMFCaptureD3D/Debug/MFCaptureD3D.log | 59 +
.../Debug/MFCaptureD3D.unsuccessfulbuild | 0
.../Debug/ResolveAssemblyReference.cache | Bin 0 -> 1520 bytes
ARMFCaptureD3D/Debug/cl.command.1.tlog | Bin 0 -> 8922 bytes
ARMFCaptureD3D/Debug/debug.obj | Bin 0 -> 215105 bytes
ARMFCaptureD3D/Debug/link-cvtres.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link-cvtres.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.1424-cvtres.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.1424-cvtres.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.1424.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.1424.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.2360-cvtres.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.2360-cvtres.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.2360.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.2360.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.2364-cvtres.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.2364-cvtres.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.2364.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.2364.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.2468-cvtres.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.2468-cvtres.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.2468.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.2468.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.2948-cvtres.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.2948-cvtres.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.2948.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.2948.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.3132-cvtres.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.3132-cvtres.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.3132.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.3132.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.3244-cvtres.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.3244-cvtres.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.3244.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.3244.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.3672-cvtres.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.3672-cvtres.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.3672.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.3672.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.3720-cvtres.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.3720-cvtres.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.3720.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.3720.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.3844-cvtres.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.3844-cvtres.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.3844.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.3844.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.4036-cvtres.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.4036-cvtres.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.4036.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.4036.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.4200-cvtres.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.4200-cvtres.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.4200.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.4200.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.4460-cvtres.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.4460-cvtres.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.4460.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.4460.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.4716-cvtres.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.4716-cvtres.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.4716.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.4716.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.4948-cvtres.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.4948-cvtres.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.4948.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.4948.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.5368-cvtres.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.5368-cvtres.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.5368.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.5368.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.5624-cvtres.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.5624-cvtres.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.5624.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.5624.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.5656-cvtres.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.5656-cvtres.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.5656.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.5656.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.5752-cvtres.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.5752-cvtres.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.5752.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.5752.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.5868-cvtres.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.5868-cvtres.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.5868.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.5868.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.6132-cvtres.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.6132-cvtres.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.6132.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.6132.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.6264-cvtres.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.6264-cvtres.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.6264.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.6264.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.6468-cvtres.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.6468-cvtres.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.6468.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.6468.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.6716-cvtres.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.6716-cvtres.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.6716.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.6716.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.6724-cvtres.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.6724-cvtres.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.6724.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.6724.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.6772-cvtres.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.6772-cvtres.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.6772.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.6772.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.6844-cvtres.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.6844-cvtres.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.6844.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.6844.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.6928-cvtres.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.6928-cvtres.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.6928.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.6928.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.6968-cvtres.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.6968-cvtres.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.6968.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.6968.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.6996-cvtres.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.6996-cvtres.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.6996.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.6996.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.7096-cvtres.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.7096-cvtres.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.7096.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.7096.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.7232-cvtres.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.7232-cvtres.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.7232.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.7232.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.7240-cvtres.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.7240-cvtres.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.7240.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.7240.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.7416-cvtres.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.7416-cvtres.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.7416.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.7416.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.7960-cvtres.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.7960-cvtres.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.7960.read.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.7960.write.1.tlog | 1 +
ARMFCaptureD3D/Debug/link.command.1.tlog | Bin 0 -> 4428 bytes
ARMFCaptureD3D/Debug/link.read.1.tlog | Bin 0 -> 7762 bytes
ARMFCaptureD3D/Debug/link.write.1.tlog | Bin 0 -> 2948 bytes
ARMFCaptureD3D/Debug/mt.command.1.tlog | Bin 0 -> 480 bytes
ARMFCaptureD3D/Debug/mt.read.1.tlog | Bin 0 -> 554 bytes
ARMFCaptureD3D/Debug/mt.write.1.tlog | Bin 0 -> 454 bytes
ARMFCaptureD3D/Debug/options.obj | Bin 0 -> 225747 bytes
ARMFCaptureD3D/Debug/pcre.bsc | Bin 0 -> 11264 bytes
ARMFCaptureD3D/Debug/pcre.dll | Bin 0 -> 265728 bytes
ARMFCaptureD3D/Debug/pcre.exp | Bin 0 -> 38611 bytes
ARMFCaptureD3D/Debug/pcre.ilk | Bin 0 -> 606476 bytes
ARMFCaptureD3D/Debug/pcre.lib | Bin 0 -> 63630 bytes
ARMFCaptureD3D/Debug/pcre.pdb | Bin 0 -> 896000 bytes
ARMFCaptureD3D/Debug/rc.command.1.tlog | Bin 0 -> 1380 bytes
ARMFCaptureD3D/Debug/rc.read.1.tlog | Bin 0 -> 3280 bytes
ARMFCaptureD3D/Debug/rc.write.1.tlog | Bin 0 -> 798 bytes
ARMFCaptureD3D/Debug/sgetopt.obj | Bin 0 -> 28610 bytes
ARMFCaptureD3D/Debug/vc100.idb | Bin 0 -> 1174528 bytes
ARMFCaptureD3D/Debug/vc100.pdb | Bin 0 -> 1200128 bytes
ARMFCaptureD3D/MFCaptureD3D.aps | Bin 0 -> 62088 bytes
ARMFCaptureD3D/MFCaptureD3D.sdf | Bin 0 -> 45043712 bytes
ARMFCaptureD3D/MFCaptureD3D.vcproj | 393 ++++++
ARMFCaptureD3D/MFCaptureD3D.vcxproj | 219 +++
ARMFCaptureD3D/MFCaptureD3D.vcxproj.filters | 89 ++
ARMFCaptureD3D/MFCaptureD3D.vcxproj.user | 19 +
ARMFCaptureD3D/MinMaxAvg.cpp | 31 +
ARMFCaptureD3D/MinMaxAvg.h | 18 +
ARMFCaptureD3D/Release/ARMFCaptureD3D.exe | Bin 0 -> 109568 bytes
.../ARMFCaptureD3D.exe.intermediate.manifest | 15 +
ARMFCaptureD3D/Release/ARMFCaptureD3D.exp | Bin 0 -> 1006 bytes
.../Release/ARMFCaptureD3D.lastbuildstate | 2 +
ARMFCaptureD3D/Release/ARMFCaptureD3D.lib | Bin 0 -> 2336 bytes
ARMFCaptureD3D/Release/ARMFCaptureD3D.pdb | Bin 0 -> 1420288 bytes
ARMFCaptureD3D/Release/ARMFCaptureD3D.res | Bin 0 -> 668 bytes
ARMFCaptureD3D/Release/ARMFCaptureD3D.write.1.tlog | 15 +
ARMFCaptureD3D/Release/ARToolKitPlus.dll | Bin 0 -> 188416 bytes
ARMFCaptureD3D/Release/ARToolKitPlus.exp | Bin 0 -> 45048 bytes
ARMFCaptureD3D/Release/ARToolKitPlus.lib | Bin 0 -> 75772 bytes
ARMFCaptureD3D/Release/CL.read.1.tlog | Bin 0 -> 176572 bytes
ARMFCaptureD3D/Release/CL.write.1.tlog | Bin 0 -> 5840 bytes
ARMFCaptureD3D/Release/Calibration.obj | Bin 0 -> 968849 bytes
ARMFCaptureD3D/Release/ConfigFile.obj | Bin 0 -> 875046 bytes
ARMFCaptureD3D/Release/MFCaptureD3D.log | 19 +
ARMFCaptureD3D/Release/cl.command.1.tlog | Bin 0 -> 8168 bytes
ARMFCaptureD3D/Release/debug.obj | Bin 0 -> 1016215 bytes
ARMFCaptureD3D/Release/device.obj | Bin 0 -> 994643 bytes
ARMFCaptureD3D/Release/link-cvtres.read.1.tlog | 1 +
ARMFCaptureD3D/Release/link-cvtres.write.1.tlog | 1 +
ARMFCaptureD3D/Release/link.command.1.tlog | Bin 0 -> 4064 bytes
ARMFCaptureD3D/Release/link.read.1.tlog | Bin 0 -> 7342 bytes
ARMFCaptureD3D/Release/link.write.1.tlog | Bin 0 -> 2412 bytes
ARMFCaptureD3D/Release/mt.command.1.tlog | Bin 0 -> 626 bytes
ARMFCaptureD3D/Release/mt.read.1.tlog | Bin 0 -> 990 bytes
ARMFCaptureD3D/Release/mt.write.1.tlog | Bin 0 -> 432 bytes
ARMFCaptureD3D/Release/options.obj | Bin 0 -> 654713 bytes
ARMFCaptureD3D/Release/preview.obj | Bin 0 -> 1349578 bytes
ARMFCaptureD3D/Release/rc.command.1.tlog | Bin 0 -> 684 bytes
ARMFCaptureD3D/Release/rc.read.1.tlog | Bin 0 -> 2756 bytes
ARMFCaptureD3D/Release/rc.write.1.tlog | Bin 0 -> 370 bytes
ARMFCaptureD3D/Release/vc100.pdb | Bin 0 -> 667648 bytes
ARMFCaptureD3D/Release/winmain.obj | Bin 0 -> 1134140 bytes
ARMFCaptureD3D/Setup/Release/Install ARIvy X64.msi | Bin 0 -> 1049088 bytes
ARMFCaptureD3D/Setup/Release/setup.exe | Bin 0 -> 437760 bytes
ARMFCaptureD3D/Setup/Setup.vdproj | 1009 ++++++++++++++
ARMFCaptureD3D/UpgradeLog.XML | 16 +
ARMFCaptureD3D/UpgradeLog2.XML | 17 +
ARMFCaptureD3D/UpgradeLog3.XML | 15 +
.../_UpgradeReport_Files/UpgradeReport.css | 207 +++
.../_UpgradeReport_Files/UpgradeReport.xslt | 232 ++++
.../_UpgradeReport_Files/UpgradeReport_Minus.gif | Bin 0 -> 69 bytes
.../_UpgradeReport_Files/UpgradeReport_Plus.gif | Bin 0 -> 71 bytes
ARMFCaptureD3D/data/Logitech_Notebook_Pro.cal | 2 +
ARMFCaptureD3D/data/One.cfg | 10 +
ARMFCaptureD3D/data/config.inp | 20 +
ARMFCaptureD3D/data/markerboard_480-499.cfg | 165 +++
ARMFCaptureD3D/data/no_distortion.cal | 2 +
ARMFCaptureD3D/debug.cpp | 384 ++++++
ARMFCaptureD3D/debug.h | 32 +
ARMFCaptureD3D/device.cpp | 1280 ++++++++++++++++++
ARMFCaptureD3D/device.h | 93 ++
.../armfcaptured3d-1ab7d59.ipch | Bin 0 -> 73334784 bytes
ARMFCaptureD3D/options.cpp | 1146 ++++++++++++++++
ARMFCaptureD3D/options.h | 496 +++++++
ARMFCaptureD3D/preview.cpp | 701 ++++++++++
ARMFCaptureD3D/preview.h | 97 ++
ARMFCaptureD3D/readme.txt | 51 +
ARMFCaptureD3D/resource.h | 66 +
ARMFCaptureD3D/ribbon1.mfcribbon-ms | 20 +
ARMFCaptureD3D/toolbar1.bmp | Bin 0 -> 238 bytes
ARMFCaptureD3D/winmain.cpp | 1416 ++++++++++++++++++++
ARMFCaptureD3D/x64/Debug/ARAnalyse.obj | Bin 0 -> 1427372 bytes
.../x64/Debug/ARMFCaptureD3D.Build.CppClean.log | 51 +
ARMFCaptureD3D/x64/Debug/ARMFCaptureD3D.exe | Bin 0 -> 457728 bytes
.../x64/Debug/ARMFCaptureD3D.exe.embed.manifest | 15 +
.../Debug/ARMFCaptureD3D.exe.embed.manifest.res | Bin 0 -> 744 bytes
.../Debug/ARMFCaptureD3D.exe.intermediate.manifest | 15 +
ARMFCaptureD3D/x64/Debug/ARMFCaptureD3D.exp | Bin 0 -> 1030 bytes
ARMFCaptureD3D/x64/Debug/ARMFCaptureD3D.ilk | Bin 0 -> 2485968 bytes
.../x64/Debug/ARMFCaptureD3D.lastbuildstate | 2 +
ARMFCaptureD3D/x64/Debug/ARMFCaptureD3D.lib | Bin 0 -> 2364 bytes
ARMFCaptureD3D/x64/Debug/ARMFCaptureD3D.pdb | Bin 0 -> 2673664 bytes
ARMFCaptureD3D/x64/Debug/ARMFCaptureD3D.res | Bin 0 -> 1400 bytes
.../x64/Debug/ARMFCaptureD3D.write.1.tlog | 5 +
.../x64/Debug/ARMFCaptureD3D_manifest.rc | Bin 0 -> 228 bytes
ARMFCaptureD3D/x64/Debug/ARToolKitPlus.dll | Bin 0 -> 868864 bytes
ARMFCaptureD3D/x64/Debug/ARToolKitPlus.lib | Bin 0 -> 78280 bytes
ARMFCaptureD3D/x64/Debug/CL.read.1.tlog | Bin 0 -> 196296 bytes
ARMFCaptureD3D/x64/Debug/CL.write.1.tlog | Bin 0 -> 6254 bytes
ARMFCaptureD3D/x64/Debug/Calibration.obj | Bin 0 -> 996284 bytes
ARMFCaptureD3D/x64/Debug/ConfigFile.obj | Bin 0 -> 912727 bytes
ARMFCaptureD3D/x64/Debug/Ivy.dll | Bin 0 -> 382976 bytes
ARMFCaptureD3D/x64/Debug/Ivy.lib | Bin 0 -> 28938 bytes
.../x64/Debug/MFCaptureD3D.Build.CppClean.log | 34 +
.../x64/Debug/MFCaptureD3D.lastbuildstate | 2 +
ARMFCaptureD3D/x64/Debug/MFCaptureD3D.lib | Bin 0 -> 2336 bytes
ARMFCaptureD3D/x64/Debug/MFCaptureD3D.log | 254 ++++
.../x64/Debug/MFCaptureD3D.unsuccessfulbuild | 0
ARMFCaptureD3D/x64/Debug/MinMaxAvg.obj | Bin 0 -> 5729 bytes
.../x64/Debug/ResolveAssemblyReference.cache | Bin 0 -> 920 bytes
ARMFCaptureD3D/x64/Debug/cl.command.1.tlog | Bin 0 -> 9870 bytes
ARMFCaptureD3D/x64/Debug/debug.obj | Bin 0 -> 174197 bytes
ARMFCaptureD3D/x64/Debug/device.obj | Bin 0 -> 280886 bytes
ARMFCaptureD3D/x64/Debug/link-cvtres.read.1.tlog | 1 +
ARMFCaptureD3D/x64/Debug/link-cvtres.write.1.tlog | 1 +
.../x64/Debug/link.3816-cvtres.read.1.tlog | 1 +
.../x64/Debug/link.3816-cvtres.write.1.tlog | 1 +
ARMFCaptureD3D/x64/Debug/link.3816.read.1.tlog | 1 +
ARMFCaptureD3D/x64/Debug/link.3816.write.1.tlog | 1 +
ARMFCaptureD3D/x64/Debug/link.command.1.tlog | Bin 0 -> 5284 bytes
ARMFCaptureD3D/x64/Debug/link.read.1.tlog | Bin 0 -> 9946 bytes
ARMFCaptureD3D/x64/Debug/link.write.1.tlog | Bin 0 -> 3434 bytes
ARMFCaptureD3D/x64/Debug/mt.command.1.tlog | Bin 0 -> 504 bytes
ARMFCaptureD3D/x64/Debug/mt.read.1.tlog | Bin 0 -> 344 bytes
ARMFCaptureD3D/x64/Debug/mt.write.1.tlog | Bin 0 -> 470 bytes
ARMFCaptureD3D/x64/Debug/options.obj | Bin 0 -> 109877 bytes
ARMFCaptureD3D/x64/Debug/pcre.dll | Bin 0 -> 344576 bytes
ARMFCaptureD3D/x64/Debug/pcre.lib | Bin 0 -> 65226 bytes
ARMFCaptureD3D/x64/Debug/preview.obj | Bin 0 -> 205415 bytes
ARMFCaptureD3D/x64/Debug/rc.command.1.tlog | Bin 0 -> 1436 bytes
ARMFCaptureD3D/x64/Debug/rc.read.1.tlog | Bin 0 -> 3296 bytes
ARMFCaptureD3D/x64/Debug/rc.write.1.tlog | Bin 0 -> 822 bytes
ARMFCaptureD3D/x64/Debug/vc100.idb | Bin 0 -> 1190912 bytes
ARMFCaptureD3D/x64/Debug/vc100.pdb | Bin 0 -> 921600 bytes
ARMFCaptureD3D/x64/Debug/winmain.obj | Bin 0 -> 674374 bytes
ARMFCaptureD3D/x64/Release/ARAnalyse.obj | Bin 0 -> 1368090 bytes
ARMFCaptureD3D/x64/Release/ARMFCaptureD3D.exe | Bin 0 -> 164352 bytes
.../x64/Release/ARMFCaptureD3D.exe - Raccourci.lnk | Bin 0 -> 1349 bytes
.../ARMFCaptureD3D.exe.intermediate.manifest | 15 +
ARMFCaptureD3D/x64/Release/ARMFCaptureD3D.exp | Bin 0 -> 1032 bytes
.../x64/Release/ARMFCaptureD3D.lastbuildstate | 2 +
ARMFCaptureD3D/x64/Release/ARMFCaptureD3D.lib | Bin 0 -> 2364 bytes
ARMFCaptureD3D/x64/Release/ARMFCaptureD3D.pdb | Bin 0 -> 1477632 bytes
ARMFCaptureD3D/x64/Release/ARMFCaptureD3D.res | Bin 0 -> 1400 bytes
.../x64/Release/ARMFCaptureD3D.write.1.tlog | 645 +++++++++
ARMFCaptureD3D/x64/Release/ARToolKitPlus.dll | Bin 0 -> 244224 bytes
ARMFCaptureD3D/x64/Release/ARToolKitPlus.exp | Bin 0 -> 46554 bytes
ARMFCaptureD3D/x64/Release/ARToolKitPlus.lib | Bin 0 -> 78280 bytes
ARMFCaptureD3D/x64/Release/CL.1180.read.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.1180.write.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.1284.read.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.1284.write.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.1464.read.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.1464.write.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.2096.read.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.2096.write.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.2124.read.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.2124.write.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.3024.read.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.3024.write.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.3092.read.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.3092.write.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.3364.read.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.3364.write.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.3384.read.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.3384.write.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.3544.read.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.3544.write.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.3916.read.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.3916.write.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.3924.read.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.3924.write.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.4284.read.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.4284.write.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.4332.read.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.4332.write.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.4604.read.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.4604.write.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.4640.read.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.4640.write.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.5060.read.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.5060.write.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.5172.read.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.5172.write.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.5288.read.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.5288.write.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.5404.read.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.5404.write.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.5472.read.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.5472.write.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.5488.read.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.5488.write.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.5716.read.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.5716.write.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.5736.read.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.5736.write.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.5752.read.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.5752.write.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.5804.read.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.5804.write.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.5900.read.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.5900.write.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.5956.read.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.5956.write.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.6228.read.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.6228.write.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.6368.read.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.6368.write.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.6400.read.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.6400.write.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.6428.read.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.6428.write.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.6488.read.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.6488.write.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.6748.read.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.6748.write.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.7112.read.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.7112.write.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.7176.read.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.7176.write.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.7352.read.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.7352.write.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.7400.read.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.7400.write.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.748.read.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.748.write.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.8132.read.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.8132.write.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.8248.read.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.8248.write.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.8296.read.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.8296.write.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.8776.read.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.8776.write.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.8824.read.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.8824.write.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.8856.read.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.8856.write.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.8904.read.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.8904.write.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.9148.read.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.9148.write.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/CL.read.1.tlog | Bin 0 -> 197208 bytes
ARMFCaptureD3D/x64/Release/CL.write.1.tlog | Bin 0 -> 17388 bytes
ARMFCaptureD3D/x64/Release/Calibration.obj | Bin 0 -> 1182125 bytes
ARMFCaptureD3D/x64/Release/ConfigFile.obj | Bin 0 -> 875020 bytes
ARMFCaptureD3D/x64/Release/Ivy.dll | Bin 0 -> 87040 bytes
ARMFCaptureD3D/x64/Release/Ivy.exp | Bin 0 -> 17577 bytes
ARMFCaptureD3D/x64/Release/Ivy.lib | Bin 0 -> 28938 bytes
ARMFCaptureD3D/x64/Release/MFCaptureD3D.log | 231 ++++
ARMFCaptureD3D/x64/Release/MinMaxAvg.obj | Bin 0 -> 7475 bytes
ARMFCaptureD3D/x64/Release/cl.command.1.tlog | Bin 0 -> 10014 bytes
ARMFCaptureD3D/x64/Release/debug.obj | Bin 0 -> 313458 bytes
ARMFCaptureD3D/x64/Release/device.obj | Bin 0 -> 1026980 bytes
ARMFCaptureD3D/x64/Release/link-cvtres.read.1.tlog | 1 +
.../x64/Release/link-cvtres.write.1.tlog | 1 +
ARMFCaptureD3D/x64/Release/link.command.1.tlog | Bin 0 -> 5128 bytes
ARMFCaptureD3D/x64/Release/link.read.1.tlog | Bin 0 -> 8992 bytes
ARMFCaptureD3D/x64/Release/link.write.1.tlog | Bin 0 -> 3070 bytes
ARMFCaptureD3D/x64/Release/mt.command.1.tlog | Bin 0 -> 650 bytes
ARMFCaptureD3D/x64/Release/mt.read.1.tlog | Bin 0 -> 1006 bytes
ARMFCaptureD3D/x64/Release/mt.write.1.tlog | Bin 0 -> 448 bytes
ARMFCaptureD3D/x64/Release/options.obj | Bin 0 -> 653125 bytes
ARMFCaptureD3D/x64/Release/pcre.dll | Bin 0 -> 131072 bytes
ARMFCaptureD3D/x64/Release/pcre.exp | Bin 0 -> 39593 bytes
ARMFCaptureD3D/x64/Release/pcre.lib | Bin 0 -> 65226 bytes
ARMFCaptureD3D/x64/Release/pcre.pdb | Bin 0 -> 699392 bytes
ARMFCaptureD3D/x64/Release/preview.obj | Bin 0 -> 1001408 bytes
ARMFCaptureD3D/x64/Release/rc.command.1.tlog | Bin 0 -> 700 bytes
ARMFCaptureD3D/x64/Release/rc.read.1.tlog | Bin 0 -> 2756 bytes
ARMFCaptureD3D/x64/Release/rc.write.1.tlog | Bin 0 -> 378 bytes
ARMFCaptureD3D/x64/Release/vc100.pdb | Bin 0 -> 733184 bytes
ARMFCaptureD3D/x64/Release/winmain.obj | Bin 0 -> 1160966 bytes
485 files changed, 13551 insertions(+)
create mode 100644 ARMFCaptureD3D/ARAnalyse.cpp
create mode 100644 ARMFCaptureD3D/ARAnalyse.h
create mode 100644 ARMFCaptureD3D/ARMFCaptureD3D.aps
create mode 100644 ARMFCaptureD3D/ARMFCaptureD3D.h
create mode 100644 ARMFCaptureD3D/ARMFCaptureD3D.opensdf
create mode 100644 ARMFCaptureD3D/ARMFCaptureD3D.rc
create mode 100644 ARMFCaptureD3D/ARMFCaptureD3D.sdf
create mode 100644 ARMFCaptureD3D/ARMFCaptureD3D.sln
create mode 100644 ARMFCaptureD3D/ARMFCaptureD3D.sln.cache
create mode 100644 ARMFCaptureD3D/ARMFCaptureD3D.suo
create mode 100644 ARMFCaptureD3D/BufferLock.h
create mode 100644 ARMFCaptureD3D/Calibration.cpp
create mode 100644 ARMFCaptureD3D/Calibration.h
create mode 100644 ARMFCaptureD3D/ConfigFile/AntBlueMaize.jpg
create mode 100644 ARMFCaptureD3D/ConfigFile/ArrowHome.gif
create mode 100644 ARMFCaptureD3D/ConfigFile/ConfigFile.cpp
create mode 100644 ARMFCaptureD3D/ConfigFile/ConfigFile.h
create mode 100644 ARMFCaptureD3D/ConfigFile/ConfigFile.html
create mode 100644 ARMFCaptureD3D/ConfigFile/Makefile
create mode 100644 ARMFCaptureD3D/ConfigFile/README
create mode 100644 ARMFCaptureD3D/ConfigFile/Triplet.h
create mode 100644 ARMFCaptureD3D/ConfigFile/example.cpp
create mode 100644 ARMFCaptureD3D/ConfigFile/example.inp
create mode 100644 ARMFCaptureD3D/ConfigFile/main.css
create mode 100644 ARMFCaptureD3D/ConfigFile/test.inp
create mode 100644 ARMFCaptureD3D/ConfigFile/tester.cpp
create mode 100644 ARMFCaptureD3D/Debug/ARAnalyse.obj
create mode 100644 ARMFCaptureD3D/Debug/ARMFCaptureD3D.Build.CppClean.log
create mode 100644 ARMFCaptureD3D/Debug/ARMFCaptureD3D.exe
create mode 100644 ARMFCaptureD3D/Debug/ARMFCaptureD3D.exe.embed.manifest
create mode 100644 ARMFCaptureD3D/Debug/ARMFCaptureD3D.exe.embed.manifest.res
create mode 100644 ARMFCaptureD3D/Debug/ARMFCaptureD3D.exe.intermediate.manifest
create mode 100644 ARMFCaptureD3D/Debug/ARMFCaptureD3D.ilk
create mode 100644 ARMFCaptureD3D/Debug/ARMFCaptureD3D.lastbuildstate
create mode 100644 ARMFCaptureD3D/Debug/ARMFCaptureD3D.pdb
create mode 100644 ARMFCaptureD3D/Debug/ARMFCaptureD3D.res
create mode 100644 ARMFCaptureD3D/Debug/ARMFCaptureD3D.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/ARMFCaptureD3D_manifest.rc
create mode 100644 ARMFCaptureD3D/Debug/ARToolKitPlus.dll
create mode 100644 ARMFCaptureD3D/Debug/ARToolKitPlus.exp
create mode 100644 ARMFCaptureD3D/Debug/ARToolKitPlus.ilk
create mode 100644 ARMFCaptureD3D/Debug/ARToolKitPlus.lib
create mode 100644 ARMFCaptureD3D/Debug/ARToolKitPlus.pdb
create mode 100644 ARMFCaptureD3D/Debug/CL.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/CL.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/Calibration.obj
create mode 100644 ARMFCaptureD3D/Debug/ConfigFile.obj
create mode 100644 ARMFCaptureD3D/Debug/Ivy.bsc
create mode 100644 ARMFCaptureD3D/Debug/Ivy.dll
create mode 100644 ARMFCaptureD3D/Debug/Ivy.exp
create mode 100644 ARMFCaptureD3D/Debug/Ivy.ilk
create mode 100644 ARMFCaptureD3D/Debug/Ivy.lib
create mode 100644 ARMFCaptureD3D/Debug/Ivy.pdb
create mode 100644 ARMFCaptureD3D/Debug/MFCaptureD3D.exe
create mode 100644 ARMFCaptureD3D/Debug/MFCaptureD3D.lastbuildstate
create mode 100644 ARMFCaptureD3D/Debug/MFCaptureD3D.lib
create mode 100644 ARMFCaptureD3D/Debug/MFCaptureD3D.log
create mode 100644 ARMFCaptureD3D/Debug/MFCaptureD3D.unsuccessfulbuild
create mode 100644 ARMFCaptureD3D/Debug/ResolveAssemblyReference.cache
create mode 100644 ARMFCaptureD3D/Debug/cl.command.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/debug.obj
create mode 100644 ARMFCaptureD3D/Debug/link-cvtres.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link-cvtres.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.1424-cvtres.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.1424-cvtres.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.1424.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.1424.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.2360-cvtres.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.2360-cvtres.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.2360.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.2360.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.2364-cvtres.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.2364-cvtres.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.2364.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.2364.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.2468-cvtres.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.2468-cvtres.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.2468.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.2468.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.2948-cvtres.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.2948-cvtres.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.2948.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.2948.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.3132-cvtres.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.3132-cvtres.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.3132.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.3132.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.3244-cvtres.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.3244-cvtres.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.3244.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.3244.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.3672-cvtres.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.3672-cvtres.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.3672.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.3672.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.3720-cvtres.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.3720-cvtres.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.3720.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.3720.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.3844-cvtres.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.3844-cvtres.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.3844.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.3844.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.4036-cvtres.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.4036-cvtres.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.4036.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.4036.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.4200-cvtres.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.4200-cvtres.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.4200.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.4200.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.4460-cvtres.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.4460-cvtres.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.4460.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.4460.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.4716-cvtres.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.4716-cvtres.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.4716.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.4716.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.4948-cvtres.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.4948-cvtres.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.4948.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.4948.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.5368-cvtres.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.5368-cvtres.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.5368.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.5368.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.5624-cvtres.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.5624-cvtres.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.5624.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.5624.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.5656-cvtres.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.5656-cvtres.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.5656.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.5656.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.5752-cvtres.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.5752-cvtres.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.5752.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.5752.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.5868-cvtres.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.5868-cvtres.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.5868.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.5868.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.6132-cvtres.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.6132-cvtres.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.6132.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.6132.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.6264-cvtres.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.6264-cvtres.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.6264.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.6264.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.6468-cvtres.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.6468-cvtres.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.6468.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.6468.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.6716-cvtres.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.6716-cvtres.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.6716.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.6716.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.6724-cvtres.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.6724-cvtres.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.6724.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.6724.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.6772-cvtres.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.6772-cvtres.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.6772.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.6772.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.6844-cvtres.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.6844-cvtres.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.6844.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.6844.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.6928-cvtres.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.6928-cvtres.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.6928.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.6928.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.6968-cvtres.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.6968-cvtres.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.6968.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.6968.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.6996-cvtres.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.6996-cvtres.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.6996.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.6996.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.7096-cvtres.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.7096-cvtres.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.7096.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.7096.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.7232-cvtres.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.7232-cvtres.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.7232.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.7232.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.7240-cvtres.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.7240-cvtres.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.7240.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.7240.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.7416-cvtres.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.7416-cvtres.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.7416.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.7416.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.7960-cvtres.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.7960-cvtres.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.7960.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.7960.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.command.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/link.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/mt.command.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/mt.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/mt.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/options.obj
create mode 100644 ARMFCaptureD3D/Debug/pcre.bsc
create mode 100644 ARMFCaptureD3D/Debug/pcre.dll
create mode 100644 ARMFCaptureD3D/Debug/pcre.exp
create mode 100644 ARMFCaptureD3D/Debug/pcre.ilk
create mode 100644 ARMFCaptureD3D/Debug/pcre.lib
create mode 100644 ARMFCaptureD3D/Debug/pcre.pdb
create mode 100644 ARMFCaptureD3D/Debug/rc.command.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/rc.read.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/rc.write.1.tlog
create mode 100644 ARMFCaptureD3D/Debug/sgetopt.obj
create mode 100644 ARMFCaptureD3D/Debug/vc100.idb
create mode 100644 ARMFCaptureD3D/Debug/vc100.pdb
create mode 100644 ARMFCaptureD3D/MFCaptureD3D.aps
create mode 100644 ARMFCaptureD3D/MFCaptureD3D.sdf
create mode 100644 ARMFCaptureD3D/MFCaptureD3D.vcproj
create mode 100644 ARMFCaptureD3D/MFCaptureD3D.vcxproj
create mode 100644 ARMFCaptureD3D/MFCaptureD3D.vcxproj.filters
create mode 100644 ARMFCaptureD3D/MFCaptureD3D.vcxproj.user
create mode 100644 ARMFCaptureD3D/MinMaxAvg.cpp
create mode 100644 ARMFCaptureD3D/MinMaxAvg.h
create mode 100644 ARMFCaptureD3D/Release/ARMFCaptureD3D.exe
create mode 100644 ARMFCaptureD3D/Release/ARMFCaptureD3D.exe.intermediate.manifest
create mode 100644 ARMFCaptureD3D/Release/ARMFCaptureD3D.exp
create mode 100644 ARMFCaptureD3D/Release/ARMFCaptureD3D.lastbuildstate
create mode 100644 ARMFCaptureD3D/Release/ARMFCaptureD3D.lib
create mode 100644 ARMFCaptureD3D/Release/ARMFCaptureD3D.pdb
create mode 100644 ARMFCaptureD3D/Release/ARMFCaptureD3D.res
create mode 100644 ARMFCaptureD3D/Release/ARMFCaptureD3D.write.1.tlog
create mode 100644 ARMFCaptureD3D/Release/ARToolKitPlus.dll
create mode 100644 ARMFCaptureD3D/Release/ARToolKitPlus.exp
create mode 100644 ARMFCaptureD3D/Release/ARToolKitPlus.lib
create mode 100644 ARMFCaptureD3D/Release/CL.read.1.tlog
create mode 100644 ARMFCaptureD3D/Release/CL.write.1.tlog
create mode 100644 ARMFCaptureD3D/Release/Calibration.obj
create mode 100644 ARMFCaptureD3D/Release/ConfigFile.obj
create mode 100644 ARMFCaptureD3D/Release/MFCaptureD3D.log
create mode 100644 ARMFCaptureD3D/Release/cl.command.1.tlog
create mode 100644 ARMFCaptureD3D/Release/debug.obj
create mode 100644 ARMFCaptureD3D/Release/device.obj
create mode 100644 ARMFCaptureD3D/Release/link-cvtres.read.1.tlog
create mode 100644 ARMFCaptureD3D/Release/link-cvtres.write.1.tlog
create mode 100644 ARMFCaptureD3D/Release/link.command.1.tlog
create mode 100644 ARMFCaptureD3D/Release/link.read.1.tlog
create mode 100644 ARMFCaptureD3D/Release/link.write.1.tlog
create mode 100644 ARMFCaptureD3D/Release/mt.command.1.tlog
create mode 100644 ARMFCaptureD3D/Release/mt.read.1.tlog
create mode 100644 ARMFCaptureD3D/Release/mt.write.1.tlog
create mode 100644 ARMFCaptureD3D/Release/options.obj
create mode 100644 ARMFCaptureD3D/Release/preview.obj
create mode 100644 ARMFCaptureD3D/Release/rc.command.1.tlog
create mode 100644 ARMFCaptureD3D/Release/rc.read.1.tlog
create mode 100644 ARMFCaptureD3D/Release/rc.write.1.tlog
create mode 100644 ARMFCaptureD3D/Release/vc100.pdb
create mode 100644 ARMFCaptureD3D/Release/winmain.obj
create mode 100644 ARMFCaptureD3D/Setup/Release/Install ARIvy X64.msi
create mode 100644 ARMFCaptureD3D/Setup/Release/setup.exe
create mode 100644 ARMFCaptureD3D/Setup/Setup.vdproj
create mode 100644 ARMFCaptureD3D/UpgradeLog.XML
create mode 100644 ARMFCaptureD3D/UpgradeLog2.XML
create mode 100644 ARMFCaptureD3D/UpgradeLog3.XML
create mode 100644 ARMFCaptureD3D/_UpgradeReport_Files/UpgradeReport.css
create mode 100644 ARMFCaptureD3D/_UpgradeReport_Files/UpgradeReport.xslt
create mode 100644 ARMFCaptureD3D/_UpgradeReport_Files/UpgradeReport_Minus.gif
create mode 100644 ARMFCaptureD3D/_UpgradeReport_Files/UpgradeReport_Plus.gif
create mode 100644 ARMFCaptureD3D/data/Logitech_Notebook_Pro.cal
create mode 100644 ARMFCaptureD3D/data/One.cfg
create mode 100644 ARMFCaptureD3D/data/config.inp
create mode 100644 ARMFCaptureD3D/data/markerboard_480-499.cfg
create mode 100644 ARMFCaptureD3D/data/no_distortion.cal
create mode 100644 ARMFCaptureD3D/debug.cpp
create mode 100644 ARMFCaptureD3D/debug.h
create mode 100644 ARMFCaptureD3D/device.cpp
create mode 100644 ARMFCaptureD3D/device.h
create mode 100644 ARMFCaptureD3D/ipch/mfcaptured3d-28a9326a/armfcaptured3d-1ab7d59.ipch
create mode 100644 ARMFCaptureD3D/options.cpp
create mode 100644 ARMFCaptureD3D/options.h
create mode 100644 ARMFCaptureD3D/preview.cpp
create mode 100644 ARMFCaptureD3D/preview.h
create mode 100644 ARMFCaptureD3D/readme.txt
create mode 100644 ARMFCaptureD3D/resource.h
create mode 100644 ARMFCaptureD3D/ribbon1.mfcribbon-ms
create mode 100644 ARMFCaptureD3D/toolbar1.bmp
create mode 100644 ARMFCaptureD3D/winmain.cpp
create mode 100644 ARMFCaptureD3D/x64/Debug/ARAnalyse.obj
create mode 100644 ARMFCaptureD3D/x64/Debug/ARMFCaptureD3D.Build.CppClean.log
create mode 100644 ARMFCaptureD3D/x64/Debug/ARMFCaptureD3D.exe
create mode 100644 ARMFCaptureD3D/x64/Debug/ARMFCaptureD3D.exe.embed.manifest
create mode 100644 ARMFCaptureD3D/x64/Debug/ARMFCaptureD3D.exe.embed.manifest.res
create mode 100644 ARMFCaptureD3D/x64/Debug/ARMFCaptureD3D.exe.intermediate.manifest
create mode 100644 ARMFCaptureD3D/x64/Debug/ARMFCaptureD3D.exp
create mode 100644 ARMFCaptureD3D/x64/Debug/ARMFCaptureD3D.ilk
create mode 100644 ARMFCaptureD3D/x64/Debug/ARMFCaptureD3D.lastbuildstate
create mode 100644 ARMFCaptureD3D/x64/Debug/ARMFCaptureD3D.lib
create mode 100644 ARMFCaptureD3D/x64/Debug/ARMFCaptureD3D.pdb
create mode 100644 ARMFCaptureD3D/x64/Debug/ARMFCaptureD3D.res
create mode 100644 ARMFCaptureD3D/x64/Debug/ARMFCaptureD3D.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Debug/ARMFCaptureD3D_manifest.rc
create mode 100644 ARMFCaptureD3D/x64/Debug/ARToolKitPlus.dll
create mode 100644 ARMFCaptureD3D/x64/Debug/ARToolKitPlus.lib
create mode 100644 ARMFCaptureD3D/x64/Debug/CL.read.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Debug/CL.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Debug/Calibration.obj
create mode 100644 ARMFCaptureD3D/x64/Debug/ConfigFile.obj
create mode 100644 ARMFCaptureD3D/x64/Debug/Ivy.dll
create mode 100644 ARMFCaptureD3D/x64/Debug/Ivy.lib
create mode 100644 ARMFCaptureD3D/x64/Debug/MFCaptureD3D.Build.CppClean.log
create mode 100644 ARMFCaptureD3D/x64/Debug/MFCaptureD3D.lastbuildstate
create mode 100644 ARMFCaptureD3D/x64/Debug/MFCaptureD3D.lib
create mode 100644 ARMFCaptureD3D/x64/Debug/MFCaptureD3D.log
create mode 100644 ARMFCaptureD3D/x64/Debug/MFCaptureD3D.unsuccessfulbuild
create mode 100644 ARMFCaptureD3D/x64/Debug/MinMaxAvg.obj
create mode 100644 ARMFCaptureD3D/x64/Debug/ResolveAssemblyReference.cache
create mode 100644 ARMFCaptureD3D/x64/Debug/cl.command.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Debug/debug.obj
create mode 100644 ARMFCaptureD3D/x64/Debug/device.obj
create mode 100644 ARMFCaptureD3D/x64/Debug/link-cvtres.read.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Debug/link-cvtres.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Debug/link.3816-cvtres.read.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Debug/link.3816-cvtres.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Debug/link.3816.read.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Debug/link.3816.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Debug/link.command.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Debug/link.read.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Debug/link.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Debug/mt.command.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Debug/mt.read.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Debug/mt.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Debug/options.obj
create mode 100644 ARMFCaptureD3D/x64/Debug/pcre.dll
create mode 100644 ARMFCaptureD3D/x64/Debug/pcre.lib
create mode 100644 ARMFCaptureD3D/x64/Debug/preview.obj
create mode 100644 ARMFCaptureD3D/x64/Debug/rc.command.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Debug/rc.read.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Debug/rc.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Debug/vc100.idb
create mode 100644 ARMFCaptureD3D/x64/Debug/vc100.pdb
create mode 100644 ARMFCaptureD3D/x64/Debug/winmain.obj
create mode 100644 ARMFCaptureD3D/x64/Release/ARAnalyse.obj
create mode 100644 ARMFCaptureD3D/x64/Release/ARMFCaptureD3D.exe
create mode 100644 ARMFCaptureD3D/x64/Release/ARMFCaptureD3D.exe - Raccourci.lnk
create mode 100644 ARMFCaptureD3D/x64/Release/ARMFCaptureD3D.exe.intermediate.manifest
create mode 100644 ARMFCaptureD3D/x64/Release/ARMFCaptureD3D.exp
create mode 100644 ARMFCaptureD3D/x64/Release/ARMFCaptureD3D.lastbuildstate
create mode 100644 ARMFCaptureD3D/x64/Release/ARMFCaptureD3D.lib
create mode 100644 ARMFCaptureD3D/x64/Release/ARMFCaptureD3D.pdb
create mode 100644 ARMFCaptureD3D/x64/Release/ARMFCaptureD3D.res
create mode 100644 ARMFCaptureD3D/x64/Release/ARMFCaptureD3D.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/ARToolKitPlus.dll
create mode 100644 ARMFCaptureD3D/x64/Release/ARToolKitPlus.exp
create mode 100644 ARMFCaptureD3D/x64/Release/ARToolKitPlus.lib
create mode 100644 ARMFCaptureD3D/x64/Release/CL.1180.read.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.1180.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.1284.read.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.1284.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.1464.read.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.1464.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.2096.read.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.2096.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.2124.read.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.2124.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.3024.read.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.3024.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.3092.read.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.3092.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.3364.read.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.3364.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.3384.read.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.3384.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.3544.read.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.3544.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.3916.read.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.3916.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.3924.read.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.3924.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.4284.read.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.4284.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.4332.read.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.4332.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.4604.read.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.4604.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.4640.read.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.4640.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.5060.read.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.5060.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.5172.read.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.5172.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.5288.read.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.5288.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.5404.read.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.5404.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.5472.read.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.5472.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.5488.read.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.5488.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.5716.read.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.5716.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.5736.read.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.5736.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.5752.read.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.5752.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.5804.read.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.5804.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.5900.read.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.5900.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.5956.read.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.5956.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.6228.read.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.6228.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.6368.read.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.6368.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.6400.read.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.6400.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.6428.read.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.6428.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.6488.read.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.6488.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.6748.read.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.6748.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.7112.read.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.7112.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.7176.read.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.7176.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.7352.read.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.7352.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.7400.read.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.7400.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.748.read.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.748.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.8132.read.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.8132.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.8248.read.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.8248.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.8296.read.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.8296.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.8776.read.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.8776.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.8824.read.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.8824.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.8856.read.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.8856.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.8904.read.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.8904.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.9148.read.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.9148.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.read.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/CL.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/Calibration.obj
create mode 100644 ARMFCaptureD3D/x64/Release/ConfigFile.obj
create mode 100644 ARMFCaptureD3D/x64/Release/Ivy.dll
create mode 100644 ARMFCaptureD3D/x64/Release/Ivy.exp
create mode 100644 ARMFCaptureD3D/x64/Release/Ivy.lib
create mode 100644 ARMFCaptureD3D/x64/Release/MFCaptureD3D.log
create mode 100644 ARMFCaptureD3D/x64/Release/MinMaxAvg.obj
create mode 100644 ARMFCaptureD3D/x64/Release/cl.command.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/debug.obj
create mode 100644 ARMFCaptureD3D/x64/Release/device.obj
create mode 100644 ARMFCaptureD3D/x64/Release/link-cvtres.read.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/link-cvtres.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/link.command.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/link.read.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/link.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/mt.command.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/mt.read.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/mt.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/options.obj
create mode 100644 ARMFCaptureD3D/x64/Release/pcre.dll
create mode 100644 ARMFCaptureD3D/x64/Release/pcre.exp
create mode 100644 ARMFCaptureD3D/x64/Release/pcre.lib
create mode 100644 ARMFCaptureD3D/x64/Release/pcre.pdb
create mode 100644 ARMFCaptureD3D/x64/Release/preview.obj
create mode 100644 ARMFCaptureD3D/x64/Release/rc.command.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/rc.read.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/rc.write.1.tlog
create mode 100644 ARMFCaptureD3D/x64/Release/vc100.pdb
create mode 100644 ARMFCaptureD3D/x64/Release/winmain.obj
(limited to 'ARMFCaptureD3D')
diff --git a/ARMFCaptureD3D/ARAnalyse.cpp b/ARMFCaptureD3D/ARAnalyse.cpp
new file mode 100644
index 0000000..71b22b8
--- /dev/null
+++ b/ARMFCaptureD3D/ARAnalyse.cpp
@@ -0,0 +1,1244 @@
+
+
+#include "debug.h"
+#include
+
+#include "ConfigFile\ConfigFile.h"
+
+#include "ARAnalyse.h"
+extern char* narrow( const std::wstring& str );
+extern ConfigFile *g_config;
+extern std::wstring g_camera_name;
+extern int g_camera_instance;
+extern int g_ThresholdMin;
+extern int g_ThresholdMax;
+extern bool g_read_calibrationfile;
+
+// Filtrage regexp IVY !!! a mettre en concordance avec les SendMsg effectué !!!
+const char *ivy_filters[] = {"MarkerAdd", "MarkerMove", "MarkerMoveCalibrated", "MarkerRemove" };
+
+//-------------------------------------------------------------------
+// constructor
+//-------------------------------------------------------------------
+
+ARAnalyse::ARAnalyse() :
+ m_calibration(NULL),
+ m_tracker(NULL)
+{
+ MarkerMoveThreshold = 0.001;
+ MarkerAbsenceCount = 10;
+ MarkerWidth = 20;
+ m_calibrated = false;
+ m_calibration_enabled = false;
+ FrameCount = 0;
+ bus = NULL;
+ m_gray = NULL;
+ m_blur0 = NULL;
+ m_blur1 = NULL;
+ DownSample = 8;
+ BlurPass = 2;
+ Display = ARAnalyse::Diff;
+ filter = ARAnalyse::FMoyen;
+
+ MarkerWidth = g_config->read("MarkerWidth");
+ MarkerMoveThreshold = g_config->read("MarkerMoveThreshold");
+ MarkerAbsenceCount = g_config->read("MarkerAbsenceCount");
+ MarkerSeekingThreshold = g_config->read("MarkerSeekingThreshold");
+ CameraParameterFile = g_config->read("CameraParameterFile","data\\no_distortion.cal");
+ MarkerSetConfigFile = g_config->read("MarkerSetConfigFile", "data\\One.cfg");
+ CalibrationFile = g_config->read("CalibrationFile", "data/savedCalibration.dat");
+ MarkerBorderPercentage = g_config->read("MarkerBorderPercentage",0.125f);
+ MarkerSeekingThreshold = g_config->read("MarkerSeekingThreshold",160);
+ MarkerType = (ARToolKitPlus::MARKER_MODE) g_config->read("MarkerTraditionalOrSimpleOrBCH",ARToolKitPlus::MARKER_ID_BCH);
+
+ m_calibration = new Calibration(1.0, 1.0);
+ // intialize Calibration
+ int id;
+ id = g_config->read("CalibrationID_TopLeft");
+ m_IdToCorner[id] = Calibration::TopLeft;
+ m_calibration_ids.insert( id );
+ id = g_config->read("CalibrationID_TopRight");
+ m_IdToCorner[id] = Calibration::TopRight;
+ m_calibration_ids.insert( id );
+ id = g_config->read("CalibrationID_BottomLeft");
+ m_IdToCorner[id] = Calibration::BottomLeft;
+ m_calibration_ids.insert( id );
+ id = g_config->read("CalibrationID_BottomRight");
+ m_IdToCorner[id] = Calibration::BottomRight;
+ m_calibration_ids.insert( id );
+ if ( g_read_calibrationfile )
+ {
+ m_calibrated = m_calibration->RestoreCalibration( CalibrationFile );
+ }
+}
+
+//-------------------------------------------------------------------
+// destructor
+//-------------------------------------------------------------------
+
+ARAnalyse::~ARAnalyse()
+{
+ if ( m_calibration ) delete m_calibration;
+ if ( bus )
+ {
+ bus->stop();
+ delete bus;
+ }
+}
+void ARAnalyse::IvyInit(const char *domain)
+{
+ // start Ivy
+ bus = new Ivy( "ARIvy", NULL, NULL );
+ bus->SetFilter( sizeof( ivy_filters ) /sizeof( char *), ivy_filters );
+ bus->start(domain);
+}
+bool ARAnalyse::Calibrate( )
+{
+ if ( m_calibration )
+ m_calibrated = m_calibration->Calibrate();
+ return m_calibrated;
+}
+void ARAnalyse::SaveCalibration( )
+{
+ if ( m_calibration )
+ m_calibration->SaveCalibration(CalibrationFile);
+}
+void ARAnalyse::RestoreCalibration( )
+{
+ if ( m_calibration )
+ m_calibrated = m_calibration->RestoreCalibration(CalibrationFile);
+}
+bool ARAnalyse::ToggleAutoThreshold()
+{
+ if ( m_tracker->isAutoThresholdActivated() )
+ {
+ // try to set manually
+ if ( MarkerSeekingThreshold > 0 )
+ {
+ m_tracker->activateAutoThreshold( false );
+ m_tracker->setThreshold( MarkerSeekingThreshold );
+ }
+ }
+ else
+ {
+ m_tracker->activateAutoThreshold( true );
+ }
+ return m_tracker->isAutoThresholdActivated();
+}
+
+bool ARAnalyse::IsCalibrationID( int ident )
+{
+ return m_calibration_ids.find( ident ) != m_calibration_ids.end();
+}
+
+bool ARAnalyse::InitialiseTracker( int width, int height, int sample_size)
+{
+ first_calibration_done = false;
+ camera = narrow( g_camera_name );
+ int pixel_size = sample_size / width /height;
+ m_width = width;
+ m_height = height;
+ nb_pixel = width * height;
+ m_gray = new pixel_type[nb_pixel];
+ // on alloue au max pur eviter de se prendre la tete avec le malloc free , et le changement de DownSample
+ m_blur0 = new pixel_type[nb_pixel /*width /DownSample * height /DownSample*/];
+ m_blur1 = new pixel_type[nb_pixel /*width /DownSample * height /DownSample*/];
+ m_filter_h = new pixel_type[nb_pixel /*width /DownSample * height /DownSample*/];
+ m_filter_v = new pixel_type[nb_pixel /*width /DownSample * height /DownSample*/];
+
+ nb_images = 5;
+ m_sum = new float[nb_pixel];
+ for ( int i = 0; i < nb_pixel ; i++ )
+ {
+ m_sum[i] = 0.0;
+ }
+ m_images = new float*[nb_images];
+ for ( int i = 0 ; i < nb_images; i++ )
+ m_images[i] = new float[nb_pixel];
+ m_first_image = 0;
+ m_last_image = 0;
+
+
+ if ( m_tracker ) delete m_tracker;
+ // create a tracker that does:
+ // - 6x6 sized marker images (required for binary markers)
+ // - samples at a maximum of 6x6
+ // - works with luminance (gray) images
+ // - can load a maximum of 0 non-binary pattern
+ // - can detect a maximum of 8 patterns in one image
+ m_tracker = new TrackerMultiMarker(width, height, 4096, 6, 6, 6, 0);
+ // poor man pixel format chooser
+ switch ( pixel_size )
+ {
+ case 1:
+ m_tracker->setPixelFormat(ARToolKitPlus::PIXEL_FORMAT_LUM);
+ break;
+ case 2:
+ m_tracker->setPixelFormat(ARToolKitPlus::PIXEL_FORMAT_YUY2);
+ break;
+ case 3:
+ m_tracker->setPixelFormat(ARToolKitPlus::PIXEL_FORMAT_RGB);
+ break;
+ }
+ // load a camera file.
+ if (!m_tracker->init(CameraParameterFile.c_str(),
+ MarkerSetConfigFile.c_str(),
+ 0.0f, 3000.0f))
+ {
+ DBGMSG(TEXT("ERROR: InitialiseTracker() failed\n"));
+ delete m_tracker;
+ m_tracker = NULL;
+ return false;
+ }
+
+ //m_tracker->getCamera()->printSettings();
+ m_tracker->setNumAutoThresholdRetries(2);
+ //if ( MarkerSeekingThreshold > 0 )
+ //{
+ // m_tracker->activateAutoThreshold( false );
+ // m_tracker->setThreshold( MarkerSeekingThreshold );
+ //}
+ //else
+ //{
+ m_tracker->activateAutoThreshold( true );
+ //}
+ m_tracker->setImageProcessingMode(ARToolKitPlus::IMAGE_FULL_RES);
+ m_tracker->setPoseEstimator(ARToolKitPlus::POSE_ESTIMATOR_RPP);
+ //m_tracker->setPoseEstimator(ARToolKitPlus::POSE_ESTIMATOR_ORIGINAL_CONT);
+ // the marker in the BCH test image has a thiner border...
+ m_tracker->setBorderWidth(MarkerBorderPercentage);
+
+ // set a threshold. we could also activate automatic thresholding
+ //m_tracker->setThreshold(MarkerSeekingThreshold);
+
+ // let's use lookup-table undistortion for high-speed
+ // note: LUT only works with images up to 1024x1024
+ //m_tracker->setUndistortionMode(ARToolKitPlus::UNDIST_LUT);
+ m_tracker->setUndistortionMode(ARToolKitPlus::UNDIST_NONE);
+ m_tracker->setUseDetectLite(false);
+ // switch to simple ID based markers
+ // use the tool in tools/IdPatGen to generate markers
+ m_tracker->setMarkerMode(MarkerType);
+ // HULL mode
+ m_tracker->setHullMode(ARToolKitPlus::HULL_FULL);
+
+ // do the OpenGL camera setup
+ //glMatrixMode(GL_PROJECTION)
+ //glLoadMatrixf(m_tracker->getProjectionMatrix());
+
+ return true;
+}
+
+void ARAnalyse::Analyse( double SampleTime, const unsigned char * cameraBuffer, int size )
+{
+ static double StartTime = -1;
+ static double LastFrameTime = 0;
+
+
+ extern HWND g_hTrack; // Quick & Dirty !!!!
+
+ double delay = 0;
+ if ( StartTime < 0 )
+ {
+ StartTime = SampleTime;
+ LastFrameTime = SampleTime;
+ }
+ else
+ {
+ delay = SampleTime - LastFrameTime;
+ }
+ FrameCount++;
+ if ( FrameCount > 30 ) // skip first frames in calc avg Wait first Seconds video
+ {
+ frame_per_seconds.SetValue( FrameCount / ( SampleTime - StartTime ) );
+ frame_delay.SetValue( delay );
+ }
+ LastFrameTime = SampleTime;
+
+ if ( !m_tracker) return;
+ // here we go, just one call to find the camera pose
+ int numDetected = m_tracker->calc(cameraBuffer);
+
+ //DBGMSG(TEXT("\n tracker Threshold %d \n"), m_tracker->getThreshold());
+ if ( m_tracker->isAutoThresholdActivated() && FrameCount %10 == 0 )
+ {
+ SendMessage(g_hTrack, TBM_SETPOS,
+ (WPARAM) TRUE, // redraw flag
+ (LPARAM) m_tracker->getThreshold());
+ }
+ // use the result of calc() to setup the OpenGL transformation
+ //glMatrixMode(GL_MODELVIEW)
+ //glLoadMatrixf(m_tracker->getModelViewMatrix());
+ //if ( numDetected )
+ // DBGMSG(TEXT("\n%d good Markers found and used for pose estimation.\n"), numDetected);
+#ifdef DUMP_MATRIX
+ if ( numDetected )
+ {
+ DBGMSG(TEXT("Pose-Matrix:\n "));
+ const ARFloat*matrix = m_tracker->getModelViewMatrix();
+ if ( matrix )
+ for (int i = 0; i < 16; i++)
+ DBGMSG(TEXT("%.2f %s"), matrix[i], (i % 4 == 3) ? TEXT("\n ") : TEXT(" "));
+ }
+#endif
+ std::set new_ids;
+ confidence.Raz();
+
+ for (int i = 0; i < numDetected; i++) {
+ ARToolKitPlus::ARMarkerInfo markerInfo = m_tracker->getDetectedMarker(i);
+
+ if (new_ids.find(markerInfo.id) != new_ids.end()) {
+ DBGMSG(TEXT("One id for one marker please!!\n"));
+ continue;
+ }
+ // calculate min max confidence
+ confidence.SetValue( markerInfo.cf );
+
+ new_ids.insert(markerInfo.id);
+
+ if (markers.find(markerInfo.id) == markers.end() )
+ {
+ // Adding new marker
+ markers[markerInfo.id].id = markerInfo.id;
+ DBGMSG(TEXT("MarkerAdd cam=%s_%d id=%d\n"), g_camera_name.c_str(), g_camera_instance, markerInfo.id);
+ // filtrage des ID de calibration
+ if ( bus && !IsCalibrationID(markerInfo.id) ) bus->SendMsg("MarkerAdd cam=%s_%d id=%d", camera, g_camera_instance, markerInfo.id);
+ }
+ MyMakerInfo & info = markers[markerInfo.id];
+ info.id = markerInfo.id;
+ info.absent = 0;
+ info.confidence = markerInfo.cf;
+ info.area = markerInfo.area;
+ info.dir = markerInfo.dir;
+
+ info.time = SampleTime - StartTime;
+ ARFloat center[2] ;
+ ARFloat matrix[3][4];
+ center[0] = 0.0f;
+ center[1] = 0.0f;
+ //ARFloat retTransMat = m_tracker->arGetTransMat(tracker, markerInfoPtr, center, (ARFloat)Properties.Settings.Default.MarkerWidth, matrix);
+ ARFloat retTransMat = m_tracker->arGetTransMatCont( &markerInfo, info.prev_matrix, center, (ARFloat)MarkerWidth, matrix);
+ //ARFloat retTransMat = m_tracker->rppGetTransMat(tracker, markerInfoPtr, center, (ARFloat)Properties.Settings.Default.MarkerWidth, matrix);
+ if (retTransMat < 0)
+ {
+ DBGMSG(TEXT("Marker Skip id={0} bad transfrm{1}\n"), info.id, retTransMat);
+ continue;
+ }
+ memcpy(info.prev_matrix, matrix, sizeof(matrix));
+ double dx = info.x - markerInfo.pos[0];
+ double dy = info.y - markerInfo.pos[1];
+ double dist = dx*dx + dy*dy; // Square Length distance
+
+ info.x = markerInfo.pos[0];
+ info.y = markerInfo.pos[1];
+ if ( dist >= MarkerMoveThreshold)
+ {
+ DBGMSG(TEXT("MarkerMove cam=%s_%d id=%d time=%.03f confidence=%.03f area=%d dir=%d x=%.03f y=%.03f distance=%.03f \n"),
+ g_camera_name.c_str(), g_camera_instance, info.id, info.time, info.confidence, info.area, info.dir, info.x, info.y, dist);
+ if ( bus && !IsCalibrationID(markerInfo.id))
+ bus->SendMsg("MarkerMove cam=%s_%d id=%d time=%.03f confidence=%.03f area=%d dir=%d x=%.03f y=%.03f distance=%.03f",
+ camera, g_camera_instance, info.id, info.time, info.confidence, info.area, info.dir, info.x, info.y, dist);
+ if (m_calibrated)
+ {
+ double cal_x, cal_y;
+ m_calibration->translateCoords(info.x, info.y, &cal_x, &cal_y);
+ DBGMSG(TEXT("MarkerMoveCalibrated cam=%s_%d id=%d time=%.03f confidence=%.03f area=%d dir=%d x=%.03f y=%.03f\n"), g_camera_name.c_str(), g_camera_instance, info.id, info.time, info.confidence, info.area, info.dir, cal_x, cal_y);
+ if ( bus && !IsCalibrationID(markerInfo.id))
+ bus->SendMsg("MarkerMoveCalibrated cam=%s_%d id=%d time=%.03f confidence=%.03f area=%d dir=%d x=%.03f y=%.03f", camera, g_camera_instance, info.id, info.time, info.confidence, info.area, info.dir, cal_x, cal_y);
+
+ }
+ }
+
+ }
+ // remove OLD markers
+ std::set old_ids;
+ for (MarkersMap::iterator iter = markers.begin(); iter != markers.end(); iter++)
+ {
+ int id = iter->first;
+ if ( new_ids.find( id ) == new_ids.end() )
+ old_ids.insert( id );
+ }
+ for (std::set::iterator iter = old_ids.begin(); iter != old_ids.end(); iter++)
+ {
+ int id = *iter;
+ markers[id].absent += 1;
+ if ( markers[id].absent > MarkerAbsenceCount)
+ {
+ markers.erase(id);
+ DBGMSG(TEXT("Marker Remove cam=%s_%d id=%d\n"), g_camera_name.c_str(), g_camera_instance, id);
+ if ( bus && !IsCalibrationID(id)) bus->SendMsg("MarkerRemove cam=%s_%d id=%d", camera, g_camera_instance, id);
+ }
+ }
+ /*if (titleText.Equals("")) {
+ titleText ="Markers with ID \""
+ +String.Join(", ", new_ids.Select(id => id.ToString("000")).ToArray())
+ +"\" are found!!";
+ }*/
+
+
+
+ // calibration point
+ m_calibration_enabled = false;
+ if (includes(new_ids.begin(), new_ids.end(), m_calibration_ids.begin(), m_calibration_ids.end() ))
+ {
+ for (std::set::iterator iter = m_calibration_ids.begin(); iter != m_calibration_ids.end() ; iter++)
+ {
+ int id = *iter;
+ MyMakerInfo marker = markers[id];
+ m_calibration->SetCalibrationPoint(m_IdToCorner[id], marker.x, marker.y);
+ }
+ //all calibration points OK
+ m_calibration_enabled = true;
+ if ( !first_calibration_done )
+ {
+ first_calibration_done = Calibrate();
+ m_calibrated = first_calibration_done;
+ }
+
+ }
+
+
+ bool showConfig = false;
+
+ if (showConfig) {
+ const ARToolKitPlus::ARMultiMarkerInfoT *artkpConfig = m_tracker->getMultiMarkerConfig();
+ DBGMSG(TEXT("%d markers defined in multi marker cfg\n"), artkpConfig->marker_num);
+
+ printf("marker matrices:\n");
+ for (int multiMarkerCounter = 0; multiMarkerCounter < artkpConfig->marker_num; multiMarkerCounter++) {
+ DBGMSG(TEXT("marker %d, id %d:\n"), multiMarkerCounter, artkpConfig->marker[multiMarkerCounter].patt_id);
+ for (int row = 0; row < 3; row++) {
+ for (int column = 0; column < 4; column++)
+ DBGMSG(TEXT("%.2f "), artkpConfig->marker[multiMarkerCounter].trans[row][column]);
+ DBGMSG(TEXT("\n"));
+ }
+ }
+ }
+}
+
+#define MAX(a,b) ((a) > (b) ? (a) : (b))
+#define MIN(a,b) ((a) < (b) ? (a) : (b))
+static void RGB2HSL(unsigned char * rgb, double& h, double& s, double& l)
+ {
+
+ double r = (double)rgb[0] / 255.0;
+ double g = (double)rgb[1] / 255.0;
+ double b = (double)rgb[2] / 255.0;
+ double v;
+ double m;
+ double vm;
+ double r2, g2, b2;
+
+ h = 0; // default to black
+ s = 0;
+ l = 0;
+
+ v = MAX(r, g);
+ v = MAX(v, b);
+ m = MIN(r, g);
+ m = MIN(m, b);
+ l = (m + v) / 2.0;
+ if (l <= 0.0)
+ {
+ return;
+ }
+
+ vm = v - m;
+ s = vm;
+ if (s > 0.0)
+ {
+ s /= (l <= 0.5) ? (v + m) : (2.0 - v - m);
+ }
+ else
+ {
+ return;
+ }
+
+ r2 = (v - r) / vm;
+ g2 = (v - g) / vm;
+ b2 = (v - b) / vm;
+ if (r == v)
+ {
+ h = (g == m ? 5.0 + b2 : 1.0 - g2);
+ }
+
+ else if (g == v)
+ {
+ h = (b == m ? 1.0 + r2 : 3.0 - b2);
+ }
+ else
+ {
+ h = (r == m ? 3.0 + g2 : 5.0 - r2);
+ }
+ h /= 6.0;
+ }
+int CircularDistance(int index1, int index2, int steps)
+ { //circular distance
+ int dist = abs(index1 - index2);
+ return MIN(dist, abs(dist - steps));
+ }
+#ifdef TRANSFORM_COLOR
+ void ARAnalyse::Transform( unsigned char * cameraBuffer, int size, bool moyen)
+ {
+ float min = FLT_MAX;
+ float max = FLT_MIN;
+ pixel_type *dst = m_blur0;
+ // Gray Image
+ {
+ for ( int i = 0; i < nb_pixel ; i++ )
+ {
+
+ unsigned char * pixel = &cameraBuffer[i*3];
+ value_type val = pixel[0] * 0.3 + pixel[1] * 0.59 + pixel[2] * 0.11;
+ m_gray[i] = val;
+ {
+ if ( val > max )
+ max = val;
+ else if ( val < min )
+ min = val;
+ }
+ if ( !moyen )
+ m_sum[i] = 0;
+ }
+ float a = 1.0;
+ float b = 0.0;
+ float c = (max - min);
+ if ( c != 0.0)
+ {
+ a = 1.0 / c;
+ b = - min / c;
+ }
+ a *= 255.0;
+ b *= 255.0;
+ #pragma omp parallel for
+ for ( int i = 0; i < nb_pixel ; i++ )
+ {
+ m_gray[i] = m_gray[i] * a + b;
+ }
+ // Image moyenne
+ if ( moyen )
+ CalcMoyen();
+ }
+
+ const int steps = 10;
+ const int chromaHistoLength = steps +1;
+
+ int chromaHisto[chromaHistoLength];
+ double hue[1920];
+
+ // chroma histogram 10 steps
+ // find the 2 max
+ //if the 2 max> 1 the threashold = min (2 max) + (max2 - max1)/2
+
+ //Horizontal line
+ for (int y = 0; y < m_height; y++)
+ {
+ //Find min max mean median
+ for (int i = 0; i < chromaHistoLength; i++)
+ chromaHisto[i] = 0;
+ for (int x = 0; x < m_width; x++)
+ {
+ long index = (x + y * m_width);
+ unsigned char * pixel = &cameraBuffer[index*3];
+ double h,s,l;
+ RGB2HSL( pixel, h,s,l );
+ hue[x] = h;
+ int histIndexChroma = (int)(h * steps);
+ chromaHisto[histIndexChroma]++;
+ }
+
+ //Find the two max
+ int max1 = -1;
+ int chroma1 = -1;
+ int max2 = -1;
+ int chroma2 = -1;
+
+ //Find max1
+ for (int i = 0; i < chromaHistoLength; i++)
+ {
+ if ((chromaHisto[i] > max1) && (chromaHisto[i] != 0))
+ {
+ max1 = chromaHisto[i];
+ chroma1 = i;
+ }
+ }
+ //find max2
+ for (int i = 0; i < chromaHistoLength; i++)
+ {
+ if (CircularDistance(i, chroma1, steps) > (steps / 3))
+ if ((chromaHisto[i] > max2) && (chromaHisto[i] != 0))
+ {
+ max2 = chromaHisto[i];
+ chroma2 = i;
+ }
+ }
+
+ int peak = chroma1;
+ if ((max1 != -1) && (max2 != -1) && (chromaHisto[chroma2] > chromaHisto[chroma1])) peak = chroma2;
+ double delta = 3;
+
+ //binaries
+ if ((max1 != -1) && (max2 != -1)) //found a max1 and max 2 ?
+ {
+ for (int x = 0; x < m_width; x++)
+ {
+ int index = (x + y * m_width);
+ int histIndexChroma = (int)(hue[x] * steps);
+ if ( CircularDistance(histIndexChroma, peak, steps) < delta)
+ dst[index] = 255; //White
+ else
+ dst[index] = 0; //Black
+ }
+
+ }
+ else
+ for (int x = 0; x < m_width; x++)
+ {
+ int index = (x + y * m_width);
+ dst[index] = 127.0f; //no relevant histogram
+ }
+ }
+
+ switch ( Display )
+ {
+ case ARAnalyse::GrayScale:
+ DisplayGrayScale(cameraBuffer, m_gray );
+ break;
+ case ARAnalyse::Blur:
+ DisplayBlur(cameraBuffer, dst );
+ break;
+ case ARAnalyse::Diff:
+ DisplayDiff(cameraBuffer, dst );
+ break;
+ case ARAnalyse::Threshold:
+ DisplayThreshold(cameraBuffer, dst );
+ break;
+ case ARAnalyse::Moyen:
+ DisplayMoyen(cameraBuffer, NULL );
+ break;
+ }
+
+ }
+
+
+#endif
+#ifdef TRANSFORM_HUE
+void ARAnalyse::Transform( unsigned char * cameraBuffer, int size, bool moyen)
+{
+ pixel_type *src;
+ pixel_type *dst;
+ float min = FLT_MAX;
+ float max = FLT_MIN;
+ //#pragma omp parallel //default(none) shared (cameraBuffer,pixel_size, max, min )
+ {
+ //#pragma omp parallel for
+ for ( int i = 0; i < nb_pixel ; i++ )
+ {
+ unsigned char * pixel = &cameraBuffer[i*3];
+ value_type rgb_min = MIN(pixel[0], pixel[1], pixel[2]);
+ value_type rgb_max = MAX(pixel[0], pixel[1], pixel[2]);
+
+ value_type val = pixel[0] * 0.3 + pixel[1] * 0.59 + pixel[2] * 0.11;
+ //
+ //if ( pixel[0] > pixel[1] && pixel[0] > pixel[2] )
+ // val = 255;
+ //if ( pixel[2] > pixel[0] && pixel[2] > pixel[1] )
+ // val = 0;
+ //m_gray[i] = val;
+
+ /* Compute hue */
+ //value_type hue;
+ //if (rgb_max == pixel[0]) {
+ // hue = 0 + 43*(pixel[1] - pixel[2])/(rgb_max - rgb_min);
+ //} else if (rgb_max == pixel[1]) {
+ // hue = 85 + 43*(pixel[2] - pixel[0])/(rgb_max - rgb_min);
+ //} else /* rgb_max == rgb.b */ {
+ // hue = 171 + 43*(pixel[0] - pixel[1])/(rgb_max - rgb_min);
+ //}
+ double h,s,l;
+ RGB2HSL( pixel, h,s,l );
+ m_gray[i] = h * 255.0;
+ //#pragma omp critical
+ {
+ if ( val > max )
+ max = val;
+ else
+ if ( val < min )
+ min = val;
+ }
+ if ( !moyen )
+ m_sum[i] = 0;
+ }
+
+ float a = 1.0;
+ float b = 0.0;
+ float c = (max - min);
+ if ( c != 0.0)
+ {
+ a = 1.0 / c;
+ b = - min / c;
+ }
+ a *= 255.0;
+ b *= 255.0;
+ #pragma omp parallel for
+ for ( int i = 0; i < nb_pixel ; i++ )
+ {
+ m_gray[i] = m_gray[i] * a + b;
+ }
+ }
+ if ( moyen )
+ CalcMoyen();
+ // Down sample
+ int width = m_width / DownSample;
+ int height = m_height / DownSample;
+
+ #pragma omp parallel //default(none) shared (width,height)
+ {
+ #pragma omp parallel for
+ for ( int y = 0; y < height ; y++ )
+ {
+ //#pragma omp for
+ for ( int x = 0; x < width ; x++ )
+ {
+ long yy = y * width + x;
+ value_type val = 0;
+ for ( int i = 0 ; i < DownSample ; i++ )
+ for ( int j = 0; j < DownSample ; j++ )
+ {
+ int index = (y*DownSample+i) * m_width + x*DownSample+j;
+ val += m_gray[index];
+ }
+ val /= DownSample*DownSample;
+ //assert( val <= 255 );
+ m_blur0[yy] = val;
+ m_blur1[yy] = val;
+ }
+ }
+ }
+ // blur
+ dst = m_blur0;
+#define BLUR
+#ifdef BLUR
+ #pragma omp parallel //default(none) shared (width,height,src,dst)
+ {
+
+ static const float moyen[] = {
+ 1/9.0,1/9.0,1/9.0,
+ 1/9.0,1/9.0,1/9.0,
+ 1/9.0,1/9.0,1/9.0
+ };
+ static const float laplacien4[] = {
+ 0,-1,0,
+ -1,4,-1,
+ 0,-1,0
+ };
+
+ static const float laplacien8[] = {
+ -1,-1,-1,
+ -1,8,-1,
+ -1,-1,-1
+ };
+
+ static const float laplaciend[] = {
+ 1,-2,1,
+ -2,4,-2,
+ 1,-2,1
+ };
+
+ static const float sobelv[] = {
+ 1,0,-1,
+ 2,0,-2,
+ 1,0,-1
+ };
+ static const float sobelh[] = {
+ 1,2,1,
+ 0,0,0,
+ -1,2,-1
+ };
+
+ static const float prewittv[] = {
+ 1,0,-1,
+ 1,0,-1,
+ 1,0,-1
+ };
+ static const float prewitth[] = {
+ 1,1,1,
+ 0,0,0,
+ -1,-1,-1
+ };
+ //5x5 Gaussian filter
+ static const float gaussian[] = {
+ 2/159.0, 4/159.0, 5/159.0, 4/159.0, 2/159.0,
+ 4/159.0, 9/159.0, 12/159.0, 9/159.0, 4/159.0,
+ 5/159.0, 12/159.0, 15/159.0, 12/159.0, 5/159.0,
+ 4/159.0, 9/159.0, 12/159.0, 9/159.0, 4/159.0,
+ 2/159.0, 4/159.0, 5/159.0, 4/159.0, 2/159.0
+ };
+ for ( int pass = 0 ; pass < BlurPass ; pass++ )
+ {
+ if ( (pass & 1) ==0 )
+ {
+ src = m_blur0;
+ dst = m_blur1;
+ }
+ else
+ {
+ src = m_blur1;
+ dst = m_blur0;
+ }
+ switch ( filter )
+ {
+ case FMoyen:
+ Filter( moyen,3, src, dst );
+ break;
+ case FLaplacien4:
+ Filter( laplacien4,3, src, dst );
+ break;
+ case FLaplacien8:
+ Filter( laplacien8, 3, src, dst );
+ break;
+ case FLaplaciend:
+ Filter( laplaciend, 3, src, dst );
+ break;
+ case FSobel:
+ Filter( sobelv, 3, src, m_filter_v );
+ Filter( sobelh, 3, src, m_filter_h );
+ CombineFilter( m_filter_v, m_filter_h, dst );
+ break;
+ case FPrewitt:
+ Filter( prewittv, 3, src, m_filter_v );
+ Filter( prewitth, 3, src, m_filter_h );
+ CombineFilter( m_filter_v, m_filter_h, dst );
+ case FGaussian:
+ Filter( gaussian, 5, src, dst );
+ break;
+ }
+
+ }
+ }
+#endif
+ switch ( Display )
+ {
+ case ARAnalyse::GrayScale:
+ DisplayGrayScale(cameraBuffer, dst );
+ break;
+ case ARAnalyse::Blur:
+ DisplayBlur(cameraBuffer, dst );
+ break;
+ case ARAnalyse::Diff:
+ DisplayDiff(cameraBuffer, dst );
+ break;
+ case ARAnalyse::Threshold:
+ DisplayThreshold(cameraBuffer, dst );
+ break;
+ case ARAnalyse::Moyen:
+ DisplayMoyen(cameraBuffer, dst );
+ break;
+ }
+
+}
+#endif
+#define GRAY
+#ifdef GRAY
+// Gray scale & threshold
+void ARAnalyse::Transform( unsigned char * cameraBuffer, int size, bool moyen)
+{
+ pixel_type *src;
+ pixel_type *dst;
+ float min = FLT_MAX;
+ float max = FLT_MIN;
+ //#pragma omp parallel //default(none) shared (cameraBuffer,pixel_size, max, min )
+ {
+ //#pragma omp parallel for
+ for ( int i = 0; i < nb_pixel ; i++ )
+ {
+ unsigned char * pixel = &cameraBuffer[i*3];
+ value_type val = pixel[0] * 0.3 + pixel[1] * 0.59 + pixel[2] * 0.11;
+ m_gray[i] = val ;
+ //#pragma omp critical
+ {
+ if ( val > max )
+ max = val;
+ else
+ if ( val < min )
+ min = val;
+ }
+ if ( !moyen )
+ m_sum[i] = 0;
+ }
+
+ float a = 1.0;
+ float b = 0.0;
+ float c = (max - min);
+ if ( c != 0.0)
+ {
+ a = 1.0 / c;
+ b = - min / c;
+ }
+ a *= 255.0;
+ b *= 255.0;
+ #pragma omp parallel for
+ for ( int i = 0; i < nb_pixel ; i++ )
+ {
+ m_gray[i] = m_gray[i] * a + b;
+ }
+ }
+ if ( moyen )
+ CalcMoyen();
+ // Down sample
+ int width = m_width / DownSample;
+ int height = m_height / DownSample;
+
+ #pragma omp parallel //default(none) shared (width,height)
+ {
+ #pragma omp parallel for
+ for ( int y = 0; y < height ; y++ )
+ {
+ //#pragma omp for
+ for ( int x = 0; x < width ; x++ )
+ {
+ long yy = y * width + x;
+ value_type val = 0;
+ for ( int i = 0 ; i < DownSample ; i++ )
+ for ( int j = 0; j < DownSample ; j++ )
+ {
+ int index = (y*DownSample+i) * m_width + x*DownSample+j;
+ val += m_gray[index];
+ }
+ val /= DownSample*DownSample;
+ //assert( val <= 255 );
+ m_blur0[yy] = val;
+ m_blur1[yy] = val;
+ }
+ }
+ }
+ // blur
+ dst = m_blur0;
+#define BLUR
+#ifdef BLUR
+ #pragma omp parallel //default(none) shared (width,height,src,dst)
+ {
+
+ static const float moyen[] = {
+ 1/9.0,1/9.0,1/9.0,
+ 1/9.0,1/9.0,1/9.0,
+ 1/9.0,1/9.0,1/9.0
+ };
+ static const float laplacien4[] = {
+ 0,-1,0,
+ -1,4,-1,
+ 0,-1,0
+ };
+
+ static const float laplacien8[] = {
+ -1,-1,-1,
+ -1,8,-1,
+ -1,-1,-1
+ };
+
+ static const float laplaciend[] = {
+ 1,-2,1,
+ -2,4,-2,
+ 1,-2,1
+ };
+
+ static const float sobelv[] = {
+ 1,0,-1,
+ 2,0,-2,
+ 1,0,-1
+ };
+ static const float sobelh[] = {
+ 1,2,1,
+ 0,0,0,
+ -1,2,-1
+ };
+
+ static const float prewittv[] = {
+ 1,0,-1,
+ 1,0,-1,
+ 1,0,-1
+ };
+ static const float prewitth[] = {
+ 1,1,1,
+ 0,0,0,
+ -1,-1,-1
+ };
+ //5x5 Gaussian filter
+ static const float gaussian[] = {
+ 2/159.0, 4/159.0, 5/159.0, 4/159.0, 2/159.0,
+ 4/159.0, 9/159.0, 12/159.0, 9/159.0, 4/159.0,
+ 5/159.0, 12/159.0, 15/159.0, 12/159.0, 5/159.0,
+ 4/159.0, 9/159.0, 12/159.0, 9/159.0, 4/159.0,
+ 2/159.0, 4/159.0, 5/159.0, 4/159.0, 2/159.0
+ };
+ for ( int pass = 0 ; pass < BlurPass ; pass++ )
+ {
+ if ( (pass & 1) ==0 )
+ {
+ src = m_blur0;
+ dst = m_blur1;
+ }
+ else
+ {
+ src = m_blur1;
+ dst = m_blur0;
+ }
+ switch ( filter )
+ {
+ case FMoyen:
+ Filter( moyen,3, src, dst );
+ break;
+ case FLaplacien4:
+ Filter( laplacien4,3, src, dst );
+ break;
+ case FLaplacien8:
+ Filter( laplacien8, 3, src, dst );
+ break;
+ case FLaplaciend:
+ Filter( laplaciend, 3, src, dst );
+ break;
+ case FSobel:
+ Filter( sobelv, 3, src, m_filter_v );
+ Filter( sobelh, 3, src, m_filter_h );
+ CombineFilter( m_filter_v, m_filter_h, dst );
+ break;
+ case FPrewitt:
+ Filter( prewittv, 3, src, m_filter_v );
+ Filter( prewitth, 3, src, m_filter_h );
+ CombineFilter( m_filter_v, m_filter_h, dst );
+ case FGaussian:
+ Filter( gaussian, 5, src, dst );
+ break;
+ }
+
+ }
+ }
+#endif
+ switch ( Display )
+ {
+ case ARAnalyse::GrayScale:
+ DisplayGrayScale(cameraBuffer, dst );
+ break;
+ case ARAnalyse::Blur:
+ DisplayBlur(cameraBuffer, dst );
+ break;
+ case ARAnalyse::Diff:
+ DisplayDiff(cameraBuffer, dst );
+ break;
+ case ARAnalyse::Threshold:
+ DisplayThreshold(cameraBuffer, dst );
+ break;
+ case ARAnalyse::Moyen:
+ DisplayMoyen(cameraBuffer, dst );
+ break;
+ }
+
+}
+#endif
+void ARAnalyse::CombineFilter ( pixel_type *src_h, pixel_type *src_v, pixel_type *dst )
+{
+ int width = m_width / DownSample;
+ int height = m_height / DownSample;
+ #pragma omp for
+ for ( int y = height-2 ; y > 0 ; y-- )
+ {
+ //#pragma omp for
+ for ( int x = width-2; x > 0 ; x-- )
+ {
+ long yy;
+ value_type val = 0;
+ // kernel sum
+ yy = y * width + x;
+
+ val += src_h[ yy ] * src_h[ yy ];
+ val += src_v[ yy ] * src_v[ yy ];
+
+ dst[yy] = sqrt(val);
+
+ }
+ }
+}
+void ARAnalyse::Filter ( const float *krn, int k_size, pixel_type *src, pixel_type *dst )
+{
+ int width = m_width / DownSample;
+ int height = m_height / DownSample;
+ const float *krn_ptr;
+ int half_kernel = k_size / 2;
+ #pragma omp for
+ for ( int y = height-1-half_kernel ; y >= half_kernel ; y-- )
+ {
+ //#pragma omp for
+ for ( int x = width-1-half_kernel; x >= half_kernel ; x-- )
+ {
+ long yy;
+ value_type val = 0;
+ // kernel sum
+ krn_ptr = krn;
+ yy = (y - half_kernel) * width + x ;
+ for ( int j = 0; j < k_size ; j++ )
+ {
+ for ( int i = 0; i < k_size ; i++ )
+ val += src[ yy - half_kernel + i ] * *krn_ptr++;
+ yy += width ;
+ }
+
+ dst[y * width + x] = val;
+
+ }
+ }
+}
+
+void ARAnalyse::DisplayGrayScale (unsigned char * cameraBuffer, pixel_type * dest)
+{
+ #pragma omp parallel //default(none) shared( cameraBuffer, width,height,dst )
+ {
+ #pragma omp for
+ for ( int y = 0; y < m_height ; y++ )
+ {
+ //#pragma omp for
+ for ( int x = 0; x < m_width ; x++ )
+ {
+ long index = (y * m_width + x);
+ unsigned char * pixel = &cameraBuffer[index*3];
+ value_type val = m_gray[index]; //display gray scale
+ pixel[0] = (unsigned char)(int)(val);
+ pixel[1] = (unsigned char)(int)(val);
+ pixel[2] = (unsigned char)(int)(val);
+ }
+ }
+ }
+}
+void ARAnalyse::DisplayBlur (unsigned char * cameraBuffer, pixel_type * dest)
+{
+ // Down sample
+ int width = m_width / DownSample;
+ int height = m_height / DownSample;
+ #pragma omp parallel //default(none) shared( cameraBuffer, width,height,dst )
+ {
+ #pragma omp for
+ for ( int y = 0; y < m_height ; y++ )
+ {
+ //#pragma omp for
+ for ( int x = 0; x < m_width ; x++ )
+ {
+ long index = (y * m_width + x);
+ unsigned char * pixel = &cameraBuffer[index*3];
+ value_type blur = dest[((y/DownSample) * width + (x/DownSample))];
+ value_type val=0;
+ val = blur; // display BLUR
+
+ pixel[0] = (unsigned char)(int)(val);
+ pixel[1] = (unsigned char)(int)(val);
+ pixel[2] = (unsigned char)(int)(val);
+ }
+ }
+ }
+}
+void ARAnalyse::DisplayDiff (unsigned char * cameraBuffer, pixel_type * dest)
+{
+ // Down sample
+ int width = m_width / DownSample;
+ int height = m_height / DownSample;
+ #pragma omp parallel //default(none) shared( cameraBuffer, width,height,dst )
+ {
+ #pragma omp for
+ for ( int y = 0; y < m_height ; y++ )
+ {
+ //#pragma omp for
+ for ( int x = 0; x < m_width ; x++ )
+ {
+ long index = (y * m_width + x);
+ unsigned char * pixel = &cameraBuffer[index*3];
+ value_type blur = dest[((y/DownSample) * width + (x/DownSample))];
+ value_type val=0;
+ val = m_gray[index] - blur;
+ val += 127;
+ if ( val < 0 ) val = 0;
+ else if ( val > 255 ) val = 255;
+
+ pixel[0] = (unsigned char)(int)(val);
+ pixel[1] = (unsigned char)(int)(val);
+ pixel[2] = (unsigned char)(int)(val);
+ }
+ }
+ }
+}
+void ARAnalyse::DisplayThreshold (unsigned char * cameraBuffer, pixel_type * dest)
+{
+ // Down sample
+ int width = m_width / DownSample;
+ int height = m_height / DownSample;
+ #pragma omp parallel //default(none) shared( cameraBuffer, width,height,dst )
+ {
+ #pragma omp for
+ for ( int y = 0; y < m_height ; y++ )
+ {
+ //#pragma omp for
+ for ( int x = 0; x < m_width ; x++ )
+ {
+ long index = (y * m_width + x);
+ unsigned char * pixel = &cameraBuffer[index*3];
+ value_type blur = dest[((y/DownSample) * width + (x/DownSample))];
+ value_type val=0;
+ val = m_gray[index] - blur * 0.9;
+ //val = val < 0 ? 0 : 255;
+ val += 127;
+ if ( val < g_ThresholdMin ) val = 0;
+ else if ( val > g_ThresholdMax ) val = 255;
+ else val = 127;
+
+ pixel[0] = (unsigned char)(int)(val);
+ pixel[1] = (unsigned char)(int)(val);
+ pixel[2] = (unsigned char)(int)(val);
+ }
+ }
+ }
+}
+void ARAnalyse::DisplayMoyen (unsigned char * cameraBuffer, pixel_type * dest)
+{
+ #pragma omp parallel //default(none) shared( cameraBuffer, width,height,dst )
+ {
+ #pragma omp for
+ for ( int y = 0; y < m_height ; y++ )
+ {
+ //#pragma omp for
+ for ( int x = 0; x < m_width ; x++ )
+ {
+ long index = (y * m_width + x);
+ unsigned char * pixel = &cameraBuffer[index*3];
+ value_type val = (m_sum[index] / nb_images);
+ pixel[0] = (unsigned char)(int)(val);
+ pixel[1] = (unsigned char)(int)(val);
+ pixel[2] = (unsigned char)(int)(val);
+ }
+ }
+ }
+}
+
+void ARAnalyse::CalcMoyen()
+{
+ //DBGMSG(TEXT("Before CalcMoyen Frame %d first %d, last %d:\n"), FrameCount, m_first_image, m_last_image);
+
+ // calcul sum - first
+ if ( FrameCount > (nb_images-1) )
+ {
+ pixel_type *first_image = m_images[m_first_image];
+ for ( int i = 0; i < nb_pixel ; i++ )
+ {
+ m_sum[i] -= first_image[i];
+ }
+ m_first_image++;
+ if ( m_first_image >= nb_images ) m_first_image = 0;
+ }
+ // calcul sum + last = m_gray !
+ for ( int i = 0; i < nb_pixel ; i++ )
+ {
+ m_sum[i] += m_gray[i];
+ m_images[m_last_image][i] = m_gray[i]; // copy input to last image
+ m_gray[i] = m_sum[i]/nb_images; // copy and calculate moyen
+ }
+ m_last_image++;
+ if ( m_last_image >= nb_images ) m_last_image = 0;
+ //DBGMSG(TEXT("After CalcMoyen first %d, last %d:\n"), m_first_image, m_last_image);
+
+}
\ No newline at end of file
diff --git a/ARMFCaptureD3D/ARAnalyse.h b/ARMFCaptureD3D/ARAnalyse.h
new file mode 100644
index 0000000..0d8a61b
--- /dev/null
+++ b/ARMFCaptureD3D/ARAnalyse.h
@@ -0,0 +1,143 @@
+
+#pragma once
+#include
+#include
+
+
+
+
diff --git a/ARMFCaptureD3D/_UpgradeReport_Files/UpgradeReport_Minus.gif b/ARMFCaptureD3D/_UpgradeReport_Files/UpgradeReport_Minus.gif
new file mode 100644
index 0000000..17751cb
Binary files /dev/null and b/ARMFCaptureD3D/_UpgradeReport_Files/UpgradeReport_Minus.gif differ
diff --git a/ARMFCaptureD3D/_UpgradeReport_Files/UpgradeReport_Plus.gif b/ARMFCaptureD3D/_UpgradeReport_Files/UpgradeReport_Plus.gif
new file mode 100644
index 0000000..f6009ca
Binary files /dev/null and b/ARMFCaptureD3D/_UpgradeReport_Files/UpgradeReport_Plus.gif differ
diff --git a/ARMFCaptureD3D/data/Logitech_Notebook_Pro.cal b/ARMFCaptureD3D/data/Logitech_Notebook_Pro.cal
new file mode 100644
index 0000000..c93767a
--- /dev/null
+++ b/ARMFCaptureD3D/data/Logitech_Notebook_Pro.cal
@@ -0,0 +1,2 @@
+ARToolKitPlus_CamCal_Rev02
+640 480 330.27758683214108 228.10613100912309 891.32055276878066 888.496623076345940 -0.049480033893318 0.215863227944058 -0.001997733892605 -0.003151872552003 0.0 0.0 10
diff --git a/ARMFCaptureD3D/data/One.cfg b/ARMFCaptureD3D/data/One.cfg
new file mode 100644
index 0000000..3c42daa
--- /dev/null
+++ b/ARMFCaptureD3D/data/One.cfg
@@ -0,0 +1,10 @@
+#the number of patterns to be recognized
+1
+
+#marker 01
+0
+20.0
+0.0 0.0
+1.0000 0.0000 0.0000 0.0000
+0.0000 1.0000 0.0000 0.0000
+0.0000 0.0000 1.0000 0.0000
diff --git a/ARMFCaptureD3D/data/config.inp b/ARMFCaptureD3D/data/config.inp
new file mode 100644
index 0000000..98cbc16
--- /dev/null
+++ b/ARMFCaptureD3D/data/config.inp
@@ -0,0 +1,20 @@
+# config.inp
+# configuration file for ARIvy
+
+CameraResolution = -1
+CameraName =
+
+CameraParameterFile = data/no_distortion.cal
+MarkerSetConfigFile = data/One.cfg
+MarkerWidth = 20
+MarkerBorderPercentage = 0.250
+MarkerSeekingThreshold = 160
+
+MarkerTraditionalOrSimpleOrBCH = 2 # MARKER_ID_BCH=2 MAKER_ID_SIMPLE=1
+MarkerAbsenceCount = 5
+MarkerMoveThreshold = 1.0
+
+CalibrationID_TopRight = 4095
+CalibrationID_TopLeft = 4092
+CalibrationID_BottomLeft= 4093
+CalibrationID_BottomRight = 4094
\ No newline at end of file
diff --git a/ARMFCaptureD3D/data/markerboard_480-499.cfg b/ARMFCaptureD3D/data/markerboard_480-499.cfg
new file mode 100644
index 0000000..4ec0163
--- /dev/null
+++ b/ARMFCaptureD3D/data/markerboard_480-499.cfg
@@ -0,0 +1,165 @@
+# multimarker definition file for ARToolKit (format defined by ARToolKit)
+# dataset for test Painting application
+
+# number of markers
+20
+
+# marker 0
+480
+40.0
+0.0 0.0
+ 1.0000 0.0000 0.0000 -100.0
+ 0.0000 1.0000 0.0000 75.0
+ 0.0000 0.0000 1.0000 0.0
+
+# marker 1
+481
+40.0
+0.0 0.0
+ 1.0000 0.0000 0.0000 -50.0
+ 0.0000 1.0000 0.0000 75.0
+ 0.0000 0.0000 1.0000 0.0
+
+# marker 2
+482
+40.0
+0.0 0.0
+ 1.0000 0.0000 0.0000 0.0
+ 0.0000 1.0000 0.0000 75.0
+ 0.0000 0.0000 1.0000 0.0
+
+# marker 3
+483
+40.0
+0.0 0.0
+ 1.0000 0.0000 0.0000 50.0
+ 0.0000 1.0000 0.0000 75.0
+ 0.0000 0.0000 1.0000 0.0
+
+# marker 4
+484
+40.0
+0.0 0.0
+ 1.0000 0.0000 0.0000 100.0
+ 0.0000 1.0000 0.0000 75.0
+ 0.0000 0.0000 1.0000 0.0
+
+# marker 5
+485
+40.0
+0.0 0.0
+ 1.0000 0.0000 0.0000 -100.0
+ 0.0000 1.0000 0.0000 25.0
+ 0.0000 0.0000 1.0000 0.0
+
+# marker 6
+486
+40.0
+0.0 0.0
+ 1.0000 0.0000 0.0000 -50.0
+ 0.0000 1.0000 0.0000 25.0
+ 0.0000 0.0000 1.0000 0.0
+
+# marker 7
+487
+40.0
+0.0 0.0
+ 1.0000 0.0000 0.0000 0.0
+ 0.0000 1.0000 0.0000 25.0
+ 0.0000 0.0000 1.0000 0.0
+
+# marker 8
+488
+40.0
+0.0 0.0
+ 1.0000 0.0000 0.0000 50.0
+ 0.0000 1.0000 0.0000 25.0
+ 0.0000 0.0000 1.0000 0.0
+
+# marker 9
+489
+40.0
+0.0 0.0
+ 1.0000 0.0000 0.0000 100.0
+ 0.0000 1.0000 0.0000 25.0
+ 0.0000 0.0000 1.0000 0.0
+
+# marker 10
+490
+40.0
+0.0 0.0
+ 1.0000 0.0000 0.0000 -100.0
+ 0.0000 1.0000 0.0000 -25.0
+ 0.0000 0.0000 1.0000 0.0
+
+# marker 11
+491
+40.0
+0.0 0.0
+ 1.0000 0.0000 0.0000 -50.0
+ 0.0000 1.0000 0.0000 -25.0
+ 0.0000 0.0000 1.0000 0.0
+
+# marker 12
+492
+40.0
+0.0 0.0
+ 1.0000 0.0000 0.0000 0.0
+ 0.0000 1.0000 0.0000 -25.0
+ 0.0000 0.0000 1.0000 0.0
+
+# marker 33
+493
+40.0
+0.0 0.0
+ 1.0000 0.0000 0.0000 50.0
+ 0.0000 1.0000 0.0000 -25.0
+ 0.0000 0.0000 1.0000 0.0
+
+# marker 14
+494
+40.0
+0.0 0.0
+ 1.0000 0.0000 0.0000 100.0
+ 0.0000 1.0000 0.0000 -25.0
+ 0.0000 0.0000 1.0000 0.0
+
+# marker 15
+495
+40.0
+0.0 0.0
+ 1.0000 0.0000 0.0000 -100.0
+ 0.0000 1.0000 0.0000 -75.0
+ 0.0000 0.0000 1.0000 0.0
+
+# marker 16
+496
+40.0
+0.0 0.0
+ 1.0000 0.0000 0.0000 -50.0
+ 0.0000 1.0000 0.0000 -75.0
+ 0.0000 0.0000 1.0000 0.0
+
+# marker 17
+497
+40.0
+0.0 0.0
+ 1.0000 0.0000 0.0000 0.0
+ 0.0000 1.0000 0.0000 -75.0
+ 0.0000 0.0000 1.0000 0.0
+
+# marker 18
+498
+40.0
+0.0 0.0
+ 1.0000 0.0000 0.0000 50.0
+ 0.0000 1.0000 0.0000 -75.0
+ 0.0000 0.0000 1.0000 0.0
+
+# marker 19
+499
+40.0
+0.0 0.0
+ 1.0000 0.0000 0.0000 100.0
+ 0.0000 1.0000 0.0000 -75.0
+ 0.0000 0.0000 1.0000 0.0
diff --git a/ARMFCaptureD3D/data/no_distortion.cal b/ARMFCaptureD3D/data/no_distortion.cal
new file mode 100644
index 0000000..d92b030
--- /dev/null
+++ b/ARMFCaptureD3D/data/no_distortion.cal
@@ -0,0 +1,2 @@
+ARToolKitPlus_CamCal_Rev02
+640 480 320 240 1500.0 1500.0 0.0 0.0 0.0 0.0 0.0 0.0 0
diff --git a/ARMFCaptureD3D/debug.cpp b/ARMFCaptureD3D/debug.cpp
new file mode 100644
index 0000000..245dd50
--- /dev/null
+++ b/ARMFCaptureD3D/debug.cpp
@@ -0,0 +1,384 @@
+
+
+// The following code enables you to view the contents of a media type while
+// debugging.
+#include "ARMFCaptureD3D.h"
+#include
+
+LPCWSTR GetGUIDNameConst(const GUID& guid);
+HRESULT GetGUIDName(const GUID& guid, WCHAR **ppwsz);
+
+HRESULT LogAttributeValueByIndex(IMFAttributes *pAttr, DWORD index);
+HRESULT SpecialCaseAttributeValue(GUID guid, const PROPVARIANT& var);
+
+void DBGMSG(PCWSTR format, ...);
+
+HRESULT LogMediaType(IMFMediaType *pType)
+{
+ UINT32 count = 0;
+
+ HRESULT hr = pType->GetCount(&count);
+ if (FAILED(hr))
+ {
+ return hr;
+ }
+
+ if (count == 0)
+ {
+ DBGMSG(L"Empty media type.\n");
+ }
+
+ for (UINT32 i = 0; i < count; i++)
+ {
+ hr = LogAttributeValueByIndex(pType, i);
+ if (FAILED(hr))
+ {
+ break;
+ }
+ }
+ return hr;
+}
+
+HRESULT LogAttributeValueByIndex(IMFAttributes *pAttr, DWORD index)
+{
+ WCHAR *pGuidName = NULL;
+ WCHAR *pGuidValName = NULL;
+
+ GUID guid = { 0 };
+
+ PROPVARIANT var;
+ PropVariantInit(&var);
+
+ HRESULT hr = pAttr->GetItemByIndex(index, &guid, &var);
+ if (FAILED(hr))
+ {
+ goto done;
+ }
+
+ hr = GetGUIDName(guid, &pGuidName);
+ if (FAILED(hr))
+ {
+ goto done;
+ }
+
+ DBGMSG(L"\t%s\t", pGuidName);
+
+ hr = SpecialCaseAttributeValue(guid, var);
+ if (FAILED(hr))
+ {
+ goto done;
+ }
+ if (hr == S_FALSE)
+ {
+ switch (var.vt)
+ {
+ case VT_UI4:
+ DBGMSG(L"%d", var.ulVal);
+ break;
+
+ case VT_UI8:
+ DBGMSG(L"%I64d", var.uhVal);
+ break;
+
+ case VT_R8:
+ DBGMSG(L"%f", var.dblVal);
+ break;
+
+ case VT_CLSID:
+ hr = GetGUIDName(*var.puuid, &pGuidValName);
+ if (SUCCEEDED(hr))
+ {
+ DBGMSG(pGuidValName);
+ }
+ break;
+
+ case VT_LPWSTR:
+ DBGMSG(var.pwszVal);
+ break;
+
+ case VT_VECTOR | VT_UI1:
+ DBGMSG(L"<>");
+ break;
+
+ case VT_UNKNOWN:
+ DBGMSG(L"IUnknown");
+ break;
+
+ default:
+ DBGMSG(L"Unexpected attribute type (vt = %d)", var.vt);
+ break;
+ }
+ }
+
+done:
+ DBGMSG(L"\n");
+ CoTaskMemFree(pGuidName);
+ CoTaskMemFree(pGuidValName);
+ PropVariantClear(&var);
+ return hr;
+}
+
+HRESULT GetGUIDName(const GUID& guid, WCHAR **ppwsz)
+{
+ HRESULT hr = S_OK;
+ WCHAR *pName = NULL;
+
+ LPCWSTR pcwsz = GetGUIDNameConst(guid);
+ if (pcwsz)
+ {
+ size_t cchLength = 0;
+
+ hr = StringCchLength(pcwsz, STRSAFE_MAX_CCH, &cchLength);
+ if (FAILED(hr))
+ {
+ goto done;
+ }
+
+ pName = (WCHAR*)CoTaskMemAlloc((cchLength + 1) * sizeof(WCHAR));
+
+ if (pName == NULL)
+ {
+ hr = E_OUTOFMEMORY;
+ goto done;
+ }
+
+ hr = StringCchCopy(pName, cchLength + 1, pcwsz);
+ if (FAILED(hr))
+ {
+ goto done;
+ }
+ }
+ else
+ {
+ hr = StringFromCLSID(guid, &pName);
+ }
+
+done:
+ if (FAILED(hr))
+ {
+ *ppwsz = NULL;
+ CoTaskMemFree(pName);
+ }
+ else
+ {
+ *ppwsz = pName;
+ }
+ return hr;
+}
+
+void LogUINT32AsUINT64(const PROPVARIANT& var)
+{
+ UINT32 uHigh = 0, uLow = 0;
+ Unpack2UINT32AsUINT64(var.uhVal.QuadPart, &uHigh, &uLow);
+ DBGMSG(L"%d x %d", uHigh, uLow);
+}
+
+float OffsetToFloat(const MFOffset& offset)
+{
+ return offset.value + (static_cast(offset.fract) / 65536.0f);
+}
+
+HRESULT LogVideoArea(const PROPVARIANT& var)
+{
+ if (var.caub.cElems < sizeof(MFVideoArea))
+ {
+ return MF_E_BUFFERTOOSMALL;
+ }
+
+ MFVideoArea *pArea = (MFVideoArea*)var.caub.pElems;
+
+ DBGMSG(L"(%f,%f) (%d,%d)", OffsetToFloat(pArea->OffsetX), OffsetToFloat(pArea->OffsetY),
+ pArea->Area.cx, pArea->Area.cy);
+ return S_OK;
+}
+
+// Handle certain known special cases.
+HRESULT SpecialCaseAttributeValue(GUID guid, const PROPVARIANT& var)
+{
+ if ((guid == MF_MT_FRAME_RATE) || (guid == MF_MT_FRAME_RATE_RANGE_MAX) ||
+ (guid == MF_MT_FRAME_RATE_RANGE_MIN) || (guid == MF_MT_FRAME_SIZE) ||
+ (guid == MF_MT_PIXEL_ASPECT_RATIO))
+ {
+ // Attributes that contain two packed 32-bit values.
+ LogUINT32AsUINT64(var);
+ }
+ else if ((guid == MF_MT_GEOMETRIC_APERTURE) ||
+ (guid == MF_MT_MINIMUM_DISPLAY_APERTURE) ||
+ (guid == MF_MT_PAN_SCAN_APERTURE))
+ {
+ // Attributes that an MFVideoArea structure.
+ return LogVideoArea(var);
+ }
+ else
+ {
+ return S_FALSE;
+ }
+ return S_OK;
+}
+
+void DBGMSG(PCWSTR format, ...)
+{
+ va_list args;
+ va_start(args, format);
+
+ WCHAR msg[MAX_PATH];
+
+ if (SUCCEEDED(StringCbVPrintf(msg, sizeof(msg), format, args)))
+ {
+ OutputDebugString(msg);
+ }
+}
+
+#ifndef IF_EQUAL_RETURN
+#define IF_EQUAL_RETURN(param, val) if(val == param) return L#val
+#endif
+
+LPCWSTR GetGUIDNameConst(const GUID& guid)
+{
+ IF_EQUAL_RETURN(guid, MF_MT_MAJOR_TYPE);
+ IF_EQUAL_RETURN(guid, MF_MT_MAJOR_TYPE);
+ IF_EQUAL_RETURN(guid, MF_MT_SUBTYPE);
+ IF_EQUAL_RETURN(guid, MF_MT_ALL_SAMPLES_INDEPENDENT);
+ IF_EQUAL_RETURN(guid, MF_MT_FIXED_SIZE_SAMPLES);
+ IF_EQUAL_RETURN(guid, MF_MT_COMPRESSED);
+ IF_EQUAL_RETURN(guid, MF_MT_SAMPLE_SIZE);
+ IF_EQUAL_RETURN(guid, MF_MT_WRAPPED_TYPE);
+ IF_EQUAL_RETURN(guid, MF_MT_AUDIO_NUM_CHANNELS);
+ IF_EQUAL_RETURN(guid, MF_MT_AUDIO_SAMPLES_PER_SECOND);
+ IF_EQUAL_RETURN(guid, MF_MT_AUDIO_FLOAT_SAMPLES_PER_SECOND);
+ IF_EQUAL_RETURN(guid, MF_MT_AUDIO_AVG_BYTES_PER_SECOND);
+ IF_EQUAL_RETURN(guid, MF_MT_AUDIO_BLOCK_ALIGNMENT);
+ IF_EQUAL_RETURN(guid, MF_MT_AUDIO_BITS_PER_SAMPLE);
+ IF_EQUAL_RETURN(guid, MF_MT_AUDIO_VALID_BITS_PER_SAMPLE);
+ IF_EQUAL_RETURN(guid, MF_MT_AUDIO_SAMPLES_PER_BLOCK);
+ IF_EQUAL_RETURN(guid, MF_MT_AUDIO_CHANNEL_MASK);
+ IF_EQUAL_RETURN(guid, MF_MT_AUDIO_FOLDDOWN_MATRIX);
+ IF_EQUAL_RETURN(guid, MF_MT_AUDIO_WMADRC_PEAKREF);
+ IF_EQUAL_RETURN(guid, MF_MT_AUDIO_WMADRC_PEAKTARGET);
+ IF_EQUAL_RETURN(guid, MF_MT_AUDIO_WMADRC_AVGREF);
+ IF_EQUAL_RETURN(guid, MF_MT_AUDIO_WMADRC_AVGTARGET);
+ IF_EQUAL_RETURN(guid, MF_MT_AUDIO_PREFER_WAVEFORMATEX);
+ IF_EQUAL_RETURN(guid, MF_MT_AAC_PAYLOAD_TYPE);
+ IF_EQUAL_RETURN(guid, MF_MT_AAC_AUDIO_PROFILE_LEVEL_INDICATION);
+ IF_EQUAL_RETURN(guid, MF_MT_FRAME_SIZE);
+ IF_EQUAL_RETURN(guid, MF_MT_FRAME_RATE);
+ IF_EQUAL_RETURN(guid, MF_MT_FRAME_RATE_RANGE_MAX);
+ IF_EQUAL_RETURN(guid, MF_MT_FRAME_RATE_RANGE_MIN);
+ IF_EQUAL_RETURN(guid, MF_MT_PIXEL_ASPECT_RATIO);
+ IF_EQUAL_RETURN(guid, MF_MT_DRM_FLAGS);
+ IF_EQUAL_RETURN(guid, MF_MT_PAD_CONTROL_FLAGS);
+ IF_EQUAL_RETURN(guid, MF_MT_SOURCE_CONTENT_HINT);
+ IF_EQUAL_RETURN(guid, MF_MT_VIDEO_CHROMA_SITING);
+ IF_EQUAL_RETURN(guid, MF_MT_INTERLACE_MODE);
+ IF_EQUAL_RETURN(guid, MF_MT_TRANSFER_FUNCTION);
+ IF_EQUAL_RETURN(guid, MF_MT_VIDEO_PRIMARIES);
+ IF_EQUAL_RETURN(guid, MF_MT_CUSTOM_VIDEO_PRIMARIES);
+ IF_EQUAL_RETURN(guid, MF_MT_YUV_MATRIX);
+ IF_EQUAL_RETURN(guid, MF_MT_VIDEO_LIGHTING);
+ IF_EQUAL_RETURN(guid, MF_MT_VIDEO_NOMINAL_RANGE);
+ IF_EQUAL_RETURN(guid, MF_MT_GEOMETRIC_APERTURE);
+ IF_EQUAL_RETURN(guid, MF_MT_MINIMUM_DISPLAY_APERTURE);
+ IF_EQUAL_RETURN(guid, MF_MT_PAN_SCAN_APERTURE);
+ IF_EQUAL_RETURN(guid, MF_MT_PAN_SCAN_ENABLED);
+ IF_EQUAL_RETURN(guid, MF_MT_AVG_BITRATE);
+ IF_EQUAL_RETURN(guid, MF_MT_AVG_BIT_ERROR_RATE);
+ IF_EQUAL_RETURN(guid, MF_MT_MAX_KEYFRAME_SPACING);
+ IF_EQUAL_RETURN(guid, MF_MT_DEFAULT_STRIDE);
+ IF_EQUAL_RETURN(guid, MF_MT_PALETTE);
+ IF_EQUAL_RETURN(guid, MF_MT_USER_DATA);
+ IF_EQUAL_RETURN(guid, MF_MT_AM_FORMAT_TYPE);
+ IF_EQUAL_RETURN(guid, MF_MT_MPEG_START_TIME_CODE);
+ IF_EQUAL_RETURN(guid, MF_MT_MPEG2_PROFILE);
+ IF_EQUAL_RETURN(guid, MF_MT_MPEG2_LEVEL);
+ IF_EQUAL_RETURN(guid, MF_MT_MPEG2_FLAGS);
+ IF_EQUAL_RETURN(guid, MF_MT_MPEG_SEQUENCE_HEADER);
+ IF_EQUAL_RETURN(guid, MF_MT_DV_AAUX_SRC_PACK_0);
+ IF_EQUAL_RETURN(guid, MF_MT_DV_AAUX_CTRL_PACK_0);
+ IF_EQUAL_RETURN(guid, MF_MT_DV_AAUX_SRC_PACK_1);
+ IF_EQUAL_RETURN(guid, MF_MT_DV_AAUX_CTRL_PACK_1);
+ IF_EQUAL_RETURN(guid, MF_MT_DV_VAUX_SRC_PACK);
+ IF_EQUAL_RETURN(guid, MF_MT_DV_VAUX_CTRL_PACK);
+ IF_EQUAL_RETURN(guid, MF_MT_ARBITRARY_HEADER);
+ IF_EQUAL_RETURN(guid, MF_MT_ARBITRARY_FORMAT);
+ IF_EQUAL_RETURN(guid, MF_MT_IMAGE_LOSS_TOLERANT);
+ IF_EQUAL_RETURN(guid, MF_MT_MPEG4_SAMPLE_DESCRIPTION);
+ IF_EQUAL_RETURN(guid, MF_MT_MPEG4_CURRENT_SAMPLE_ENTRY);
+ IF_EQUAL_RETURN(guid, MF_MT_ORIGINAL_4CC);
+ IF_EQUAL_RETURN(guid, MF_MT_ORIGINAL_WAVE_FORMAT_TAG);
+
+ // Media types
+
+ IF_EQUAL_RETURN(guid, MFMediaType_Audio);
+ IF_EQUAL_RETURN(guid, MFMediaType_Video);
+ IF_EQUAL_RETURN(guid, MFMediaType_Protected);
+ IF_EQUAL_RETURN(guid, MFMediaType_SAMI);
+ IF_EQUAL_RETURN(guid, MFMediaType_Script);
+ IF_EQUAL_RETURN(guid, MFMediaType_Image);
+ IF_EQUAL_RETURN(guid, MFMediaType_HTML);
+ IF_EQUAL_RETURN(guid, MFMediaType_Binary);
+ IF_EQUAL_RETURN(guid, MFMediaType_FileTransfer);
+
+ IF_EQUAL_RETURN(guid, MFVideoFormat_AI44); // FCC('AI44')
+ IF_EQUAL_RETURN(guid, MFVideoFormat_ARGB32); // D3DFMT_A8R8G8B8
+ IF_EQUAL_RETURN(guid, MFVideoFormat_AYUV); // FCC('AYUV')
+ IF_EQUAL_RETURN(guid, MFVideoFormat_DV25); // FCC('dv25')
+ IF_EQUAL_RETURN(guid, MFVideoFormat_DV50); // FCC('dv50')
+ IF_EQUAL_RETURN(guid, MFVideoFormat_DVH1); // FCC('dvh1')
+ IF_EQUAL_RETURN(guid, MFVideoFormat_DVSD); // FCC('dvsd')
+ IF_EQUAL_RETURN(guid, MFVideoFormat_DVSL); // FCC('dvsl')
+ IF_EQUAL_RETURN(guid, MFVideoFormat_H264); // FCC('H264')
+ IF_EQUAL_RETURN(guid, MFVideoFormat_I420); // FCC('I420')
+ IF_EQUAL_RETURN(guid, MFVideoFormat_IYUV); // FCC('IYUV')
+ IF_EQUAL_RETURN(guid, MFVideoFormat_M4S2); // FCC('M4S2')
+ IF_EQUAL_RETURN(guid, MFVideoFormat_MJPG);
+ IF_EQUAL_RETURN(guid, MFVideoFormat_MP43); // FCC('MP43')
+ IF_EQUAL_RETURN(guid, MFVideoFormat_MP4S); // FCC('MP4S')
+ IF_EQUAL_RETURN(guid, MFVideoFormat_MP4V); // FCC('MP4V')
+ IF_EQUAL_RETURN(guid, MFVideoFormat_MPG1); // FCC('MPG1')
+ IF_EQUAL_RETURN(guid, MFVideoFormat_MSS1); // FCC('MSS1')
+ IF_EQUAL_RETURN(guid, MFVideoFormat_MSS2); // FCC('MSS2')
+ IF_EQUAL_RETURN(guid, MFVideoFormat_NV11); // FCC('NV11')
+ IF_EQUAL_RETURN(guid, MFVideoFormat_NV12); // FCC('NV12')
+ IF_EQUAL_RETURN(guid, MFVideoFormat_P010); // FCC('P010')
+ IF_EQUAL_RETURN(guid, MFVideoFormat_P016); // FCC('P016')
+ IF_EQUAL_RETURN(guid, MFVideoFormat_P210); // FCC('P210')
+ IF_EQUAL_RETURN(guid, MFVideoFormat_P216); // FCC('P216')
+ IF_EQUAL_RETURN(guid, MFVideoFormat_RGB24); // D3DFMT_R8G8B8
+ IF_EQUAL_RETURN(guid, MFVideoFormat_RGB32); // D3DFMT_X8R8G8B8
+ IF_EQUAL_RETURN(guid, MFVideoFormat_RGB555); // D3DFMT_X1R5G5B5
+ IF_EQUAL_RETURN(guid, MFVideoFormat_RGB565); // D3DFMT_R5G6B5
+ IF_EQUAL_RETURN(guid, MFVideoFormat_RGB8);
+ IF_EQUAL_RETURN(guid, MFVideoFormat_UYVY); // FCC('UYVY')
+ IF_EQUAL_RETURN(guid, MFVideoFormat_v210); // FCC('v210')
+ IF_EQUAL_RETURN(guid, MFVideoFormat_v410); // FCC('v410')
+ IF_EQUAL_RETURN(guid, MFVideoFormat_WMV1); // FCC('WMV1')
+ IF_EQUAL_RETURN(guid, MFVideoFormat_WMV2); // FCC('WMV2')
+ IF_EQUAL_RETURN(guid, MFVideoFormat_WMV3); // FCC('WMV3')
+ IF_EQUAL_RETURN(guid, MFVideoFormat_WVC1); // FCC('WVC1')
+ IF_EQUAL_RETURN(guid, MFVideoFormat_Y210); // FCC('Y210')
+ IF_EQUAL_RETURN(guid, MFVideoFormat_Y216); // FCC('Y216')
+ IF_EQUAL_RETURN(guid, MFVideoFormat_Y410); // FCC('Y410')
+ IF_EQUAL_RETURN(guid, MFVideoFormat_Y416); // FCC('Y416')
+ IF_EQUAL_RETURN(guid, MFVideoFormat_Y41P);
+ IF_EQUAL_RETURN(guid, MFVideoFormat_Y41T);
+ IF_EQUAL_RETURN(guid, MFVideoFormat_YUY2); // FCC('YUY2')
+ IF_EQUAL_RETURN(guid, MFVideoFormat_YV12); // FCC('YV12')
+ IF_EQUAL_RETURN(guid, MFVideoFormat_YVYU);
+
+ IF_EQUAL_RETURN(guid, MFAudioFormat_PCM); // WAVE_FORMAT_PCM
+ IF_EQUAL_RETURN(guid, MFAudioFormat_Float); // WAVE_FORMAT_IEEE_FLOAT
+ IF_EQUAL_RETURN(guid, MFAudioFormat_DTS); // WAVE_FORMAT_DTS
+ IF_EQUAL_RETURN(guid, MFAudioFormat_Dolby_AC3_SPDIF); // WAVE_FORMAT_DOLBY_AC3_SPDIF
+ IF_EQUAL_RETURN(guid, MFAudioFormat_DRM); // WAVE_FORMAT_DRM
+ IF_EQUAL_RETURN(guid, MFAudioFormat_WMAudioV8); // WAVE_FORMAT_WMAUDIO2
+ IF_EQUAL_RETURN(guid, MFAudioFormat_WMAudioV9); // WAVE_FORMAT_WMAUDIO3
+ IF_EQUAL_RETURN(guid, MFAudioFormat_WMAudio_Lossless); // WAVE_FORMAT_WMAUDIO_LOSSLESS
+ IF_EQUAL_RETURN(guid, MFAudioFormat_WMASPDIF); // WAVE_FORMAT_WMASPDIF
+ IF_EQUAL_RETURN(guid, MFAudioFormat_MSP1); // WAVE_FORMAT_WMAVOICE9
+ IF_EQUAL_RETURN(guid, MFAudioFormat_MP3); // WAVE_FORMAT_MPEGLAYER3
+ IF_EQUAL_RETURN(guid, MFAudioFormat_MPEG); // WAVE_FORMAT_MPEG
+ IF_EQUAL_RETURN(guid, MFAudioFormat_AAC); // WAVE_FORMAT_MPEG_HEAAC
+ IF_EQUAL_RETURN(guid, MFAudioFormat_ADTS); // WAVE_FORMAT_MPEG_ADTS_AAC
+
+ return NULL;
+}
\ No newline at end of file
diff --git a/ARMFCaptureD3D/debug.h b/ARMFCaptureD3D/debug.h
new file mode 100644
index 0000000..21325ad
--- /dev/null
+++ b/ARMFCaptureD3D/debug.h
@@ -0,0 +1,32 @@
+
+
+// The following code enables you to view the contents of a media type while
+// debugging.
+#include "ARMFCaptureD3D.h"
+#include
+
+LPCWSTR GetGUIDNameConst(const GUID& guid);
+HRESULT GetGUIDName(const GUID& guid, WCHAR **ppwsz);
+
+HRESULT LogAttributeValueByIndex(IMFAttributes *pAttr, DWORD index);
+HRESULT SpecialCaseAttributeValue(GUID guid, const PROPVARIANT& var);
+
+#ifdef _DEBUG
+void DBGMSG(PCWSTR format, ...);
+HRESULT LogMediaType(IMFMediaType *pType);
+#else
+#define DBGMSG(...) /**/
+#define LogMediaType(a) /**/
+#endif
+
+HRESULT LogAttributeValueByIndex(IMFAttributes *pAttr, DWORD index);
+
+HRESULT GetGUIDName(const GUID& guid, WCHAR **ppwsz);
+
+void LogUINT32AsUINT64(const PROPVARIANT& var);
+
+float OffsetToFloat(const MFOffset& offset);
+HRESULT LogVideoArea(const PROPVARIANT& var);
+
+
+
diff --git a/ARMFCaptureD3D/device.cpp b/ARMFCaptureD3D/device.cpp
new file mode 100644
index 0000000..13ae7cc
--- /dev/null
+++ b/ARMFCaptureD3D/device.cpp
@@ -0,0 +1,1280 @@
+//////////////////////////////////////////////////////////////////////////
+//
+// device.cpp: Manages the Direct3D device
+//
+// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
+// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
+// PARTICULAR PURPOSE.
+//
+// Copyright (c) Microsoft Corporation. All rights reserved.
+//
+//////////////////////////////////////////////////////////////////////////
+
+#include "ARMFCaptureD3D.h"
+#include "BufferLock.h"
+#include "debug.h"
+#include "ARAnalyse.h"
+
+extern ARAnalyse *g_pAnalyse;
+
+void TransformImage_RGB24(
+ BYTE* pDest,
+ LONG lDestStride,
+ const BYTE* pSrc,
+ LONG lSrcStride,
+ DWORD dwWidthInPixels,
+ DWORD dwHeightInPixels
+ );
+
+void TransformImage_RGB32(
+ BYTE* pDest,
+ LONG lDestStride,
+ const BYTE* pSrc,
+ LONG lSrcStride,
+ DWORD dwWidthInPixels,
+ DWORD dwHeightInPixels
+ );
+
+void TransformImage_YUY2(
+ BYTE* pDest,
+ LONG lDestStride,
+ const BYTE* pSrc,
+ LONG lSrcStride,
+ DWORD dwWidthInPixels,
+ DWORD dwHeightInPixels
+ );
+
+void TransformImage_NV12(
+ BYTE* pDst,
+ LONG dstStride,
+ const BYTE* pSrc,
+ LONG srcStride,
+ DWORD dwWidthInPixels,
+ DWORD dwHeightInPixels
+ );
+
+
+RECT LetterBoxRect(const RECT& rcSrc, const RECT& rcDst);
+RECT CorrectAspectRatio(const RECT& src, const MFRatio& srcPAR);
+HRESULT GetDefaultStride(IMFMediaType *pType, LONG *plStride);
+
+
+inline LONG Width(const RECT& r)
+{
+ return r.right - r.left;
+}
+
+inline LONG Height(const RECT& r)
+{
+ return r.bottom - r.top;
+}
+
+
+// Static table of output formats and conversion functions.
+struct ConversionFunction
+{
+ GUID subtype;
+ IMAGE_TRANSFORM_FN xform;
+};
+
+
+ConversionFunction g_FormatConversions[] =
+{
+ { MFVideoFormat_RGB32, TransformImage_RGB32 },
+ { MFVideoFormat_RGB24, TransformImage_RGB24 },
+ { MFVideoFormat_YUY2, TransformImage_YUY2 },
+ { MFVideoFormat_NV12, TransformImage_NV12 }
+};
+
+const DWORD g_cFormats = ARRAYSIZE(g_FormatConversions);
+
+
+//-------------------------------------------------------------------
+// Constructor
+//-------------------------------------------------------------------
+
+DrawDevice::DrawDevice() :
+ m_hwnd(NULL),
+ m_pDevice(NULL),
+ m_pSwapChain(NULL),
+ m_pVertexBuffer(NULL),
+ m_pIndexBuffer(NULL),
+#ifdef DX9
+ m_pD3D(NULL),
+ m_format(D3DFMT_UNKNOWN),
+#else
+ m_format(DXGI_FORMAT_UNKNOWN),
+#endif
+ m_width(0),
+ m_height(0),
+ m_lDefaultStride(0),
+ m_interlace(MFVideoInterlace_Unknown),
+ m_convertFn(NULL)
+{
+ m_PixelAR.Denominator = m_PixelAR.Numerator = 1;
+
+ ZeroMemory(&m_d3dpp, sizeof(m_d3dpp));
+}
+
+
+//-------------------------------------------------------------------
+// Destructor
+//-------------------------------------------------------------------
+
+DrawDevice::~DrawDevice()
+{
+ DestroyDevice();
+}
+
+void DrawDevice::GetSize(UINT* width, UINT *height) const
+{
+ *width = m_width;
+ *height = m_height;
+}
+//-------------------------------------------------------------------
+// GetFormat
+//
+// Get a supported output format by index.
+//-------------------------------------------------------------------
+
+HRESULT DrawDevice::GetFormat(DWORD index, GUID *pSubtype) const
+{
+ if (index < g_cFormats)
+ {
+ *pSubtype = g_FormatConversions[index].subtype;
+ return S_OK;
+ }
+ return MF_E_NO_MORE_TYPES;
+}
+
+
+//-------------------------------------------------------------------
+// IsFormatSupported
+//
+// Query if a format is supported.
+//-------------------------------------------------------------------
+
+BOOL DrawDevice::IsFormatSupported(REFGUID subtype) const
+{
+ for (DWORD i = 0; i < g_cFormats; i++)
+ {
+ if (subtype == g_FormatConversions[i].subtype)
+ {
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+
+
+
+//-------------------------------------------------------------------
+// CreateDevice
+//
+// Create the Direct3D device.
+//-------------------------------------------------------------------
+
+HRESULT DrawDevice::CreateDevice(HWND hwnd)
+{
+ HRESULT hr = S_OK;
+ if (m_pDevice)
+ {
+ return S_OK;
+ }
+#ifdef DX9
+ // Create the Direct3D object.
+ if (m_pD3D == NULL)
+ {
+ m_pD3D = Direct3DCreate9(D3D_SDK_VERSION);
+
+ if (m_pD3D == NULL)
+ {
+ return E_FAIL;
+ }
+ }
+
+
+ D3DPRESENT_PARAMETERS pp = { 0 };
+ D3DDISPLAYMODE mode = { 0 };
+
+ pp.BackBufferFormat = D3DFMT_A8R8G8B8;
+ pp.SwapEffect = D3DSWAPEFFECT_FLIP;
+ pp.PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT;
+ pp.Windowed = TRUE;
+ pp.hDeviceWindow = hwnd;
+
+ hr = m_pD3D->GetAdapterDisplayMode(
+ D3DADAPTER_DEFAULT,
+ &mode
+ );
+
+ if (FAILED(hr)) { goto done; }
+
+ hr = m_pD3D->CheckDeviceType(
+ D3DADAPTER_DEFAULT,
+ D3DDEVTYPE_HAL,
+ mode.Format,
+ pp.BackBufferFormat,
+ TRUE // windowed
+ );
+
+ if (FAILED(hr)) { goto done; }
+
+
+
+ hr = m_pD3D->CreateDevice(
+ D3DADAPTER_DEFAULT,
+ D3DDEVTYPE_HAL,
+ hwnd,
+ D3DCREATE_HARDWARE_VERTEXPROCESSING | D3DCREATE_FPU_PRESERVE,
+ &pp,
+ &m_pDevice
+ );
+#else
+
+ DXGI_SWAP_CHAIN_DESC pp = { 0 };
+ ZeroMemory( &pp, sizeof( pp ) );
+
+
+ pp.BufferCount = 1;
+ //pp.BufferDesc.Width = width;
+ //pp.BufferDesc.Height = height;
+ pp.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
+ pp.BufferDesc.RefreshRate.Numerator = 0; //users =0, originally 60
+ pp.BufferDesc.RefreshRate.Denominator = 0;
+ pp.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;
+
+ //pp.SwapEffect = D3DSWAPEFFECT_COPY;
+ //pp.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE;
+ pp.Windowed = TRUE;
+ pp.OutputWindow = hwnd;
+
+ D3D_FEATURE_LEVEL FeatureLevels = D3D_FEATURE_LEVEL_11_0;
+
+
+ hr = D3D11CreateDevice( NULL,D3D_DRIVER_TYPE_HARDWARE, NULL, 0, &FeatureLevels, 1, D3D11_SDK_VERSION, &m_pDevice, &FeatureLevels, &m_pDeviceContext );
+
+#endif
+
+ if (FAILED(hr)) { goto done; }
+ // Turn on Blending
+ m_pDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
+ m_pDevice->SetRenderState(D3DRS_BLENDOP, D3DBLENDOP_ADD);
+ m_pDevice->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
+ m_pDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
+
+ m_hwnd = hwnd;
+ m_d3dpp = pp;
+
+done:
+ return hr;
+}
+
+//-------------------------------------------------------------------
+// SetConversionFunction
+//
+// Set the conversion function for the specified video format.
+//-------------------------------------------------------------------
+
+HRESULT DrawDevice::SetConversionFunction(REFGUID subtype)
+{
+ m_convertFn = NULL;
+
+ for (DWORD i = 0; i < g_cFormats; i++)
+ {
+ if (g_FormatConversions[i].subtype == subtype)
+ {
+ m_convertFn = g_FormatConversions[i].xform;
+ return S_OK;
+ }
+ }
+
+ return MF_E_INVALIDMEDIATYPE;
+}
+
+
+//-------------------------------------------------------------------
+// SetVideoType
+//
+// Set the video format.
+//-------------------------------------------------------------------
+
+HRESULT DrawDevice::SetVideoType(IMFMediaType *pType)
+{
+ HRESULT hr = S_OK;
+ GUID subtype = { 0 };
+ MFRatio PAR = { 0 };
+
+ // Find the video subtype.
+ hr = pType->GetGUID(MF_MT_SUBTYPE, &subtype);
+
+ if (FAILED(hr)) { goto done; }
+
+ // Choose a conversion function.
+ // (This also validates the format type.)
+
+ hr = SetConversionFunction(subtype);
+
+ if (FAILED(hr)) { goto done; }
+
+ //
+ // Get some video attributes.
+ //
+
+ // Get the frame size.
+ hr = MFGetAttributeSize(pType, MF_MT_FRAME_SIZE, &m_width, &m_height);
+
+ if (FAILED(hr)) { goto done; }
+
+
+ // Get the interlace mode. Default: assume progressive.
+ m_interlace = (MFVideoInterlaceMode)MFGetAttributeUINT32(
+ pType,
+ MF_MT_INTERLACE_MODE,
+ MFVideoInterlace_Progressive
+ );
+
+ // Get the image stride.
+ hr = GetDefaultStride(pType, &m_lDefaultStride);
+
+ if (FAILED(hr)) { goto done; }
+
+ // Get the pixel aspect ratio. Default: Assume square pixels (1:1)
+ hr = MFGetAttributeRatio(
+ pType,
+ MF_MT_PIXEL_ASPECT_RATIO,
+ (UINT32*)&PAR.Numerator,
+ (UINT32*)&PAR.Denominator
+ );
+
+ if (SUCCEEDED(hr))
+ {
+ m_PixelAR = PAR;
+ }
+ else
+ {
+ m_PixelAR.Numerator = m_PixelAR.Denominator = 1;
+ }
+#ifdef DX9
+ m_format = (D3DFORMAT)subtype.Data1;
+#else
+ m_format = (DXGI_FORMAT)subtype.Data1;
+#endif
+ // Create Direct3D swap chains.
+
+ hr = CreateSwapChains();
+
+ if (FAILED(hr)) { goto done; }
+
+
+ // Update the destination rectangle for the correct
+ // aspect ratio.
+
+ UpdateDestinationRect();
+
+done:
+ if (FAILED(hr))
+ {
+#ifdef DX9
+ m_format = D3DFMT_UNKNOWN;
+#else
+ m_format = DXGI_FORMAT_UNKNOWN;
+#endif
+ m_convertFn = NULL;
+ }
+ return hr;
+}
+
+//-------------------------------------------------------------------
+// UpdateDestinationRect
+//
+// Update the destination rectangle for the current window size.
+// The destination rectangle is letterboxed to preserve the
+// aspect ratio of the video image.
+//-------------------------------------------------------------------
+
+void DrawDevice::UpdateDestinationRect()
+{
+ RECT rcClient;
+ RECT rcSrc = { 0, 0, m_width, m_height };
+
+ GetClientRect(m_hwnd, &rcClient);
+
+ rcSrc = CorrectAspectRatio(rcSrc, m_PixelAR);
+
+ m_rcDest = LetterBoxRect(rcSrc, rcClient);
+}
+
+
+//-------------------------------------------------------------------
+// CreateSwapChains
+//
+// Create Direct3D swap chains.
+//-------------------------------------------------------------------
+
+HRESULT DrawDevice::CreateSwapChains()
+{
+ HRESULT hr = S_OK;
+#ifdef DX9
+ D3DPRESENT_PARAMETERS pp = { 0 };
+
+ SafeRelease(&m_pSwapChain);
+
+ pp.BackBufferWidth = m_width;
+ pp.BackBufferHeight = m_height;
+ pp.Windowed = TRUE;
+ pp.SwapEffect = D3DSWAPEFFECT_FLIP;
+ pp.hDeviceWindow = m_hwnd;
+ pp.BackBufferFormat = D3DFMT_A8R8G8B8;
+ pp.Flags =
+ D3DPRESENTFLAG_VIDEO | D3DPRESENTFLAG_DEVICECLIP |
+ D3DPRESENTFLAG_LOCKABLE_BACKBUFFER;
+ pp.PresentationInterval = D3DPRESENT_INTERVAL_DEFAULT;
+ //pp.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE;
+ pp.BackBufferCount = 2;
+
+ hr = m_pDevice->CreateAdditionalSwapChain(&pp, &m_pSwapChain);
+#else
+ DXGI_SWAP_CHAIN_DESC pp = { 0 };
+
+ SafeRelease(&m_pSwapChain);
+ pp.BufferCount = 1;
+ pp.BufferDesc.Width = m_width;
+ pp.BufferDesc.Height = m_height;
+ pp.BufferDesc.Format = DXGI_FORMAT_R8G8B8A8_UNORM;
+ pp.BufferDesc.RefreshRate.Numerator = 0; //users =0, originally 60
+ pp.BufferDesc.RefreshRate.Denominator = 0;
+ pp.Windowed = TRUE;
+ pp.SwapEffect = DXGI_SWAP_EFFECT_DISCARD; //D3DSWAPEFFECT_FLIP;
+ pp.OutputWindow = m_hwnd;
+
+ pp.Flags = DXGI_SWAP_CHAIN_FLAG_NONPREROTATED;
+ /* D3DPRESENTFLAG_VIDEO | D3DPRESENTFLAG_DEVICECLIP |
+ D3DPRESENTFLAG_LOCKABLE_BACKBUFFER;*/
+ //pp.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE;
+
+ IDXGIDevice* m_pDXGIDevice;
+ IDXGIAdapter* m_pDXGIAdapter;
+ IDXGIFactory* m_pDXGIFactory;
+
+ hr = m_pDevice->QueryInterface(__uuidof(IDXGIDevice), (void **)& m_pDXGIDevice);
+
+ if ( hr != S_OK )
+ {
+ DBGMSG(L"cDX10Mananger::Initialise(): Unable to get DXGIDevice (hr = 0x%0X)\n", hr );
+ return hr;
+ }
+
+ hr = m_pDXGIDevice->GetParent(__uuidof(IDXGIAdapter), (void **)& m_pDXGIAdapter);
+
+ if ( hr != S_OK )
+ {
+ DBGMSG(L"cDX10Mananger::Initialise(): Unable to get DXGIAdapter (hr = 0x%0X)\n", hr );
+ return hr;
+ }
+
+ hr = m_pDXGIAdapter->GetParent(__uuidof(IDXGIFactory), (void **)& m_pDXGIFactory);
+
+ if ( hr != S_OK )
+ {
+ DBGMSG(L"cDX10Mananger::Initialise(): Unable to get DXGIFactory (hr = 0x%0X)\n", hr );
+ return hr;
+ }
+ hr = m_pDXGIFactory->CreateSwapChain(m_pDevice, &pp, &m_pSwapChain );
+#endif
+
+ return hr;
+}
+
+
+//-------------------------------------------------------------------
+// DrawFrame
+//
+// Draw the video frame.
+//-------------------------------------------------------------------
+
+HRESULT DrawDevice::DrawFrame(IMFMediaBuffer *pBuffer)
+{
+ if (m_convertFn == NULL)
+ {
+ return MF_E_INVALIDREQUEST;
+ }
+
+ HRESULT hr = S_OK;
+ BYTE *pbScanline0 = NULL;
+ LONG lStride = 0;
+#ifdef DX9
+ D3DLOCKED_RECT lr;
+
+ IDirect3DSurface9 *pSurf = NULL;
+ IDirect3DSurface9 *pBB = NULL;
+#else
+ DXGI_MAPPED_RECT lr;
+
+ IDXGISurface *pSurf = NULL;
+ IDXGISurface *pBB = NULL;
+
+#endif
+ if (m_pDevice == NULL || m_pSwapChain == NULL)
+ {
+ return S_OK;
+ }
+
+
+ VideoBufferLock buffer(pBuffer); // Helper object to lock the video buffer.
+
+ hr = TestCooperativeLevel();
+
+ if (FAILED(hr)) { goto done; }
+
+ // Lock the video buffer. This method returns a pointer to the first scan
+ // line in the image, and the stride in bytes.
+
+ hr = buffer.LockBuffer(m_lDefaultStride, m_height, &pbScanline0, &lStride);
+
+ if (FAILED(hr)) { goto done; }
+#ifdef DX9
+ // Get the swap-chain surface.
+ hr = m_pSwapChain->GetBackBuffer(0, D3DBACKBUFFER_TYPE_MONO, &pSurf);
+
+ if (FAILED(hr)) { goto done; }
+
+ // Lock the swap-chain surface.
+ hr = pSurf->LockRect(&lr, NULL, D3DLOCK_NOSYSLOCK );
+#else
+ // Get the swap-chain surface.
+ hr = m_pSwapChain->GetBuffer(0, __uuidof(pSurf), reinterpret_cast(&pSurf));
+
+ if (FAILED(hr)) { goto done; }
+
+ // Lock the swap-chain surface.
+ hr = pSurf->Map( &lr, DXGI_MAP_WRITE );
+#endif
+ if (FAILED(hr)) { goto done; }
+
+
+ // Convert the frame. This also copies it to the Direct3D surface.
+
+ m_convertFn(
+ (BYTE*)lr.pBits,
+ lr.Pitch,
+ pbScanline0,
+ lStride,
+ m_width,
+ m_height
+ );
+#ifdef DX9
+ hr = pSurf->UnlockRect();
+
+ if (FAILED(hr)) { goto done; }
+
+
+ // Color fill the back buffer.
+ hr = m_pDevice->GetBackBuffer(0, 0, D3DBACKBUFFER_TYPE_MONO, &pBB);
+
+ if (FAILED(hr)) { goto done; }
+
+ hr = m_pDevice->ColorFill(pBB, NULL, D3DCOLOR_XRGB(0x80, 0x80, 0x80));
+
+ if (FAILED(hr)) { goto done; }
+
+
+ // Blit the frame.
+
+ hr = m_pDevice->StretchRect(pSurf, NULL, pBB, &m_rcDest, D3DTEXF_LINEAR);
+
+ if (FAILED(hr)) { goto done; }
+
+ RenderObjects();
+ // Present the frame.
+
+ hr = m_pDevice->Present(NULL, NULL, NULL, NULL);
+
+
+#else
+ hr = pSurf->Unmap();
+
+ if (FAILED(hr)) { goto done; }
+
+ //Create a render target view
+ ID3D11Texture2D *pBackBuffer;
+ ID3D11RenderTargetView *g_pRenderTargetView;
+
+ hr = m_pSwapChain->GetBuffer( 0, __uuidof( ID3D11Texture2D ), (LPVOID*)&pBackBuffer );
+
+ if (FAILED(hr)) { goto done; }
+
+ hr = m_pDevice->CreateRenderTargetView( pBackBuffer, NULL, &g_pRenderTargetView );
+ pBackBuffer->Release();
+ if (FAILED(hr)) { goto done; }
+
+ m_pDeviceContext->OMSetRenderTargets( 1, &g_pRenderTargetView, NULL );
+
+ //
+ // Clear the backbuffer
+ //
+ float ClearColor[4] = { 0.5f, 0.5f, 0.5f, 1.0f }; // RGBA
+ m_pDeviceContext->ClearRenderTargetView( g_pRenderTargetView, ClearColor );
+
+
+ if (FAILED(hr)) { goto done; }
+
+
+ // Blit the frame.
+
+ //hr = m_pDeviceContext->StretchRect(pSurf, NULL, pBB, &m_rcDest, D3DTEXF_LINEAR);
+
+ if (FAILED(hr)) { goto done; }
+
+
+ // Present the frame.
+
+ hr = m_pSwapChain->Present(0,0);
+#endif
+
+done:
+#ifdef DX9
+ SafeRelease(&pBB);
+ if ( pSurf) SafeRelease(&pSurf);
+#endif
+ return hr;
+}
+
+//-------------------------------------------------------------------
+// TestCooperativeLevel
+//
+// Test the cooperative-level status of the Direct3D device.
+//-------------------------------------------------------------------
+
+HRESULT DrawDevice::TestCooperativeLevel()
+{
+ if (m_pDevice == NULL)
+ {
+ return E_FAIL;
+ }
+
+ HRESULT hr = S_OK;
+#ifdef DX9
+ // Check the current status of D3D9 device.
+ hr = m_pDevice->TestCooperativeLevel();
+
+ switch (hr)
+ {
+ case D3D_OK:
+ break;
+
+ case D3DERR_DEVICELOST:
+ hr = S_OK;
+
+ case D3DERR_DEVICENOTRESET:
+ hr = ResetDevice();
+ break;
+
+ default:
+ // Some other failure.
+ break;
+ }
+#endif
+ return hr;
+}
+
+
+//-------------------------------------------------------------------
+// ResetDevice
+//
+// Resets the Direct3D device.
+//-------------------------------------------------------------------
+
+HRESULT DrawDevice::ResetDevice()
+{
+
+ HRESULT hr = S_OK;
+#ifdef DX9
+ if (m_pDevice)
+ {
+ D3DPRESENT_PARAMETERS d3dpp = m_d3dpp;
+
+ hr = m_pDevice->Reset(&d3dpp);
+
+ if (FAILED(hr))
+ {
+ DestroyDevice();
+ }
+ }
+
+ if (m_pDevice == NULL)
+ {
+ hr = CreateDevice(m_hwnd);
+
+ if (FAILED(hr)) { goto done; }
+ }
+
+ if ((m_pSwapChain == NULL) && (m_format != D3DFMT_UNKNOWN))
+ {
+ hr = CreateSwapChains();
+
+ if (FAILED(hr)) { goto done; }
+
+ UpdateDestinationRect();
+ }
+#else
+ if (m_pDevice)
+ {
+ DestroyDevice();
+ }
+
+ if (m_pDevice == NULL)
+ {
+ hr = CreateDevice(m_hwnd);
+
+ if (FAILED(hr)) { goto done; }
+ }
+
+ if ((m_pSwapChain == NULL) && (m_format != DXGI_FORMAT_UNKNOWN))
+ {
+ hr = CreateSwapChains();
+
+ if (FAILED(hr)) { goto done; }
+
+ UpdateDestinationRect();
+ }
+#endif
+done:
+
+ return hr;
+}
+
+
+//-------------------------------------------------------------------
+// DestroyDevice
+//
+// Release all Direct3D resources.
+//-------------------------------------------------------------------
+
+void DrawDevice::DestroyDevice()
+{
+ SafeRelease(&m_pSwapChain);
+ SafeRelease(&m_pDevice);
+#ifdef DX9
+ SafeRelease(&m_pD3D);
+ if ( m_pVertexBuffer ) SafeRelease(&m_pVertexBuffer);
+ if ( m_pIndexBuffer ) SafeRelease(&m_pIndexBuffer);
+#endif
+}
+
+
+struct CUSTOMVERTEX {FLOAT X, Y, Z,RHW; DWORD COLOR;};
+
+typedef struct CUSTOMVERTEX CustomVertex;
+
+#define CUSTOMFVF (D3DFVF_XYZRHW | D3DFVF_DIFFUSE)
+
+#define TRSF( axe, data ) (translate##axe + (scale##axe * data));
+
+HRESULT DrawDevice::RenderObjects()
+{
+ HRESULT hr = S_OK;
+ //const ARFloat* nMatrix;
+ DWORD color = D3DCOLOR_ARGB(127, 0, 127, 0);
+ int count = g_pAnalyse->markers.size();
+ if ( !count ) return hr;
+ //D3DMATRIX world_matrix;
+ //D3DMATRIX view_matrix;
+ //D3DMATRIX projection_matrix;
+
+ //nMatrix = g_pAnalyse->getModelViewMatrix();
+ //
+ ////OpenGL
+ // //m0 m4 m8 m12
+ // //m1 m5 m9 m13
+ // //m2 m6 m10 m14
+ // //m3 m7 m11 m15
+ // //WPF
+ // //M11 M12 M13 M14
+ // //M21 M22 M23 M24
+ // //M31 M32 M33 M34
+ // //M41 M42 M43 M44
+ //
+ //view_matrix._11 = nMatrix[0];
+ // view_matrix._12 = nMatrix[4];
+ // view_matrix._13 = nMatrix[8];
+ // view_matrix._14 = nMatrix[12];
+ // view_matrix._21 = nMatrix[1];
+ // view_matrix._22 = nMatrix[5];
+ // view_matrix._23 = nMatrix[9];
+ // view_matrix._24 = nMatrix[13];
+ // view_matrix._31 = nMatrix[2];
+ // view_matrix._32 = nMatrix[6];
+ // view_matrix._33 = nMatrix[10];
+ // view_matrix._34 = nMatrix[14];
+ // view_matrix._41 = nMatrix[3];
+ // view_matrix._42 = nMatrix[7];
+ // view_matrix._43 = nMatrix[11];
+ // view_matrix._44 = nMatrix[15];
+ //nMatrix = g_pAnalyse->getProjectionMatrix();
+ //projection_matrix._11 = nMatrix[0];
+ // projection_matrix._12 = nMatrix[4];
+ // projection_matrix._13 = nMatrix[8];
+ // projection_matrix._14 = nMatrix[12];
+ // projection_matrix._21 = nMatrix[1];
+ // projection_matrix._22 = nMatrix[5];
+ // projection_matrix._23 = nMatrix[9];
+ // projection_matrix._24 = nMatrix[13];
+ // projection_matrix._31 = nMatrix[2];
+ // projection_matrix._32 = nMatrix[6];
+ // projection_matrix._33 = nMatrix[10];
+ // projection_matrix._34 = nMatrix[14];
+ // projection_matrix._41 = nMatrix[3];
+ // projection_matrix._42 = nMatrix[7];
+ // projection_matrix._43 = nMatrix[11];
+ // projection_matrix._44 = nMatrix[15];
+
+ float scaleX = (float)(m_rcDest.right - m_rcDest.left ) / (float)m_width;
+ float scaleY = (float)(m_rcDest.bottom - m_rcDest.top ) / (float)m_height;
+ float translateX = m_rcDest.left;
+ float translateY = m_rcDest.top;
+ CustomVertex *quad = new CustomVertex[4*count];
+ short *indexes = new short[6*count];
+ int i =0;
+ for( ARAnalyse::MarkersMap::iterator iter = g_pAnalyse->markers.begin(); iter != g_pAnalyse->markers.end(); iter++)
+ {
+ int index = i*4;
+ ARToolKitPlus::ARMarkerInfo info = g_pAnalyse->getDetectedMarker(i++);
+
+ quad[index].X = TRSF( X, info.vertex[0][0]) ;
+ quad[index].Y = TRSF( Y, (m_height - info.vertex[0][1]));
+ quad[index].Z = 0.0;
+ quad[index].RHW = 1.0f;
+ quad[index++].COLOR = color;
+ quad[index].X = TRSF( X, info.vertex[1][0]);
+ quad[index].Y = TRSF( Y, (m_height - info.vertex[1][1]));
+ quad[index].Z = 0;
+ quad[index].RHW = 1.0f;
+ quad[index++].COLOR = color;
+ quad[index].X = TRSF( X, info.vertex[2][0]);
+ quad[index].Y = TRSF( Y, (m_height - info.vertex[2][1]));
+ quad[index].Z = 0;
+ quad[index].RHW = 1.0f;
+ quad[index++].COLOR = color;
+ quad[index].X = TRSF( X, info.vertex[3][0]);
+ quad[index].Y = TRSF( Y, (m_height - info.vertex[3][1]));
+ quad[index].Z = 0;
+ quad[index].RHW = 1.0f;
+ quad[index].COLOR = color;
+ }
+ int j = 0;
+ for ( int i = 0; i < count; i++ )
+ {
+ int index = i*4;
+ indexes[j++] = index+0;
+ indexes[j++] = index+2;
+ indexes[j++] = index+1;
+ indexes[j++] = index+3;
+ indexes[j++] = index+2;
+ indexes[j++] = index+0;
+ }
+ //if ( !m_pVertexBuffer )
+ //{
+ // // dim the vertex buffer to containt maximun markers
+ //hr = m_pDevice->CreateVertexBuffer(4*4096 *sizeof(CustomVertex), D3DUSAGE_WRITEONLY, CUSTOMFVF, D3DPOOL_DEFAULT, &m_pVertexBuffer, NULL);
+ //if(FAILED(hr)) goto done;
+ //}
+ //if ( !m_pIndexBuffer )
+ //{
+ // // dim the index buffer to containt maximun markers
+ //hr = m_pDevice->CreateIndexBuffer(6*4096*sizeof(short), D3DUSAGE_WRITEONLY, D3DFMT_INDEX16, D3DPOOL_DEFAULT, &m_pIndexBuffer, NULL);
+ //if(FAILED(hr)) goto done;
+ //}
+ //// copy vertex buffer
+ //VOID* pVoid;
+ //hr = m_pVertexBuffer->Lock(0, 0, (void**)&pVoid, 0);
+ //if(FAILED(hr)) goto done;
+ //
+ //memcpy(pVoid, quad,4*count*sizeof(CustomVertex));
+ //m_pVertexBuffer->Unlock();
+
+ //// copy index buffer
+ //hr = m_pIndexBuffer->Lock(0, 0, (void**)&pVoid, 0);
+ //if(FAILED(hr)) goto done;
+ //
+ //memcpy(pVoid, indexes, 6*count*sizeof(short));
+ //m_pIndexBuffer->Unlock();
+ //memset( (void*) &world_matrix , 0, sizeof( world_matrix ));
+ ////D3DMatrixIdentity( &world_matrix );
+ //world_matrix._11 = scaleX;
+ //world_matrix._22 = scaleY;
+ //world_matrix._33 = 1.0; //scale Z
+ //world_matrix._41 = translateX;
+ //world_matrix._42 = translateY;
+ //world_matrix._43 = 0.0; // translate Z
+ //world_matrix._44 = 1.0;
+
+ //m_pDevice->SetRenderState(D3DRS_FILLMODE,D3DFILL_WIREFRAME);
+ //m_pDevice->SetRenderState(D3DRS_LIGHTING, true);
+ //m_pDevice->LightEnable( 0, TRUE );
+
+ m_pDevice->BeginScene();
+ //m_pDevice->SetTransform(D3DTS_WORLD, &world_matrix);
+ //m_pDevice->SetTransform(D3DTS_VIEW, &view_matrix);
+ //m_pDevice->SetTransform(D3DTS_PROJECTION, &projection_matrix);
+ m_pDevice->SetFVF(CUSTOMFVF);
+ //m_pDevice->SetIndices(m_pIndexBuffer);
+ //m_pDevice->SetStreamSource(0, m_pVertexBuffer, 0, sizeof(CustomVertex));
+ //m_pDevice->DrawIndexedPrimitive(D3DPT_TRIANGLELIST, 0, 0, 4*count, 0, 2*count);
+ //m_pDevice->DrawIndexedPrimitive(D3DPT_LINELIST, 0, 0, 4*count, 0, 2*count);
+ m_pDevice->DrawIndexedPrimitiveUP(D3DPT_TRIANGLELIST, 0, 4*count, 2*count, indexes, D3DFMT_INDEX16,quad,sizeof(CustomVertex));
+ m_pDevice->EndScene();
+
+ //m_pDevice->SetRenderState(D3DRS_FILLMODE,D3DFILL_SOLID);
+
+done:
+ delete quad;
+ delete indexes;
+ return hr;
+}
+
+//-------------------------------------------------------------------
+//
+// Conversion functions
+//
+//-------------------------------------------------------------------
+
+__forceinline BYTE Clip(int clr)
+{
+ return (BYTE)(clr < 0 ? 0 : ( clr > 255 ? 255 : clr ));
+}
+
+__forceinline RGBQUAD ConvertYCrCbToRGB(
+ int y,
+ int cr,
+ int cb
+ )
+{
+ RGBQUAD rgbq;
+
+ int c = y - 16;
+ int d = cb - 128;
+ int e = cr - 128;
+
+ rgbq.rgbRed = Clip(( 298 * c + 409 * e + 128) >> 8);
+ rgbq.rgbGreen = Clip(( 298 * c - 100 * d - 208 * e + 128) >> 8);
+ rgbq.rgbBlue = Clip(( 298 * c + 516 * d + 128) >> 8);
+
+ return rgbq;
+}
+
+
+//-------------------------------------------------------------------
+// TransformImage_RGB24
+//
+// RGB-24 to RGB-32
+//-------------------------------------------------------------------
+
+void TransformImage_RGB24(
+ BYTE* pDest,
+ LONG lDestStride,
+ const BYTE* pSrc,
+ LONG lSrcStride,
+ DWORD dwWidthInPixels,
+ DWORD dwHeightInPixels
+ )
+{
+ for (DWORD y = 0; y < dwHeightInPixels; y++)
+ {
+ RGBTRIPLE *pSrcPel = (RGBTRIPLE*)pSrc;
+ DWORD *pDestPel = (DWORD*)pDest;
+
+ for (DWORD x = 0; x < dwWidthInPixels; x++)
+ {
+#ifdef DX9
+ pDestPel[x] = D3DCOLOR_XRGB(
+ pSrcPel[x].rgbtRed,
+ pSrcPel[x].rgbtGreen,
+ pSrcPel[x].rgbtBlue
+ );
+#else
+ pDestPel[x] = pSrcPel[x].rgbtRed;
+#endif
+ }
+
+ pSrc += lSrcStride;
+ pDest += lDestStride;
+ }
+}
+
+//-------------------------------------------------------------------
+// TransformImage_RGB32
+//
+// RGB-32 to RGB-32
+//
+// Note: This function is needed to copy the image from system
+// memory to the Direct3D surface.
+//-------------------------------------------------------------------
+
+void TransformImage_RGB32(
+ BYTE* pDest,
+ LONG lDestStride,
+ const BYTE* pSrc,
+ LONG lSrcStride,
+ DWORD dwWidthInPixels,
+ DWORD dwHeightInPixels
+ )
+{
+ MFCopyImage(pDest, lDestStride, pSrc, lSrcStride, dwWidthInPixels * 4, dwHeightInPixels);
+}
+
+//-------------------------------------------------------------------
+// TransformImage_YUY2
+//
+// YUY2 to RGB-32
+//-------------------------------------------------------------------
+
+void TransformImage_YUY2(
+ BYTE* pDest,
+ LONG lDestStride,
+ const BYTE* pSrc,
+ LONG lSrcStride,
+ DWORD dwWidthInPixels,
+ DWORD dwHeightInPixels
+ )
+{
+ for (DWORD y = 0; y < dwHeightInPixels; y++)
+ {
+ RGBQUAD *pDestPel = (RGBQUAD*)pDest;
+ WORD *pSrcPel = (WORD*)pSrc;
+
+ for (DWORD x = 0; x < dwWidthInPixels; x += 2)
+ {
+ // Byte order is U0 Y0 V0 Y1
+
+ int y0 = (int)LOBYTE(pSrcPel[x]);
+ int u0 = (int)HIBYTE(pSrcPel[x]);
+ int y1 = (int)LOBYTE(pSrcPel[x + 1]);
+ int v0 = (int)HIBYTE(pSrcPel[x + 1]);
+
+ pDestPel[x] = ConvertYCrCbToRGB(y0, v0, u0);
+ pDestPel[x + 1] = ConvertYCrCbToRGB(y1, v0, u0);
+ }
+
+ pSrc += lSrcStride;
+ pDest += lDestStride;
+ }
+
+}
+
+
+//-------------------------------------------------------------------
+// TransformImage_NV12
+//
+// NV12 to RGB-32
+//-------------------------------------------------------------------
+
+void TransformImage_NV12(
+ BYTE* pDst,
+ LONG dstStride,
+ const BYTE* pSrc,
+ LONG srcStride,
+ DWORD dwWidthInPixels,
+ DWORD dwHeightInPixels
+ )
+{
+ const BYTE* lpBitsY = pSrc;
+ const BYTE* lpBitsCb = lpBitsY + (dwHeightInPixels * srcStride);;
+ const BYTE* lpBitsCr = lpBitsCb + 1;
+
+ for (UINT y = 0; y < dwHeightInPixels; y += 2)
+ {
+ const BYTE* lpLineY1 = lpBitsY;
+ const BYTE* lpLineY2 = lpBitsY + srcStride;
+ const BYTE* lpLineCr = lpBitsCr;
+ const BYTE* lpLineCb = lpBitsCb;
+
+ LPBYTE lpDibLine1 = pDst;
+ LPBYTE lpDibLine2 = pDst + dstStride;
+
+ for (UINT x = 0; x < dwWidthInPixels; x += 2)
+ {
+ int y0 = (int)lpLineY1[0];
+ int y1 = (int)lpLineY1[1];
+ int y2 = (int)lpLineY2[0];
+ int y3 = (int)lpLineY2[1];
+ int cb = (int)lpLineCb[0];
+ int cr = (int)lpLineCr[0];
+
+ RGBQUAD r = ConvertYCrCbToRGB(y0, cr, cb);
+ lpDibLine1[0] = r.rgbBlue;
+ lpDibLine1[1] = r.rgbGreen;
+ lpDibLine1[2] = r.rgbRed;
+ lpDibLine1[3] = 0; // Alpha
+
+ r = ConvertYCrCbToRGB(y1, cr, cb);
+ lpDibLine1[4] = r.rgbBlue;
+ lpDibLine1[5] = r.rgbGreen;
+ lpDibLine1[6] = r.rgbRed;
+ lpDibLine1[7] = 0; // Alpha
+
+ r = ConvertYCrCbToRGB(y2, cr, cb);
+ lpDibLine2[0] = r.rgbBlue;
+ lpDibLine2[1] = r.rgbGreen;
+ lpDibLine2[2] = r.rgbRed;
+ lpDibLine2[3] = 0; // Alpha
+
+ r = ConvertYCrCbToRGB(y3, cr, cb);
+ lpDibLine2[4] = r.rgbBlue;
+ lpDibLine2[5] = r.rgbGreen;
+ lpDibLine2[6] = r.rgbRed;
+ lpDibLine2[7] = 0; // Alpha
+
+ lpLineY1 += 2;
+ lpLineY2 += 2;
+ lpLineCr += 2;
+ lpLineCb += 2;
+
+ lpDibLine1 += 8;
+ lpDibLine2 += 8;
+ }
+
+ pDst += (2 * dstStride);
+ lpBitsY += (2 * srcStride);
+ lpBitsCr += srcStride;
+ lpBitsCb += srcStride;
+ }
+}
+
+
+//-------------------------------------------------------------------
+// LetterBoxDstRect
+//
+// Takes a src rectangle and constructs the largest possible
+// destination rectangle within the specifed destination rectangle
+// such thatthe video maintains its current shape.
+//
+// This function assumes that pels are the same shape within both the
+// source and destination rectangles.
+//
+//-------------------------------------------------------------------
+
+RECT LetterBoxRect(const RECT& rcSrc, const RECT& rcDst)
+{
+ // figure out src/dest scale ratios
+ int iSrcWidth = Width(rcSrc);
+ int iSrcHeight = Height(rcSrc);
+
+ int iDstWidth = Width(rcDst);
+ int iDstHeight = Height(rcDst);
+
+ int iDstLBWidth;
+ int iDstLBHeight;
+
+ if (MulDiv(iSrcWidth, iDstHeight, iSrcHeight) <= iDstWidth) {
+
+ // Column letter boxing ("pillar box")
+
+ iDstLBWidth = MulDiv(iDstHeight, iSrcWidth, iSrcHeight);
+ iDstLBHeight = iDstHeight;
+ }
+ else {
+
+ // Row letter boxing.
+
+ iDstLBWidth = iDstWidth;
+ iDstLBHeight = MulDiv(iDstWidth, iSrcHeight, iSrcWidth);
+ }
+
+
+ // Create a centered rectangle within the current destination rect
+
+ RECT rc;
+
+ LONG left = rcDst.left + ((iDstWidth - iDstLBWidth) / 2);
+ LONG top = rcDst.top + ((iDstHeight - iDstLBHeight) / 2);
+
+ SetRect(&rc, left, top, left + iDstLBWidth, top + iDstLBHeight);
+
+ return rc;
+}
+
+
+//-----------------------------------------------------------------------------
+// CorrectAspectRatio
+//
+// Converts a rectangle from the source's pixel aspect ratio (PAR) to 1:1 PAR.
+// Returns the corrected rectangle.
+//
+// For example, a 720 x 486 rect with a PAR of 9:10, when converted to 1x1 PAR,
+// is stretched to 720 x 540.
+//-----------------------------------------------------------------------------
+
+RECT CorrectAspectRatio(const RECT& src, const MFRatio& srcPAR)
+{
+ // Start with a rectangle the same size as src, but offset to the origin (0,0).
+ RECT rc = {0, 0, src.right - src.left, src.bottom - src.top};
+
+ if ((srcPAR.Numerator != 1) || (srcPAR.Denominator != 1))
+ {
+ // Correct for the source's PAR.
+
+ if (srcPAR.Numerator > srcPAR.Denominator)
+ {
+ // The source has "wide" pixels, so stretch the width.
+ rc.right = MulDiv(rc.right, srcPAR.Numerator, srcPAR.Denominator);
+ }
+ else if (srcPAR.Numerator < srcPAR.Denominator)
+ {
+ // The source has "tall" pixels, so stretch the height.
+ rc.bottom = MulDiv(rc.bottom, srcPAR.Denominator, srcPAR.Numerator);
+ }
+ // else: PAR is 1:1, which is a no-op.
+ }
+ return rc;
+}
+
+
+//-----------------------------------------------------------------------------
+// GetDefaultStride
+//
+// Gets the default stride for a video frame, assuming no extra padding bytes.
+//
+//-----------------------------------------------------------------------------
+
+HRESULT GetDefaultStride(IMFMediaType *pType, LONG *plStride)
+{
+ LONG lStride = 0;
+
+ // Try to get the default stride from the media type.
+ HRESULT hr = pType->GetUINT32(MF_MT_DEFAULT_STRIDE, (UINT32*)&lStride);
+ if (FAILED(hr))
+ {
+ // Attribute not set. Try to calculate the default stride.
+ GUID subtype = GUID_NULL;
+
+ UINT32 width = 0;
+ UINT32 height = 0;
+
+ // Get the subtype and the image size.
+ hr = pType->GetGUID(MF_MT_SUBTYPE, &subtype);
+ if (SUCCEEDED(hr))
+ {
+ hr = MFGetAttributeSize(pType, MF_MT_FRAME_SIZE, &width, &height);
+ }
+ if (SUCCEEDED(hr))
+ {
+ hr = MFGetStrideForBitmapInfoHeader(subtype.Data1, width, &lStride);
+ }
+
+ // Set the attribute for later reference.
+ if (SUCCEEDED(hr))
+ {
+ (void)pType->SetUINT32(MF_MT_DEFAULT_STRIDE, UINT32(lStride));
+ }
+ }
+
+ if (SUCCEEDED(hr))
+ {
+ *plStride = lStride;
+ }
+ return hr;
+}
+
diff --git a/ARMFCaptureD3D/device.h b/ARMFCaptureD3D/device.h
new file mode 100644
index 0000000..3be3c16
--- /dev/null
+++ b/ARMFCaptureD3D/device.h
@@ -0,0 +1,93 @@
+//////////////////////////////////////////////////////////////////////////
+//
+// device.h: Manages the Direct3D device
+//
+// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
+// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
+// PARTICULAR PURPOSE.
+//
+// Copyright (c) Microsoft Corporation. All rights reserved.
+//
+//////////////////////////////////////////////////////////////////////////
+
+
+#pragma once
+
+// Function pointer for the function that transforms the image.
+
+typedef void (*IMAGE_TRANSFORM_FN)(
+ BYTE* pDest,
+ LONG lDestStride,
+ const BYTE* pSrc,
+ LONG lSrcStride,
+ DWORD dwWidthInPixels,
+ DWORD dwHeightInPixels
+ );
+
+
+// DrawDevice class
+
+class DrawDevice
+{
+private:
+
+ HWND m_hwnd;
+#ifdef DX9
+ IDirect3D9 *m_pD3D;
+ IDirect3DDevice9 *m_pDevice;
+ IDirect3DSwapChain9 *m_pSwapChain;
+ IDirect3DVertexBuffer9 *m_pVertexBuffer;
+ IDirect3DIndexBuffer9 *m_pIndexBuffer;
+
+ D3DPRESENT_PARAMETERS m_d3dpp;
+
+ // Format information
+ D3DFORMAT m_format;
+#else
+ //IDirect3D9 *m_pD3D;
+ ID3D11Device *m_pDevice;
+ ID3D11DeviceContext *m_pDeviceContext;
+ IDXGISwapChain *m_pSwapChain;
+
+ DXGI_SWAP_CHAIN_DESC m_d3dpp;
+
+ // Format information
+ DXGI_FORMAT m_format;
+#endif
+ UINT m_width;
+ UINT m_height;
+ LONG m_lDefaultStride;
+ MFRatio m_PixelAR;
+ MFVideoInterlaceMode m_interlace;
+ RECT m_rcDest; // Destination rectangle
+
+ // Drawing
+ IMAGE_TRANSFORM_FN m_convertFn; // Function to convert the video to RGB32
+
+private:
+
+ HRESULT TestCooperativeLevel();
+ HRESULT SetConversionFunction(REFGUID subtype);
+ HRESULT CreateSwapChains();
+ void UpdateDestinationRect();
+
+public:
+
+ DrawDevice();
+ virtual ~DrawDevice();
+
+ HRESULT CreateDevice(HWND hwnd);
+ HRESULT ResetDevice();
+ void DestroyDevice();
+
+ HRESULT SetVideoType(IMFMediaType *pType);
+ HRESULT DrawFrame(IMFMediaBuffer *pBuffer);
+
+ HRESULT RenderObjects();
+
+ // What video formats we accept
+ BOOL IsFormatSupported(REFGUID subtype) const;
+ HRESULT GetFormat(DWORD index, GUID *pSubtype) const;
+ void GetSize(UINT* width, UINT *height) const;
+};
diff --git a/ARMFCaptureD3D/ipch/mfcaptured3d-28a9326a/armfcaptured3d-1ab7d59.ipch b/ARMFCaptureD3D/ipch/mfcaptured3d-28a9326a/armfcaptured3d-1ab7d59.ipch
new file mode 100644
index 0000000..2a3c16f
Binary files /dev/null and b/ARMFCaptureD3D/ipch/mfcaptured3d-28a9326a/armfcaptured3d-1ab7d59.ipch differ
diff --git a/ARMFCaptureD3D/options.cpp b/ARMFCaptureD3D/options.cpp
new file mode 100644
index 0000000..e7e7589
--- /dev/null
+++ b/ARMFCaptureD3D/options.cpp
@@ -0,0 +1,1146 @@
+// ****************************************************************************
+// ^FILE: options.c - implement the functions defined in
+//
+// ^HISTORY:
+// 01/16/92 Brad Appleton Created
+//
+// 03/23/93 Brad Appleton
+// - Added OptIstreamIter class
+//
+// 10/08/93 Brad Appleton
+// - Added "hidden" options
+//
+// 02/08/94 Brad Appleton
+// - Added "OptionSpec" class
+// - Permitted use of stdio instead of iostreams via #ifdef USE_STDIO
+//
+// 03/08/94 Brad Appleton
+// - completed support for USE_STDIO
+// - added #ifdef NO_USAGE for people who always want to print their own
+// - Fixed stupid NULL pointer error in OptionsSpec class
+//
+// 07/31/97 Brad Appleton
+// - Added PARSE_POS control flag and POSITIONAL return value.
+// ^^**************************************************************************
+
+
+#include
+#include
+#include
+
+#include "options.h"
+#ifndef _WIN32
+#include
+#endif
+
+using std::cerr;
+using std::endl;
+
+
+
+static const char ident[] = "@(#)Options 1.05" ;
+
+ // I need a portable version of "tolower" that does NOT modify
+ // non-uppercase characters.
+ //
+#define TOLOWER(c) (isupper(c) ? tolower(c) : c)
+
+ // Use this to shut the compiler up about NULL strings
+#define NULLSTR (char *)NULL
+
+// ******************************************************** insertion operators
+
+ // If you are using then you need this stuff!
+ // If you are using then #ifdef this stuff out
+ //
+
+
+#ifdef USE_STDIO
+
+ // Implement just enough of ostream to get this file to compile
+ //
+
+static const char endl = '\n' ;
+
+class ostream {
+public:
+ ostream(FILE * fileptr) : fp(fileptr) {}
+
+ ostream &
+ operator<<(char ch);
+
+ ostream &
+ operator<<(const char * str);
+
+ ostream &
+ write(const char * buf, unsigned bufsize);
+
+private:
+ FILE * fp;
+} ;
+
+ostream &
+ostream::operator<<(char ch) {
+ fputc(ch, fp);
+ return *this;
+}
+
+ostream &
+ostream::operator<<(const char * str) {
+ fputs(str, fp);
+ return *this;
+}
+
+ostream &
+ostream::write(const char * buf, unsigned ) {
+ fputs(buf, fp);
+ return *this;
+}
+
+static ostream cerr(stderr);
+static ostream cout(stdout);
+
+#endif /* USE_STDIO */
+
+// ************************************************************** OptIter
+
+OptIter::~OptIter(void) {}
+
+const char *
+OptIter::operator()(void) {
+ const char * elt = curr();
+ (void) next();
+ return elt;
+}
+
+// ************************************************************** OptIterRwd
+
+OptIterRwd::OptIterRwd(void) {}
+
+OptIterRwd::~OptIterRwd(void) {}
+
+// ************************************************************** OptArgvIter
+
+OptArgvIter::~OptArgvIter(void) {}
+
+const char *
+OptArgvIter::curr(void) {
+ return ((ndx == ac) || (av[ndx] == NULL)) ? NULLSTR : av[ndx];
+}
+
+void
+OptArgvIter::next(void) {
+ if ((ndx != ac) && av[ndx]) ++ndx;
+}
+
+const char *
+OptArgvIter::operator()(void) {
+ return ((ndx == ac) || (av[ndx] == NULL)) ? NULLSTR : av[ndx++];
+}
+
+void
+OptArgvIter::rewind(void) { ndx = 0; }
+
+// ************************************************************** OptStrTokIter
+
+static const char WHITESPACE[] = " \t\n\r\v\f" ;
+const char * OptStrTokIter::default_delims = WHITESPACE ;
+
+OptStrTokIter::OptStrTokIter(const char * tokens, const char * _delimiters)
+ : len(unsigned(strlen(tokens))), str(tokens), seps(_delimiters),
+ cur(NULLSTR), tokstr(NULLSTR)
+{
+ if (seps == NULL) seps = default_delims;
+ tokstr = new char[len + 1];
+ (void) ::strcpy(tokstr, str);
+ cur = ::strtok(tokstr, seps);
+}
+
+
+OptStrTokIter::~OptStrTokIter(void) { delete [] tokstr; }
+
+const char *
+OptStrTokIter::curr(void) { return cur; }
+
+void
+OptStrTokIter::next(void) { if (cur) cur = ::strtok(NULL, seps); }
+
+const char *
+OptStrTokIter::operator()(void) {
+ const char * elt = cur;
+ if (cur) cur = ::strtok(NULL, seps);
+ return elt;
+}
+
+void
+OptStrTokIter::rewind(void) {
+ (void) ::strcpy(tokstr, str);
+ cur = ::strtok(tokstr, seps);
+}
+
+// ************************************************************* OptIstreamIter
+
+#ifdef vms
+ enum { c_COMMENT = '!' } ;
+#else
+ enum { c_COMMENT = '#' } ;
+#endif
+
+const unsigned OptIstreamIter::MAX_LINE_LEN = 1024 ;
+
+ // Constructor
+OptIstreamIter::OptIstreamIter(istream & input) : is(input), tok_iter(NULL)
+{
+#ifdef USE_STDIO
+ fprintf(stderr, "%s: Can't use OptIstreamIter class:\n",
+ "OptIstreamIter::OptIstreamIter");
+ fprintf(stderr, "\tOptions(3C++) was compiled with USE_STDIO #defined.\n");
+ exit(-1);
+#endif /* USE_STDIO */
+}
+
+ // Destructor
+OptIstreamIter::~OptIstreamIter(void) {
+ delete tok_iter;
+}
+
+const char *
+OptIstreamIter::curr(void) {
+#ifdef USE_STDIO
+ return NULLSTR;
+#else
+ const char * result = NULLSTR;
+ if (tok_iter) result = tok_iter->curr();
+ if (result) return result;
+ fill();
+ return (! is) ? NULLSTR : tok_iter->curr();
+#endif /* USE_STDIO */
+}
+
+void
+OptIstreamIter::next(void) {
+#ifdef USE_STDIO
+ return;
+#else
+ const char * result = NULLSTR;
+ if (tok_iter) result = tok_iter->operator()();
+ if (result) return;
+ fill();
+ if (! is) tok_iter->next();
+#endif /* USE_STDIO */
+}
+
+const char *
+OptIstreamIter::operator()(void) {
+#ifdef USE_STDIO
+ return NULLSTR;
+#else
+ const char * result = NULLSTR;
+ if (tok_iter) result = tok_iter->operator()();
+ if (result) return result;
+ fill();
+ return (! is) ? NULLSTR : tok_iter->operator()();
+#endif /* USE_STDIO */
+}
+
+ // What we do is this: for each line of text in the istream, we use
+ // a OptStrTokIter to iterate over each token on the line.
+ //
+ // If the first non-white character on a line is c_COMMENT, then we
+ // consider the line to be a comment and we ignore it.
+ //
+void
+OptIstreamIter::fill(void) {
+#ifdef USE_STDIO
+ return;
+#else
+ char buf[OptIstreamIter::MAX_LINE_LEN];
+ do {
+ *buf = '\0';
+ is.getline(buf, sizeof(buf));
+ char * ptr = buf;
+ while (isspace(*ptr)) ++ptr;
+ if (*ptr && (*ptr != c_COMMENT)) {
+ delete tok_iter;
+ tok_iter = new OptStrTokIter(ptr);
+ return;
+ }
+ } while (is);
+#endif /* USE_STDIO */
+}
+
+// **************************************************** Options class utilities
+
+ // Is this option-char null?
+inline static int
+isNullOpt(char optchar) {
+ return ((! optchar) || isspace(optchar) || (! isprint(optchar)));
+}
+
+ // Check for explicit "end-of-options"
+inline static int
+isEndOpts(const char * token) {
+ return ((token == NULL) || (! ::strcmp(token, "--"))) ;
+}
+
+ // See if an argument is an option
+inline static int
+isOption(unsigned flags, const char * arg) {
+ return (((*arg != '\0') || (arg[1] != '\0')) &&
+ ((*arg == '-') || ((flags & Options::PLUS) && (*arg == '+')))) ;
+}
+
+ // See if we should be parsing only options or if we also need to
+ // parse positional arguments
+inline static int
+isOptsOnly(unsigned flags) {
+ return (flags & Options::PARSE_POS) ? 0 : 1;
+}
+
+ // return values for a keyword matching function
+enum kwdmatch_t { NO_MATCH, PARTIAL_MATCH, EXACT_MATCH } ;
+
+// ---------------------------------------------------------------------------
+// ^FUNCTION: kwdmatch - match a keyword
+//
+// ^SYNOPSIS:
+// static kwdmatch_t kwdmatch(src, attempt, len)
+//
+// ^PARAMETERS:
+// char * src -- the actual keyword to match
+// char * attempt -- the possible keyword to compare against "src"
+// int len -- number of character of "attempt" to consider
+// (if 0 then we should use all of "attempt")
+//
+// ^DESCRIPTION:
+// See if "attempt" matches some prefix of "src" (case insensitive).
+//
+// ^REQUIREMENTS:
+// - attempt should be non-NULL and non-empty
+//
+// ^SIDE-EFFECTS:
+// None.
+//
+// ^RETURN-VALUE:
+// An enumeration value of type kwdmatch_t corresponding to whether
+// We had an exact match, a partial match, or no match.
+//
+// ^ALGORITHM:
+// Trivial
+// ^^-------------------------------------------------------------------------
+static kwdmatch_t
+kwdmatch(const char * src, const char * attempt, size_t len =0) {
+ size_t i;
+
+ if (src == attempt) return EXACT_MATCH ;
+ if ((src == NULL) || (attempt == NULL)) return NO_MATCH ;
+ if ((! *src) && (! *attempt)) return EXACT_MATCH ;
+ if ((! *src) || (! *attempt)) return NO_MATCH ;
+
+ for (i = 0 ; ((i < len) || (len == 0)) &&
+ (attempt[i]) && (attempt[i] != ' ') ; i++) {
+ if (TOLOWER(src[i]) != TOLOWER(attempt[i])) return NO_MATCH ;
+ }
+
+ return (src[i]) ? PARTIAL_MATCH : EXACT_MATCH ;
+}
+
+// **************************************************************** OptionSpec
+
+ // Class that represents an option-specification
+ // *NOTE*:: Assumes that the char-ptr given to the constructor points
+ // to storage that will NOT be modified and whose lifetime will
+ // be as least as long as the OptionSpec object we construct.
+ //
+class OptionSpec {
+public:
+ OptionSpec(const char * decl =NULLSTR)
+ : hidden(0), spec(decl)
+ {
+ if (spec == NULL) spec = NULL_spec;
+ CheckHidden();
+ }
+
+ OptionSpec(const OptionSpec & cp) : hidden(cp.hidden), spec(cp.spec) {}
+
+ // NOTE: use default destructor!
+
+ // Assign to another OptionSpec
+ OptionSpec &
+ operator=(const OptionSpec & cp) {
+ if (this != &cp) {
+ spec = cp.spec;
+ hidden = cp.hidden;
+ }
+ return *this;
+ }
+
+ // Assign to a string
+ OptionSpec &
+ operator=(const char * decl) {
+ if (spec != decl) {
+ spec = decl;
+ hidden = 0;
+ CheckHidden();
+ }
+ return *this;
+ }
+
+ // Convert to char-ptr by returning the original declaration-string
+ operator const char*() { return isHiddenOpt() ? (spec - 1) : spec; }
+
+ // Is this option NULL?
+ int
+ isNULL(void) const { return ((spec == NULL) || (spec == NULL_spec)); }
+
+ // Is this options incorrectly specified?
+ int
+ isSyntaxError(const char * name) const;
+
+ // See if this is a Hidden option
+ int
+ isHiddenOpt(void) const { return hidden; }
+
+ // Get the corresponding option-character
+ char
+ OptChar(void) const { return *spec; }
+
+ // Get the corresponding long-option string
+ const char *
+ LongOpt(void) const {
+ return (spec[1] && spec[2] && (! isspace(spec[2]))) ? (spec + 2) : NULLSTR;
+ }
+
+ // Does this option require an argument?
+ int
+ isValRequired(void) const {
+ return ((spec[1] == ':') || (spec[1] == '+'));
+ }
+
+ // Does this option take an optional argument?
+ int
+ isValOptional(void) const {
+ return ((spec[1] == '?') || (spec[1] == '*'));
+ }
+
+ // Does this option take no arguments?
+ int
+ isNoArg(void) const {
+ return ((spec[1] == '|') || (! spec[1]));
+ }
+
+ // Can this option take more than one argument?
+ int
+ isList(void) const {
+ return ((spec[1] == '+') || (spec[1] == '*'));
+ }
+
+ // Does this option take any arguments?
+ int
+ isValTaken(void) const {
+ return (isValRequired() || isValOptional()) ;
+ }
+
+ // Format this option in the given buffer
+ unsigned
+ Format(char * buf, unsigned optctrls) const;
+
+private:
+ void
+ CheckHidden(void) {
+ if ((! hidden) && (*spec == '-')) {
+ ++hidden;
+ ++spec;
+ }
+ }
+
+ unsigned hidden : 1; // hidden-flag
+ const char * spec; // string specification
+
+ static const char NULL_spec[];
+} ;
+
+const char OptionSpec::NULL_spec[] = "\0\0\0" ;
+
+int
+OptionSpec::isSyntaxError(const char * name) const {
+ int error = 0;
+ if ((! spec) || (! *spec)) {
+ cerr << name << ": empty option specifier." << endl;
+ cerr << "\tmust be at least 1 character long." << endl;
+ ++error;
+ } else if (spec[1] && (strchr("|?:*+", spec[1]) == NULL)) {
+ cerr << name << ": bad option specifier \"" << spec << "\"." << endl;
+ cerr << "\t2nd character must be in the set \"|?:*+\"." << endl;
+ ++error;
+ }
+ return error;
+}
+
+// ---------------------------------------------------------------------------
+// ^FUNCTION: OptionSpec::Format - format an option-spec for a usage message
+//
+// ^SYNOPSIS:
+// unsigned OptionSpec::Format(buf, optctrls) const
+//
+// ^PARAMETERS:
+// char * buf -- where to print the formatted option
+// unsigned optctrls -- option-parsing configuration flags
+//
+// ^DESCRIPTION:
+// Self-explanatory.
+//
+// ^REQUIREMENTS:
+// - buf must be large enough to hold the result
+//
+// ^SIDE-EFFECTS:
+// - writes to buf.
+//
+// ^RETURN-VALUE:
+// Number of characters written to buf.
+//
+// ^ALGORITHM:
+// Follow along in the source - it's not hard but it is tedious!
+// ^^-------------------------------------------------------------------------
+unsigned
+OptionSpec::Format(char * buf, unsigned optctrls) const {
+#ifdef NO_USAGE
+ return (*buf = '\0');
+#else
+ static char default_value[] = "";
+ if (isHiddenOpt()) return (unsigned)(*buf = '\0');
+ char optchar = OptChar();
+ const char * longopt = LongOpt();
+ char * p = buf ;
+
+ const char * value = NULLSTR;
+ size_t longopt_len = 0;
+ size_t value_len = 0;
+
+ if (longopt) {
+ value = ::strchr(longopt, ' ');
+ longopt_len = (value) ? (value - longopt) : ::strlen(longopt);
+ } else {
+ value = ::strchr(spec + 1, ' ');
+ }
+ while (value && (*value == ' ')) ++value;
+ if (value && *value) {
+ value_len = ::strlen(value);
+ } else {
+ value = default_value;
+ value_len = sizeof(default_value) - 1;
+ }
+
+ if ((optctrls & Options::SHORT_ONLY) &&
+ ((! isNullOpt(optchar)) || (optctrls & Options::NOGUESSING))) {
+ longopt = NULLSTR;
+ }
+ if ((optctrls & Options::LONG_ONLY) &&
+ (longopt || (optctrls & Options::NOGUESSING))) {
+ optchar = '\0';
+ }
+ if (isNullOpt(optchar) && (longopt == NULL)) {
+ *buf = '\0';
+ return 0;
+ }
+
+ *(p++) = '[';
+
+ // print the single character option
+ if (! isNullOpt(optchar)) {
+ *(p++) = '-';
+ *(p++) = optchar;
+ }
+
+ if ((! isNullOpt(optchar)) && (longopt)) *(p++) = '|';
+
+ // print the long option
+ if (longopt) {
+ *(p++) = '-';
+ if (! (optctrls & (Options::LONG_ONLY | Options::SHORT_ONLY))) {
+ *(p++) = '-';
+ }
+ strncpy(p, longopt, longopt_len);
+ p += longopt_len;
+ }
+
+ // print any argument the option takes
+ if (isValTaken()) {
+ *(p++) = ' ' ;
+ if (isValOptional()) *(p++) = '[' ;
+ strcpy(p, value);
+ p += value_len;
+ if (isList()) {
+ strcpy(p, " ...");
+ p += 4;
+ }
+ if (isValOptional()) *(p++) = ']' ;
+ }
+
+ *(p++) = ']';
+ *p = '\0';
+
+ return (unsigned) strlen(buf);
+#endif /* USE_STDIO */
+}
+
+// ******************************************************************* Options
+
+#if (defined(MSWIN) || defined(OS2) || defined(MSDOS))
+# define DIR_SEP_CHAR '\\'
+#else
+# define DIR_SEP_CHAR '/'
+#endif
+
+Options::Options(const char * _name, const char * const optv[])
+ : explicit_end(0), optctrls(DEFAULT), optvec(optv),
+ nextchar(NULLSTR), listopt(NULLSTR), cmdname(_name)
+{
+ const char * basename = ::strrchr(cmdname, DIR_SEP_CHAR);
+ if (basename) cmdname = basename + 1;
+ check_syntax();
+}
+
+Options::~Options(void) {}
+
+ // Make sure each option-specifier has correct syntax.
+ //
+ // If there is even one invalid specifier, then exit ungracefully!
+ //
+void
+Options::check_syntax(void) const {
+ int errors = 0;
+ if ((optvec == NULL) || (! *optvec)) return;
+
+ for (const char * const * optv = optvec ; *optv ; optv++) {
+ OptionSpec optspec = *optv;
+ errors += optspec.isSyntaxError(cmdname);
+ }
+ if (errors) exit(127);
+}
+
+// ---------------------------------------------------------------------------
+// ^FUNCTION: Options::match_opt - match an option
+//
+// ^SYNOPSIS:
+// const char * match_opt(opt, int ignore_case) const
+//
+// ^PARAMETERS:
+// char opt -- the option-character to match
+// int ignore_case -- should we ignore character-case?
+//
+// ^DESCRIPTION:
+// See if "opt" is found in "optvec"
+//
+// ^REQUIREMENTS:
+// - optvec should be non-NULL and terminated by a NULL pointer.
+//
+// ^SIDE-EFFECTS:
+// None.
+//
+// ^RETURN-VALUE:
+// NULL if no match is found,
+// otherwise a pointer to the matching option-spec.
+//
+// ^ALGORITHM:
+// foreach option-spec
+// - see if "opt" is a match, if so return option-spec
+// end-for
+// ^^-------------------------------------------------------------------------
+const char *
+Options::match_opt(char opt, int ignore_case) const {
+ if ((optvec == NULL) || (! *optvec)) return NULLSTR;
+
+ for (const char * const * optv = optvec ; *optv ; optv++) {
+ OptionSpec optspec = *optv;
+ char optchar = optspec.OptChar();
+ if (isNullOpt(optchar)) continue;
+ if (opt == optchar) {
+ return optspec;
+ } else if (ignore_case && (TOLOWER(opt) == TOLOWER(optchar))) {
+ return optspec;
+ }
+ }
+
+ return NULLSTR; // not found
+}
+
+// ---------------------------------------------------------------------------
+// ^FUNCTION: Options::match_longopt - match a long-option
+//
+// ^SYNOPSIS:
+// const char * Options::match_longopt(opt, len, ambiguous)
+//
+// ^PARAMETERS:
+// char * opt -- the long-option to match
+// int len -- the number of character of "opt" to match
+// int & ambiguous -- set by this routine before returning.
+//
+// ^DESCRIPTION:
+// Try to match "opt" against some unique prefix of a long-option
+// (case insensitive).
+//
+// ^REQUIREMENTS:
+// - optvec should be non-NULL and terminated by a NULL pointer.
+//
+// ^SIDE-EFFECTS:
+// - *ambiguous is set to '1' if "opt" matches >1 long-option
+// (otherwise it is set to 0).
+//
+// ^RETURN-VALUE:
+// NULL if no match is found,
+// otherwise a pointer to the matching option-spec.
+//
+// ^ALGORITHM:
+// ambiguous is FALSE
+// foreach option-spec
+// if we have an EXACT-MATCH, return the option-spec
+// if we have a partial-match then
+// if we already had a previous partial match then
+// set ambiguous = TRUE and return NULL
+// else
+// remember this options spec and continue matching
+// end-if
+// end-if
+// end-for
+// if we had exactly 1 partial match return it, else return NULL
+// ^^-------------------------------------------------------------------------
+const char *
+Options::match_longopt(const char * opt, size_t len, int & ambiguous) const {
+ kwdmatch_t result;
+ const char * matched = NULLSTR ;
+
+ ambiguous = 0;
+ if ((optvec == NULL) || (! *optvec)) return NULLSTR;
+
+ for (const char * const * optv = optvec ; *optv ; optv++) {
+ OptionSpec optspec = *optv;
+ const char * longopt = optspec.LongOpt();
+ if (longopt == NULL) continue;
+ result = kwdmatch(longopt, opt, len);
+ if (result == EXACT_MATCH) {
+ return optspec;
+ } else if (result == PARTIAL_MATCH) {
+ if (matched) {
+ ++ambiguous;
+ return NULLSTR;
+ } else {
+ matched = optspec;
+ }
+ }
+ }//for
+
+ return matched;
+}
+
+// ---------------------------------------------------------------------------
+// ^FUNCTION: Options::parse_opt - parse an option
+//
+// ^SYNOPSIS:
+// int Options::parse_opt(iter, optarg)
+//
+// ^PARAMETERS:
+// OptIter & iter -- option iterator
+// const char * & optarg -- where to store any option-argument
+//
+// ^DESCRIPTION:
+// Parse the next option in iter (advancing as necessary).
+// Make sure we update the nextchar pointer along the way. Any option
+// we find should be returned and optarg should point to its argument.
+//
+// ^REQUIREMENTS:
+// - nextchar must point to the prospective option character
+//
+// ^SIDE-EFFECTS:
+// - iter is advanced when an argument completely parsed
+// - optarg is modified to point to any option argument
+// - if Options::QUIET is not set, error messages are printed on cerr
+//
+// ^RETURN-VALUE:
+// 'c' if the -c option was matched (optarg points to its argument)
+// BADCHAR if the option is invalid (optarg points to the bad
+// option-character).
+//
+// ^ALGORITHM:
+// It gets complicated -- follow the comments in the source.
+// ^^-------------------------------------------------------------------------
+int
+Options::parse_opt(OptIter & iter, const char * & _optarg) {
+ listopt = NULLSTR; // reset the list pointer
+
+ if ((optvec == NULL) || (! *optvec)) return Options::ENDOPTS;
+
+ // Try to match a known option
+ OptionSpec optspec = match_opt(*(nextchar++), (optctrls & Options::ANYCASE));
+
+ // Check for an unknown option
+ if (optspec.isNULL()) {
+ // See if this was a long-option in disguise
+ if (! (optctrls & Options::NOGUESSING)) {
+ unsigned save_ctrls = optctrls;
+ const char * save_nextchar = nextchar;
+ nextchar -= 1;
+ optctrls |= (Options::QUIET | Options::NOGUESSING);
+ int optchar = parse_longopt(iter, _optarg);
+ optctrls = save_ctrls;
+ if (optchar > 0) {
+ return optchar;
+ } else {
+ nextchar = save_nextchar;
+ }
+ }
+ if (! (optctrls & Options::QUIET)) {
+ cerr << cmdname << ": unknown option -"
+ << *(nextchar - 1) << "." << endl ;
+ }
+ _optarg = (nextchar - 1); // record the bad option in optarg
+ return Options::BADCHAR;
+ }
+
+ // If no argument is taken, then leave now
+ if (optspec.isNoArg()) {
+ _optarg = NULLSTR;
+ return optspec.OptChar();
+ }
+
+ // Check for argument in this arg
+ if (*nextchar) {
+ _optarg = nextchar; // the argument is right here
+ nextchar = NULLSTR; // we've exhausted this arg
+ if (optspec.isList()) listopt = optspec ; // save the list-spec
+ return optspec.OptChar();
+ }
+
+ // Check for argument in next arg
+ const char * nextarg = iter.curr();
+ if ((nextarg != NULL) &&
+ (optspec.isValRequired() || (! isOption(optctrls, nextarg)))) {
+ _optarg = nextarg; // the argument is here
+ iter.next(); // end of arg - advance
+ if (optspec.isList()) listopt = optspec ; // save the list-spec
+ return optspec.OptChar();
+ }
+
+ // No argument given - if its required, thats an error
+ _optarg = NULLSTR;
+ if (optspec.isValRequired() && !(optctrls & Options::QUIET)) {
+ cerr << cmdname << ": argument required for -" << optspec.OptChar()
+ << " option." << endl ;
+ }
+ return optspec.OptChar();
+}
+
+// ---------------------------------------------------------------------------
+// ^FUNCTION: Options::parse_longopt - parse a long-option
+//
+// ^SYNOPSIS:
+// int Options::parse_longopt(iter, optarg)
+//
+// ^PARAMETERS:
+// OptIter & iter -- option iterator
+// const char * & optarg -- where to store any option-argument
+//
+// ^DESCRIPTION:
+// Parse the next long-option in iter (advancing as necessary).
+// Make sure we update the nextchar pointer along the way. Any option
+// we find should be returned and optarg should point to its argument.
+//
+// ^REQUIREMENTS:
+// - nextchar must point to the prospective option character
+//
+// ^SIDE-EFFECTS:
+// - iter is advanced when an argument completely parsed
+// - optarg is modified to point to any option argument
+// - if Options::QUIET is not set, error messages are printed on cerr
+//
+// ^RETURN-VALUE:
+// 'c' if the the long-option corresponding to the -c option was matched
+// (optarg points to its argument)
+// BADKWD if the option is invalid (optarg points to the bad long-option
+// name).
+//
+// ^ALGORITHM:
+// It gets complicated -- follow the comments in the source.
+// ^^-------------------------------------------------------------------------
+int
+Options::parse_longopt(OptIter & iter, const char * & _optarg) {
+ size_t len = 0;
+ int ambiguous = 0;
+
+ listopt = NULLSTR ; // reset the list-spec
+
+ if ((optvec == NULL) || (! *optvec)) return Options::ENDOPTS;
+
+ // if a value is supplied in this argv element, get it now
+ const char * val = strpbrk(nextchar, ":=") ;
+ if (val) {
+ len = val - nextchar ;
+ ++val ;
+ }
+
+ // Try to match a known long-option
+ OptionSpec optspec = match_longopt(nextchar, len, ambiguous);
+
+ // Check for an unknown long-option
+ if (optspec.isNULL()) {
+ // See if this was a short-option in disguise
+ if ((! ambiguous) && (! (optctrls & Options::NOGUESSING))) {
+ unsigned save_ctrls = optctrls;
+ const char * save_nextchar = nextchar;
+ optctrls |= (Options::QUIET | Options::NOGUESSING);
+ int optchar = parse_opt(iter, _optarg);
+ optctrls = save_ctrls;
+ if (optchar > 0) {
+ return optchar;
+ } else {
+ nextchar = save_nextchar;
+ }
+ }
+ if (! (optctrls & Options::QUIET)) {
+ cerr << cmdname << ": " << ((ambiguous) ? "ambiguous" : "unknown")
+ << " option "
+ << ((optctrls & Options::LONG_ONLY) ? "-" : "--")
+ << nextchar << "." << endl ;
+ }
+ _optarg = nextchar; // record the bad option in optarg
+ nextchar = NULLSTR; // we've exhausted this argument
+ return (ambiguous) ? Options::AMBIGUOUS : Options::BADKWD;
+ }
+
+ // If no argument is taken, then leave now
+ if (optspec.isNoArg()) {
+ if ((val) && ! (optctrls & Options::QUIET)) {
+ cerr << cmdname << ": option "
+ << ((optctrls & Options::LONG_ONLY) ? "-" : "--")
+ << optspec.LongOpt() << " does NOT take an argument." << endl ;
+ }
+ _optarg = val; // record the unexpected argument
+ nextchar = NULLSTR; // we've exhausted this argument
+ return optspec.OptChar();
+ }
+
+ // Check for argument in this arg
+ if (val) {
+ _optarg = val; // the argument is right here
+ nextchar = NULLSTR; // we exhausted the rest of this arg
+ if (optspec.isList()) listopt = optspec ; // save the list-spec
+ return optspec.OptChar();
+ }
+
+ // Check for argument in next arg
+ const char * nextarg = iter.curr(); // find the next argument to parse
+ if ((nextarg != NULL) &&
+ (optspec.isValRequired() || (! isOption(optctrls, nextarg)))) {
+ _optarg = nextarg; // the argument is right here
+ iter.next(); // end of arg - advance
+ nextchar = NULLSTR; // we exhausted the rest of this arg
+ if (optspec.isList()) listopt = optspec ; // save the list-spec
+ return optspec.OptChar();
+ }
+
+ // No argument given - if its required, thats an error
+ _optarg = NULLSTR;
+ if (optspec.isValRequired() && !(optctrls & Options::QUIET)) {
+ const char * longopt = optspec.LongOpt();
+ const char * spc = ::strchr(longopt, ' ');
+ size_t longopt_len;
+ if (spc) {
+ longopt_len = spc - longopt;
+ } else {
+ longopt_len = ::strlen(longopt);
+ }
+ cerr << cmdname << ": argument required for "
+ << ((optctrls & Options::LONG_ONLY) ? "-" : "--");
+ cerr.write(longopt, longopt_len) << " option." << endl ;
+ }
+ nextchar = NULLSTR; // we exhausted the rest of this arg
+ return optspec.OptChar();
+}
+
+// ---------------------------------------------------------------------------
+// ^FUNCTION: Options::usage - print usage
+//
+// ^SYNOPSIS:
+// void Options::usage(os, positionals)
+//
+// ^PARAMETERS:
+// ostream & os -- where to print the usage
+// char * positionals -- command-line syntax for any positional args
+//
+// ^DESCRIPTION:
+// Print command-usage (using either option or long-option syntax) on os.
+//
+// ^REQUIREMENTS:
+// os should correspond to an open output file.
+//
+// ^SIDE-EFFECTS:
+// Prints on os
+//
+// ^RETURN-VALUE:
+// None.
+//
+// ^ALGORITHM:
+// Print usage on os, wrapping long lines where necessary.
+// ^^-------------------------------------------------------------------------
+void
+Options::usage(ostream & os, const char * positionals) const {
+#ifdef NO_USAGE
+ return;
+#else
+ const char * const * optv = optvec;
+ unsigned cols = 79;
+ int first, nloop;
+ char buf[256] ;
+
+ if ((optv == NULL) || (! *optv)) return;
+
+ // print first portion "usage: progname"
+ os << "usage: " << cmdname ;
+ size_t ll = strlen(cmdname) + 7;
+
+ // save the current length so we know how much space to skip for
+ // subsequent lines.
+ //
+ size_t margin = ll + 1;
+
+ // print the options and the positional arguments
+ for (nloop = 0, first = 1 ; !nloop ; optv++, first = 0) {
+ size_t len;
+ OptionSpec optspec = *optv;
+
+ // figure out how wide this parameter is (for printing)
+ if (! *optv) {
+ len = strlen(positionals);
+ ++nloop; // terminate this loop
+ } else {
+ if (optspec.isHiddenOpt()) continue;
+ len = optspec.Format(buf, optctrls);
+ }
+
+ // Will this fit?
+ if ((ll + len + 1) > (cols - first)) {
+ os << '\n' ; // No - start a new line;
+#ifdef USE_STDIO
+ for (int _i_ = 0; _i_ < margin; ++_i_) os << " ";
+#else
+ os.width(margin); os << "" ;
+#endif
+ ll = margin;
+ } else {
+ os << ' ' ; // Yes - just throw in a space
+ ++ll;
+ }
+ ll += len;
+ os << ((nloop) ? positionals : buf) ;
+ }// for each ad
+
+ os << endl ;
+#endif /* NO_USAGE */
+}
+
+
+// ---------------------------------------------------------------------------
+// ^FUNCTION: Options::operator() - get options from the command-line
+//
+// ^SYNOPSIS:
+// int Options::operator()(iter, optarg)
+//
+// ^PARAMETERS:
+// OptIter & iter -- option iterator
+// const char * & optarg -- where to store any option-argument
+//
+// ^DESCRIPTION:
+// Parse the next option in iter (advancing as necessary).
+// Make sure we update the nextchar pointer along the way. Any option
+// we find should be returned and optarg should point to its argument.
+//
+// ^REQUIREMENTS:
+// None.
+//
+// ^SIDE-EFFECTS:
+// - iter is advanced when an argument is completely parsed
+// - optarg is modified to point to any option argument
+// - if Options::QUIET is not set, error messages are printed on cerr
+//
+// ^RETURN-VALUE:
+// 0 if all options have been parsed.
+// 'c' if the the option or long-option corresponding to the -c option was
+// matched (optarg points to its argument).
+// BADCHAR if the option is invalid (optarg points to the bad option char).
+// BADKWD if the option is invalid (optarg points to the bad long-opt name).
+// AMBIGUOUS if an ambiguous keyword name was given (optarg points to the
+// ambiguous keyword name).
+// POSITIONAL if PARSE_POS was set and the current argument is a positional
+// parameter (in which case optarg points to the positional argument).
+//
+// ^ALGORITHM:
+// It gets complicated -- follow the comments in the source.
+// ^^-------------------------------------------------------------------------
+int
+Options::operator()(OptIter & iter, const char * & _optarg) {
+ int parse_opts_only = isOptsOnly(optctrls);
+ if (parse_opts_only) explicit_end = 0;
+
+ // See if we have an option left over from before ...
+ if ((nextchar) && *nextchar) {
+ return parse_opt(iter, _optarg);
+ }
+
+ // Check for end-of-options ...
+ const char * arg = NULLSTR;
+ int get_next_arg = 0;
+ do {
+ arg = iter.curr();
+ get_next_arg = 0;
+ if (arg == NULL) {
+ listopt = NULLSTR;
+ return Options::ENDOPTS;
+ } else if ((! explicit_end) && isEndOpts(arg)) {
+ iter.next(); // advance past end-of-options arg
+ listopt = NULLSTR;
+ explicit_end = 1;
+ if (parse_opts_only) return Options::ENDOPTS;
+ get_next_arg = 1; // make sure we look at the next argument.
+ }
+ } while (get_next_arg);
+
+ // Do we have a positional arg?
+ if ( explicit_end || (! isOption(optctrls, arg)) ) {
+ if (parse_opts_only) {
+ return Options::ENDOPTS;
+ } else {
+ _optarg = arg; // set optarg to the positional argument
+ iter.next(); // advance iterator to the next argument
+ return Options::POSITIONAL;
+ }
+ }
+
+ iter.next(); // pass the argument that arg already points to
+
+ // See if we have a long option ...
+ if (! (optctrls & Options::SHORT_ONLY)) {
+ if ((*arg == '-') && (arg[1] == '-')) {
+ nextchar = arg + 2;
+ return parse_longopt(iter, _optarg);
+ } else if ((optctrls & Options::PLUS) && (*arg == '+')) {
+ nextchar = arg + 1;
+ return parse_longopt(iter, _optarg);
+ }
+ }
+ if (*arg == '-') {
+ nextchar = arg + 1;
+ if (optctrls & Options::LONG_ONLY) {
+ return parse_longopt(iter, _optarg);
+ } else {
+ return parse_opt(iter, _optarg);
+ }
+ }
+
+ // If we get here - it is because we have a list value
+ OptionSpec optspec = listopt;
+ _optarg = arg ; // record the list value
+ return optspec.OptChar() ;
+}
+
+
+
diff --git a/ARMFCaptureD3D/options.h b/ARMFCaptureD3D/options.h
new file mode 100644
index 0000000..cc15976
--- /dev/null
+++ b/ARMFCaptureD3D/options.h
@@ -0,0 +1,496 @@
+// ****************************************************************************
+// ^FILE: options.h - option parsing classes
+//
+// ^DESCRIPTION:
+// This file defines classes used to parse command-line options.
+// Options may be parsed from an array of strings, or from any structure
+// for which a corresponding option-iterator exists.
+//
+// ^HISTORY:
+// 03/06/92 Brad Appleton Created
+//
+// 03/23/93 Brad Appleton
+// - Added OptIstreamIter class
+//
+// 03/08/94 Brad Appleton
+// - Added Options::reset() member function
+//
+// 07/31/97 Brad Appleton
+// - Added PARSE_POS control flag and POSITIONAL return value
+// ^^**************************************************************************
+
+#ifndef _options_h
+#define _options_h
+
+#ifdef USE_STDIO
+# include
+#else
+# include
+using std::istream;
+using std::ostream;
+#endif
+
+// Abstract class to iterate through options/arguments
+//
+class OptIter {
+public:
+ OptIter(void) {}
+ virtual ~OptIter(void);
+
+ // curr() returns the current item in the iterator without
+ // advancing on to the next item. If we are at the end of items
+ // then NULL is returned.
+ virtual const char *
+ curr(void) = 0;
+
+ // next() advances to the next item.
+ virtual void
+ next(void) = 0;
+
+ // operator() returns the current item in the iterator and then
+ // advances on to the next item. If we are at the end of items
+ // then NULL is returned.
+ virtual const char *
+ operator()(void);
+} ;
+
+// Abstract class for a rewindable OptIter
+//
+class OptIterRwd : public OptIter {
+public:
+ OptIterRwd(void);
+
+ virtual ~OptIterRwd(void);
+
+ virtual const char *
+ curr(void) = 0;
+
+ virtual void
+ next(void) = 0;
+
+ virtual const char *
+ operator()(void) = 0;
+
+ // rewind() resets the "current-element" to the first one in the "list"
+ virtual void
+ rewind(void) = 0;
+} ;
+
+// Class to iterate through an array of tokens. The array may be terminated
+// by NULL or a count containing the number of tokens may be given.
+//
+class OptArgvIter : public OptIterRwd {
+private:
+ int ndx; // index of current arg
+ int ac; // arg count
+ const char * const * av; // arg vector
+
+public:
+ OptArgvIter(const char * const argv[])
+ : ndx(0), ac(-1), av(argv) {}
+
+ OptArgvIter(int argc, const char * const argv[])
+ : ndx(0), ac(argc), av(argv) {}
+
+ virtual
+ ~OptArgvIter(void);
+
+ virtual const char *
+ curr(void);
+
+ virtual void
+ next(void);
+
+ virtual const char *
+ operator()(void);
+
+ virtual void
+ rewind(void);
+
+ // index returns the current index to use for argv[]
+ int index(void) { return ndx; }
+} ;
+
+
+// Class to iterate through a string containing delimiter-separated tokens
+//
+class OptStrTokIter : public OptIterRwd {
+private:
+ unsigned len; // length of token-string
+ const char * str; // the token-string
+ const char * seps; // delimiter-set (separator-characters)
+ const char * cur; // current token
+ char * tokstr; // our copy of the token-string
+
+ static const char * default_delims; // default delimiters = whitespace
+
+public:
+ OptStrTokIter(const char * tokens, const char * delimiters =0);
+
+ virtual
+ ~OptStrTokIter(void);
+
+ virtual const char *
+ curr(void);
+
+ virtual void
+ next(void);
+
+ virtual const char *
+ operator()(void);
+
+ virtual void
+ rewind(void);
+
+ // delimiters() with NO arguments returns the current set of delimiters,
+ // If an argument is given then it is used as the new set of delimiters.
+ const char *
+ delimiters(void) { return seps; }
+
+ void
+ delimiters(const char * delims) {
+ seps = (delims) ? delims : default_delims ;
+ }
+} ;
+
+
+ // OptIstreamIter is a class for iterating over arguments that come
+ // from an input stream. Each line of the input stream is considered
+ // to be a set of white-space separated tokens. If the the first
+ // non-white character on a line is '#' ('!' for VMS systems) then
+ // the line is considered a comment and is ignored.
+ //
+ // *Note:: If a line is more than 1022 characters in length then we
+ // treat it as if it were several lines of length 1022 or less.
+ //
+ // *Note:: The string tokens returned by this iterator are pointers
+ // to temporary buffers which may not necessarily stick around
+ // for too long after the call to curr() or operator(), hence
+ // if you need the string value to persist - you will need to
+ // make a copy.
+ //
+class OptIstreamIter : public OptIter {
+private:
+ istream & is ;
+ OptStrTokIter * tok_iter ;
+
+ void
+ fill(void);
+
+public:
+ static const unsigned MAX_LINE_LEN ;
+
+ OptIstreamIter(istream & input);
+
+ virtual
+ ~OptIstreamIter(void);
+
+ virtual const char *
+ curr(void);
+
+ virtual void
+ next(void);
+
+ virtual const char *
+ operator()(void);
+} ;
+
+
+// Now we are ready to define a class to declare and parse command-options
+//
+//
+// CLASS
+// =====
+// Options -- parse command-line options
+//
+// SYNOPSIS
+// ========
+// #include
+//
+// Options opts(cmdname, optv);
+// char cmdname[], *optv[];
+//
+// DESCRIPTION
+// ===========
+// The Options constructor expects a command-name (usually argv[0]) and
+// a pointer to an array of strings. The last element in this array MUST
+// be NULL. Each non-NULL string in the array must have the following format:
+//
+// The 1st character must be the option-name ('c' for a -c option).
+//
+// The 2nd character must be one of '|', '?', ':', '*', or '+'.
+// '|' -- indicates that the option takes NO argument;
+// '?' -- indicates that the option takes an OPTIONAL argument;
+// ':' -- indicates that the option takes a REQUIRED argument;
+// '*' -- indicates that the option takes 0 or more arguments;
+// '+' -- indicates that the option takes 1 or more arguments;
+//
+// The remainder of the string must be the long-option name.
+//
+// If desired, the long-option name may be followed by one or more
+// spaces and then by the name of the option value. This name will
+// be used when printing usage messages. If the option-value-name
+// is not given then the string "" will be used in usage
+// messages.
+//
+// One may use a space to indicate that a particular option does not
+// have a corresponding long-option. For example, "c: " (or "c:")
+// means the -c option takes a value & has NO corresponding long-option.
+//
+// To specify a long-option that has no corresponding single-character
+// option is a bit trickier: Options::operator() still needs an "option-
+// character" to return when that option is matched. One may use a whitespace
+// character or a non-printable character as the single-character option
+// in such a case. (hence " |hello" would only match "--hello").
+//
+// EXCEPTIONS TO THE ABOVE:
+// ------------------------
+// If the 1st character of the string is '-', then the rest of the
+// string must correspond to the above format, and the option is
+// considered to be a hidden-option. This means it will be parsed
+// when actually matching options from the command-line, but will
+// NOT show-up if a usage message is printed using the usage() member
+// function. Such an example might be "-h|hidden". If you want to
+// use any "dummy" options (options that are not parsed, but that
+// to show up in the usage message), you can specify them along with
+// any positional parameters to the usage() member function.
+//
+// If the 2nd character of the string is '\0' then it is assumed
+// that there is no corresponding long-option and that the option
+// takes no argument (hence "f", and "f| " are equivalent).
+//
+// Examples:
+// const char * optv[] = {
+// "c:count ",
+// "s?str ",
+// "x",
+// " |hello",
+// "g+groups ",
+// NULL
+// } ;
+//
+// optv[] now corresponds to the following:
+//
+// usage: cmdname [-c|--count ] [-s|--str []]
+// [-x] [--hello] [-g|--groups ...]
+//
+// Long-option names are matched case-insensitive and only a unique prefix
+// of the name needs to be specified.
+//
+// Option-name characters are case-sensitive!
+//
+// CAVEAT
+// ======
+// Because of the way in which multi-valued options and options with optional
+// values are handled, it is NOT possible to supply a value to an option in
+// a separate argument (different argv[] element) if the value is OPTIONAL
+// and begins with a '-'. What this means is that if an option "-s" takes an
+// optional value value and you wish to supply a value of "-foo" then you must
+// specify this on the command-line as "-s-foo" instead of "-s -foo" because
+// "-s -foo" will be considered to be two separate sets of options.
+//
+// A multi-valued option is terminated by another option or by the end-of
+// options. The following are all equivalent (if "-l" is a multi-valued
+// option and "-x" is an option that takes no value):
+//
+// cmdname -x -l item1 item2 item3 -- arg1 arg2 arg3
+// cmdname -x -litem1 -litem2 -litem3 -- arg1 arg2 arg3
+// cmdname -l item1 item2 item3 -x arg1 arg2 arg3
+//
+//
+// EXAMPLE
+// =======
+// #include
+//
+// static const char * optv[] = {
+// "H|help",
+// "c:count ",
+// "s?str ",
+// "x",
+// " |hello",
+// "g+groups ",
+// NULL
+// } ;
+//
+// main(int argc, char * argv[]) {
+// int optchar;
+// const char * optarg;
+// const char * str = "default_string";
+// int count = 0, xflag = 0, hello = 0;
+// int errors = 0, ngroups = 0;
+//
+// Options opts(*argv, optv);
+// OptArgvIter iter(--argc, ++argv);
+//
+// while( optchar = opts(iter, optarg) ) {
+// switch (optchar) {
+// case 'H' :
+// opts.usage(cout, "files ...");
+// exit(0);
+// break;
+// case 'g' :
+// ++ngroups; break; // the groupname is in "optarg"
+// case 's' :
+// str = optarg; break;
+// case 'x' :
+// ++xflag; break;
+// case ' ' :
+// ++hello; break;
+// case 'c' :
+// if (optarg == NULL) ++errors;
+// else count = (int) atol(optarg);
+// break;
+// default : ++errors; break;
+// } //switch
+// }
+//
+// if (errors || (iter.index() == argc)) {
+// if (! errors) {
+// cerr << opts.name() << ": no filenames given." << endl ;
+// }
+// opts.usage(cerr, "files ...");
+// exit(1);
+// }
+//
+// cout << "xflag=" << ((xflag) ? "ON" : "OFF") << endl
+// << "hello=" << ((hello) ? "YES" : "NO") << endl
+// << "count=" << count << endl
+// << "str=\"" << ((str) ? str : "No value given!") << "\"" << endl
+// << "ngroups=" << ngroups << endl ;
+//
+// if (iter.index() < argc) {
+// cout << "files=" ;
+// for (int i = iter.index() ; i < argc ; i++) {
+// cout << "\"" << argv[i] << "\" " ;
+// }
+// cout << endl ;
+// }
+// }
+//
+class Options {
+private:
+ unsigned explicit_end : 1; // were we terminated because of "--"?
+ unsigned optctrls : 7; // control settings (a set of OptCtrl masks)
+ const char * const * optvec; // vector of option-specifications (last=NULL)
+ const char * nextchar; // next option-character to process
+ const char * listopt; // last list-option we matched
+ const char * cmdname; // name of the command
+
+ void
+ check_syntax(void) const;
+
+ const char *
+ match_opt(char opt, int ignore_case =0) const;
+
+ const char *
+ match_longopt(const char * opt, size_t len, int & ambiguous) const;
+
+ int
+ parse_opt(OptIter & iter, const char * & optarg);
+
+ int
+ parse_longopt(OptIter & iter, const char * & optarg);
+
+public:
+ enum OptCtrl {
+ DEFAULT = 0x00, // Default setting
+ ANYCASE = 0x01, // Ignore case when matching short-options
+ QUIET = 0x02, // Dont print error messages
+ PLUS = 0x04, // Allow "+" as a long-option prefix
+ SHORT_ONLY = 0x08, // Dont accept long-options
+ LONG_ONLY = 0x10, // Dont accept short-options
+ // (also allows "-" as a long-option prefix).
+ NOGUESSING = 0x20, // Normally, when we see a short (long) option
+ // on the command line that doesnt match any
+ // known short (long) options, then we try to
+ // "guess" by seeing if it will match any known
+ // long (short) option. Setting this mask prevents
+ // this "guessing" from occurring.
+ PARSE_POS = 0x40 // By default, Options will not present positional
+ // command-line arguments to the user and will
+ // instead stop parsing when the first positonal
+ // argument has been encountered. If this flag
+ // is given, Options will present positional
+ // arguments to the user with a return code of
+ // POSITIONAL; ENDOPTS will be returned only
+ // when the end of the argument list is reached.
+ } ;
+
+ // Error return values for operator()
+ //
+ enum OptRC {
+ ENDOPTS = 0,
+ BADCHAR = -1,
+ BADKWD = -2,
+ AMBIGUOUS = -3,
+ POSITIONAL = -4
+ } ;
+
+ Options(const char * name, const char * const optv[]);
+
+ virtual
+ ~Options(void);
+
+ // name() returns the command name
+ const char *
+ name(void) const { return cmdname; }
+
+ // ctrls() (with no arguments) returns the existing control settings
+ unsigned
+ ctrls(void) const { return optctrls; }
+
+ // ctrls() (with 1 argument) sets new control settings
+ void
+ ctrls(unsigned newctrls) { optctrls = newctrls; }
+
+ // reset for another pass to parse for options
+ void
+ reset(void) { nextchar = listopt = NULL; }
+
+ // usage() prints options usage (followed by any positional arguments
+ // listed in the parameter "positionals") on the given outstream
+ void
+ usage(ostream & os, const char * positionals) const ;
+
+ // operator() iterates through the arguments as necessary (using the
+ // given iterator) and returns the character value of the option
+ // (or long-option) that it matched. If the option has a value
+ // then the value given may be found in optarg (otherwise optarg
+ // will be NULL).
+ //
+ // 0 is returned upon end-of-options. At this point, "iter" may
+ // be used to process any remaining positional parameters. If the
+ // PARSE_POS control-flag is set then 0 is returned only when all
+ // arguments in "iter" have been exhausted.
+ //
+ // If an invalid option is found then BADCHAR is returned and *optarg
+ // is the unrecognized option character.
+ //
+ // If an invalid long-option is found then BADKWD is returned and optarg
+ // points to the bad long-option.
+ //
+ // If an ambiguous long-option is found then AMBIGUOUS is returned and
+ // optarg points to the ambiguous long-option.
+ //
+ // If the PARSE_POS control-flag is set then POSITIONAL is returned
+ // when a positional argument is encountered and optarg points to
+ // the positonal argument (and "iter" is advanced to the next argument
+ // in the iterator).
+ //
+ // Unless Options::QUIET is used, missing option-arguments and
+ // invalid options (and the like) will automatically cause error
+ // messages to be issued to cerr.
+ int
+ operator()(OptIter & iter, const char * & optarg) ;
+
+ // Call this member function after operator() has returned 0
+ // if you want to know whether or not options were explicitly
+ // terminated because "--" appeared on the command-line.
+ //
+ int
+ explicit_endopts() const { return explicit_end; }
+} ;
+
+#endif /* _options_h */
+
+
diff --git a/ARMFCaptureD3D/preview.cpp b/ARMFCaptureD3D/preview.cpp
new file mode 100644
index 0000000..e8d3624
--- /dev/null
+++ b/ARMFCaptureD3D/preview.cpp
@@ -0,0 +1,701 @@
+//////////////////////////////////////////////////////////////////////////
+//
+// preview.cpp: Manages video preview.
+//
+// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
+// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
+// PARTICULAR PURPOSE.
+//
+// Copyright (c) Microsoft Corporation. All rights reserved.
+//
+//////////////////////////////////////////////////////////////////////////
+
+#include "ARMFCaptureD3D.h"
+#include "debug.h"
+#include
+#include "ARAnalyse.h"
+
+extern ARAnalyse *g_pAnalyse;
+
+extern HWND g_hStatus;
+
+//-------------------------------------------------------------------
+// CreateInstance
+//
+// Static class method to create the CPreview object.
+//-------------------------------------------------------------------
+
+HRESULT CPreview::CreateInstance(
+ HWND hVideo, // Handle to the video window.
+ HWND hEvent, // Handle to the window to receive notifications.
+ CPreview **ppPlayer // Receives a pointer to the CPreview object.
+ )
+{
+ assert(hVideo != NULL);
+ assert(hEvent != NULL);
+
+ if (ppPlayer == NULL)
+ {
+ return E_POINTER;
+ }
+
+ CPreview *pPlayer = new (std::nothrow) CPreview(hVideo, hEvent);
+
+ // The CPlayer constructor sets the ref count to 1.
+
+ if (pPlayer == NULL)
+ {
+ return E_OUTOFMEMORY;
+ }
+
+ HRESULT hr = pPlayer->Initialize();
+
+ if (SUCCEEDED(hr))
+ {
+ *ppPlayer = pPlayer;
+ (*ppPlayer)->AddRef();
+ }
+
+ SafeRelease(&pPlayer);
+ return hr;
+}
+
+
+//-------------------------------------------------------------------
+// constructor
+//-------------------------------------------------------------------
+
+CPreview::CPreview(HWND hVideo, HWND hEvent) :
+ m_pReader(NULL),
+ m_pSource(NULL),
+ m_hwndVideo(hVideo),
+ m_hwndEvent(hEvent),
+ m_nRefCount(1),
+ m_pwszSymbolicLink(NULL),
+ m_cchSymbolicLink(0)
+{
+ InitializeCriticalSection(&m_critsec);
+ m_video = true;
+ m_transform = false;
+ m_moyen = false;
+}
+
+//-------------------------------------------------------------------
+// destructor
+//-------------------------------------------------------------------
+
+CPreview::~CPreview()
+{
+ CloseDevice();
+ m_draw.DestroyDevice();
+ DeleteCriticalSection(&m_critsec);
+}
+
+
+//-------------------------------------------------------------------
+// Initialize
+//
+// Initializes the object.
+//-------------------------------------------------------------------
+
+HRESULT CPreview::Initialize()
+{
+ HRESULT hr = S_OK;
+
+ hr = m_draw.CreateDevice(m_hwndVideo);
+
+ return hr;
+}
+
+bool CPreview::ToggleVideo()
+{
+ m_video = !m_video;
+ return m_video;
+}
+
+bool CPreview::ToggleTransform()
+{
+ m_transform = !m_transform;
+ return m_transform;
+}
+bool CPreview::ToggleMoyen()
+{
+ m_moyen = !m_moyen;
+ return m_moyen;
+}
+
+//-------------------------------------------------------------------
+// CloseDevice
+//
+// Releases all resources held by this object.
+//-------------------------------------------------------------------
+
+HRESULT CPreview::CloseDevice()
+{
+ EnterCriticalSection(&m_critsec);
+
+ if ( m_pSource )
+ {
+ m_pSource->Stop();
+ m_pSource->Shutdown();
+ }
+
+ SafeRelease(&m_pReader);
+ SafeRelease(&m_pSource);
+
+
+ CoTaskMemFree(m_pwszSymbolicLink);
+ m_pwszSymbolicLink = NULL;
+ m_cchSymbolicLink = 0;
+
+ LeaveCriticalSection(&m_critsec);
+ return S_OK;
+}
+
+
+/////////////// IUnknown methods ///////////////
+
+//-------------------------------------------------------------------
+// AddRef
+//-------------------------------------------------------------------
+
+ULONG CPreview::AddRef()
+{
+ return InterlockedIncrement(&m_nRefCount);
+}
+
+
+//-------------------------------------------------------------------
+// Release
+//-------------------------------------------------------------------
+
+ULONG CPreview::Release()
+{
+ ULONG uCount = InterlockedDecrement(&m_nRefCount);
+ if (uCount == 0)
+ {
+ delete this;
+ }
+ // For thread safety, return a temporary variable.
+ return uCount;
+}
+
+
+
+//-------------------------------------------------------------------
+// QueryInterface
+//-------------------------------------------------------------------
+
+HRESULT CPreview::QueryInterface(REFIID riid, void** ppv)
+{
+ static const QITAB qit[] =
+ {
+ QITABENT(CPreview, IMFSourceReaderCallback),
+ { 0 },
+ };
+ return QISearch(this, qit, riid, ppv);
+}
+
+
+/////////////// IMFSourceReaderCallback methods ///////////////
+
+//-------------------------------------------------------------------
+// OnReadSample
+//
+// Called when the IMFMediaSource::ReadSample method completes.
+//-------------------------------------------------------------------
+
+HRESULT CPreview::OnReadSample(
+ HRESULT hrStatus,
+ DWORD dwStreamIndex,
+ DWORD /*dwStreamFlags*/,
+ LONGLONG llTimestamp,
+ IMFSample *pSample // Can be NULL
+ )
+{
+ HRESULT hr = hrStatus;
+ IMFMediaBuffer *pBuffer = NULL;
+ DWORD cbCurrentLength = 0;
+
+ EnterCriticalSection(&m_critsec);
+
+ if (SUCCEEDED(hr))
+ {
+ if (pSample)
+ {
+ // Get the video frame buffer from the sample.
+ hr = pSample->ConvertToContiguousBuffer(&pBuffer);
+
+ // AR analyse
+ if ( g_pAnalyse && SUCCEEDED(hr) )
+ {
+ BYTE *image_buffer=0;
+ pBuffer->Lock( &image_buffer, 0, &cbCurrentLength );
+ double time = (double)(llTimestamp)/ 10000000.0;
+ // Gray scale & blur & threshold
+ if ( m_transform)
+ g_pAnalyse->Transform( image_buffer, cbCurrentLength, m_moyen );
+ g_pAnalyse->Analyse(time, image_buffer, cbCurrentLength );
+ pBuffer->Unlock();
+ }
+ // Draw the frame.
+
+ if ( m_video && SUCCEEDED(hr))
+ {
+ hr = m_draw.DrawFrame(pBuffer);
+ }
+
+ }
+ }
+ // Request the next frame.
+ if (m_pReader && SUCCEEDED(hr))
+ {
+ hr = m_pReader->ReadSample(
+ dwStreamIndex,
+ 0,
+ NULL, // actual
+ NULL, // flags
+ NULL, // timestamp
+ NULL // sample
+ );
+ }
+
+ if (FAILED(hr))
+ {
+ NotifyError(hr);
+ }
+ if ( pBuffer ) SafeRelease(&pBuffer);
+
+ LeaveCriticalSection(&m_critsec);
+
+ if (g_pAnalyse && SUCCEEDED(hr))
+ {
+ // display status message
+ WCHAR szBuf[1024];
+
+ StringCbPrintf(szBuf, sizeof(szBuf),TEXT("Markers count=%3d confidence=( %0.1f / %0.1f / %0.1f ) FPS=( %0.1f / %0.1f / %0.1f ) delay=( %0.3f / %0.3f / %0.3f )"),
+ g_pAnalyse->markers.size(),
+ g_pAnalyse->confidence.Min(), g_pAnalyse->confidence.Max(), g_pAnalyse->confidence.Avg() ,
+ g_pAnalyse->frame_per_seconds.Min(), g_pAnalyse->frame_per_seconds.Max(), g_pAnalyse->frame_per_seconds.Avg(),
+ g_pAnalyse->frame_delay.Min(), g_pAnalyse->frame_delay.Max(), g_pAnalyse->frame_delay.Avg() );
+ SendMessage(g_hStatus, SB_SETTEXT, 0, (LPARAM)(LPSTR)szBuf );
+ }
+
+ return hr;
+}
+
+
+//-------------------------------------------------------------------
+// TryMediaType
+//
+// Test a proposed video format.
+//-------------------------------------------------------------------
+
+HRESULT CPreview::TryMediaType(IMFMediaType *pType)
+{
+ HRESULT hr = S_OK;
+
+ BOOL bFound = FALSE;
+ GUID subtype = { 0 };
+
+ hr = pType->GetGUID(MF_MT_SUBTYPE, &subtype);
+
+ if (FAILED(hr))
+ {
+ return hr;
+ }
+
+ // Do we support this type directly?
+ if (m_draw.IsFormatSupported(subtype))
+ {
+ bFound = TRUE;
+ }
+ else
+ {
+ // Can we decode this media type to one of our supported
+ // output formats?
+
+ for (DWORD i = 0; ; i++)
+ {
+ // Get the i'th format.
+ hr = m_draw.GetFormat(i, &subtype);
+ if (FAILED(hr)) { break; }
+
+ hr = pType->SetGUID(MF_MT_SUBTYPE, subtype);
+
+ if (FAILED(hr)) { break; }
+
+ // Try to set this type on the source reader.
+ hr = m_pReader->SetCurrentMediaType(
+ (DWORD)MF_SOURCE_READER_FIRST_VIDEO_STREAM,
+ NULL,
+ pType
+ );
+
+ if (SUCCEEDED(hr))
+ {
+ bFound = TRUE;
+ break;
+ }
+ }
+ }
+
+ if (bFound)
+ {
+ EnterCriticalSection(&m_critsec);
+ hr = m_draw.SetVideoType(pType);
+ LeaveCriticalSection(&m_critsec);
+ }
+
+ return hr;
+}
+
+//-------------------------------------------------------------------
+// SetDevice
+//
+// Set up preview for a specified video capture device.
+//-------------------------------------------------------------------
+
+HRESULT CPreview::SetDevice(IMFActivate *pActivate, int formatType)
+{
+ HRESULT hr = S_OK;
+
+ IMFAttributes *pAttributes = NULL;
+ IMFMediaType *pType = NULL;
+
+ EnterCriticalSection(&m_critsec);
+
+ // Release the current device, if any.
+
+ hr = CloseDevice();
+
+ // Create the media source for the device.
+ if (SUCCEEDED(hr))
+ {
+ hr = pActivate->ActivateObject(
+ __uuidof(IMFMediaSource),
+ (void**)&m_pSource
+ );
+ }
+
+ // Get the symbolic link.
+ if (SUCCEEDED(hr))
+ {
+ hr = pActivate->GetAllocatedString(
+ MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_SYMBOLIC_LINK,
+ &m_pwszSymbolicLink,
+ &m_cchSymbolicLink
+ );
+ }
+
+ //
+ // Create the source reader.
+ //
+
+ // Create an attribute store to hold initialization settings.
+
+ if (SUCCEEDED(hr))
+ {
+ hr = MFCreateAttributes(&pAttributes, 2);
+ }
+ if (SUCCEEDED(hr))
+ {
+ hr = pAttributes->SetUINT32(MF_READWRITE_DISABLE_CONVERTERS, TRUE);
+ }
+
+ // Set the callback pointer.
+ if (SUCCEEDED(hr))
+ {
+ hr = pAttributes->SetUnknown(
+ MF_SOURCE_READER_ASYNC_CALLBACK,
+ this
+ );
+ }
+
+ if (SUCCEEDED(hr))
+ {
+ hr = MFCreateSourceReaderFromMediaSource(
+ m_pSource,
+ pAttributes,
+ &m_pReader
+ );
+ }
+
+
+ // Try to find a suitable output type.
+ if (SUCCEEDED(hr))
+ {
+
+ for (DWORD i = formatType; ; i++)
+ {
+ hr = m_pReader->GetNativeMediaType(
+ (DWORD)MF_SOURCE_READER_FIRST_VIDEO_STREAM,
+ i,
+ &pType
+ );
+
+ if (FAILED(hr)) { break; }
+
+ //hr = TryMediaType(pType); already done in SetFormat !!
+ hr = SetFormat(pType);
+
+ SafeRelease(&pType);
+
+ if (SUCCEEDED(hr))
+ {
+ // Found an output type.
+
+ break;
+ }
+ }
+ }
+ if (SUCCEEDED(hr))
+ {
+ // Ask for the first sample.
+ hr = m_pReader->ReadSample(
+ (DWORD)MF_SOURCE_READER_FIRST_VIDEO_STREAM,
+ 0,
+ NULL,
+ NULL,
+ NULL,
+ NULL
+ );
+ }
+
+ if (FAILED(hr))
+ {
+ if (m_pSource)
+ {
+ m_pSource->Shutdown();
+
+ // NOTE: The source reader shuts down the media source
+ // by default, but we might not have gotten that far.
+ }
+ CloseDevice();
+ }
+
+
+ SafeRelease(&pAttributes);
+ SafeRelease(&pType);
+
+ LeaveCriticalSection(&m_critsec);
+ return hr;
+}
+
+
+
+//-------------------------------------------------------------------
+// ResizeVideo
+// Resizes the video rectangle.
+//
+// The application should call this method if the size of the video
+// window changes; e.g., when the application receives WM_SIZE.
+//-------------------------------------------------------------------
+
+HRESULT CPreview::ResizeVideo(WORD /*width*/, WORD /*height*/)
+{
+ HRESULT hr = S_OK;
+
+ EnterCriticalSection(&m_critsec);
+
+ hr = m_draw.ResetDevice();
+
+ if (FAILED(hr))
+ {
+ MessageBox(NULL, L"ResetDevice failed!", NULL, MB_OK);
+ }
+
+ LeaveCriticalSection(&m_critsec);
+
+ return hr;
+}
+
+
+//-------------------------------------------------------------------
+// CheckDeviceLost
+// Checks whether the current device has been lost.
+//
+// The application should call this method in response to a
+// WM_DEVICECHANGE message. (The application must register for
+// device notification to receive this message.)
+//-------------------------------------------------------------------
+
+HRESULT CPreview::CheckDeviceLost(DEV_BROADCAST_HDR *pHdr, BOOL *pbDeviceLost)
+{
+ DEV_BROADCAST_DEVICEINTERFACE *pDi = NULL;
+
+ if (pbDeviceLost == NULL)
+ {
+ return E_POINTER;
+ }
+
+ *pbDeviceLost = FALSE;
+
+ if (pHdr == NULL)
+ {
+ return S_OK;
+ }
+
+ if (pHdr->dbch_devicetype != DBT_DEVTYP_DEVICEINTERFACE)
+ {
+ return S_OK;
+ }
+
+ pDi = (DEV_BROADCAST_DEVICEINTERFACE*)pHdr;
+
+
+ EnterCriticalSection(&m_critsec);
+
+ if (m_pwszSymbolicLink)
+ {
+ if (_wcsicmp(m_pwszSymbolicLink, pDi->dbcc_name) == 0)
+ {
+ *pbDeviceLost = TRUE;
+ }
+ }
+
+ LeaveCriticalSection(&m_critsec);
+
+ return S_OK;
+}
+
+HRESULT CPreview::EnumerateCaptureFormats(IMFMediaType ***pppTypes, UINT32 *pcCount)
+{
+ IMFPresentationDescriptor *pPD = NULL;
+ IMFStreamDescriptor *pSD = NULL;
+ IMFMediaTypeHandler *pHandler = NULL;
+ IMFMediaType *pType = NULL;
+
+ HRESULT hr = m_pSource->CreatePresentationDescriptor(&pPD);
+ if (FAILED(hr))
+ {
+ goto done;
+ }
+
+ BOOL fSelected;
+ hr = pPD->GetStreamDescriptorByIndex(0, &fSelected, &pSD);
+ if (FAILED(hr))
+ {
+ goto done;
+ }
+
+ hr = pSD->GetMediaTypeHandler(&pHandler);
+ if (FAILED(hr))
+ {
+ goto done;
+ }
+
+ DWORD cTypes = 0;
+ hr = pHandler->GetMediaTypeCount(&cTypes);
+ if (FAILED(hr))
+ {
+ goto done;
+ }
+ *pcCount = cTypes;
+ *pppTypes = (IMFMediaType**)CoTaskMemAlloc( cTypes * sizeof(IMFMediaType*));
+
+ for (DWORD i = 0; i < cTypes; i++)
+ {
+ hr = pHandler->GetMediaTypeByIndex(i, &pType);
+ if (FAILED(hr))
+ {
+ goto done;
+ }
+ (*pppTypes)[i] = pType;
+ pType->AddRef();
+ // LogMediaType(pType);
+ //OutputDebugString(L"\n");
+
+ SafeRelease(&pType);
+ }
+
+done:
+ SafeRelease(&pPD);
+ SafeRelease(&pSD);
+ SafeRelease(&pHandler);
+ SafeRelease(&pType);
+ return hr;
+}
+
+HRESULT CPreview::SetFormat(IMFMediaType *pType)
+{
+ IMFPresentationDescriptor *pPD = NULL;
+ IMFStreamDescriptor *pSD = NULL;
+ IMFMediaTypeHandler *pHandler = NULL;
+ UINT32 width;
+ UINT32 height;
+ UINT32 sample_size;
+ //IMFMediaType *pType = NULL;
+ EnterCriticalSection(&m_critsec);
+
+ HRESULT hr = m_pSource->CreatePresentationDescriptor(&pPD);
+ if (FAILED(hr))
+ {
+ goto done;
+ }
+
+ BOOL fSelected;
+ hr = pPD->GetStreamDescriptorByIndex(0, &fSelected, &pSD);
+ if (FAILED(hr))
+ {
+ goto done;
+ }
+
+ hr = pSD->GetMediaTypeHandler(&pHandler);
+ if (FAILED(hr))
+ {
+ goto done;
+ }
+
+ /*hr = pHandler->GetMediaTypeByIndex(dwFormatIndex, &pType);
+ if (FAILED(hr))
+ {
+ goto done;
+ }*/
+
+ hr = pHandler->SetCurrentMediaType(pType);
+ if (FAILED(hr))
+ {
+ goto done;
+ }
+ LeaveCriticalSection(&m_critsec);
+
+ hr = TryMediaType(pType);
+
+ EnterCriticalSection(&m_critsec);
+
+ if (FAILED(hr))
+ {
+ goto done;
+ }
+ hr = MFGetAttributeSize( pType, MF_MT_FRAME_SIZE, &width, &height);
+ if (FAILED(hr))
+ {
+ goto done;
+ }
+ hr = pType->GetUINT32( MF_MT_SAMPLE_SIZE, &sample_size);
+ if (FAILED(hr))
+ {
+ goto done;
+ }
+ LogMediaType(pType);
+
+ // Initialize AR Anayse
+ if ( g_pAnalyse )
+ g_pAnalyse->InitialiseTracker( width, height, sample_size );
+
+done:
+ SafeRelease(&pPD);
+ SafeRelease(&pSD);
+ SafeRelease(&pHandler);
+ //SafeRelease(&pType);
+
+ LeaveCriticalSection(&m_critsec);
+
+ return hr;
+}
+
+
+
+
diff --git a/ARMFCaptureD3D/preview.h b/ARMFCaptureD3D/preview.h
new file mode 100644
index 0000000..968f1a9
--- /dev/null
+++ b/ARMFCaptureD3D/preview.h
@@ -0,0 +1,97 @@
+//////////////////////////////////////////////////////////////////////////
+//
+// preview.h: Manages video preview.
+//
+// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
+// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
+// PARTICULAR PURPOSE.
+//
+// Copyright (c) Microsoft Corporation. All rights reserved.
+//
+//////////////////////////////////////////////////////////////////////////
+
+#pragma once
+#include
+
+
+const UINT WM_APP_PREVIEW_ERROR = WM_APP + 1; // wparam = HRESULT
+
+
+class CPreview : public IMFSourceReaderCallback
+{
+public:
+ static HRESULT CreateInstance(
+ HWND hVideo,
+ HWND hEvent,
+ CPreview **ppPlayer
+ );
+
+ // IUnknown methods
+ STDMETHODIMP QueryInterface(REFIID iid, void** ppv);
+ STDMETHODIMP_(ULONG) AddRef();
+ STDMETHODIMP_(ULONG) Release();
+
+ // IMFSourceReaderCallback methods
+ STDMETHODIMP OnReadSample(
+ HRESULT hrStatus,
+ DWORD dwStreamIndex,
+ DWORD dwStreamFlags,
+ LONGLONG llTimestamp,
+ IMFSample *pSample
+ );
+
+ STDMETHODIMP OnEvent(DWORD, IMFMediaEvent *)
+ {
+ return S_OK;
+ }
+
+ STDMETHODIMP OnFlush(DWORD)
+ {
+ return S_OK;
+ }
+
+ HRESULT SetDevice(IMFActivate *pActivate, int formatType);
+ HRESULT CloseDevice();
+ HRESULT ResizeVideo(WORD width, WORD height);
+ HRESULT CheckDeviceLost(DEV_BROADCAST_HDR *pHdr, BOOL *pbDeviceLost);
+ HRESULT EnumerateCaptureFormats(IMFMediaType ***pppTypes, UINT32 *pcCount);
+ HRESULT SetFormat(IMFMediaType *pActivate);
+
+ bool ToggleVideo();
+ bool ToggleTransform();
+ bool ToggleMoyen();
+
+
+protected:
+
+ bool m_video;
+ bool m_transform;
+ bool m_moyen;
+
+ // Constructor is private. Use static CreateInstance method to create.
+ CPreview(HWND hVideo, HWND hEvent);
+
+ // Destructor is private. Caller should call Release.
+ virtual ~CPreview();
+
+ HRESULT Initialize();
+ void NotifyError(HRESULT hr) { PostMessage(m_hwndEvent, WM_APP_PREVIEW_ERROR, (WPARAM)hr, 0L); }
+ HRESULT TryMediaType(IMFMediaType *pType);
+
+ long m_nRefCount; // Reference count.
+ CRITICAL_SECTION m_critsec;
+
+ HWND m_hwndVideo; // Video window.
+ HWND m_hwndEvent; // Application window to receive events.
+
+ IMFSourceReader *m_pReader;
+ IMFMediaSource *m_pSource;
+
+ DrawDevice m_draw; // Manages the Direct3D device.
+
+ WCHAR *m_pwszSymbolicLink;
+ UINT32 m_cchSymbolicLink;
+
+
+};
\ No newline at end of file
diff --git a/ARMFCaptureD3D/readme.txt b/ARMFCaptureD3D/readme.txt
new file mode 100644
index 0000000..2b85378
--- /dev/null
+++ b/ARMFCaptureD3D/readme.txt
@@ -0,0 +1,51 @@
+MFCaptureD3D Sample
+================================
+Demonstrates how to preview video from a capture device, using
+Direct3D to draw the video frames.
+
+
+Sample Language Implementations
+===============================
+C++
+
+
+Files:
+=============================================
+BufferLock.h
+Debug
+device.cpp
+device.h
+MFCaptureD3D.h
+MFCaptureD3D.rc
+MFCaptureD3D.sln
+MFCaptureD3D.vcproj
+preview.cpp
+preview.h
+readme.txt
+resource.h
+winmain.cpp
+
+
+To build the sample using the command prompt:
+=============================================
+ 1. Open the Command Prompt window and navigate to the MFCaptureD3D directory.
+ 2. Type msbuild MFCaptureD3D.sln.
+
+
+To build the sample using Visual Studio (preferred method):
+===========================================================
+ 1. Open Windows Explorer and navigate to the MFCaptureD3D directory.
+ 2. Double-click the icon for the MFCaptureD3D.sln file to open the file in Visual Studio.
+ 3. In the Build menu, select Build Solution. The application will be built in the default \Debug or \Release directory.
+
+
+To run the sample:
+=================
+ 1. Navigate to the directory that contains the new executable, using the command prompt or Windows Explorer.
+ 2. Type MFCaptureD3D.exe at the command line, or double-click the icon for MFCaptureD3D.exe to launch it from Windows Explorer.
+
+On startup, the application enumerates the available video-capture
+devices and begins streaming from the first device in the list.
+
+To select a different capture device, select Choose Device from the
+File menu.
diff --git a/ARMFCaptureD3D/resource.h b/ARMFCaptureD3D/resource.h
new file mode 100644
index 0000000..67cd108
--- /dev/null
+++ b/ARMFCaptureD3D/resource.h
@@ -0,0 +1,66 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft Visual C++ generated include file.
+// Used by ARMFCaptureD3D.rc
+//
+#define IDR_MENU1 101
+#define IDD_CHOOSE_DEVICE 102
+#define IDD_CHOOSE_VIDEO 103
+#define IDC_LIST1 1001
+#define IDC_DEVICE_LIST 1001
+#define IDC_VIDEO_LIST 1001
+#define ID_ACTION_CHOOSEDEVICE 40001
+#define ID_ACTION_DISPLAYVIDEO 40002
+#define ID_ACTION_CALIBRATE 40003
+#define ID_ACTION_CHOOSEFORMAT 40004
+#define ID_CONFIDENCE_MIN 40005
+#define ID_CONFIDENCE_MAX 40006
+#define ID_CONFIDENCE_ID 40007
+#define ID_FILE_CONFIDENCE 40008
+#define ID_BUTTON2 40009
+#define ID_ACTION_AUTOTHRESHOLD 40010
+#define ID_ACTION_TRANSFORM 40014
+#define ID_DOWNSAMPLE_FACTEUR2 40015
+#define ID_DOWNSAMPLE_FACTEUR4 40016
+#define ID_DOWNSAMPLE_FACTEUR8 40017
+#define ID_BLURPASSE_1PASS 40018
+#define ID_BLURPASSE_2PASSES 40019
+#define ID_BLURPASSE_3PASSES 40020
+#define ID_BLURPASSE_4PASSES 40021
+#define ID_BLURPASSE_2PASS 40022
+#define ID_BLURPASSE_3PASS 40023
+#define ID_BLURPASSE_4PASS 40024
+#define ID_BLURPASSE_5PASSES 40025
+#define ID_BLURPASSE_6PASSES 40026
+#define ID_BLURPASSE_6PASS 40027
+#define ID_BLURPASSE_5PASS 40028
+#define ID_BLURPASSE_10PASSES 40029
+#define ID_BLURPASSE_10PASS 40030
+#define ID_AFFICHAGE_GRAYSCALE 40031
+#define ID_AFFICHAGE_BLUR 40032
+#define ID_AFFICHAGE_DIFF 40033
+#define ID_AFFICHAGE_THRESHOLD 40034
+#define ID_BLURPASSE_0PASSES 40035
+#define ID_DOWNSAMPLE_FACTEUR1 40036
+#define ID_BLURPASSE_0PASS 40037
+#define ID_AFFICHAGE_MOYEN 40038
+#define ID_ACTION_CALCMOYEN 40039
+#define ID_FILTER_MOYEN 40040
+#define ID_FILTER_LAPLACIEN4 40041
+#define ID_FILTER_LAPLACIEN8 40042
+#define ID_FILTER_LAPLACIEND 40043
+#define ID_FILTER_SOBEL 40044
+#define ID_FILTER_PREWITT 40045
+#define ID_FILTER_GAUSSIAN 40046
+#define ID_ACTION_SAVEPROJECTIONDATA 40047
+#define IDC_STATIC -1
+
+// Next default values for new objects
+//
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NEXT_RESOURCE_VALUE 111
+#define _APS_NEXT_COMMAND_VALUE 40048
+#define _APS_NEXT_CONTROL_VALUE 1002
+#define _APS_NEXT_SYMED_VALUE 101
+#endif
+#endif
diff --git a/ARMFCaptureD3D/ribbon1.mfcribbon-ms b/ARMFCaptureD3D/ribbon1.mfcribbon-ms
new file mode 100644
index 0000000..ed43ba9
--- /dev/null
+++ b/ARMFCaptureD3D/ribbon1.mfcribbon-ms
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+ Category
+ Category
+
+
+ Panel
+ Panel
+
+
+
+
+
+
diff --git a/ARMFCaptureD3D/toolbar1.bmp b/ARMFCaptureD3D/toolbar1.bmp
new file mode 100644
index 0000000..58fccf2
Binary files /dev/null and b/ARMFCaptureD3D/toolbar1.bmp differ
diff --git a/ARMFCaptureD3D/winmain.cpp b/ARMFCaptureD3D/winmain.cpp
new file mode 100644
index 0000000..02ad991
--- /dev/null
+++ b/ARMFCaptureD3D/winmain.cpp
@@ -0,0 +1,1416 @@
+//////////////////////////////////////////////////////////////////////////
+//
+// winmain.cpp : Application entry-point
+//
+// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
+// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
+// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
+// PARTICULAR PURPOSE.
+//
+// Copyright (c) Microsoft Corporation. All rights reserved.
+//
+//////////////////////////////////////////////////////////////////////////
+
+#include "ARMFCaptureD3D.h"
+#include "resource.h"
+#include "ConfigFile\ConfigFile.h"
+#include "debug.h"
+#include "options.h"
+#include "ARAnalyse.h"
+
+// Include the v6 common controls in the manifest
+#pragma comment(linker, \
+ "\"/manifestdependency:type='Win32' "\
+ "name='Microsoft.Windows.Common-Controls' "\
+ "version='6.0.0.0' "\
+ "processorArchitecture='*' "\
+ "publicKeyToken='6595b64144ccf1df' "\
+ "language='*'\"")
+
+
+//
+// ChooseDeviceParam structure
+//
+// Holds an array of IMFActivate pointers that represent video
+// capture devices.
+//
+
+struct ChooseDeviceParam
+{
+ IMFActivate **ppDevices; // Array of IMFActivate pointers.
+ UINT32 count; // Number of elements in the array.
+ UINT32 selection; // Selected device, by array index.
+};
+
+
+//
+// ChooseDeviceParam structure
+//
+// Holds an array of IMFActivate pointers that represent video
+// capture devices.
+//
+
+struct ChooseVideoParam
+{
+ IMFMediaType **ppTypes; // Array of IMFMediaType pointers.
+ UINT32 count; // Number of elements in the array.
+ UINT32 selection; // Selected device, by array index.
+};
+
+BOOL InitializeApplication();
+BOOL InitializeWindow(HWND *pHwnd);
+void CleanUp();
+INT MessageLoop(HWND hwnd);
+
+LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
+INT_PTR CALLBACK DeviceDlgProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
+INT_PTR CALLBACK VideoDlgProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
+void ShowErrorMessage(PCWSTR format, HRESULT hr);
+
+// Window message handlers
+BOOL OnCreate(HWND hwnd, LPCREATESTRUCT lpCreateStruct);
+void OnClose(HWND hwnd);
+void OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify);
+void OnSize(HWND hwnd, UINT state, int cx, int cy);
+void OnDeviceChange(HWND hwnd, DEV_BROADCAST_HDR *pHdr);
+void OnPaint(HWND hwnd);
+void OnInitMenu(HWND hwnd, HMENU menu);
+
+// Command handlers
+void OnChooseDevice(HWND hwnd, BOOL bPrompt, const WCHAR *name, int instance);
+void OnChooseFormat(HWND hwnd, BOOL bPrompt, int index);
+int DeviceGetByName(ChooseDeviceParam *pParam , const WCHAR* name, int instance);
+
+
+// Constants
+const WCHAR CLASS_NAME[] = L"MFCapture Window Class";
+const WCHAR WINDOW_NAME[] = L"MFCapture Sample Application";
+
+
+
+// Global variables
+HWND g_hVideo = NULL;
+HWND g_hStatus = NULL;
+HWND g_hTrack = NULL;
+int g_Threshold = 125;
+
+HWND g_hTrackSeuilMin = NULL;
+int g_ThresholdMin = 127;
+
+HWND g_hTrackSeuilMax = NULL;
+int g_ThresholdMax = 127;
+
+CPreview *g_pPreview = NULL;
+HDEVNOTIFY g_hdevnotify = NULL;
+ARAnalyse *g_pAnalyse = NULL;
+ConfigFile *g_config = NULL;
+
+std::wstring g_camera_name;
+int g_camera_instance = 0;
+std::string g_ivy_domain;
+int g_format_video = 0;
+bool g_toggle_video = false;
+bool g_read_calibrationfile = false;
+
+// command line options
+
+std::wstring widen( const string& str )
+{
+ std::wostringstream wstm ;
+ const std::ctype& ctfacet = std::use_facet< std::ctype >( wstm.getloc() ) ;
+ for( size_t i=0 ; i& ctfacet = std::use_facet< std::ctype >( stm.getloc() ) ;
+ for( size_t i=0 ; i default: Logitech",
+ "i:instcam default: 0",
+ "b:bus ",
+ "v|video non affichage video",
+ "f:format ",
+ "p:projection Read ProjectionFile ",
+ NULL
+ } ;
+
+ Options opts("ARIvy", optv);
+ opts.ctrls( Options::LONG_ONLY );
+ OptStrTokIter iter(argv);
+
+ while( (optchar = opts(iter, pa_optarg)) != 0 ) {
+ switch (optchar) {
+
+ case 'c':
+ g_camera_name = widen( pa_optarg );
+ break;
+ case 'i':
+ g_camera_instance = atoi( pa_optarg );
+ break;
+
+ case 'b':
+ g_ivy_domain = pa_optarg;
+ break;
+ case 'v':
+ g_toggle_video = true;
+ break;
+ case 'f':
+ g_format_video = atoi( pa_optarg );
+ break;
+ case 'p':
+ g_read_calibrationfile = true;
+ break;
+ case 'h': // Help
+ default:
+ ++errors;
+ break;
+ }
+ }
+
+ if (errors) {
+ opts.usage(std::cout,"");
+ getchar();
+ exit(0);
+ }
+
+}
+
+//-------------------------------------------------------------------
+// WinMain
+//
+// Application entry-point.
+//-------------------------------------------------------------------
+
+INT WINAPI wWinMain(HINSTANCE/* hInstance*/, HINSTANCE /*hPrevInstance*/,LPWSTR lpCmdLine, INT /*nCmdShow*/ )
+{
+
+ HWND hwnd = 0;
+ char *cmdLine = narrow(lpCmdLine) ;
+
+ parse_args(cmdLine);
+ free( cmdLine );
+ try
+ {
+ g_config = new ConfigFile("data\\config.inp");
+ HeapSetInformation(NULL, HeapEnableTerminationOnCorruption, NULL, 0);
+
+ // camera param
+ if ( g_camera_name.length() == 0 )
+ g_camera_name = widen(g_config->read("CameraName", "Logitech"));
+
+ // Ivy
+ if ( g_ivy_domain.length() == 0 )
+ g_ivy_domain = g_config->read("IvyBus","");
+
+ if (InitializeApplication() && InitializeWindow(&hwnd))
+ {
+ MessageLoop(hwnd);
+ }
+
+ CleanUp();
+
+ return 0;
+ }
+ catch(ConfigFile::file_not_found ex)
+ {
+ WCHAR msg[MAX_PATH];
+ HRESULT hr = S_OK;
+ hr = StringCbPrintfW(msg, sizeof(msg), L"Fichier de configuration not trouve: %S", ex.filename.c_str());
+
+ if (SUCCEEDED(hr))
+ {
+ MessageBox(NULL, msg, L"Error", MB_ICONERROR);
+ }
+ return -1;
+ }
+ catch( ConfigFile::key_not_found ex)
+ {
+ WCHAR msg[MAX_PATH];
+ HRESULT hr = S_OK;
+ hr = StringCbPrintfW(msg, sizeof(msg), L"cle manquante dans le fichier de configuration: %S", ex.key.c_str());
+
+ if (SUCCEEDED(hr))
+ {
+ MessageBox(NULL, msg, L"Error", MB_ICONERROR);
+ }return -1;
+ }
+
+}
+
+
+//-------------------------------------------------------------------
+// WindowProc
+//
+// Window procedure.
+//-------------------------------------------------------------------
+
+LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
+{
+ switch (uMsg)
+ {
+ HANDLE_MSG(hwnd, WM_CREATE, OnCreate);
+ HANDLE_MSG(hwnd, WM_CLOSE, OnClose);
+ HANDLE_MSG(hwnd, WM_COMMAND, OnCommand);
+ HANDLE_MSG(hwnd, WM_SIZE, OnSize);
+ HANDLE_MSG(hwnd, WM_INITMENU, OnInitMenu);
+
+ case WM_APP_PREVIEW_ERROR:
+ ShowErrorMessage(L"Error", (HRESULT)wParam);
+ break;
+
+ case WM_DEVICECHANGE:
+ OnDeviceChange(hwnd, (PDEV_BROADCAST_HDR)lParam);
+ break;
+ case WM_ERASEBKGND:
+ // Suppress window erasing, to reduce flickering while the video is playing.
+ return 1;
+ //case WM_PAINT:
+ // OnPaint(hwnd);
+ // break;
+ case WM_HSCROLL:
+ {
+ g_Threshold = SendMessage(g_hTrack, TBM_GETPOS, 0, 0);
+ g_ThresholdMin = SendMessage(g_hTrackSeuilMin, TBM_GETPOS, 0, 0);
+ g_ThresholdMax = SendMessage(g_hTrackSeuilMax, TBM_GETPOS, 0, 0);
+
+ if ( g_pAnalyse )
+ g_pAnalyse->setThreshold( g_Threshold );
+ }
+ break;
+
+ }
+ return DefWindowProc(hwnd, uMsg, wParam, lParam);
+}
+
+
+//-------------------------------------------------------------------
+// InitializeApplication
+//
+// Initializes the application.
+//-------------------------------------------------------------------
+
+BOOL InitializeApplication()
+{
+ HRESULT hr = S_OK;
+
+ InitCommonControls();
+
+ hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE);
+
+ if (SUCCEEDED(hr))
+ {
+ hr = MFStartup(MF_VERSION);
+ }
+
+ return (SUCCEEDED(hr));
+}
+
+//-------------------------------------------------------------------
+// CleanUp
+//
+// Releases resources.
+//-------------------------------------------------------------------
+
+void CleanUp()
+{
+ if (g_hdevnotify)
+ {
+ UnregisterDeviceNotification(g_hdevnotify);
+ }
+
+ if (g_pPreview)
+ {
+ g_pPreview->CloseDevice();
+ }
+
+ SafeRelease(&g_pPreview);
+
+ MFShutdown();
+ CoUninitialize();
+}
+
+
+//-------------------------------------------------------------------
+// InitializeWindow
+//
+// Creates the application window.
+//-------------------------------------------------------------------
+
+BOOL InitializeWindow(HWND *pHwnd)
+{
+ WNDCLASS wc = {0};
+
+ wc.lpfnWndProc = WindowProc;
+ wc.hInstance = GetModuleHandle(NULL);
+ wc.hCursor = LoadCursor(NULL, IDC_ARROW);
+ wc.lpszClassName = CLASS_NAME;
+ wc.lpszMenuName = MAKEINTRESOURCE(IDR_MENU1);
+
+ if (!RegisterClass(&wc))
+ {
+ return FALSE;
+ }
+
+ HWND hwnd = CreateWindow(
+ CLASS_NAME,
+ WINDOW_NAME,
+ WS_OVERLAPPEDWINDOW,
+ CW_USEDEFAULT,
+ CW_USEDEFAULT,
+ CW_USEDEFAULT,
+ CW_USEDEFAULT,
+ NULL,
+ NULL,
+ GetModuleHandle(NULL),
+ NULL
+ );
+
+ if (!hwnd)
+ {
+ return FALSE;
+ }
+
+
+ ShowWindow(hwnd, SW_SHOWDEFAULT);
+ UpdateWindow(hwnd);
+
+ *pHwnd = hwnd;
+
+ return TRUE;
+}
+
+
+//-------------------------------------------------------------------
+// MessageLoop
+//
+// Implements the window message loop.
+//-------------------------------------------------------------------
+
+INT MessageLoop(HWND hwnd)
+{
+ MSG msg = {0};
+
+ while (GetMessage(&msg, NULL, 0, 0))
+ {
+ TranslateMessage(&msg);
+ DispatchMessage(&msg);
+ }
+
+ DestroyWindow(hwnd);
+
+ return INT(msg.wParam);
+}
+HWND CreateSlider( HWND parent, int pos, int min, int max, int val)
+{
+HWND hwndTrack = CreateWindowEx(
+ 0, // no extended styles
+ TRACKBAR_CLASS, // class name
+ TEXT("Trackbar Control"), // title (caption)
+ WS_CHILD | WS_VISIBLE |
+ TBS_NOTICKS , // style
+ pos, 0, // position
+ 200, 20, // size
+ parent, // parent window
+ NULL, // control identifier
+ NULL, // instance
+ NULL // no WM_CREATE parameter
+ );
+
+ SendMessage(hwndTrack, TBM_SETRANGE,
+ (WPARAM) TRUE, // redraw flag
+ (LPARAM) MAKELONG(min, max)); // min. & max. positions
+
+ SendMessage(hwndTrack, TBM_SETPAGESIZE,
+ 0, (LPARAM) 1); // new page size
+
+ //SendMessage(hwndTrack, TBM_SETSEL,
+ // (WPARAM) FALSE, // redraw flag
+ // (LPARAM) MAKELONG(0, 255));
+
+ SendMessage(hwndTrack, TBM_SETPOS,
+ (WPARAM) TRUE, // redraw flag
+ (LPARAM) val);
+ return hwndTrack;
+}
+//-------------------------------------------------------------------
+// OnCreate
+//
+// Handles the WM_CREATE message.
+//-------------------------------------------------------------------
+
+BOOL OnCreate(HWND hwnd, LPCREATESTRUCT)
+{
+ HRESULT hr = S_OK;
+
+ // Register this window to get device notification messages.
+
+ DEV_BROADCAST_DEVICEINTERFACE di = { 0 };
+ di.dbcc_size = sizeof(di);
+ di.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE;
+ di.dbcc_classguid = KSCATEGORY_CAPTURE;
+
+ g_hdevnotify = RegisterDeviceNotification(
+ hwnd,
+ &di,
+ DEVICE_NOTIFY_WINDOW_HANDLE
+ );
+
+ if (g_hdevnotify == NULL)
+ {
+ ShowErrorMessage(L"RegisterDeviceNotification failed.", HRESULT_FROM_WIN32(GetLastError()));
+ return FALSE;
+ }
+
+ // Create status bar
+ HWND hStatus = CreateStatusWindow( WS_CHILD | WS_VISIBLE, L"Status text" , hwnd, 100 );
+
+ // Create slider bar
+ HWND hwndTrack = CreateSlider( hwnd, 0, 0, 255, g_Threshold);
+ HWND hwndTrack1 = CreateSlider( hwnd, 210, 0, 255, g_ThresholdMin);
+ HWND hwndTrack2 = CreateSlider( hwnd, 420, 0, 255, g_ThresholdMax);
+
+
+ HWND hVideo = CreateWindow(
+ TEXT("STATIC"),
+ NULL,
+ WS_CHILD | WS_VISIBLE,
+ CW_USEDEFAULT,
+ CW_USEDEFAULT,
+ CW_USEDEFAULT,
+ CW_USEDEFAULT,
+ hwnd,
+ NULL,
+ GetModuleHandle(NULL),
+ NULL
+ );
+
+ if (!hVideo)
+ {
+ ShowErrorMessage(L"Create Child Window failed.", GetLastError());
+ return FALSE;
+ }
+ RECT rcTrackBar;
+ int iTrackHeight;
+
+ RECT rcStatus;
+ int iStatusHeight;
+
+ int iEditHeight;
+ RECT rcClient;
+
+ // Size status bar and get height
+
+ SendMessage(hStatus, WM_SIZE, 0, 0);
+
+ GetWindowRect(hwndTrack, &rcTrackBar);
+ GetWindowRect(hStatus, &rcStatus);
+ iStatusHeight = rcStatus.bottom - rcStatus.top;
+ iTrackHeight = rcTrackBar.bottom - rcTrackBar.top;
+ // Calculate remaining height and size edit
+
+ GetClientRect(hwnd, &rcClient);
+
+ iEditHeight = rcClient.bottom - iStatusHeight - iTrackHeight;
+
+ SetWindowPos(hVideo, NULL, 0, iTrackHeight, rcClient.right, iEditHeight, SWP_NOZORDER);
+
+ g_hVideo = hVideo;
+ g_hStatus = hStatus;
+ g_hTrack = hwndTrack;
+ g_hTrackSeuilMin = hwndTrack1;
+ g_hTrackSeuilMax = hwndTrack2;
+
+ // Create ArToolKit Analyser
+ g_pAnalyse = new ARAnalyse();
+
+ // Create the object that manages video preview.
+ if ( g_hVideo )
+ {
+ hr = CPreview::CreateInstance(g_hVideo, g_hVideo, &g_pPreview);
+
+ if (FAILED(hr))
+ {
+ ShowErrorMessage(L"CPreview::CreateInstance failed.", hr);
+ return FALSE;
+ }
+ // Select the first available device (if any).
+ OnChooseDevice(hwnd, FALSE, g_camera_name.length() ? g_camera_name.c_str() : NULL, g_camera_instance );
+
+ }
+
+
+
+ if ( g_toggle_video )
+ g_pPreview->ToggleVideo();
+ // start Ivy
+ g_pAnalyse->IvyInit(g_ivy_domain.c_str());
+ return TRUE;
+}
+
+
+
+//-------------------------------------------------------------------
+// OnClose
+//
+// Handles WM_CLOSE messages.
+//-------------------------------------------------------------------
+
+void OnClose(HWND /*hwnd*/)
+{
+ PostQuitMessage(0);
+}
+
+
+
+//-------------------------------------------------------------------
+// OnSize
+//
+// Handles WM_SIZE messages.
+//-------------------------------------------------------------------
+
+void OnSize(HWND hwnd, UINT state, int cx, int cy)
+{
+ // Size status bar and get height
+ RECT rcStatus;
+ int iStatusHeight;
+ int iVideoHeight;
+ int iTrackHeight;
+
+
+ // iconified
+ if ( state == SIZE_MINIMIZED ) return;
+
+ GetWindowRect(g_hStatus, &rcStatus);
+ iStatusHeight = rcStatus.bottom - rcStatus.top;
+ GetWindowRect(g_hTrack, &rcStatus);
+ iTrackHeight = rcStatus.bottom - rcStatus.top;
+
+ // Calculate remaining height and size edit
+
+ iVideoHeight = cy - iStatusHeight -iTrackHeight;
+
+ SetWindowPos(g_hVideo, NULL, 0, iTrackHeight, cx, iVideoHeight, SWP_NOZORDER);
+ if (g_pPreview)
+ {
+ g_pPreview->ResizeVideo((WORD)cx, (WORD)iVideoHeight);
+
+ InvalidateRect(hwnd, NULL, FALSE);
+ }
+ // Auto-resize statusbar (Send WM_SIZE message does just that)
+ SendMessage(g_hStatus, WM_SIZE, 0, 0);
+}
+
+
+
+//-------------------------------------------------------------------
+// OnPaint
+//
+// Handles WM_PAINT messages.
+//-------------------------------------------------------------------
+
+//void OnPaint(HWND hwnd)
+//{
+//
+// PAINTSTRUCT ps;
+// HDC hdc = BeginPaint(hwnd, &ps);
+//
+// // The video is not playing, so we must paint the application window.
+// RECT rc;
+// GetClientRect(hwnd, &rc);
+// FillRect(hdc, &rc, (HBRUSH) COLOR_WINDOW);
+// DrawText( hdc, L"ESSAI",5, &rc, 0);
+// EndPaint(hwnd, &ps);
+//
+//
+//}
+//-------------------------------------------------------------------
+// OnInitMenuChange
+//
+// Handles WM_INITMENU messages.
+//-------------------------------------------------------------------
+
+void OnInitMenu(HWND hwnd, HMENU menu)
+{
+
+ EnableMenuItem( menu, ID_ACTION_CALIBRATE, g_pAnalyse->IsCalibrationEnabled() ? MF_ENABLED : MF_DISABLED );
+ EnableMenuItem( menu, ID_ACTION_SAVEPROJECTIONDATA, g_pAnalyse->IsCalibrated() ? MF_ENABLED : MF_DISABLED );
+ CheckMenuItem( menu, ID_ACTION_CALIBRATE, g_pAnalyse->IsCalibrated() ? MF_CHECKED : MF_UNCHECKED );
+ // Blur pass
+ CheckMenuItem( menu, ID_BLURPASSE_0PASS, g_pAnalyse->BlurPass == 0 ? MF_CHECKED : MF_UNCHECKED );
+ CheckMenuItem( menu, ID_BLURPASSE_1PASS, g_pAnalyse->BlurPass == 1 ? MF_CHECKED : MF_UNCHECKED );
+ CheckMenuItem( menu, ID_BLURPASSE_2PASS, g_pAnalyse->BlurPass == 2 ? MF_CHECKED : MF_UNCHECKED );
+ CheckMenuItem( menu, ID_BLURPASSE_3PASS, g_pAnalyse->BlurPass == 3 ? MF_CHECKED : MF_UNCHECKED );
+ CheckMenuItem( menu, ID_BLURPASSE_4PASS, g_pAnalyse->BlurPass == 4 ? MF_CHECKED : MF_UNCHECKED );
+ CheckMenuItem( menu, ID_BLURPASSE_4PASS, g_pAnalyse->BlurPass == 5 ? MF_CHECKED : MF_UNCHECKED );
+ CheckMenuItem( menu, ID_BLURPASSE_4PASS, g_pAnalyse->BlurPass == 6 ? MF_CHECKED : MF_UNCHECKED );
+ CheckMenuItem( menu, ID_BLURPASSE_4PASS, g_pAnalyse->BlurPass == 10 ? MF_CHECKED : MF_UNCHECKED );
+ // DownSample
+ CheckMenuItem( menu, ID_DOWNSAMPLE_FACTEUR1, g_pAnalyse->DownSample == 1 ? MF_CHECKED : MF_UNCHECKED );
+ CheckMenuItem( menu, ID_DOWNSAMPLE_FACTEUR2, g_pAnalyse->DownSample == 2 ? MF_CHECKED : MF_UNCHECKED );
+ CheckMenuItem( menu, ID_DOWNSAMPLE_FACTEUR4, g_pAnalyse->DownSample == 4 ? MF_CHECKED : MF_UNCHECKED );
+ CheckMenuItem( menu, ID_DOWNSAMPLE_FACTEUR8, g_pAnalyse->DownSample == 8 ? MF_CHECKED : MF_UNCHECKED );
+ // Affichage
+ CheckMenuItem( menu, ID_AFFICHAGE_GRAYSCALE, g_pAnalyse->Display == ARAnalyse::GrayScale ? MF_CHECKED : MF_UNCHECKED );
+ CheckMenuItem( menu, ID_AFFICHAGE_BLUR, g_pAnalyse->Display == ARAnalyse::Blur ? MF_CHECKED : MF_UNCHECKED );
+ CheckMenuItem( menu, ID_AFFICHAGE_DIFF, g_pAnalyse->Display == ARAnalyse::Diff ? MF_CHECKED : MF_UNCHECKED );
+ CheckMenuItem( menu, ID_AFFICHAGE_THRESHOLD, g_pAnalyse->Display == ARAnalyse::Threshold ? MF_CHECKED : MF_UNCHECKED );
+ CheckMenuItem( menu, ID_AFFICHAGE_MOYEN, g_pAnalyse->Display == ARAnalyse::Moyen ? MF_CHECKED : MF_UNCHECKED );
+ // Filter
+ CheckMenuItem( menu, ID_FILTER_MOYEN, g_pAnalyse->filter == ARAnalyse::FMoyen ? MF_CHECKED : MF_UNCHECKED );
+ CheckMenuItem( menu, ID_FILTER_LAPLACIEN4, g_pAnalyse->filter == ARAnalyse::FLaplacien4 ? MF_CHECKED : MF_UNCHECKED );
+ CheckMenuItem( menu, ID_FILTER_LAPLACIEN8, g_pAnalyse->filter == ARAnalyse::FLaplacien8 ? MF_CHECKED : MF_UNCHECKED );
+ CheckMenuItem( menu, ID_FILTER_LAPLACIEND, g_pAnalyse->filter == ARAnalyse::FLaplaciend ? MF_CHECKED : MF_UNCHECKED );
+ CheckMenuItem( menu, ID_FILTER_SOBEL, g_pAnalyse->filter == ARAnalyse::FSobel ? MF_CHECKED : MF_UNCHECKED );
+ CheckMenuItem( menu, ID_FILTER_PREWITT, g_pAnalyse->filter == ARAnalyse::FPrewitt ? MF_CHECKED : MF_UNCHECKED );
+ CheckMenuItem( menu, ID_FILTER_GAUSSIAN, g_pAnalyse->filter == ARAnalyse::FGaussian ? MF_CHECKED : MF_UNCHECKED );
+}
+//-------------------------------------------------------------------
+// OnCommand
+//
+// Handles WM_COMMAND messages
+//-------------------------------------------------------------------
+
+void OnCommand(HWND hwnd, int id, HWND /*hwndCtl*/, UINT /*codeNotify*/)
+{
+ switch (id)
+ {
+ case ID_ACTION_CHOOSEDEVICE:
+ OnChooseDevice(hwnd, TRUE, NULL,0);
+ break;
+ case ID_ACTION_CHOOSEFORMAT:
+ OnChooseFormat(hwnd, TRUE, 0);
+ break;
+ case ID_ACTION_DISPLAYVIDEO:
+ if (g_pPreview)
+ {
+ bool video = g_pPreview->ToggleVideo();
+ CheckMenuItem( GetMenu( hwnd ), ID_ACTION_DISPLAYVIDEO, video ? MF_CHECKED : MF_UNCHECKED );
+ }
+
+ break;
+ case ID_ACTION_CALCMOYEN:
+ if (g_pPreview)
+ {
+ bool moy = g_pPreview->ToggleMoyen();
+ CheckMenuItem( GetMenu( hwnd ), ID_ACTION_CALCMOYEN, moy ? MF_CHECKED : MF_UNCHECKED );
+ }
+
+ break;case ID_ACTION_TRANSFORM:
+ if (g_pPreview)
+ {
+ bool trsf = g_pPreview->ToggleTransform();
+ CheckMenuItem( GetMenu( hwnd ), ID_ACTION_TRANSFORM, trsf ? MF_CHECKED : MF_UNCHECKED );
+ }
+ break;
+ case ID_ACTION_AUTOTHRESHOLD:
+ if (g_pAnalyse)
+ {
+ bool auto_threshold = g_pAnalyse->ToggleAutoThreshold();
+ CheckMenuItem( GetMenu( hwnd ), ID_ACTION_AUTOTHRESHOLD, auto_threshold ? MF_CHECKED : MF_UNCHECKED );
+ if ( ! auto_threshold )
+ {
+ SendMessage(g_hTrack, TBM_SETPOS,
+ (WPARAM) TRUE, // redraw flag
+ (LPARAM) g_pAnalyse->getThreshold());
+ }
+ }
+
+ break;
+ case ID_ACTION_CALIBRATE:
+ if (g_pAnalyse)
+ {
+ bool cal = g_pAnalyse->Calibrate();
+ CheckMenuItem( GetMenu( hwnd ), ID_ACTION_CALIBRATE, cal ? MF_CHECKED : MF_UNCHECKED );
+ }
+ break;
+ case ID_ACTION_SAVEPROJECTIONDATA:
+ if ( g_pAnalyse )
+ {
+ g_pAnalyse->SaveCalibration();
+ }
+ break;
+ case ID_BLURPASSE_0PASS:
+ if (g_pAnalyse)
+ {
+ g_pAnalyse->BlurPass = 0;
+ }
+ break;
+
+ case ID_BLURPASSE_1PASS:
+ if (g_pAnalyse)
+ {
+ g_pAnalyse->BlurPass = 1;
+ }
+ break;
+
+ case ID_BLURPASSE_2PASS:
+ if (g_pAnalyse)
+ {
+ g_pAnalyse->BlurPass = 2;
+ }
+ break;
+
+ case ID_BLURPASSE_3PASS:
+ if (g_pAnalyse)
+ {
+ g_pAnalyse->BlurPass = 3;
+ }
+ break;
+ case ID_BLURPASSE_4PASS:
+ if (g_pAnalyse)
+ {
+ g_pAnalyse->BlurPass = 4;
+ }
+ break;
+ case ID_BLURPASSE_5PASS:
+ if (g_pAnalyse)
+ {
+ g_pAnalyse->BlurPass = 5;
+ }
+ break;
+ case ID_BLURPASSE_6PASS:
+ if (g_pAnalyse)
+ {
+ g_pAnalyse->BlurPass = 6;
+ }
+ break;
+ case ID_BLURPASSE_10PASS:
+ if (g_pAnalyse)
+ {
+ g_pAnalyse->BlurPass = 10;
+ }
+ break;
+ case ID_DOWNSAMPLE_FACTEUR1:
+ if (g_pAnalyse)
+ {
+ g_pAnalyse->DownSample = 1;
+ }
+ break;
+ case ID_DOWNSAMPLE_FACTEUR2:
+ if (g_pAnalyse)
+ {
+ g_pAnalyse->DownSample = 2;
+ }
+ break;
+ case ID_DOWNSAMPLE_FACTEUR4:
+ if (g_pAnalyse)
+ {
+ g_pAnalyse->DownSample = 4;
+ }
+ break;
+ case ID_DOWNSAMPLE_FACTEUR8:
+ if (g_pAnalyse)
+ {
+ g_pAnalyse->DownSample = 8;
+ }
+ break;
+
+ case ID_AFFICHAGE_GRAYSCALE:
+ if (g_pAnalyse)
+ {
+ g_pAnalyse->Display = ARAnalyse::GrayScale;
+ }
+ break;
+ case ID_AFFICHAGE_BLUR:
+ if (g_pAnalyse)
+ {
+ g_pAnalyse->Display = ARAnalyse::Blur;
+ }
+ break;
+ case ID_AFFICHAGE_DIFF:
+ if (g_pAnalyse)
+ {
+ g_pAnalyse->Display = ARAnalyse::Diff;
+ }
+ break;
+ case ID_AFFICHAGE_THRESHOLD:
+ if (g_pAnalyse)
+ {
+ g_pAnalyse->Display = ARAnalyse::Threshold;
+ }
+ break;
+ case ID_AFFICHAGE_MOYEN:
+ if (g_pAnalyse)
+ {
+ g_pAnalyse->Display = ARAnalyse::Moyen;
+ }
+ break;
+ case ID_FILTER_MOYEN:
+ if (g_pAnalyse)
+ {
+ g_pAnalyse->filter = ARAnalyse::FMoyen;
+ }
+ break;
+ case ID_FILTER_LAPLACIEN4:
+ if (g_pAnalyse)
+ {
+ g_pAnalyse->filter = ARAnalyse::FLaplacien4;
+ }
+ break;
+ case ID_FILTER_LAPLACIEN8:
+ if (g_pAnalyse)
+ {
+ g_pAnalyse->filter = ARAnalyse::FLaplacien8;
+ }
+ break;
+ case ID_FILTER_LAPLACIEND:
+ if (g_pAnalyse)
+ {
+ g_pAnalyse->filter = ARAnalyse::FLaplaciend;
+ }
+ break;
+ case ID_FILTER_SOBEL:
+ if (g_pAnalyse)
+ {
+ g_pAnalyse->filter = ARAnalyse::FSobel;
+ }
+ break;
+ case ID_FILTER_PREWITT:
+ if (g_pAnalyse)
+ {
+ g_pAnalyse->filter = ARAnalyse::FPrewitt;
+ }
+ break;
+ case ID_FILTER_GAUSSIAN:
+ if (g_pAnalyse)
+ {
+ g_pAnalyse->filter = ARAnalyse::FGaussian;
+ }
+ break;
+ }
+}
+
+//-------------------------------------------------------------------
+// OnChooseDevice
+//
+// Select a video capture device.
+//
+// hwnd: A handle to the application window.
+/// bPrompt: If TRUE, prompt to user to select the device. Otherwise,
+// select the first device in the list.
+//-------------------------------------------------------------------
+
+void OnChooseDevice(HWND hwnd, BOOL bPrompt, const WCHAR* name, int instance)
+{
+ HRESULT hr = S_OK;
+ ChooseDeviceParam param = { 0,0,0 };
+
+ UINT iDevice = 0; // Index into the array of devices
+ BOOL bCancel = FALSE;
+
+ IMFAttributes *pAttributes = NULL;
+
+ // Initialize an attribute store to specify enumeration parameters.
+
+ hr = MFCreateAttributes(&pAttributes, 1);
+
+ if (FAILED(hr)) { goto done; }
+
+ // Ask for source type = video capture devices.
+
+ hr = pAttributes->SetGUID(
+ MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE,
+ MF_DEVSOURCE_ATTRIBUTE_SOURCE_TYPE_VIDCAP_GUID
+ );
+
+ if (FAILED(hr)) { goto done; }
+
+ // Enumerate devices.
+ hr = MFEnumDeviceSources(pAttributes, ¶m.ppDevices, ¶m.count);
+
+ if (FAILED(hr)) { goto done; }
+
+ // NOTE: param.count might be zero.
+
+ if (bPrompt || name == NULL)
+ {
+ // Ask the user to select a device.
+
+ INT_PTR result = DialogBoxParam(
+ GetModuleHandle(NULL),
+ MAKEINTRESOURCE(IDD_CHOOSE_DEVICE),
+ hwnd,
+ DeviceDlgProc,
+ (LPARAM)¶m
+ );
+
+ if (result == IDOK)
+ {
+ iDevice = param.selection;
+ }
+ else
+ {
+ bCancel = TRUE; // User cancelled
+ }
+ }
+ else
+ {
+ iDevice = DeviceGetByName( ¶m, name, instance );
+ }
+
+ if (!bCancel && (param.count > 0))
+ {
+ // Give this source to the CPlayer object for preview.
+ hr = g_pPreview->SetDevice( param.ppDevices[iDevice], g_format_video );
+ }
+
+done:
+
+ SafeRelease(&pAttributes);
+
+ for (DWORD i = 0; i < param.count; i++)
+ {
+ SafeRelease(¶m.ppDevices[i]);
+ }
+ CoTaskMemFree(param.ppDevices);
+
+ if (FAILED(hr))
+ {
+ ShowErrorMessage(L"Cannot create a video capture device", hr);
+ }
+}
+
+
+//-------------------------------------------------------------------
+// OnChooseFormat
+//
+// Select a video format capture.
+//
+// hwnd: A handle to the application window.
+/// bPrompt: If TRUE, prompt to user to select the device. Otherwise,
+// select the first device in the list.
+//-------------------------------------------------------------------
+
+void OnChooseFormat(HWND hwnd, BOOL bPrompt, int index)
+{
+ HRESULT hr = S_OK;
+ ChooseVideoParam param = { 0, 0, 0 };
+
+ UINT iFormat = 0; // Index into the array of devices
+ BOOL bCancel = FALSE;
+
+ hr = g_pPreview->EnumerateCaptureFormats( ¶m.ppTypes, ¶m.count);
+
+ // NOTE: param.count might be zero.
+
+ if (bPrompt)
+ {
+ // Ask the user to select a device.
+
+ INT_PTR result = DialogBoxParam(
+ GetModuleHandle(NULL),
+ MAKEINTRESOURCE(IDD_CHOOSE_VIDEO),
+ hwnd,
+ VideoDlgProc,
+ (LPARAM)¶m
+ );
+
+ if (result == IDOK)
+ {
+ iFormat = param.selection;
+ }
+ else
+ {
+ bCancel = TRUE; // User cancelled
+ }
+ }
+ else
+ {
+ iFormat = index;
+ }
+ if (!bCancel && (param.count > 0))
+ {
+ // Give this format to the CPlayer object for preview.
+ hr = g_pPreview->SetFormat( param.ppTypes[iFormat] );
+ }
+
+
+
+ for (DWORD i = 0; i < param.count; i++)
+ {
+ SafeRelease(¶m.ppTypes[i]);
+ }
+ CoTaskMemFree(param.ppTypes);
+
+ if (FAILED(hr))
+ {
+ ShowErrorMessage(L"Cannot select a video format", hr);
+ }
+}
+
+//-------------------------------------------------------------------
+// OnDeviceChange
+//
+// Handles WM_DEVICECHANGE messages.
+//-------------------------------------------------------------------
+
+void OnDeviceChange(HWND hwnd, DEV_BROADCAST_HDR *pHdr)
+{
+ if (g_pPreview == NULL || pHdr == NULL)
+ {
+ return;
+ }
+
+ HRESULT hr = S_OK;
+ BOOL bDeviceLost = FALSE;
+
+ // Check if the current device was lost.
+
+ hr = g_pPreview->CheckDeviceLost(pHdr, &bDeviceLost);
+
+ if (FAILED(hr) || bDeviceLost)
+ {
+ g_pPreview->CloseDevice();
+
+ MessageBox(hwnd, L"Lost the capture device.", WINDOW_NAME, MB_OK);
+ }
+}
+
+
+/////////////////////////////////////////////////////////////////////
+
+// Dialog functions
+
+int DeviceGetByName(ChooseDeviceParam *pParam , const WCHAR* name, int instance)
+{
+ HRESULT hr = S_OK;
+ DWORD iDevice = 0;
+ int current_inst = 0;
+ bool NameFound = false;
+ for (DWORD i = 0; i < pParam->count; i++)
+ {
+ WCHAR *szFriendlyName = NULL;
+
+ hr = pParam->ppDevices[i]->GetAllocatedString(
+ MF_DEVSOURCE_ATTRIBUTE_FRIENDLY_NAME,
+ &szFriendlyName,
+ NULL
+ );
+ if (FAILED(hr))
+ {
+ break;
+ }
+ NameFound = wcsstr( szFriendlyName, name ) != NULL;
+ CoTaskMemFree(szFriendlyName);
+ // check if devioce containt name
+ if ( NameFound )
+ {
+ iDevice = i;
+ if ( current_inst == instance )
+ break;
+ current_inst++;
+
+ }
+
+ }
+
+ return iDevice;
+}
+
+//-------------------------------------------------------------------
+// OnInitDialog
+//
+// Handles the WM_INITDIALOG message.
+//-------------------------------------------------------------------
+
+void DeviceOnInitDialog(HWND hwnd, ChooseDeviceParam *pParam)
+{
+ HRESULT hr = S_OK;
+
+ // Populate the list with the friendly names of the devices.
+
+ HWND hList = GetDlgItem(hwnd, IDC_DEVICE_LIST);
+
+ for (DWORD i = 0; i < pParam->count; i++)
+ {
+ WCHAR *szFriendlyName = NULL;
+
+ hr = pParam->ppDevices[i]->GetAllocatedString(
+ MF_DEVSOURCE_ATTRIBUTE_FRIENDLY_NAME,
+ &szFriendlyName,
+ NULL
+ );
+
+ if (FAILED(hr))
+ {
+ break;
+ }
+
+
+ int index = ListBox_AddString(hList, szFriendlyName);
+
+ ListBox_SetItemData(hList, index, i);
+
+ CoTaskMemFree(szFriendlyName);
+ }
+
+ // Assume no selection for now.
+ pParam->selection = (UINT32)-1;
+
+ if (pParam->count == 0)
+ {
+ // If there are no devices, disable the "OK" button.
+ EnableWindow(GetDlgItem(hwnd, IDOK), FALSE);
+ }
+}
+
+
+HRESULT DeviceOnOK(HWND hwnd, ChooseDeviceParam *pParam)
+{
+ HWND hList = GetDlgItem(hwnd, IDC_DEVICE_LIST);
+
+ int sel = ListBox_GetCurSel(hList);
+
+ if (sel != LB_ERR)
+ {
+ pParam->selection = (UINT32)ListBox_GetItemData(hList, sel);
+ }
+
+ return S_OK;
+}
+
+
+//-------------------------------------------------------------------
+// DeviceDlgProc
+//
+// Dialog procedure for the "Select Device" dialog.
+//-------------------------------------------------------------------
+
+INT_PTR CALLBACK DeviceDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
+{
+ static ChooseDeviceParam *pParam = NULL;
+
+ switch (msg)
+ {
+ case WM_INITDIALOG:
+ pParam = (ChooseDeviceParam*)lParam;
+ DeviceOnInitDialog(hwnd, pParam);
+ return TRUE;
+
+ case WM_COMMAND:
+ switch(LOWORD(wParam))
+ {
+ case IDOK:
+ DeviceOnOK(hwnd, pParam);
+ EndDialog(hwnd, LOWORD(wParam));
+ return TRUE;
+
+ case IDCANCEL:
+ EndDialog(hwnd, LOWORD(wParam));
+ return TRUE;
+ }
+ break;
+ }
+
+ return FALSE;
+}
+
+
+
+void ShowErrorMessage(PCWSTR format, HRESULT hrErr)
+{
+ HRESULT hr = S_OK;
+ int dwBufferLength;
+
+ WCHAR msg[MAX_PATH];
+ static LPCVOID s_hModule = 0;
+ const LPCWSTR MESSAGEFILE = L"mferror.dll";
+ DWORD dwFormatFlags =
+ FORMAT_MESSAGE_ALLOCATE_BUFFER |
+ FORMAT_MESSAGE_FROM_SYSTEM |
+ FORMAT_MESSAGE_IGNORE_INSERTS |
+ FORMAT_MESSAGE_MAX_WIDTH_MASK;
+
+ WCHAR *lpMsgBuf = 0;
+ dwBufferLength = FormatMessage(
+ dwFormatFlags,
+ NULL,
+ hrErr,
+ MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
+ (LPTSTR)&lpMsgBuf,
+ 0,
+ NULL );
+ //lpMsgBuf[strlen(lpMsgBuf) -2] = '\0'; // remove last \n
+
+ // Not a system message. In theory, you should be able to get both with one call.
+ // In practice (at least on my 64bit box), you need to make 2 calls.
+ if (dwBufferLength == 0)
+ {
+ if (s_hModule == 0)
+ {
+ // Load the Media Foundation error message dll
+ s_hModule = LoadLibraryEx(MESSAGEFILE, NULL, LOAD_LIBRARY_AS_DATAFILE);
+ }
+
+ if (s_hModule != 0)
+ {
+ // If the load succeeds, make sure we look in it
+ dwFormatFlags |= FORMAT_MESSAGE_FROM_HMODULE;
+
+ // Scan both the Windows Media library, and the system library looking for the message
+ dwBufferLength = FormatMessage(
+ dwFormatFlags,
+ s_hModule, // module to get message from (NULL == system)
+ hrErr, // error number to get message for
+ MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // default language
+ (LPTSTR)&lpMsgBuf,
+ 0,
+ NULL
+ );
+ }
+ }
+ hr = StringCbPrintf(msg, sizeof(msg), L"%s (hr=0x%X) \n%s", format, hrErr, lpMsgBuf);
+ // Free the buffer.
+ LocalFree( lpMsgBuf );
+ if (SUCCEEDED(hr))
+ {
+ MessageBox(NULL, msg, L"Error", MB_ICONERROR);
+ }
+ else
+ {
+ DebugBreak();
+ }
+}
+
+// Dialog functions
+
+//-------------------------------------------------------------------
+// VideoOnInitDialog
+//
+// Handles the WM_INITDIALOG message.
+//-------------------------------------------------------------------
+
+void VideoOnInitDialog(HWND hwnd, ChooseVideoParam *pParam)
+{
+ HRESULT hr = S_OK;
+ PROPVARIANT var;
+ UINT32 rate_num;
+ UINT32 rate_denum;
+ UINT32 width;
+ UINT32 height;
+ WCHAR msg[MAX_PATH];
+
+ // Populate the list with the friendly names of the devices.
+
+ HWND hList = GetDlgItem(hwnd, IDC_VIDEO_LIST);
+
+ for (DWORD i = 0; i < pParam->count; i++)
+ {
+
+ WCHAR *szSubTypeName = NULL;
+
+ hr = pParam->ppTypes[i]->GetItem( MF_MT_SUBTYPE, &var );
+ if (FAILED(hr))
+ {
+ break;
+ }
+
+ hr = GetGUIDName(*var.puuid, &szSubTypeName);
+ if (FAILED(hr))
+ {
+ break;
+ }
+
+ hr = MFGetAttributeSize( pParam->ppTypes[i], MF_MT_FRAME_RATE, &rate_num, &rate_denum );
+ if (FAILED(hr))
+ {
+ break;
+ }
+ hr = MFGetAttributeSize( pParam->ppTypes[i], MF_MT_FRAME_SIZE, &width, &height);
+ if (FAILED(hr))
+ {
+ break;
+ }
+
+
+ if (SUCCEEDED(StringCchPrintf(msg, sizeof(msg), TEXT("%02d %s %dx%d pixel %.01f FPS"), i,szSubTypeName, width,height,((float)rate_num/rate_denum))))
+ {
+ int index = ListBox_AddString(hList, msg);
+
+ ListBox_SetItemData(hList, index, i);
+ }
+
+
+ CoTaskMemFree(szSubTypeName);
+ }
+
+ // Assume no selection for now.
+ pParam->selection = (UINT32)-1;
+
+ if (pParam->count == 0)
+ {
+ // If there are no devices, disable the "OK" button.
+ EnableWindow(GetDlgItem(hwnd, IDOK), FALSE);
+ }
+}
+
+
+HRESULT VideoOnOK(HWND hwnd, ChooseVideoParam *pParam)
+{
+ HWND hList = GetDlgItem(hwnd, IDC_DEVICE_LIST);
+
+ int sel = ListBox_GetCurSel(hList);
+
+ if (sel != LB_ERR)
+ {
+ pParam->selection = (UINT32)ListBox_GetItemData(hList, sel);
+ }
+
+ return S_OK;
+}
+
+
+
+
+//-------------------------------------------------------------------
+// DeviceDlgProc
+//
+// Dialog procedure for the "Select Device" dialog.
+//-------------------------------------------------------------------
+
+INT_PTR CALLBACK VideoDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
+{
+ static ChooseVideoParam *pParam = NULL;
+
+ switch (msg)
+ {
+ case WM_INITDIALOG:
+ pParam = (ChooseVideoParam*)lParam;
+ VideoOnInitDialog(hwnd, pParam);
+ return TRUE;
+
+ case WM_COMMAND:
+ switch(LOWORD(wParam))
+ {
+ case IDOK:
+ VideoOnOK(hwnd, pParam);
+ EndDialog(hwnd, LOWORD(wParam));
+ return TRUE;
+
+ case IDCANCEL:
+ EndDialog(hwnd, LOWORD(wParam));
+ return TRUE;
+ }
+ break;
+ }
+
+ return FALSE;
+}
+
+
diff --git a/ARMFCaptureD3D/x64/Debug/ARAnalyse.obj b/ARMFCaptureD3D/x64/Debug/ARAnalyse.obj
new file mode 100644
index 0000000..d355854
Binary files /dev/null and b/ARMFCaptureD3D/x64/Debug/ARAnalyse.obj differ
diff --git a/ARMFCaptureD3D/x64/Debug/ARMFCaptureD3D.Build.CppClean.log b/ARMFCaptureD3D/x64/Debug/ARMFCaptureD3D.Build.CppClean.log
new file mode 100644
index 0000000..e11462b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Debug/ARMFCaptureD3D.Build.CppClean.log
@@ -0,0 +1,51 @@
+C:\USERS\FCOLIN\DOCUMENTS\PROJECTS VISUAL STUDIO\CPP\ARMFCAPTURED3D\X64\DEBUG\ARANALYSE.OBJ
+C:\USERS\FCOLIN\DOCUMENTS\PROJECTS VISUAL STUDIO\CPP\ARMFCAPTURED3D\X64\DEBUG\ARMFCAPTURED3D.EXE
+C:\USERS\FCOLIN\DOCUMENTS\PROJECTS VISUAL STUDIO\CPP\ARMFCAPTURED3D\X64\DEBUG\ARMFCAPTURED3D.EXE.EMBED.MANIFEST
+C:\USERS\FCOLIN\DOCUMENTS\PROJECTS VISUAL STUDIO\CPP\ARMFCAPTURED3D\X64\DEBUG\ARMFCAPTURED3D.EXE.EMBED.MANIFEST.RES
+C:\USERS\FCOLIN\DOCUMENTS\PROJECTS VISUAL STUDIO\CPP\ARMFCAPTURED3D\X64\DEBUG\ARMFCAPTURED3D.EXE.INTERMEDIATE.MANIFEST
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\ARMFCaptureD3D.exp
+C:\USERS\FCOLIN\DOCUMENTS\PROJECTS VISUAL STUDIO\CPP\ARMFCAPTURED3D\X64\DEBUG\ARMFCAPTURED3D.ILK
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\ARMFCaptureD3D.lib
+C:\USERS\FCOLIN\DOCUMENTS\PROJECTS VISUAL STUDIO\CPP\ARMFCAPTURED3D\X64\DEBUG\ARMFCAPTURED3D.PDB
+C:\USERS\FCOLIN\DOCUMENTS\PROJECTS VISUAL STUDIO\CPP\ARMFCAPTURED3D\X64\DEBUG\ARMFCAPTURED3D.RES
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\ARMFCaptureD3D.write.1.tlog
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\ARMFCaptureD3D_manifest.rc
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\ARToolKitPlus.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\ARToolKitPlus.ilk
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\ARToolKitPlus.pdb
+C:\USERS\FCOLIN\DOCUMENTS\PROJECTS VISUAL STUDIO\CPP\ARMFCAPTURED3D\X64\DEBUG\CALIBRATION.OBJ
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\cl.command.1.tlog
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\CL.read.1.tlog
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\CL.write.1.tlog
+C:\USERS\FCOLIN\DOCUMENTS\PROJECTS VISUAL STUDIO\CPP\ARMFCAPTURED3D\X64\DEBUG\CONFIGFILE.OBJ
+C:\USERS\FCOLIN\DOCUMENTS\PROJECTS VISUAL STUDIO\CPP\ARMFCAPTURED3D\X64\DEBUG\DEBUG.OBJ
+C:\USERS\FCOLIN\DOCUMENTS\PROJECTS VISUAL STUDIO\CPP\ARMFCAPTURED3D\X64\DEBUG\DEVICE.OBJ
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\Ivy.bsc
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\Ivy.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\Ivy.ilk
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\Ivy.pdb
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\link.8660.read.1.tlog
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\link.8660.write.1.tlog
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\link.8660-cvtres.read.1.tlog
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\link.8660-cvtres.write.1.tlog
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\link.command.1.tlog
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\link.read.1.tlog
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\link.write.1.tlog
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\link-cvtres.read.1.tlog
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\link-cvtres.write.1.tlog
+C:\USERS\FCOLIN\DOCUMENTS\PROJECTS VISUAL STUDIO\CPP\ARMFCAPTURED3D\X64\DEBUG\MINMAXAVG.OBJ
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\mt.command.1.tlog
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\mt.read.1.tlog
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\mt.write.1.tlog
+C:\USERS\FCOLIN\DOCUMENTS\PROJECTS VISUAL STUDIO\CPP\ARMFCAPTURED3D\X64\DEBUG\OPTIONS.OBJ
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\pcre.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\pcre.ilk
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\pcre.pdb
+C:\USERS\FCOLIN\DOCUMENTS\PROJECTS VISUAL STUDIO\CPP\ARMFCAPTURED3D\X64\DEBUG\PREVIEW.OBJ
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\rc.command.1.tlog
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\rc.read.1.tlog
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\rc.write.1.tlog
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\ResolveAssemblyReference.cache
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\vc100.idb
+C:\USERS\FCOLIN\DOCUMENTS\PROJECTS VISUAL STUDIO\CPP\ARMFCAPTURED3D\X64\DEBUG\VC100.PDB
+C:\USERS\FCOLIN\DOCUMENTS\PROJECTS VISUAL STUDIO\CPP\ARMFCAPTURED3D\X64\DEBUG\WINMAIN.OBJ
diff --git a/ARMFCaptureD3D/x64/Debug/ARMFCaptureD3D.exe b/ARMFCaptureD3D/x64/Debug/ARMFCaptureD3D.exe
new file mode 100644
index 0000000..3399906
Binary files /dev/null and b/ARMFCaptureD3D/x64/Debug/ARMFCaptureD3D.exe differ
diff --git a/ARMFCaptureD3D/x64/Debug/ARMFCaptureD3D.exe.embed.manifest b/ARMFCaptureD3D/x64/Debug/ARMFCaptureD3D.exe.embed.manifest
new file mode 100644
index 0000000..9032d50
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Debug/ARMFCaptureD3D.exe.embed.manifest
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Debug/ARMFCaptureD3D.exe.embed.manifest.res b/ARMFCaptureD3D/x64/Debug/ARMFCaptureD3D.exe.embed.manifest.res
new file mode 100644
index 0000000..b6fdff3
Binary files /dev/null and b/ARMFCaptureD3D/x64/Debug/ARMFCaptureD3D.exe.embed.manifest.res differ
diff --git a/ARMFCaptureD3D/x64/Debug/ARMFCaptureD3D.exe.intermediate.manifest b/ARMFCaptureD3D/x64/Debug/ARMFCaptureD3D.exe.intermediate.manifest
new file mode 100644
index 0000000..43cc1f5
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Debug/ARMFCaptureD3D.exe.intermediate.manifest
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ARMFCaptureD3D/x64/Debug/ARMFCaptureD3D.exp b/ARMFCaptureD3D/x64/Debug/ARMFCaptureD3D.exp
new file mode 100644
index 0000000..26bd2e9
Binary files /dev/null and b/ARMFCaptureD3D/x64/Debug/ARMFCaptureD3D.exp differ
diff --git a/ARMFCaptureD3D/x64/Debug/ARMFCaptureD3D.ilk b/ARMFCaptureD3D/x64/Debug/ARMFCaptureD3D.ilk
new file mode 100644
index 0000000..3c228dc
Binary files /dev/null and b/ARMFCaptureD3D/x64/Debug/ARMFCaptureD3D.ilk differ
diff --git a/ARMFCaptureD3D/x64/Debug/ARMFCaptureD3D.lastbuildstate b/ARMFCaptureD3D/x64/Debug/ARMFCaptureD3D.lastbuildstate
new file mode 100644
index 0000000..25262a5
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Debug/ARMFCaptureD3D.lastbuildstate
@@ -0,0 +1,2 @@
+#v4.0:v100
+Debug|x64|C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\|
diff --git a/ARMFCaptureD3D/x64/Debug/ARMFCaptureD3D.lib b/ARMFCaptureD3D/x64/Debug/ARMFCaptureD3D.lib
new file mode 100644
index 0000000..783b84c
Binary files /dev/null and b/ARMFCaptureD3D/x64/Debug/ARMFCaptureD3D.lib differ
diff --git a/ARMFCaptureD3D/x64/Debug/ARMFCaptureD3D.pdb b/ARMFCaptureD3D/x64/Debug/ARMFCaptureD3D.pdb
new file mode 100644
index 0000000..829c3a8
Binary files /dev/null and b/ARMFCaptureD3D/x64/Debug/ARMFCaptureD3D.pdb differ
diff --git a/ARMFCaptureD3D/x64/Debug/ARMFCaptureD3D.res b/ARMFCaptureD3D/x64/Debug/ARMFCaptureD3D.res
new file mode 100644
index 0000000..11b1c37
Binary files /dev/null and b/ARMFCaptureD3D/x64/Debug/ARMFCaptureD3D.res differ
diff --git a/ARMFCaptureD3D/x64/Debug/ARMFCaptureD3D.write.1.tlog b/ARMFCaptureD3D/x64/Debug/ARMFCaptureD3D.write.1.tlog
new file mode 100644
index 0000000..96780d7
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Debug/ARMFCaptureD3D.write.1.tlog
@@ -0,0 +1,5 @@
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\ARMFCaptureD3D.exp
diff --git a/ARMFCaptureD3D/x64/Debug/ARMFCaptureD3D_manifest.rc b/ARMFCaptureD3D/x64/Debug/ARMFCaptureD3D_manifest.rc
new file mode 100644
index 0000000..cb0aae6
Binary files /dev/null and b/ARMFCaptureD3D/x64/Debug/ARMFCaptureD3D_manifest.rc differ
diff --git a/ARMFCaptureD3D/x64/Debug/ARToolKitPlus.dll b/ARMFCaptureD3D/x64/Debug/ARToolKitPlus.dll
new file mode 100644
index 0000000..9ae7257
Binary files /dev/null and b/ARMFCaptureD3D/x64/Debug/ARToolKitPlus.dll differ
diff --git a/ARMFCaptureD3D/x64/Debug/ARToolKitPlus.lib b/ARMFCaptureD3D/x64/Debug/ARToolKitPlus.lib
new file mode 100644
index 0000000..cf97350
Binary files /dev/null and b/ARMFCaptureD3D/x64/Debug/ARToolKitPlus.lib differ
diff --git a/ARMFCaptureD3D/x64/Debug/CL.read.1.tlog b/ARMFCaptureD3D/x64/Debug/CL.read.1.tlog
new file mode 100644
index 0000000..86ae0e4
Binary files /dev/null and b/ARMFCaptureD3D/x64/Debug/CL.read.1.tlog differ
diff --git a/ARMFCaptureD3D/x64/Debug/CL.write.1.tlog b/ARMFCaptureD3D/x64/Debug/CL.write.1.tlog
new file mode 100644
index 0000000..06612be
Binary files /dev/null and b/ARMFCaptureD3D/x64/Debug/CL.write.1.tlog differ
diff --git a/ARMFCaptureD3D/x64/Debug/Calibration.obj b/ARMFCaptureD3D/x64/Debug/Calibration.obj
new file mode 100644
index 0000000..034cb09
Binary files /dev/null and b/ARMFCaptureD3D/x64/Debug/Calibration.obj differ
diff --git a/ARMFCaptureD3D/x64/Debug/ConfigFile.obj b/ARMFCaptureD3D/x64/Debug/ConfigFile.obj
new file mode 100644
index 0000000..496a990
Binary files /dev/null and b/ARMFCaptureD3D/x64/Debug/ConfigFile.obj differ
diff --git a/ARMFCaptureD3D/x64/Debug/Ivy.dll b/ARMFCaptureD3D/x64/Debug/Ivy.dll
new file mode 100644
index 0000000..d6d28a5
Binary files /dev/null and b/ARMFCaptureD3D/x64/Debug/Ivy.dll differ
diff --git a/ARMFCaptureD3D/x64/Debug/Ivy.lib b/ARMFCaptureD3D/x64/Debug/Ivy.lib
new file mode 100644
index 0000000..8856ccd
Binary files /dev/null and b/ARMFCaptureD3D/x64/Debug/Ivy.lib differ
diff --git a/ARMFCaptureD3D/x64/Debug/MFCaptureD3D.Build.CppClean.log b/ARMFCaptureD3D/x64/Debug/MFCaptureD3D.Build.CppClean.log
new file mode 100644
index 0000000..c8e0107
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Debug/MFCaptureD3D.Build.CppClean.log
@@ -0,0 +1,34 @@
+C:\USERS\FCOLIN\DOCUMENTS\PROJECTS VISUAL STUDIO\CPP\ARMFCAPTURED3D\X64\DEBUG\ARMFCAPTURED3D.RES
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\ARToolKitPlus.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\ARToolKitPlus.ilk
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\ARToolKitPlus.pdb
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\cl.command.1.tlog
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\CL.read.1.tlog
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\CL.write.1.tlog
+C:\USERS\FCOLIN\DOCUMENTS\PROJECTS VISUAL STUDIO\CPP\ARMFCAPTURED3D\X64\DEBUG\DEVICE.OBJ
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\Ivy.bsc
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\Ivy.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\Ivy.ilk
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\Ivy.pdb
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\link.command.1.tlog
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\link.read.1.tlog
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\link.write.1.tlog
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\link-cvtres.read.1.tlog
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\link-cvtres.write.1.tlog
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\MFCaptureD3D.exe.embed.manifest
+C:\USERS\FCOLIN\DOCUMENTS\PROJECTS VISUAL STUDIO\CPP\ARMFCAPTURED3D\X64\DEBUG\MFCAPTURED3D.EXE.EMBED.MANIFEST.RES
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\MFCaptureD3D.exe.intermediate.manifest
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\MFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\MFCaptureD3D.pdb
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\MFCaptureD3D.write.1.tlog
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\MFCaptureD3D_manifest.rc
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\pcre.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\pcre.ilk
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\pcre.pdb
+C:\USERS\FCOLIN\DOCUMENTS\PROJECTS VISUAL STUDIO\CPP\ARMFCAPTURED3D\X64\DEBUG\PREVIEW.OBJ
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\rc.command.1.tlog
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\rc.read.1.tlog
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\rc.write.1.tlog
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\vc100.idb
+C:\USERS\FCOLIN\DOCUMENTS\PROJECTS VISUAL STUDIO\CPP\ARMFCAPTURED3D\X64\DEBUG\VC100.PDB
+C:\USERS\FCOLIN\DOCUMENTS\PROJECTS VISUAL STUDIO\CPP\ARMFCAPTURED3D\X64\DEBUG\WINMAIN.OBJ
diff --git a/ARMFCaptureD3D/x64/Debug/MFCaptureD3D.lastbuildstate b/ARMFCaptureD3D/x64/Debug/MFCaptureD3D.lastbuildstate
new file mode 100644
index 0000000..25262a5
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Debug/MFCaptureD3D.lastbuildstate
@@ -0,0 +1,2 @@
+#v4.0:v100
+Debug|x64|C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\|
diff --git a/ARMFCaptureD3D/x64/Debug/MFCaptureD3D.lib b/ARMFCaptureD3D/x64/Debug/MFCaptureD3D.lib
new file mode 100644
index 0000000..492bef1
Binary files /dev/null and b/ARMFCaptureD3D/x64/Debug/MFCaptureD3D.lib differ
diff --git a/ARMFCaptureD3D/x64/Debug/MFCaptureD3D.log b/ARMFCaptureD3D/x64/Debug/MFCaptureD3D.log
new file mode 100644
index 0000000..4e8ab2f
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Debug/MFCaptureD3D.log
@@ -0,0 +1,254 @@
+La génération a démarré 20/10/2011 12:44:31.
+ 1>Projet "C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj" sur le nœud 2 (rebuild cible(s)).
+ 1>_PrepareForClean:
+ Suppression du fichier "x64\Debug\ARMFCaptureD3D.lastbuildstate".
+ InitializeBuildStatus:
+ Création de "x64\Debug\ARMFCaptureD3D.unsuccessfulbuild", car "AlwaysCreate" a été spécifié.
+ ClCompile:
+ c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\x86_amd64\CL.exe /c /I"C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARToolKitPlus-2.2.1\include" /I"C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\Bus\Ivy" /Zi /nologo /W4 /WX- /Od /D WIN32 /D _DEBUG /D _WINDOWS /D DX9 /D _USE_DOUBLE_ /D _UNICODE /D UNICODE /Gm /EHsc /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Fo"x64\Debug\\" /Fd"x64\Debug\vc100.pdb" /Gd /TP /errorReport:prompt ARAnalyse.cpp Calibration.cpp ConfigFile\ConfigFile.cpp debug.cpp device.cpp MinMaxAvg.cpp options.cpp preview.cpp winmain.cpp
+ winmain.cpp
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstdio(48): warning C4995: 'gets' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstdio(52): warning C4995: 'sprintf' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstdio(55): warning C4995: 'vsprintf' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstring(21): warning C4995: 'strcat' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstring(22): warning C4995: 'strcpy' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cwchar(30): warning C4995: 'swprintf' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cwchar(31): warning C4995: 'vswprintf' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cwchar(33): warning C4995: 'wcscat' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cwchar(35): warning C4995: 'wcscpy' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string(757): warning C4995: 'swprintf' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string(766): warning C4995: 'swprintf' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string(775): warning C4995: 'swprintf' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\intrin.h(1087): warning C4995: 'wcscat' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\intrin.h(1089): warning C4995: 'wcscpy' : le nom a été marqué comme #pragma deprecated
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\armfcaptured3d\options.h(196): warning C4512: 'OptIstreamIter' : l'opérateur d'assignation n'a pas pu être généré
+ c:\users\fcolin\documents\projects visual studio\cpp\armfcaptured3d\options.h(172) : voir la déclaration de 'OptIstreamIter'
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(81): warning C4100: 'app' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(83): warning C4100: 'app' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(130): warning C4100: 'regexp' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(130): warning C4100: 'id' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(130): warning C4100: 'app' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(132): warning C4100: 'regexp' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(132): warning C4100: 'id' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(132): warning C4100: 'app' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(134): warning C4100: 'regexp' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(134): warning C4100: 'id' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(134): warning C4100: 'app' : paramètre formel non référencé
+ 1>winmain.cpp(133): warning C4995: 'strcpy' : le nom a été marqué comme #pragma deprecated
+ 1>winmain.cpp(133): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
+ c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string.h(105) : voir la déclaration de 'strcpy'
+ 1>winmain.cpp(645): warning C4100: 'hwnd' : paramètre formel non référencé
+ preview.cpp
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstdio(48): warning C4995: 'gets' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstdio(52): warning C4995: 'sprintf' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstdio(55): warning C4995: 'vsprintf' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstring(21): warning C4995: 'strcat' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstring(22): warning C4995: 'strcpy' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cwchar(30): warning C4995: 'swprintf' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cwchar(31): warning C4995: 'vswprintf' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cwchar(33): warning C4995: 'wcscat' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cwchar(35): warning C4995: 'wcscpy' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\intrin.h(1087): warning C4995: 'wcscat' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\intrin.h(1089): warning C4995: 'wcscpy' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string(757): warning C4995: 'swprintf' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string(766): warning C4995: 'swprintf' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string(775): warning C4995: 'swprintf' : le nom a été marqué comme #pragma deprecated
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(81): warning C4100: 'app' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(83): warning C4100: 'app' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(130): warning C4100: 'regexp' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(130): warning C4100: 'id' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(130): warning C4100: 'app' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(132): warning C4100: 'regexp' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(132): warning C4100: 'id' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(132): warning C4100: 'app' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(134): warning C4100: 'regexp' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(134): warning C4100: 'id' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(134): warning C4100: 'app' : paramètre formel non référencé
+ options.cpp
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\armfcaptured3d\options.h(196): warning C4512: 'OptIstreamIter' : l'opérateur d'assignation n'a pas pu être généré
+ c:\users\fcolin\documents\projects visual studio\cpp\armfcaptured3d\options.h(172) : voir la déclaration de 'OptIstreamIter'
+ 1>options.cpp(155): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
+ c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string.h(105) : voir la déclaration de 'strcpy'
+ 1>options.cpp(156): warning C4996: 'strtok': This function or variable may be unsafe. Consider using strtok_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
+ c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string.h(197) : voir la déclaration de 'strtok'
+ 1>options.cpp(166): warning C4996: 'strtok': This function or variable may be unsafe. Consider using strtok_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
+ c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string.h(197) : voir la déclaration de 'strtok'
+ 1>options.cpp(171): warning C4996: 'strtok': This function or variable may be unsafe. Consider using strtok_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
+ c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string.h(197) : voir la déclaration de 'strtok'
+ 1>options.cpp(177): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
+ c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string.h(105) : voir la déclaration de 'strcpy'
+ 1>options.cpp(178): warning C4996: 'strtok': This function or variable may be unsafe. Consider using strtok_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
+ c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string.h(197) : voir la déclaration de 'strtok'
+ 1>options.cpp(563): warning C4996: 'strncpy': This function or variable may be unsafe. Consider using strncpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
+ c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string.h(188) : voir la déclaration de 'strncpy'
+ 1>options.cpp(571): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
+ c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string.h(105) : voir la déclaration de 'strcpy'
+ 1>options.cpp(574): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
+ c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string.h(105) : voir la déclaration de 'strcpy'
+ MinMaxAvg.cpp
+ device.cpp
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstdio(48): warning C4995: 'gets' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstdio(52): warning C4995: 'sprintf' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstdio(55): warning C4995: 'vsprintf' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstring(21): warning C4995: 'strcat' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstring(22): warning C4995: 'strcpy' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cwchar(30): warning C4995: 'swprintf' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cwchar(31): warning C4995: 'vswprintf' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cwchar(33): warning C4995: 'wcscat' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cwchar(35): warning C4995: 'wcscpy' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\intrin.h(1087): warning C4995: 'wcscat' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\intrin.h(1089): warning C4995: 'wcscpy' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string(757): warning C4995: 'swprintf' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string(766): warning C4995: 'swprintf' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string(775): warning C4995: 'swprintf' : le nom a été marqué comme #pragma deprecated
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(81): warning C4100: 'app' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(83): warning C4100: 'app' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(130): warning C4100: 'regexp' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(130): warning C4100: 'id' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(130): warning C4100: 'app' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(132): warning C4100: 'regexp' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(132): warning C4100: 'id' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(132): warning C4100: 'app' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(134): warning C4100: 'regexp' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(134): warning C4100: 'id' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(134): warning C4100: 'app' : paramètre formel non référencé
+ 1>device.cpp(932): warning C4102: 'done' : étiquette non référencée
+ debug.cpp
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstdio(48): warning C4995: 'gets' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstdio(52): warning C4995: 'sprintf' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstdio(55): warning C4995: 'vsprintf' : le nom a été marqué comme #pragma deprecated
+ ConfigFile.cpp
+ Calibration.cpp
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstdio(48): warning C4995: 'gets' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstdio(52): warning C4995: 'sprintf' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstdio(55): warning C4995: 'vsprintf' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstring(21): warning C4995: 'strcat' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstring(22): warning C4995: 'strcpy' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cwchar(30): warning C4995: 'swprintf' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cwchar(31): warning C4995: 'vswprintf' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cwchar(33): warning C4995: 'wcscat' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cwchar(35): warning C4995: 'wcscpy' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\intrin.h(1087): warning C4995: 'wcscat' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\intrin.h(1089): warning C4995: 'wcscpy' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string(757): warning C4995: 'swprintf' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string(766): warning C4995: 'swprintf' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string(775): warning C4995: 'swprintf' : le nom a été marqué comme #pragma deprecated
+ ARAnalyse.cpp
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstdio(48): warning C4995: 'gets' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstdio(52): warning C4995: 'sprintf' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstdio(55): warning C4995: 'vsprintf' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstring(21): warning C4995: 'strcat' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstring(22): warning C4995: 'strcpy' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cwchar(30): warning C4995: 'swprintf' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cwchar(31): warning C4995: 'vswprintf' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cwchar(33): warning C4995: 'wcscat' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cwchar(35): warning C4995: 'wcscpy' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\intrin.h(1087): warning C4995: 'wcscat' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\intrin.h(1089): warning C4995: 'wcscpy' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string(757): warning C4995: 'swprintf' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string(766): warning C4995: 'swprintf' : le nom a été marqué comme #pragma deprecated
+ 1>c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string(775): warning C4995: 'swprintf' : le nom a été marqué comme #pragma deprecated
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(81): warning C4100: 'app' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(83): warning C4100: 'app' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(130): warning C4100: 'regexp' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(130): warning C4100: 'id' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(130): warning C4100: 'app' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(132): warning C4100: 'regexp' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(132): warning C4100: 'id' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(132): warning C4100: 'app' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(134): warning C4100: 'regexp' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(134): warning C4100: 'id' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(134): warning C4100: 'app' : paramètre formel non référencé
+ 1>ARAnalyse.cpp(232): warning C4100: 'size' : paramètre formel non référencé
+ 1>ARAnalyse.cpp(923): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(923): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(923): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(924): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(924): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(924): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(925): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(925): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(926): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(968): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(968): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(968): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(968): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(968): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(969): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(969): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(969): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(969): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(969): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(970): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(970): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(970): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(970): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(970): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(971): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(971): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(971): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(971): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(971): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(972): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(972): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(972): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(972): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(973): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(844): warning C4100: 'size' : paramètre formel non référencé
+ 1>ARAnalyse.cpp(1091): warning C4100: 'dest' : paramètre formel non référencé
+ 1>ARAnalyse.cpp(1115): warning C4189: 'height' : variable locale initialisée mais non référencée
+ 1>ARAnalyse.cpp(1141): warning C4189: 'height' : variable locale initialisée mais non référencée
+ 1>ARAnalyse.cpp(1170): warning C4189: 'height' : variable locale initialisée mais non référencée
+ 1>ARAnalyse.cpp(1197): warning C4100: 'dest' : paramètre formel non référencé
+ 1>ARAnalyse.cpp(421): warning C4505: 'RGB2HSL' : la fonction locale non référencée a été supprimée
+ Generating Code...
+ ResourceCompile:
+ c:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\rc.exe /D _UNICODE /D UNICODE /l"0x0409" /nologo /fo"x64\Debug\ARMFCaptureD3D.res" ARMFCaptureD3D.rc
+ ManifestResourceCompile:
+ c:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\rc.exe /nologo /fo"x64\Debug\ARMFCaptureD3D.exe.embed.manifest.res" x64\Debug\ARMFCaptureD3D_manifest.rc
+ Link:
+ c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\x86_amd64\link.exe /ERRORREPORT:PROMPT /OUT:"C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\ARMFCaptureD3D.exe" /INCREMENTAL /NOLOGO Comctl32.lib mfplat.lib mf.lib mfreadwrite.lib mfuuid.lib d3d9.lib shlwapi.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /MANIFEST /ManifestFile:"x64\Debug\ARMFCaptureD3D.exe.intermediate.manifest" /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG /PDB:"C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\ARMFCaptureD3D.pdb" /SUBSYSTEM:WINDOWS /TLBID:1 /DYNAMICBASE:NO /IMPLIB:"C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\ARMFCaptureD3D.lib" /MACHINE:X64 x64\Debug\ARMFCaptureD3D.res
+ x64\Debug\ARMFCaptureD3D.exe.embed.manifest.res
+ x64\Debug\ARAnalyse.obj
+ x64\Debug\Calibration.obj
+ x64\Debug\ConfigFile.obj
+ x64\Debug\debug.obj
+ x64\Debug\device.obj
+ x64\Debug\MinMaxAvg.obj
+ x64\Debug\options.obj
+ x64\Debug\preview.obj
+ x64\Debug\winmain.obj
+ "C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\pcre.lib"
+ "C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\ARToolKitPlus.lib"
+ "C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\Ivy.lib"
+ Création de la bibliothèque C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\ARMFCaptureD3D.lib et de l'objet C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\ARMFCaptureD3D.exp
+ MFCaptureD3D.vcxproj -> C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\ARMFCaptureD3D.exe
+ Manifest:
+ Suppression du fichier "x64\Debug\ARMFCaptureD3D.exe.embed.manifest".
+ c:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\mt.exe /nologo /verbose /out:"x64\Debug\ARMFCaptureD3D.exe.embed.manifest" /manifest x64\Debug\ARMFCaptureD3D.exe.intermediate.manifest
+ c:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\rc.exe /nologo /fo"x64\Debug\ARMFCaptureD3D.exe.embed.manifest.res" x64\Debug\ARMFCaptureD3D_manifest.rc
+ LinkEmbedManifest:
+ c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\x86_amd64\link.exe /ERRORREPORT:PROMPT /OUT:"C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\ARMFCaptureD3D.exe" /INCREMENTAL /NOLOGO Comctl32.lib mfplat.lib mf.lib mfreadwrite.lib mfuuid.lib d3d9.lib shlwapi.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /MANIFEST /ManifestFile:"x64\Debug\ARMFCaptureD3D.exe.intermediate.manifest" /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG /PDB:"C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\ARMFCaptureD3D.pdb" /SUBSYSTEM:WINDOWS /TLBID:1 /DYNAMICBASE:NO /IMPLIB:"C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\ARMFCaptureD3D.lib" /MACHINE:X64 x64\Debug\ARMFCaptureD3D.res
+ x64\Debug\ARMFCaptureD3D.exe.embed.manifest.res
+ x64\Debug\ARAnalyse.obj
+ x64\Debug\Calibration.obj
+ x64\Debug\ConfigFile.obj
+ x64\Debug\debug.obj
+ x64\Debug\device.obj
+ x64\Debug\MinMaxAvg.obj
+ x64\Debug\options.obj
+ x64\Debug\preview.obj
+ x64\Debug\winmain.obj
+ "C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\pcre.lib"
+ "C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\ARToolKitPlus.lib"
+ "C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\Ivy.lib"
+ Création de la bibliothèque C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\ARMFCaptureD3D.lib et de l'objet C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\ARMFCaptureD3D.exp
+ MFCaptureD3D.vcxproj -> C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Debug\ARMFCaptureD3D.exe
+ FinalizeBuildStatus:
+ Suppression du fichier "x64\Debug\ARMFCaptureD3D.unsuccessfulbuild".
+ Mise Ă jour de l'horodatage "x64\Debug\ARMFCaptureD3D.lastbuildstate".
+ 1>Génération du projet "C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj" terminée (rebuild cible(s)).
+
+La génération a réussi.
+
+Temps écoulé 00:00:10.74
diff --git a/ARMFCaptureD3D/x64/Debug/MFCaptureD3D.unsuccessfulbuild b/ARMFCaptureD3D/x64/Debug/MFCaptureD3D.unsuccessfulbuild
new file mode 100644
index 0000000..e69de29
diff --git a/ARMFCaptureD3D/x64/Debug/MinMaxAvg.obj b/ARMFCaptureD3D/x64/Debug/MinMaxAvg.obj
new file mode 100644
index 0000000..264634d
Binary files /dev/null and b/ARMFCaptureD3D/x64/Debug/MinMaxAvg.obj differ
diff --git a/ARMFCaptureD3D/x64/Debug/ResolveAssemblyReference.cache b/ARMFCaptureD3D/x64/Debug/ResolveAssemblyReference.cache
new file mode 100644
index 0000000..c0edb66
Binary files /dev/null and b/ARMFCaptureD3D/x64/Debug/ResolveAssemblyReference.cache differ
diff --git a/ARMFCaptureD3D/x64/Debug/cl.command.1.tlog b/ARMFCaptureD3D/x64/Debug/cl.command.1.tlog
new file mode 100644
index 0000000..3a1f62a
Binary files /dev/null and b/ARMFCaptureD3D/x64/Debug/cl.command.1.tlog differ
diff --git a/ARMFCaptureD3D/x64/Debug/debug.obj b/ARMFCaptureD3D/x64/Debug/debug.obj
new file mode 100644
index 0000000..f735a4b
Binary files /dev/null and b/ARMFCaptureD3D/x64/Debug/debug.obj differ
diff --git a/ARMFCaptureD3D/x64/Debug/device.obj b/ARMFCaptureD3D/x64/Debug/device.obj
new file mode 100644
index 0000000..e2d5bd4
Binary files /dev/null and b/ARMFCaptureD3D/x64/Debug/device.obj differ
diff --git a/ARMFCaptureD3D/x64/Debug/link-cvtres.read.1.tlog b/ARMFCaptureD3D/x64/Debug/link-cvtres.read.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Debug/link-cvtres.read.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Debug/link-cvtres.write.1.tlog b/ARMFCaptureD3D/x64/Debug/link-cvtres.write.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Debug/link-cvtres.write.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Debug/link.3816-cvtres.read.1.tlog b/ARMFCaptureD3D/x64/Debug/link.3816-cvtres.read.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Debug/link.3816-cvtres.read.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Debug/link.3816-cvtres.write.1.tlog b/ARMFCaptureD3D/x64/Debug/link.3816-cvtres.write.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Debug/link.3816-cvtres.write.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Debug/link.3816.read.1.tlog b/ARMFCaptureD3D/x64/Debug/link.3816.read.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Debug/link.3816.read.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Debug/link.3816.write.1.tlog b/ARMFCaptureD3D/x64/Debug/link.3816.write.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Debug/link.3816.write.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Debug/link.command.1.tlog b/ARMFCaptureD3D/x64/Debug/link.command.1.tlog
new file mode 100644
index 0000000..aa078b2
Binary files /dev/null and b/ARMFCaptureD3D/x64/Debug/link.command.1.tlog differ
diff --git a/ARMFCaptureD3D/x64/Debug/link.read.1.tlog b/ARMFCaptureD3D/x64/Debug/link.read.1.tlog
new file mode 100644
index 0000000..ba96714
Binary files /dev/null and b/ARMFCaptureD3D/x64/Debug/link.read.1.tlog differ
diff --git a/ARMFCaptureD3D/x64/Debug/link.write.1.tlog b/ARMFCaptureD3D/x64/Debug/link.write.1.tlog
new file mode 100644
index 0000000..307f670
Binary files /dev/null and b/ARMFCaptureD3D/x64/Debug/link.write.1.tlog differ
diff --git a/ARMFCaptureD3D/x64/Debug/mt.command.1.tlog b/ARMFCaptureD3D/x64/Debug/mt.command.1.tlog
new file mode 100644
index 0000000..7619a39
Binary files /dev/null and b/ARMFCaptureD3D/x64/Debug/mt.command.1.tlog differ
diff --git a/ARMFCaptureD3D/x64/Debug/mt.read.1.tlog b/ARMFCaptureD3D/x64/Debug/mt.read.1.tlog
new file mode 100644
index 0000000..df78fbd
Binary files /dev/null and b/ARMFCaptureD3D/x64/Debug/mt.read.1.tlog differ
diff --git a/ARMFCaptureD3D/x64/Debug/mt.write.1.tlog b/ARMFCaptureD3D/x64/Debug/mt.write.1.tlog
new file mode 100644
index 0000000..0747494
Binary files /dev/null and b/ARMFCaptureD3D/x64/Debug/mt.write.1.tlog differ
diff --git a/ARMFCaptureD3D/x64/Debug/options.obj b/ARMFCaptureD3D/x64/Debug/options.obj
new file mode 100644
index 0000000..4cc40ea
Binary files /dev/null and b/ARMFCaptureD3D/x64/Debug/options.obj differ
diff --git a/ARMFCaptureD3D/x64/Debug/pcre.dll b/ARMFCaptureD3D/x64/Debug/pcre.dll
new file mode 100644
index 0000000..3033cc8
Binary files /dev/null and b/ARMFCaptureD3D/x64/Debug/pcre.dll differ
diff --git a/ARMFCaptureD3D/x64/Debug/pcre.lib b/ARMFCaptureD3D/x64/Debug/pcre.lib
new file mode 100644
index 0000000..9fb4e1e
Binary files /dev/null and b/ARMFCaptureD3D/x64/Debug/pcre.lib differ
diff --git a/ARMFCaptureD3D/x64/Debug/preview.obj b/ARMFCaptureD3D/x64/Debug/preview.obj
new file mode 100644
index 0000000..6f21b52
Binary files /dev/null and b/ARMFCaptureD3D/x64/Debug/preview.obj differ
diff --git a/ARMFCaptureD3D/x64/Debug/rc.command.1.tlog b/ARMFCaptureD3D/x64/Debug/rc.command.1.tlog
new file mode 100644
index 0000000..5f02024
Binary files /dev/null and b/ARMFCaptureD3D/x64/Debug/rc.command.1.tlog differ
diff --git a/ARMFCaptureD3D/x64/Debug/rc.read.1.tlog b/ARMFCaptureD3D/x64/Debug/rc.read.1.tlog
new file mode 100644
index 0000000..2e8ade7
Binary files /dev/null and b/ARMFCaptureD3D/x64/Debug/rc.read.1.tlog differ
diff --git a/ARMFCaptureD3D/x64/Debug/rc.write.1.tlog b/ARMFCaptureD3D/x64/Debug/rc.write.1.tlog
new file mode 100644
index 0000000..b7401f0
Binary files /dev/null and b/ARMFCaptureD3D/x64/Debug/rc.write.1.tlog differ
diff --git a/ARMFCaptureD3D/x64/Debug/vc100.idb b/ARMFCaptureD3D/x64/Debug/vc100.idb
new file mode 100644
index 0000000..66bf6d4
Binary files /dev/null and b/ARMFCaptureD3D/x64/Debug/vc100.idb differ
diff --git a/ARMFCaptureD3D/x64/Debug/vc100.pdb b/ARMFCaptureD3D/x64/Debug/vc100.pdb
new file mode 100644
index 0000000..dafeb3a
Binary files /dev/null and b/ARMFCaptureD3D/x64/Debug/vc100.pdb differ
diff --git a/ARMFCaptureD3D/x64/Debug/winmain.obj b/ARMFCaptureD3D/x64/Debug/winmain.obj
new file mode 100644
index 0000000..6cf1010
Binary files /dev/null and b/ARMFCaptureD3D/x64/Debug/winmain.obj differ
diff --git a/ARMFCaptureD3D/x64/Release/ARAnalyse.obj b/ARMFCaptureD3D/x64/Release/ARAnalyse.obj
new file mode 100644
index 0000000..26fbf4a
Binary files /dev/null and b/ARMFCaptureD3D/x64/Release/ARAnalyse.obj differ
diff --git a/ARMFCaptureD3D/x64/Release/ARMFCaptureD3D.exe b/ARMFCaptureD3D/x64/Release/ARMFCaptureD3D.exe
new file mode 100644
index 0000000..c34837c
Binary files /dev/null and b/ARMFCaptureD3D/x64/Release/ARMFCaptureD3D.exe differ
diff --git a/ARMFCaptureD3D/x64/Release/ARMFCaptureD3D.exe - Raccourci.lnk b/ARMFCaptureD3D/x64/Release/ARMFCaptureD3D.exe - Raccourci.lnk
new file mode 100644
index 0000000..6c2b5b2
Binary files /dev/null and b/ARMFCaptureD3D/x64/Release/ARMFCaptureD3D.exe - Raccourci.lnk differ
diff --git a/ARMFCaptureD3D/x64/Release/ARMFCaptureD3D.exe.intermediate.manifest b/ARMFCaptureD3D/x64/Release/ARMFCaptureD3D.exe.intermediate.manifest
new file mode 100644
index 0000000..43cc1f5
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/ARMFCaptureD3D.exe.intermediate.manifest
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ARMFCaptureD3D/x64/Release/ARMFCaptureD3D.exp b/ARMFCaptureD3D/x64/Release/ARMFCaptureD3D.exp
new file mode 100644
index 0000000..358a62a
Binary files /dev/null and b/ARMFCaptureD3D/x64/Release/ARMFCaptureD3D.exp differ
diff --git a/ARMFCaptureD3D/x64/Release/ARMFCaptureD3D.lastbuildstate b/ARMFCaptureD3D/x64/Release/ARMFCaptureD3D.lastbuildstate
new file mode 100644
index 0000000..61399b3
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/ARMFCaptureD3D.lastbuildstate
@@ -0,0 +1,2 @@
+#v4.0:v100:false
+Release|x64|C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\|
diff --git a/ARMFCaptureD3D/x64/Release/ARMFCaptureD3D.lib b/ARMFCaptureD3D/x64/Release/ARMFCaptureD3D.lib
new file mode 100644
index 0000000..23a476c
Binary files /dev/null and b/ARMFCaptureD3D/x64/Release/ARMFCaptureD3D.lib differ
diff --git a/ARMFCaptureD3D/x64/Release/ARMFCaptureD3D.pdb b/ARMFCaptureD3D/x64/Release/ARMFCaptureD3D.pdb
new file mode 100644
index 0000000..d9e661a
Binary files /dev/null and b/ARMFCaptureD3D/x64/Release/ARMFCaptureD3D.pdb differ
diff --git a/ARMFCaptureD3D/x64/Release/ARMFCaptureD3D.res b/ARMFCaptureD3D/x64/Release/ARMFCaptureD3D.res
new file mode 100644
index 0000000..11b1c37
Binary files /dev/null and b/ARMFCaptureD3D/x64/Release/ARMFCaptureD3D.res differ
diff --git a/ARMFCaptureD3D/x64/Release/ARMFCaptureD3D.write.1.tlog b/ARMFCaptureD3D/x64/Release/ARMFCaptureD3D.write.1.tlog
new file mode 100644
index 0000000..2e1a4dc
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/ARMFCaptureD3D.write.1.tlog
@@ -0,0 +1,645 @@
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+^C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
diff --git a/ARMFCaptureD3D/x64/Release/ARToolKitPlus.dll b/ARMFCaptureD3D/x64/Release/ARToolKitPlus.dll
new file mode 100644
index 0000000..10975e6
Binary files /dev/null and b/ARMFCaptureD3D/x64/Release/ARToolKitPlus.dll differ
diff --git a/ARMFCaptureD3D/x64/Release/ARToolKitPlus.exp b/ARMFCaptureD3D/x64/Release/ARToolKitPlus.exp
new file mode 100644
index 0000000..211b1f7
Binary files /dev/null and b/ARMFCaptureD3D/x64/Release/ARToolKitPlus.exp differ
diff --git a/ARMFCaptureD3D/x64/Release/ARToolKitPlus.lib b/ARMFCaptureD3D/x64/Release/ARToolKitPlus.lib
new file mode 100644
index 0000000..b3959b0
Binary files /dev/null and b/ARMFCaptureD3D/x64/Release/ARToolKitPlus.lib differ
diff --git a/ARMFCaptureD3D/x64/Release/CL.1180.read.1.tlog b/ARMFCaptureD3D/x64/Release/CL.1180.read.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.1180.read.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.1180.write.1.tlog b/ARMFCaptureD3D/x64/Release/CL.1180.write.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.1180.write.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.1284.read.1.tlog b/ARMFCaptureD3D/x64/Release/CL.1284.read.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.1284.read.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.1284.write.1.tlog b/ARMFCaptureD3D/x64/Release/CL.1284.write.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.1284.write.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.1464.read.1.tlog b/ARMFCaptureD3D/x64/Release/CL.1464.read.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.1464.read.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.1464.write.1.tlog b/ARMFCaptureD3D/x64/Release/CL.1464.write.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.1464.write.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.2096.read.1.tlog b/ARMFCaptureD3D/x64/Release/CL.2096.read.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.2096.read.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.2096.write.1.tlog b/ARMFCaptureD3D/x64/Release/CL.2096.write.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.2096.write.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.2124.read.1.tlog b/ARMFCaptureD3D/x64/Release/CL.2124.read.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.2124.read.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.2124.write.1.tlog b/ARMFCaptureD3D/x64/Release/CL.2124.write.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.2124.write.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.3024.read.1.tlog b/ARMFCaptureD3D/x64/Release/CL.3024.read.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.3024.read.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.3024.write.1.tlog b/ARMFCaptureD3D/x64/Release/CL.3024.write.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.3024.write.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.3092.read.1.tlog b/ARMFCaptureD3D/x64/Release/CL.3092.read.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.3092.read.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.3092.write.1.tlog b/ARMFCaptureD3D/x64/Release/CL.3092.write.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.3092.write.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.3364.read.1.tlog b/ARMFCaptureD3D/x64/Release/CL.3364.read.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.3364.read.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.3364.write.1.tlog b/ARMFCaptureD3D/x64/Release/CL.3364.write.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.3364.write.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.3384.read.1.tlog b/ARMFCaptureD3D/x64/Release/CL.3384.read.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.3384.read.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.3384.write.1.tlog b/ARMFCaptureD3D/x64/Release/CL.3384.write.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.3384.write.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.3544.read.1.tlog b/ARMFCaptureD3D/x64/Release/CL.3544.read.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.3544.read.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.3544.write.1.tlog b/ARMFCaptureD3D/x64/Release/CL.3544.write.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.3544.write.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.3916.read.1.tlog b/ARMFCaptureD3D/x64/Release/CL.3916.read.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.3916.read.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.3916.write.1.tlog b/ARMFCaptureD3D/x64/Release/CL.3916.write.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.3916.write.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.3924.read.1.tlog b/ARMFCaptureD3D/x64/Release/CL.3924.read.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.3924.read.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.3924.write.1.tlog b/ARMFCaptureD3D/x64/Release/CL.3924.write.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.3924.write.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.4284.read.1.tlog b/ARMFCaptureD3D/x64/Release/CL.4284.read.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.4284.read.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.4284.write.1.tlog b/ARMFCaptureD3D/x64/Release/CL.4284.write.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.4284.write.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.4332.read.1.tlog b/ARMFCaptureD3D/x64/Release/CL.4332.read.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.4332.read.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.4332.write.1.tlog b/ARMFCaptureD3D/x64/Release/CL.4332.write.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.4332.write.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.4604.read.1.tlog b/ARMFCaptureD3D/x64/Release/CL.4604.read.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.4604.read.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.4604.write.1.tlog b/ARMFCaptureD3D/x64/Release/CL.4604.write.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.4604.write.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.4640.read.1.tlog b/ARMFCaptureD3D/x64/Release/CL.4640.read.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.4640.read.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.4640.write.1.tlog b/ARMFCaptureD3D/x64/Release/CL.4640.write.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.4640.write.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.5060.read.1.tlog b/ARMFCaptureD3D/x64/Release/CL.5060.read.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.5060.read.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.5060.write.1.tlog b/ARMFCaptureD3D/x64/Release/CL.5060.write.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.5060.write.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.5172.read.1.tlog b/ARMFCaptureD3D/x64/Release/CL.5172.read.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.5172.read.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.5172.write.1.tlog b/ARMFCaptureD3D/x64/Release/CL.5172.write.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.5172.write.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.5288.read.1.tlog b/ARMFCaptureD3D/x64/Release/CL.5288.read.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.5288.read.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.5288.write.1.tlog b/ARMFCaptureD3D/x64/Release/CL.5288.write.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.5288.write.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.5404.read.1.tlog b/ARMFCaptureD3D/x64/Release/CL.5404.read.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.5404.read.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.5404.write.1.tlog b/ARMFCaptureD3D/x64/Release/CL.5404.write.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.5404.write.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.5472.read.1.tlog b/ARMFCaptureD3D/x64/Release/CL.5472.read.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.5472.read.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.5472.write.1.tlog b/ARMFCaptureD3D/x64/Release/CL.5472.write.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.5472.write.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.5488.read.1.tlog b/ARMFCaptureD3D/x64/Release/CL.5488.read.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.5488.read.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.5488.write.1.tlog b/ARMFCaptureD3D/x64/Release/CL.5488.write.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.5488.write.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.5716.read.1.tlog b/ARMFCaptureD3D/x64/Release/CL.5716.read.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.5716.read.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.5716.write.1.tlog b/ARMFCaptureD3D/x64/Release/CL.5716.write.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.5716.write.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.5736.read.1.tlog b/ARMFCaptureD3D/x64/Release/CL.5736.read.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.5736.read.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.5736.write.1.tlog b/ARMFCaptureD3D/x64/Release/CL.5736.write.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.5736.write.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.5752.read.1.tlog b/ARMFCaptureD3D/x64/Release/CL.5752.read.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.5752.read.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.5752.write.1.tlog b/ARMFCaptureD3D/x64/Release/CL.5752.write.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.5752.write.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.5804.read.1.tlog b/ARMFCaptureD3D/x64/Release/CL.5804.read.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.5804.read.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.5804.write.1.tlog b/ARMFCaptureD3D/x64/Release/CL.5804.write.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.5804.write.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.5900.read.1.tlog b/ARMFCaptureD3D/x64/Release/CL.5900.read.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.5900.read.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.5900.write.1.tlog b/ARMFCaptureD3D/x64/Release/CL.5900.write.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.5900.write.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.5956.read.1.tlog b/ARMFCaptureD3D/x64/Release/CL.5956.read.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.5956.read.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.5956.write.1.tlog b/ARMFCaptureD3D/x64/Release/CL.5956.write.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.5956.write.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.6228.read.1.tlog b/ARMFCaptureD3D/x64/Release/CL.6228.read.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.6228.read.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.6228.write.1.tlog b/ARMFCaptureD3D/x64/Release/CL.6228.write.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.6228.write.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.6368.read.1.tlog b/ARMFCaptureD3D/x64/Release/CL.6368.read.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.6368.read.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.6368.write.1.tlog b/ARMFCaptureD3D/x64/Release/CL.6368.write.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.6368.write.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.6400.read.1.tlog b/ARMFCaptureD3D/x64/Release/CL.6400.read.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.6400.read.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.6400.write.1.tlog b/ARMFCaptureD3D/x64/Release/CL.6400.write.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.6400.write.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.6428.read.1.tlog b/ARMFCaptureD3D/x64/Release/CL.6428.read.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.6428.read.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.6428.write.1.tlog b/ARMFCaptureD3D/x64/Release/CL.6428.write.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.6428.write.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.6488.read.1.tlog b/ARMFCaptureD3D/x64/Release/CL.6488.read.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.6488.read.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.6488.write.1.tlog b/ARMFCaptureD3D/x64/Release/CL.6488.write.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.6488.write.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.6748.read.1.tlog b/ARMFCaptureD3D/x64/Release/CL.6748.read.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.6748.read.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.6748.write.1.tlog b/ARMFCaptureD3D/x64/Release/CL.6748.write.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.6748.write.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.7112.read.1.tlog b/ARMFCaptureD3D/x64/Release/CL.7112.read.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.7112.read.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.7112.write.1.tlog b/ARMFCaptureD3D/x64/Release/CL.7112.write.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.7112.write.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.7176.read.1.tlog b/ARMFCaptureD3D/x64/Release/CL.7176.read.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.7176.read.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.7176.write.1.tlog b/ARMFCaptureD3D/x64/Release/CL.7176.write.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.7176.write.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.7352.read.1.tlog b/ARMFCaptureD3D/x64/Release/CL.7352.read.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.7352.read.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.7352.write.1.tlog b/ARMFCaptureD3D/x64/Release/CL.7352.write.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.7352.write.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.7400.read.1.tlog b/ARMFCaptureD3D/x64/Release/CL.7400.read.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.7400.read.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.7400.write.1.tlog b/ARMFCaptureD3D/x64/Release/CL.7400.write.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.7400.write.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.748.read.1.tlog b/ARMFCaptureD3D/x64/Release/CL.748.read.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.748.read.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.748.write.1.tlog b/ARMFCaptureD3D/x64/Release/CL.748.write.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.748.write.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.8132.read.1.tlog b/ARMFCaptureD3D/x64/Release/CL.8132.read.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.8132.read.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.8132.write.1.tlog b/ARMFCaptureD3D/x64/Release/CL.8132.write.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.8132.write.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.8248.read.1.tlog b/ARMFCaptureD3D/x64/Release/CL.8248.read.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.8248.read.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.8248.write.1.tlog b/ARMFCaptureD3D/x64/Release/CL.8248.write.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.8248.write.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.8296.read.1.tlog b/ARMFCaptureD3D/x64/Release/CL.8296.read.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.8296.read.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.8296.write.1.tlog b/ARMFCaptureD3D/x64/Release/CL.8296.write.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.8296.write.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.8776.read.1.tlog b/ARMFCaptureD3D/x64/Release/CL.8776.read.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.8776.read.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.8776.write.1.tlog b/ARMFCaptureD3D/x64/Release/CL.8776.write.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.8776.write.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.8824.read.1.tlog b/ARMFCaptureD3D/x64/Release/CL.8824.read.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.8824.read.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.8824.write.1.tlog b/ARMFCaptureD3D/x64/Release/CL.8824.write.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.8824.write.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.8856.read.1.tlog b/ARMFCaptureD3D/x64/Release/CL.8856.read.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.8856.read.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.8856.write.1.tlog b/ARMFCaptureD3D/x64/Release/CL.8856.write.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.8856.write.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.8904.read.1.tlog b/ARMFCaptureD3D/x64/Release/CL.8904.read.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.8904.read.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.8904.write.1.tlog b/ARMFCaptureD3D/x64/Release/CL.8904.write.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.8904.write.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.9148.read.1.tlog b/ARMFCaptureD3D/x64/Release/CL.9148.read.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.9148.read.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.9148.write.1.tlog b/ARMFCaptureD3D/x64/Release/CL.9148.write.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/CL.9148.write.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/CL.read.1.tlog b/ARMFCaptureD3D/x64/Release/CL.read.1.tlog
new file mode 100644
index 0000000..6101b33
Binary files /dev/null and b/ARMFCaptureD3D/x64/Release/CL.read.1.tlog differ
diff --git a/ARMFCaptureD3D/x64/Release/CL.write.1.tlog b/ARMFCaptureD3D/x64/Release/CL.write.1.tlog
new file mode 100644
index 0000000..2ffd592
Binary files /dev/null and b/ARMFCaptureD3D/x64/Release/CL.write.1.tlog differ
diff --git a/ARMFCaptureD3D/x64/Release/Calibration.obj b/ARMFCaptureD3D/x64/Release/Calibration.obj
new file mode 100644
index 0000000..bd4a7e7
Binary files /dev/null and b/ARMFCaptureD3D/x64/Release/Calibration.obj differ
diff --git a/ARMFCaptureD3D/x64/Release/ConfigFile.obj b/ARMFCaptureD3D/x64/Release/ConfigFile.obj
new file mode 100644
index 0000000..8b89769
Binary files /dev/null and b/ARMFCaptureD3D/x64/Release/ConfigFile.obj differ
diff --git a/ARMFCaptureD3D/x64/Release/Ivy.dll b/ARMFCaptureD3D/x64/Release/Ivy.dll
new file mode 100644
index 0000000..00484ca
Binary files /dev/null and b/ARMFCaptureD3D/x64/Release/Ivy.dll differ
diff --git a/ARMFCaptureD3D/x64/Release/Ivy.exp b/ARMFCaptureD3D/x64/Release/Ivy.exp
new file mode 100644
index 0000000..6b595b7
Binary files /dev/null and b/ARMFCaptureD3D/x64/Release/Ivy.exp differ
diff --git a/ARMFCaptureD3D/x64/Release/Ivy.lib b/ARMFCaptureD3D/x64/Release/Ivy.lib
new file mode 100644
index 0000000..f140850
Binary files /dev/null and b/ARMFCaptureD3D/x64/Release/Ivy.lib differ
diff --git a/ARMFCaptureD3D/x64/Release/MFCaptureD3D.log b/ARMFCaptureD3D/x64/Release/MFCaptureD3D.log
new file mode 100644
index 0000000..32f069c
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/MFCaptureD3D.log
@@ -0,0 +1,231 @@
+La génération a démarré 18/11/2011 13:09:41.
+ 1>Projet "C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj" sur le nœud 3 (build cible(s)).
+ 1>InitializeBuildStatus:
+ Création de "x64\Release\ARMFCaptureD3D.unsuccessfulbuild", car "AlwaysCreate" a été spécifié.
+ ClCompile:
+ C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\x86_amd64\CL.exe /c /I"C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARToolKitPlus-2.2.1\include" /I"C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\Bus\Ivy" /Zi /nologo /W4 /WX- /O2 /GL /D WIN32 /D NDEBUG /D _WINDOWS /D DX9 /D _USE_DOUBLE_ /D _UNICODE /D UNICODE /Gm- /EHsc /MD /GS /fp:precise /Zc:wchar_t /Zc:forScope /Fo"x64\Release\\" /Fd"x64\Release\vc100.pdb" /Gd /TP /errorReport:prompt ARAnalyse.cpp Calibration.cpp ConfigFile\ConfigFile.cpp debug.cpp device.cpp MinMaxAvg.cpp options.cpp preview.cpp winmain.cpp
+ ARAnalyse.cpp
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstdio(48): warning C4995: 'gets' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstdio(52): warning C4995: 'sprintf' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstdio(55): warning C4995: 'vsprintf' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstring(21): warning C4995: 'strcat' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstring(22): warning C4995: 'strcpy' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cwchar(30): warning C4995: 'swprintf' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cwchar(31): warning C4995: 'vswprintf' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cwchar(33): warning C4995: 'wcscat' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cwchar(35): warning C4995: 'wcscpy' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\intrin.h(1092): warning C4995: 'wcscat' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\intrin.h(1094): warning C4995: 'wcscpy' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string(757): warning C4995: 'swprintf' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string(766): warning C4995: 'swprintf' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string(775): warning C4995: 'swprintf' : le nom a été marqué comme #pragma deprecated
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(81): warning C4100: 'app' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(83): warning C4100: 'app' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(130): warning C4100: 'regexp' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(130): warning C4100: 'id' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(130): warning C4100: 'app' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(132): warning C4100: 'regexp' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(132): warning C4100: 'id' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(132): warning C4100: 'app' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(134): warning C4100: 'regexp' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(134): warning C4100: 'id' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(134): warning C4100: 'app' : paramètre formel non référencé
+ 1>ARAnalyse.cpp(232): warning C4100: 'size' : paramètre formel non référencé
+ 1>ARAnalyse.cpp(923): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(923): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(923): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(924): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(924): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(924): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(925): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(925): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(926): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(968): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(968): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(968): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(968): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(968): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(969): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(969): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(969): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(969): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(969): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(970): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(970): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(970): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(970): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(970): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(971): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(971): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(971): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(971): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(971): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(972): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(972): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(972): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(972): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(973): warning C4305: 'initialisation'Â : troncation de 'double' Ă 'const float'
+ 1>ARAnalyse.cpp(844): warning C4100: 'size' : paramètre formel non référencé
+ 1>ARAnalyse.cpp(1091): warning C4100: 'dest' : paramètre formel non référencé
+ 1>ARAnalyse.cpp(1115): warning C4189: 'height' : variable locale initialisée mais non référencée
+ 1>ARAnalyse.cpp(1141): warning C4189: 'height' : variable locale initialisée mais non référencée
+ 1>ARAnalyse.cpp(1170): warning C4189: 'height' : variable locale initialisée mais non référencée
+ 1>ARAnalyse.cpp(1197): warning C4100: 'dest' : paramètre formel non référencé
+ 1>ARAnalyse.cpp(421): warning C4505: 'RGB2HSL' : la fonction locale non référencée a été supprimée
+ Calibration.cpp
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstdio(48): warning C4995: 'gets' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstdio(52): warning C4995: 'sprintf' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstdio(55): warning C4995: 'vsprintf' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstring(21): warning C4995: 'strcat' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstring(22): warning C4995: 'strcpy' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cwchar(30): warning C4995: 'swprintf' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cwchar(31): warning C4995: 'vswprintf' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cwchar(33): warning C4995: 'wcscat' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cwchar(35): warning C4995: 'wcscpy' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\intrin.h(1092): warning C4995: 'wcscat' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\intrin.h(1094): warning C4995: 'wcscpy' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string(757): warning C4995: 'swprintf' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string(766): warning C4995: 'swprintf' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string(775): warning C4995: 'swprintf' : le nom a été marqué comme #pragma deprecated
+ ConfigFile.cpp
+ debug.cpp
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstdio(48): warning C4995: 'gets' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstdio(52): warning C4995: 'sprintf' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstdio(55): warning C4995: 'vsprintf' : le nom a été marqué comme #pragma deprecated
+ device.cpp
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstdio(48): warning C4995: 'gets' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstdio(52): warning C4995: 'sprintf' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstdio(55): warning C4995: 'vsprintf' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstring(21): warning C4995: 'strcat' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstring(22): warning C4995: 'strcpy' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cwchar(30): warning C4995: 'swprintf' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cwchar(31): warning C4995: 'vswprintf' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cwchar(33): warning C4995: 'wcscat' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cwchar(35): warning C4995: 'wcscpy' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\intrin.h(1092): warning C4995: 'wcscat' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\intrin.h(1094): warning C4995: 'wcscpy' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string(757): warning C4995: 'swprintf' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string(766): warning C4995: 'swprintf' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string(775): warning C4995: 'swprintf' : le nom a été marqué comme #pragma deprecated
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(81): warning C4100: 'app' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(83): warning C4100: 'app' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(130): warning C4100: 'regexp' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(130): warning C4100: 'id' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(130): warning C4100: 'app' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(132): warning C4100: 'regexp' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(132): warning C4100: 'id' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(132): warning C4100: 'app' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(134): warning C4100: 'regexp' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(134): warning C4100: 'id' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(134): warning C4100: 'app' : paramètre formel non référencé
+ 1>device.cpp(932): warning C4102: 'done' : étiquette non référencée
+ MinMaxAvg.cpp
+ options.cpp
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\armfcaptured3d\options.h(196): warning C4512: 'OptIstreamIter' : l'opérateur d'assignation n'a pas pu être généré
+ c:\users\fcolin\documents\projects visual studio\cpp\armfcaptured3d\options.h(172) : voir la déclaration de 'OptIstreamIter'
+ 1>options.cpp(155): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
+ C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string.h(105) : voir la déclaration de 'strcpy'
+ 1>options.cpp(156): warning C4996: 'strtok': This function or variable may be unsafe. Consider using strtok_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
+ C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string.h(197) : voir la déclaration de 'strtok'
+ 1>options.cpp(166): warning C4996: 'strtok': This function or variable may be unsafe. Consider using strtok_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
+ C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string.h(197) : voir la déclaration de 'strtok'
+ 1>options.cpp(171): warning C4996: 'strtok': This function or variable may be unsafe. Consider using strtok_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
+ C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string.h(197) : voir la déclaration de 'strtok'
+ 1>options.cpp(177): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
+ C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string.h(105) : voir la déclaration de 'strcpy'
+ 1>options.cpp(178): warning C4996: 'strtok': This function or variable may be unsafe. Consider using strtok_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
+ C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string.h(197) : voir la déclaration de 'strtok'
+ 1>options.cpp(563): warning C4996: 'strncpy': This function or variable may be unsafe. Consider using strncpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
+ C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string.h(188) : voir la déclaration de 'strncpy'
+ 1>options.cpp(571): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
+ C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string.h(105) : voir la déclaration de 'strcpy'
+ 1>options.cpp(574): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
+ C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string.h(105) : voir la déclaration de 'strcpy'
+ preview.cpp
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstdio(48): warning C4995: 'gets' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstdio(52): warning C4995: 'sprintf' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstdio(55): warning C4995: 'vsprintf' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstring(21): warning C4995: 'strcat' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstring(22): warning C4995: 'strcpy' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cwchar(30): warning C4995: 'swprintf' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cwchar(31): warning C4995: 'vswprintf' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cwchar(33): warning C4995: 'wcscat' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cwchar(35): warning C4995: 'wcscpy' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\intrin.h(1092): warning C4995: 'wcscat' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\intrin.h(1094): warning C4995: 'wcscpy' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string(757): warning C4995: 'swprintf' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string(766): warning C4995: 'swprintf' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string(775): warning C4995: 'swprintf' : le nom a été marqué comme #pragma deprecated
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(81): warning C4100: 'app' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(83): warning C4100: 'app' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(130): warning C4100: 'regexp' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(130): warning C4100: 'id' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(130): warning C4100: 'app' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(132): warning C4100: 'regexp' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(132): warning C4100: 'id' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(132): warning C4100: 'app' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(134): warning C4100: 'regexp' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(134): warning C4100: 'id' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(134): warning C4100: 'app' : paramètre formel non référencé
+ winmain.cpp
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstdio(48): warning C4995: 'gets' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstdio(52): warning C4995: 'sprintf' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstdio(55): warning C4995: 'vsprintf' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstring(21): warning C4995: 'strcat' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstring(22): warning C4995: 'strcpy' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cwchar(30): warning C4995: 'swprintf' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cwchar(31): warning C4995: 'vswprintf' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cwchar(33): warning C4995: 'wcscat' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cwchar(35): warning C4995: 'wcscpy' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string(757): warning C4995: 'swprintf' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string(766): warning C4995: 'swprintf' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string(775): warning C4995: 'swprintf' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\intrin.h(1092): warning C4995: 'wcscat' : le nom a été marqué comme #pragma deprecated
+ 1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\intrin.h(1094): warning C4995: 'wcscpy' : le nom a été marqué comme #pragma deprecated
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\armfcaptured3d\options.h(196): warning C4512: 'OptIstreamIter' : l'opérateur d'assignation n'a pas pu être généré
+ c:\users\fcolin\documents\projects visual studio\cpp\armfcaptured3d\options.h(172) : voir la déclaration de 'OptIstreamIter'
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(81): warning C4100: 'app' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(83): warning C4100: 'app' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(130): warning C4100: 'regexp' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(130): warning C4100: 'id' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(130): warning C4100: 'app' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(132): warning C4100: 'regexp' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(132): warning C4100: 'id' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(132): warning C4100: 'app' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(134): warning C4100: 'regexp' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(134): warning C4100: 'id' : paramètre formel non référencé
+ 1>c:\users\fcolin\documents\projects visual studio\cpp\bus\ivy\IvyCallback.h(134): warning C4100: 'app' : paramètre formel non référencé
+ 1>winmain.cpp(133): warning C4995: 'strcpy' : le nom a été marqué comme #pragma deprecated
+ 1>winmain.cpp(133): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
+ C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\string.h(105) : voir la déclaration de 'strcpy'
+ 1>winmain.cpp(648): warning C4100: 'hwnd' : paramètre formel non référencé
+ ResourceCompile:
+ c:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\rc.exe /D _UNICODE /D UNICODE /l"0x0409" /nologo /fo"x64\Release\ARMFCaptureD3D.res" ARMFCaptureD3D.rc
+ Link:
+ C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\x86_amd64\link.exe /ERRORREPORT:PROMPT /OUT:"C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exe" /INCREMENTAL:NO /NOLOGO Comctl32.lib mfplat.lib mf.lib mfreadwrite.lib mfuuid.lib d3d9.lib shlwapi.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /MANIFEST /ManifestFile:"x64\Release\ARMFCaptureD3D.exe.intermediate.manifest" /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG /PDB:"C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.pdb" /SUBSYSTEM:WINDOWS /OPT:REF /OPT:ICF /LTCG /TLBID:1 /DYNAMICBASE:NO /IMPLIB:"C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib" /MACHINE:X64 x64\Release\ARMFCaptureD3D.res
+ x64\Release\ARAnalyse.obj
+ x64\Release\Calibration.obj
+ x64\Release\ConfigFile.obj
+ x64\Release\debug.obj
+ x64\Release\device.obj
+ x64\Release\MinMaxAvg.obj
+ x64\Release\options.obj
+ x64\Release\preview.obj
+ x64\Release\winmain.obj
+ "C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\pcre.lib"
+ "C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARToolKitPlus.lib"
+ "C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\Ivy.lib"
+ Création de la bibliothèque C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.lib et de l'objet C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exp
+ Génération de code en cours
+ Fin de la génération du code
+ MFCaptureD3D.vcxproj -> C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exe
+ Manifest:
+ c:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\mt.exe /nologo /verbose /outputresource:"C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\x64\Release\ARMFCaptureD3D.exe;#1" /manifest x64\Release\ARMFCaptureD3D.exe.intermediate.manifest
+ FinalizeBuildStatus:
+ Suppression du fichier "x64\Release\ARMFCaptureD3D.unsuccessfulbuild".
+ Mise Ă jour de l'horodatage "x64\Release\ARMFCaptureD3D.lastbuildstate".
+ 1>Génération du projet "C:\Users\fcolin\Documents\Projects Visual Studio\Cpp\ARMFCaptureD3D\MFCaptureD3D.vcxproj" terminée (build cible(s)).
+
+La génération a réussi.
+
+Temps écoulé 00:00:07.41
diff --git a/ARMFCaptureD3D/x64/Release/MinMaxAvg.obj b/ARMFCaptureD3D/x64/Release/MinMaxAvg.obj
new file mode 100644
index 0000000..64d9fac
Binary files /dev/null and b/ARMFCaptureD3D/x64/Release/MinMaxAvg.obj differ
diff --git a/ARMFCaptureD3D/x64/Release/cl.command.1.tlog b/ARMFCaptureD3D/x64/Release/cl.command.1.tlog
new file mode 100644
index 0000000..f529ab6
Binary files /dev/null and b/ARMFCaptureD3D/x64/Release/cl.command.1.tlog differ
diff --git a/ARMFCaptureD3D/x64/Release/debug.obj b/ARMFCaptureD3D/x64/Release/debug.obj
new file mode 100644
index 0000000..24b8a36
Binary files /dev/null and b/ARMFCaptureD3D/x64/Release/debug.obj differ
diff --git a/ARMFCaptureD3D/x64/Release/device.obj b/ARMFCaptureD3D/x64/Release/device.obj
new file mode 100644
index 0000000..a287424
Binary files /dev/null and b/ARMFCaptureD3D/x64/Release/device.obj differ
diff --git a/ARMFCaptureD3D/x64/Release/link-cvtres.read.1.tlog b/ARMFCaptureD3D/x64/Release/link-cvtres.read.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/link-cvtres.read.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/link-cvtres.write.1.tlog b/ARMFCaptureD3D/x64/Release/link-cvtres.write.1.tlog
new file mode 100644
index 0000000..46b134b
--- /dev/null
+++ b/ARMFCaptureD3D/x64/Release/link-cvtres.write.1.tlog
@@ -0,0 +1 @@
+˙ţ
\ No newline at end of file
diff --git a/ARMFCaptureD3D/x64/Release/link.command.1.tlog b/ARMFCaptureD3D/x64/Release/link.command.1.tlog
new file mode 100644
index 0000000..e0b8ef0
Binary files /dev/null and b/ARMFCaptureD3D/x64/Release/link.command.1.tlog differ
diff --git a/ARMFCaptureD3D/x64/Release/link.read.1.tlog b/ARMFCaptureD3D/x64/Release/link.read.1.tlog
new file mode 100644
index 0000000..ef8df0f
Binary files /dev/null and b/ARMFCaptureD3D/x64/Release/link.read.1.tlog differ
diff --git a/ARMFCaptureD3D/x64/Release/link.write.1.tlog b/ARMFCaptureD3D/x64/Release/link.write.1.tlog
new file mode 100644
index 0000000..a3df4f7
Binary files /dev/null and b/ARMFCaptureD3D/x64/Release/link.write.1.tlog differ
diff --git a/ARMFCaptureD3D/x64/Release/mt.command.1.tlog b/ARMFCaptureD3D/x64/Release/mt.command.1.tlog
new file mode 100644
index 0000000..e732c34
Binary files /dev/null and b/ARMFCaptureD3D/x64/Release/mt.command.1.tlog differ
diff --git a/ARMFCaptureD3D/x64/Release/mt.read.1.tlog b/ARMFCaptureD3D/x64/Release/mt.read.1.tlog
new file mode 100644
index 0000000..761f214
Binary files /dev/null and b/ARMFCaptureD3D/x64/Release/mt.read.1.tlog differ
diff --git a/ARMFCaptureD3D/x64/Release/mt.write.1.tlog b/ARMFCaptureD3D/x64/Release/mt.write.1.tlog
new file mode 100644
index 0000000..5f73c74
Binary files /dev/null and b/ARMFCaptureD3D/x64/Release/mt.write.1.tlog differ
diff --git a/ARMFCaptureD3D/x64/Release/options.obj b/ARMFCaptureD3D/x64/Release/options.obj
new file mode 100644
index 0000000..136f0a2
Binary files /dev/null and b/ARMFCaptureD3D/x64/Release/options.obj differ
diff --git a/ARMFCaptureD3D/x64/Release/pcre.dll b/ARMFCaptureD3D/x64/Release/pcre.dll
new file mode 100644
index 0000000..f5b82b9
Binary files /dev/null and b/ARMFCaptureD3D/x64/Release/pcre.dll differ
diff --git a/ARMFCaptureD3D/x64/Release/pcre.exp b/ARMFCaptureD3D/x64/Release/pcre.exp
new file mode 100644
index 0000000..1c7c1c7
Binary files /dev/null and b/ARMFCaptureD3D/x64/Release/pcre.exp differ
diff --git a/ARMFCaptureD3D/x64/Release/pcre.lib b/ARMFCaptureD3D/x64/Release/pcre.lib
new file mode 100644
index 0000000..a0e0fdc
Binary files /dev/null and b/ARMFCaptureD3D/x64/Release/pcre.lib differ
diff --git a/ARMFCaptureD3D/x64/Release/pcre.pdb b/ARMFCaptureD3D/x64/Release/pcre.pdb
new file mode 100644
index 0000000..f95c90b
Binary files /dev/null and b/ARMFCaptureD3D/x64/Release/pcre.pdb differ
diff --git a/ARMFCaptureD3D/x64/Release/preview.obj b/ARMFCaptureD3D/x64/Release/preview.obj
new file mode 100644
index 0000000..b16fec6
Binary files /dev/null and b/ARMFCaptureD3D/x64/Release/preview.obj differ
diff --git a/ARMFCaptureD3D/x64/Release/rc.command.1.tlog b/ARMFCaptureD3D/x64/Release/rc.command.1.tlog
new file mode 100644
index 0000000..62c5aeb
Binary files /dev/null and b/ARMFCaptureD3D/x64/Release/rc.command.1.tlog differ
diff --git a/ARMFCaptureD3D/x64/Release/rc.read.1.tlog b/ARMFCaptureD3D/x64/Release/rc.read.1.tlog
new file mode 100644
index 0000000..3fc68da
Binary files /dev/null and b/ARMFCaptureD3D/x64/Release/rc.read.1.tlog differ
diff --git a/ARMFCaptureD3D/x64/Release/rc.write.1.tlog b/ARMFCaptureD3D/x64/Release/rc.write.1.tlog
new file mode 100644
index 0000000..d573fa0
Binary files /dev/null and b/ARMFCaptureD3D/x64/Release/rc.write.1.tlog differ
diff --git a/ARMFCaptureD3D/x64/Release/vc100.pdb b/ARMFCaptureD3D/x64/Release/vc100.pdb
new file mode 100644
index 0000000..290b0c1
Binary files /dev/null and b/ARMFCaptureD3D/x64/Release/vc100.pdb differ
diff --git a/ARMFCaptureD3D/x64/Release/winmain.obj b/ARMFCaptureD3D/x64/Release/winmain.obj
new file mode 100644
index 0000000..c7f7692
Binary files /dev/null and b/ARMFCaptureD3D/x64/Release/winmain.obj differ
--
cgit v1.1