9e3f43d27b6a68e03d397daf84c6fd355971601f
mediaportal/MediaPortal.sln | 383 +++++++++
.../MiniDisplayLibrary/MiniDisplayLibrary.csproj | 14 +
.../API/Soundgraph/iMONDisplay.dll | Bin 0 -> 208896 bytes
.../MiniDisplayPlugin/Drivers/ImonBase.cs | 239 ++++++
.../MiniDisplayPlugin/Drivers/ImonLcd.cs | 918 +++++++++++++++++++++
.../Drivers/ImonLcd_AdvancedSetupForm.Designer.cs | 162 ++++
.../Drivers/ImonLcd_AdvancedSetupForm.cs | 41 +
.../Drivers/ImonLcd_AdvancedSetupForm.resx | 120 +++
.../MiniDisplayPlugin/Drivers/ImonVfd.cs | 42 +
.../Drivers/iMONDisplayWrapper/Event.cpp | 29 +
.../Drivers/iMONDisplayWrapper/Event.h | 27 +
.../Drivers/iMONDisplayWrapper/IdwApi.cpp | 247 ++++++
.../Drivers/iMONDisplayWrapper/IdwApi.h | 48 ++
.../Drivers/iMONDisplayWrapper/IdwThread.cpp | 745 +++++++++++++++++
.../Drivers/iMONDisplayWrapper/IdwThread.h | 63 ++
.../Drivers/iMONDisplayWrapper/Mutex.cpp | 24 +
.../Drivers/iMONDisplayWrapper/Mutex.h | 26 +
.../Drivers/iMONDisplayWrapper/Thread.cpp | 41 +
.../Drivers/iMONDisplayWrapper/Thread.h | 34 +
.../Drivers/iMONDisplayWrapper/iMONDisplay.lib | Bin 0 -> 6146 bytes
.../Drivers/iMONDisplayWrapper/iMONDisplayAPI.h | 163 ++++
.../iMONDisplayWrapper/iMONDisplayDefines.h | 114 +++
.../iMONDisplayWrapper/iMONDisplayWrapper.cpp | 106 +++
.../iMONDisplayWrapper/iMONDisplayWrapper.h | 48 ++
.../iMONDisplayWrapper/iMONDisplayWrapper.rc | 103 +++
.../iMONDisplayWrapper/iMONDisplayWrapper.vcproj | 255 ++++++
.../iMONDisplayWrapper/iMONDisplayWrapper.vcxproj | 118 +++
.../iMONDisplayWrapper.vcxproj.filters | 71 ++
.../Drivers/iMONDisplayWrapper/resource.h | 14 +
.../MiniDisplayPlugin/Settings.cs | 10 +
mediaportal/Setup/setup.nsi | 2 +
31 files changed, 4207 insertions(+)
diff --git a/mediaportal/MediaPortal.sln b/mediaportal/MediaPortal.sln
index a2c7ec0..cb34bbf 100644
--- a/mediaportal/MediaPortal.sln
+++ b/mediaportal/MediaPortal.sln
@@ -71,6 +71,7 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MiniDisplayLibrary", "MiniD
{0A234721-1F13-4DF8-9B1E-64D9E3111203} = {0A234721-1F13-4DF8-9B1E-64D9E3111203}
{0A234721-1F13-4DF8-9B1E-64D9E3111203} = {0A234721-1F13-4DF8-9B1E-64D9E3111203}
{C1BCEC3E-6074-4328-B5D9-391A457C8FFB} = {C1BCEC3E-6074-4328-B5D9-391A457C8FFB}
+ {E1A2655B-02A2-437A-8270-4AD81DDDC502} = {E1A2655B-02A2-437A-8270-4AD81DDDC502}
{5B8BC37B-44EB-4736-8B27-0960F3E03822} = {5B8BC37B-44EB-4736-8B27-0960F3E03822}
{2B094D86-DD1A-4DDD-95D2-56A57E714C4E} = {2B094D86-DD1A-4DDD-95D2-56A57E714C4E}
{68168FAA-A363-4F64-981C-32629A537900} = {68168FAA-A363-4F64-981C-32629A537900}
@@ -102,448 +103,830 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tv Library", "Tv Library",
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TvLibrary.Interfaces", "..\TvEngine3\TVLibrary\TvLibrary.Interfaces\TvLibrary.Interfaces.csproj", "{AE752FB4-7450-4150-9BAD-19EFA9D2AC37}"
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "iMONDisplayWrapper", "MiniDisplayLibrary\MiniDisplayPlugin\Drivers\iMONDisplayWrapper\iMONDisplayWrapper.vcxproj", "{E1A2655B-02A2-437A-8270-4AD81DDDC502}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
+ Debug|Mixed Platforms = Debug|Mixed Platforms
+ Debug|Win32 = Debug|Win32
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
+ Release|Mixed Platforms = Release|Mixed Platforms
+ Release|Win32 = Release|Win32
Release|x86 = Release|x86
UseCaptureCardDefinitions|Any CPU = UseCaptureCardDefinitions|Any CPU
+ UseCaptureCardDefinitions|Mixed Platforms = UseCaptureCardDefinitions|Mixed Platforms
+ UseCaptureCardDefinitions|Win32 = UseCaptureCardDefinitions|Win32
UseCaptureCardDefinitions|x86 = UseCaptureCardDefinitions|x86
UseCaptureDefintionsRelease|Any CPU = UseCaptureDefintionsRelease|Any CPU
+ UseCaptureDefintionsRelease|Mixed Platforms = UseCaptureDefintionsRelease|Mixed Platforms
+ UseCaptureDefintionsRelease|Win32 = UseCaptureDefintionsRelease|Win32
UseCaptureDefintionsRelease|x86 = UseCaptureDefintionsRelease|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{02FFFC1F-2555-4B99-8B01-3432D0673855}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{02FFFC1F-2555-4B99-8B01-3432D0673855}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {02FFFC1F-2555-4B99-8B01-3432D0673855}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {02FFFC1F-2555-4B99-8B01-3432D0673855}.Debug|Mixed Platforms.Build.0 = Debug|x86
+ {02FFFC1F-2555-4B99-8B01-3432D0673855}.Debug|Win32.ActiveCfg = Debug|x86
{02FFFC1F-2555-4B99-8B01-3432D0673855}.Debug|x86.ActiveCfg = Debug|Any CPU
{02FFFC1F-2555-4B99-8B01-3432D0673855}.Debug|x86.Build.0 = Debug|Any CPU
{02FFFC1F-2555-4B99-8B01-3432D0673855}.Release|Any CPU.ActiveCfg = Release|Any CPU
{02FFFC1F-2555-4B99-8B01-3432D0673855}.Release|Any CPU.Build.0 = Release|Any CPU
+ {02FFFC1F-2555-4B99-8B01-3432D0673855}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {02FFFC1F-2555-4B99-8B01-3432D0673855}.Release|Mixed Platforms.Build.0 = Release|x86
+ {02FFFC1F-2555-4B99-8B01-3432D0673855}.Release|Win32.ActiveCfg = Release|x86
{02FFFC1F-2555-4B99-8B01-3432D0673855}.Release|x86.ActiveCfg = Release|Any CPU
{02FFFC1F-2555-4B99-8B01-3432D0673855}.Release|x86.Build.0 = Release|Any CPU
{02FFFC1F-2555-4B99-8B01-3432D0673855}.UseCaptureCardDefinitions|Any CPU.ActiveCfg = UseCaptureCardDefinitions|Any CPU
{02FFFC1F-2555-4B99-8B01-3432D0673855}.UseCaptureCardDefinitions|Any CPU.Build.0 = UseCaptureCardDefinitions|Any CPU
+ {02FFFC1F-2555-4B99-8B01-3432D0673855}.UseCaptureCardDefinitions|Mixed Platforms.ActiveCfg = UseCaptureCardDefinitions|x86
+ {02FFFC1F-2555-4B99-8B01-3432D0673855}.UseCaptureCardDefinitions|Mixed Platforms.Build.0 = UseCaptureCardDefinitions|x86
+ {02FFFC1F-2555-4B99-8B01-3432D0673855}.UseCaptureCardDefinitions|Win32.ActiveCfg = UseCaptureCardDefinitions|x86
{02FFFC1F-2555-4B99-8B01-3432D0673855}.UseCaptureCardDefinitions|x86.ActiveCfg = UseCaptureCardDefinitions|x86
{02FFFC1F-2555-4B99-8B01-3432D0673855}.UseCaptureCardDefinitions|x86.Build.0 = UseCaptureCardDefinitions|x86
{02FFFC1F-2555-4B99-8B01-3432D0673855}.UseCaptureDefintionsRelease|Any CPU.ActiveCfg = UseCaptureDefintionsRelease|Any CPU
{02FFFC1F-2555-4B99-8B01-3432D0673855}.UseCaptureDefintionsRelease|Any CPU.Build.0 = UseCaptureDefintionsRelease|Any CPU
+ {02FFFC1F-2555-4B99-8B01-3432D0673855}.UseCaptureDefintionsRelease|Mixed Platforms.ActiveCfg = UseCaptureDefintionsRelease|x86
+ {02FFFC1F-2555-4B99-8B01-3432D0673855}.UseCaptureDefintionsRelease|Mixed Platforms.Build.0 = UseCaptureDefintionsRelease|x86
+ {02FFFC1F-2555-4B99-8B01-3432D0673855}.UseCaptureDefintionsRelease|Win32.ActiveCfg = UseCaptureDefintionsRelease|x86
{02FFFC1F-2555-4B99-8B01-3432D0673855}.UseCaptureDefintionsRelease|x86.ActiveCfg = UseCaptureDefintionsRelease|x86
{02FFFC1F-2555-4B99-8B01-3432D0673855}.UseCaptureDefintionsRelease|x86.Build.0 = UseCaptureDefintionsRelease|x86
{DFAB8CDD-A6BA-4A87-930F-CB09B30C1C9D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DFAB8CDD-A6BA-4A87-930F-CB09B30C1C9D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {DFAB8CDD-A6BA-4A87-930F-CB09B30C1C9D}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {DFAB8CDD-A6BA-4A87-930F-CB09B30C1C9D}.Debug|Mixed Platforms.Build.0 = Debug|x86
+ {DFAB8CDD-A6BA-4A87-930F-CB09B30C1C9D}.Debug|Win32.ActiveCfg = Debug|x86
{DFAB8CDD-A6BA-4A87-930F-CB09B30C1C9D}.Debug|x86.ActiveCfg = Debug|Any CPU
{DFAB8CDD-A6BA-4A87-930F-CB09B30C1C9D}.Debug|x86.Build.0 = Debug|Any CPU
{DFAB8CDD-A6BA-4A87-930F-CB09B30C1C9D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DFAB8CDD-A6BA-4A87-930F-CB09B30C1C9D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {DFAB8CDD-A6BA-4A87-930F-CB09B30C1C9D}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {DFAB8CDD-A6BA-4A87-930F-CB09B30C1C9D}.Release|Mixed Platforms.Build.0 = Release|x86
+ {DFAB8CDD-A6BA-4A87-930F-CB09B30C1C9D}.Release|Win32.ActiveCfg = Release|x86
{DFAB8CDD-A6BA-4A87-930F-CB09B30C1C9D}.Release|x86.ActiveCfg = Release|Any CPU
{DFAB8CDD-A6BA-4A87-930F-CB09B30C1C9D}.Release|x86.Build.0 = Release|Any CPU
{DFAB8CDD-A6BA-4A87-930F-CB09B30C1C9D}.UseCaptureCardDefinitions|Any CPU.ActiveCfg = UseCaptureCardDefinitions|Any CPU
{DFAB8CDD-A6BA-4A87-930F-CB09B30C1C9D}.UseCaptureCardDefinitions|Any CPU.Build.0 = UseCaptureCardDefinitions|Any CPU
+ {DFAB8CDD-A6BA-4A87-930F-CB09B30C1C9D}.UseCaptureCardDefinitions|Mixed Platforms.ActiveCfg = UseCaptureCardDefinitions|x86
+ {DFAB8CDD-A6BA-4A87-930F-CB09B30C1C9D}.UseCaptureCardDefinitions|Mixed Platforms.Build.0 = UseCaptureCardDefinitions|x86
+ {DFAB8CDD-A6BA-4A87-930F-CB09B30C1C9D}.UseCaptureCardDefinitions|Win32.ActiveCfg = UseCaptureCardDefinitions|x86
{DFAB8CDD-A6BA-4A87-930F-CB09B30C1C9D}.UseCaptureCardDefinitions|x86.ActiveCfg = UseCaptureCardDefinitions|x86
{DFAB8CDD-A6BA-4A87-930F-CB09B30C1C9D}.UseCaptureCardDefinitions|x86.Build.0 = UseCaptureCardDefinitions|x86
{DFAB8CDD-A6BA-4A87-930F-CB09B30C1C9D}.UseCaptureDefintionsRelease|Any CPU.ActiveCfg = UseCaptureDefintionsRelease|Any CPU
{DFAB8CDD-A6BA-4A87-930F-CB09B30C1C9D}.UseCaptureDefintionsRelease|Any CPU.Build.0 = UseCaptureDefintionsRelease|Any CPU
+ {DFAB8CDD-A6BA-4A87-930F-CB09B30C1C9D}.UseCaptureDefintionsRelease|Mixed Platforms.ActiveCfg = UseCaptureDefintionsRelease|x86
+ {DFAB8CDD-A6BA-4A87-930F-CB09B30C1C9D}.UseCaptureDefintionsRelease|Mixed Platforms.Build.0 = UseCaptureDefintionsRelease|x86
+ {DFAB8CDD-A6BA-4A87-930F-CB09B30C1C9D}.UseCaptureDefintionsRelease|Win32.ActiveCfg = UseCaptureDefintionsRelease|x86
{DFAB8CDD-A6BA-4A87-930F-CB09B30C1C9D}.UseCaptureDefintionsRelease|x86.ActiveCfg = UseCaptureDefintionsRelease|x86
{DFAB8CDD-A6BA-4A87-930F-CB09B30C1C9D}.UseCaptureDefintionsRelease|x86.Build.0 = UseCaptureDefintionsRelease|x86
{5B8BC37B-44EB-4736-8B27-0960F3E03822}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5B8BC37B-44EB-4736-8B27-0960F3E03822}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {5B8BC37B-44EB-4736-8B27-0960F3E03822}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {5B8BC37B-44EB-4736-8B27-0960F3E03822}.Debug|Mixed Platforms.Build.0 = Debug|x86
+ {5B8BC37B-44EB-4736-8B27-0960F3E03822}.Debug|Win32.ActiveCfg = Debug|x86
{5B8BC37B-44EB-4736-8B27-0960F3E03822}.Debug|x86.ActiveCfg = Debug|Any CPU
{5B8BC37B-44EB-4736-8B27-0960F3E03822}.Debug|x86.Build.0 = Debug|Any CPU
{5B8BC37B-44EB-4736-8B27-0960F3E03822}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5B8BC37B-44EB-4736-8B27-0960F3E03822}.Release|Any CPU.Build.0 = Release|Any CPU
+ {5B8BC37B-44EB-4736-8B27-0960F3E03822}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {5B8BC37B-44EB-4736-8B27-0960F3E03822}.Release|Mixed Platforms.Build.0 = Release|x86
+ {5B8BC37B-44EB-4736-8B27-0960F3E03822}.Release|Win32.ActiveCfg = Release|x86
{5B8BC37B-44EB-4736-8B27-0960F3E03822}.Release|x86.ActiveCfg = Release|Any CPU
{5B8BC37B-44EB-4736-8B27-0960F3E03822}.Release|x86.Build.0 = Release|Any CPU
{5B8BC37B-44EB-4736-8B27-0960F3E03822}.UseCaptureCardDefinitions|Any CPU.ActiveCfg = UseCaptureCardDefinitions|Any CPU
{5B8BC37B-44EB-4736-8B27-0960F3E03822}.UseCaptureCardDefinitions|Any CPU.Build.0 = UseCaptureCardDefinitions|Any CPU
+ {5B8BC37B-44EB-4736-8B27-0960F3E03822}.UseCaptureCardDefinitions|Mixed Platforms.ActiveCfg = UseCaptureCardDefinitions|x86
+ {5B8BC37B-44EB-4736-8B27-0960F3E03822}.UseCaptureCardDefinitions|Mixed Platforms.Build.0 = UseCaptureCardDefinitions|x86
+ {5B8BC37B-44EB-4736-8B27-0960F3E03822}.UseCaptureCardDefinitions|Win32.ActiveCfg = UseCaptureCardDefinitions|x86
{5B8BC37B-44EB-4736-8B27-0960F3E03822}.UseCaptureCardDefinitions|x86.ActiveCfg = UseCaptureCardDefinitions|x86
{5B8BC37B-44EB-4736-8B27-0960F3E03822}.UseCaptureCardDefinitions|x86.Build.0 = UseCaptureCardDefinitions|x86
{5B8BC37B-44EB-4736-8B27-0960F3E03822}.UseCaptureDefintionsRelease|Any CPU.ActiveCfg = UseCaptureDefintionsRelease|Any CPU
{5B8BC37B-44EB-4736-8B27-0960F3E03822}.UseCaptureDefintionsRelease|Any CPU.Build.0 = UseCaptureDefintionsRelease|Any CPU
+ {5B8BC37B-44EB-4736-8B27-0960F3E03822}.UseCaptureDefintionsRelease|Mixed Platforms.ActiveCfg = UseCaptureDefintionsRelease|x86
+ {5B8BC37B-44EB-4736-8B27-0960F3E03822}.UseCaptureDefintionsRelease|Mixed Platforms.Build.0 = UseCaptureDefintionsRelease|x86
+ {5B8BC37B-44EB-4736-8B27-0960F3E03822}.UseCaptureDefintionsRelease|Win32.ActiveCfg = UseCaptureDefintionsRelease|x86
{5B8BC37B-44EB-4736-8B27-0960F3E03822}.UseCaptureDefintionsRelease|x86.ActiveCfg = UseCaptureDefintionsRelease|x86
{5B8BC37B-44EB-4736-8B27-0960F3E03822}.UseCaptureDefintionsRelease|x86.Build.0 = UseCaptureDefintionsRelease|x86
{B282C55B-A37B-4CEC-A4FC-00791069BF00}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B282C55B-A37B-4CEC-A4FC-00791069BF00}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B282C55B-A37B-4CEC-A4FC-00791069BF00}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {B282C55B-A37B-4CEC-A4FC-00791069BF00}.Debug|Mixed Platforms.Build.0 = Debug|x86
+ {B282C55B-A37B-4CEC-A4FC-00791069BF00}.Debug|Win32.ActiveCfg = Debug|x86
{B282C55B-A37B-4CEC-A4FC-00791069BF00}.Debug|x86.ActiveCfg = Debug|Any CPU
{B282C55B-A37B-4CEC-A4FC-00791069BF00}.Debug|x86.Build.0 = Debug|Any CPU
{B282C55B-A37B-4CEC-A4FC-00791069BF00}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B282C55B-A37B-4CEC-A4FC-00791069BF00}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B282C55B-A37B-4CEC-A4FC-00791069BF00}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {B282C55B-A37B-4CEC-A4FC-00791069BF00}.Release|Mixed Platforms.Build.0 = Release|x86
+ {B282C55B-A37B-4CEC-A4FC-00791069BF00}.Release|Win32.ActiveCfg = Release|x86
{B282C55B-A37B-4CEC-A4FC-00791069BF00}.Release|x86.ActiveCfg = Release|Any CPU
{B282C55B-A37B-4CEC-A4FC-00791069BF00}.Release|x86.Build.0 = Release|Any CPU
{B282C55B-A37B-4CEC-A4FC-00791069BF00}.UseCaptureCardDefinitions|Any CPU.ActiveCfg = UseCaptureCardDefinitions|Any CPU
{B282C55B-A37B-4CEC-A4FC-00791069BF00}.UseCaptureCardDefinitions|Any CPU.Build.0 = UseCaptureCardDefinitions|Any CPU
+ {B282C55B-A37B-4CEC-A4FC-00791069BF00}.UseCaptureCardDefinitions|Mixed Platforms.ActiveCfg = UseCaptureCardDefinitions|x86
+ {B282C55B-A37B-4CEC-A4FC-00791069BF00}.UseCaptureCardDefinitions|Mixed Platforms.Build.0 = UseCaptureCardDefinitions|x86
+ {B282C55B-A37B-4CEC-A4FC-00791069BF00}.UseCaptureCardDefinitions|Win32.ActiveCfg = UseCaptureCardDefinitions|x86
{B282C55B-A37B-4CEC-A4FC-00791069BF00}.UseCaptureCardDefinitions|x86.ActiveCfg = UseCaptureCardDefinitions|x86
{B282C55B-A37B-4CEC-A4FC-00791069BF00}.UseCaptureCardDefinitions|x86.Build.0 = UseCaptureCardDefinitions|x86
{B282C55B-A37B-4CEC-A4FC-00791069BF00}.UseCaptureDefintionsRelease|Any CPU.ActiveCfg = UseCaptureDefintionsRelease|Any CPU
{B282C55B-A37B-4CEC-A4FC-00791069BF00}.UseCaptureDefintionsRelease|Any CPU.Build.0 = UseCaptureDefintionsRelease|Any CPU
+ {B282C55B-A37B-4CEC-A4FC-00791069BF00}.UseCaptureDefintionsRelease|Mixed Platforms.ActiveCfg = UseCaptureDefintionsRelease|x86
+ {B282C55B-A37B-4CEC-A4FC-00791069BF00}.UseCaptureDefintionsRelease|Mixed Platforms.Build.0 = UseCaptureDefintionsRelease|x86
+ {B282C55B-A37B-4CEC-A4FC-00791069BF00}.UseCaptureDefintionsRelease|Win32.ActiveCfg = UseCaptureDefintionsRelease|x86
{B282C55B-A37B-4CEC-A4FC-00791069BF00}.UseCaptureDefintionsRelease|x86.ActiveCfg = UseCaptureDefintionsRelease|x86
{B282C55B-A37B-4CEC-A4FC-00791069BF00}.UseCaptureDefintionsRelease|x86.Build.0 = UseCaptureDefintionsRelease|x86
{C1BCEC3E-6074-4328-B5D9-391A457C8FFB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C1BCEC3E-6074-4328-B5D9-391A457C8FFB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C1BCEC3E-6074-4328-B5D9-391A457C8FFB}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {C1BCEC3E-6074-4328-B5D9-391A457C8FFB}.Debug|Mixed Platforms.Build.0 = Debug|x86
+ {C1BCEC3E-6074-4328-B5D9-391A457C8FFB}.Debug|Win32.ActiveCfg = Debug|x86
{C1BCEC3E-6074-4328-B5D9-391A457C8FFB}.Debug|x86.ActiveCfg = Debug|Any CPU
{C1BCEC3E-6074-4328-B5D9-391A457C8FFB}.Debug|x86.Build.0 = Debug|Any CPU
{C1BCEC3E-6074-4328-B5D9-391A457C8FFB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C1BCEC3E-6074-4328-B5D9-391A457C8FFB}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C1BCEC3E-6074-4328-B5D9-391A457C8FFB}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {C1BCEC3E-6074-4328-B5D9-391A457C8FFB}.Release|Mixed Platforms.Build.0 = Release|x86
+ {C1BCEC3E-6074-4328-B5D9-391A457C8FFB}.Release|Win32.ActiveCfg = Release|x86
{C1BCEC3E-6074-4328-B5D9-391A457C8FFB}.Release|x86.ActiveCfg = Release|Any CPU
{C1BCEC3E-6074-4328-B5D9-391A457C8FFB}.Release|x86.Build.0 = Release|Any CPU
{C1BCEC3E-6074-4328-B5D9-391A457C8FFB}.UseCaptureCardDefinitions|Any CPU.ActiveCfg = UseCaptureCardDefinitions|Any CPU
{C1BCEC3E-6074-4328-B5D9-391A457C8FFB}.UseCaptureCardDefinitions|Any CPU.Build.0 = UseCaptureCardDefinitions|Any CPU
+ {C1BCEC3E-6074-4328-B5D9-391A457C8FFB}.UseCaptureCardDefinitions|Mixed Platforms.ActiveCfg = UseCaptureCardDefinitions|x86
+ {C1BCEC3E-6074-4328-B5D9-391A457C8FFB}.UseCaptureCardDefinitions|Mixed Platforms.Build.0 = UseCaptureCardDefinitions|x86
+ {C1BCEC3E-6074-4328-B5D9-391A457C8FFB}.UseCaptureCardDefinitions|Win32.ActiveCfg = UseCaptureCardDefinitions|x86
{C1BCEC3E-6074-4328-B5D9-391A457C8FFB}.UseCaptureCardDefinitions|x86.ActiveCfg = UseCaptureCardDefinitions|x86
{C1BCEC3E-6074-4328-B5D9-391A457C8FFB}.UseCaptureCardDefinitions|x86.Build.0 = UseCaptureCardDefinitions|x86
{C1BCEC3E-6074-4328-B5D9-391A457C8FFB}.UseCaptureDefintionsRelease|Any CPU.ActiveCfg = UseCaptureDefintionsRelease|Any CPU
{C1BCEC3E-6074-4328-B5D9-391A457C8FFB}.UseCaptureDefintionsRelease|Any CPU.Build.0 = UseCaptureDefintionsRelease|Any CPU
+ {C1BCEC3E-6074-4328-B5D9-391A457C8FFB}.UseCaptureDefintionsRelease|Mixed Platforms.ActiveCfg = UseCaptureDefintionsRelease|x86
+ {C1BCEC3E-6074-4328-B5D9-391A457C8FFB}.UseCaptureDefintionsRelease|Mixed Platforms.Build.0 = UseCaptureDefintionsRelease|x86
+ {C1BCEC3E-6074-4328-B5D9-391A457C8FFB}.UseCaptureDefintionsRelease|Win32.ActiveCfg = UseCaptureDefintionsRelease|x86
{C1BCEC3E-6074-4328-B5D9-391A457C8FFB}.UseCaptureDefintionsRelease|x86.ActiveCfg = UseCaptureDefintionsRelease|x86
{C1BCEC3E-6074-4328-B5D9-391A457C8FFB}.UseCaptureDefintionsRelease|x86.Build.0 = UseCaptureDefintionsRelease|x86
{3333B71D-6304-452C-BEA5-D037E7B3AA6B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3333B71D-6304-452C-BEA5-D037E7B3AA6B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {3333B71D-6304-452C-BEA5-D037E7B3AA6B}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {3333B71D-6304-452C-BEA5-D037E7B3AA6B}.Debug|Mixed Platforms.Build.0 = Debug|x86
+ {3333B71D-6304-452C-BEA5-D037E7B3AA6B}.Debug|Win32.ActiveCfg = Debug|x86
{3333B71D-6304-452C-BEA5-D037E7B3AA6B}.Debug|x86.ActiveCfg = Debug|Any CPU
{3333B71D-6304-452C-BEA5-D037E7B3AA6B}.Debug|x86.Build.0 = Debug|Any CPU
{3333B71D-6304-452C-BEA5-D037E7B3AA6B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3333B71D-6304-452C-BEA5-D037E7B3AA6B}.Release|Any CPU.Build.0 = Release|Any CPU
+ {3333B71D-6304-452C-BEA5-D037E7B3AA6B}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {3333B71D-6304-452C-BEA5-D037E7B3AA6B}.Release|Mixed Platforms.Build.0 = Release|x86
+ {3333B71D-6304-452C-BEA5-D037E7B3AA6B}.Release|Win32.ActiveCfg = Release|x86
{3333B71D-6304-452C-BEA5-D037E7B3AA6B}.Release|x86.ActiveCfg = Release|Any CPU
{3333B71D-6304-452C-BEA5-D037E7B3AA6B}.Release|x86.Build.0 = Release|Any CPU
{3333B71D-6304-452C-BEA5-D037E7B3AA6B}.UseCaptureCardDefinitions|Any CPU.ActiveCfg = UseCaptureCardDefinitions|Any CPU
{3333B71D-6304-452C-BEA5-D037E7B3AA6B}.UseCaptureCardDefinitions|Any CPU.Build.0 = UseCaptureCardDefinitions|Any CPU
+ {3333B71D-6304-452C-BEA5-D037E7B3AA6B}.UseCaptureCardDefinitions|Mixed Platforms.ActiveCfg = UseCaptureCardDefinitions|x86
+ {3333B71D-6304-452C-BEA5-D037E7B3AA6B}.UseCaptureCardDefinitions|Mixed Platforms.Build.0 = UseCaptureCardDefinitions|x86
+ {3333B71D-6304-452C-BEA5-D037E7B3AA6B}.UseCaptureCardDefinitions|Win32.ActiveCfg = UseCaptureCardDefinitions|x86
{3333B71D-6304-452C-BEA5-D037E7B3AA6B}.UseCaptureCardDefinitions|x86.ActiveCfg = UseCaptureCardDefinitions|x86
{3333B71D-6304-452C-BEA5-D037E7B3AA6B}.UseCaptureCardDefinitions|x86.Build.0 = UseCaptureCardDefinitions|x86
{3333B71D-6304-452C-BEA5-D037E7B3AA6B}.UseCaptureDefintionsRelease|Any CPU.ActiveCfg = UseCaptureDefintionsRelease|Any CPU
{3333B71D-6304-452C-BEA5-D037E7B3AA6B}.UseCaptureDefintionsRelease|Any CPU.Build.0 = UseCaptureDefintionsRelease|Any CPU
+ {3333B71D-6304-452C-BEA5-D037E7B3AA6B}.UseCaptureDefintionsRelease|Mixed Platforms.ActiveCfg = UseCaptureDefintionsRelease|x86
+ {3333B71D-6304-452C-BEA5-D037E7B3AA6B}.UseCaptureDefintionsRelease|Mixed Platforms.Build.0 = UseCaptureDefintionsRelease|x86
+ {3333B71D-6304-452C-BEA5-D037E7B3AA6B}.UseCaptureDefintionsRelease|Win32.ActiveCfg = UseCaptureDefintionsRelease|x86
{3333B71D-6304-452C-BEA5-D037E7B3AA6B}.UseCaptureDefintionsRelease|x86.ActiveCfg = UseCaptureDefintionsRelease|x86
{3333B71D-6304-452C-BEA5-D037E7B3AA6B}.UseCaptureDefintionsRelease|x86.Build.0 = UseCaptureDefintionsRelease|x86
{57137A99-FD0A-4A3C-9B51-0DA10DCDE7A6}.Debug|Any CPU.ActiveCfg = Debug|x86
{57137A99-FD0A-4A3C-9B51-0DA10DCDE7A6}.Debug|Any CPU.Build.0 = Debug|x86
+ {57137A99-FD0A-4A3C-9B51-0DA10DCDE7A6}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {57137A99-FD0A-4A3C-9B51-0DA10DCDE7A6}.Debug|Mixed Platforms.Build.0 = Debug|x86
+ {57137A99-FD0A-4A3C-9B51-0DA10DCDE7A6}.Debug|Win32.ActiveCfg = Debug|x86
{57137A99-FD0A-4A3C-9B51-0DA10DCDE7A6}.Debug|x86.ActiveCfg = Debug|x86
{57137A99-FD0A-4A3C-9B51-0DA10DCDE7A6}.Debug|x86.Build.0 = Debug|x86
{57137A99-FD0A-4A3C-9B51-0DA10DCDE7A6}.Release|Any CPU.ActiveCfg = Release|x86
{57137A99-FD0A-4A3C-9B51-0DA10DCDE7A6}.Release|Any CPU.Build.0 = Release|x86
+ {57137A99-FD0A-4A3C-9B51-0DA10DCDE7A6}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {57137A99-FD0A-4A3C-9B51-0DA10DCDE7A6}.Release|Mixed Platforms.Build.0 = Release|x86
+ {57137A99-FD0A-4A3C-9B51-0DA10DCDE7A6}.Release|Win32.ActiveCfg = Release|x86
{57137A99-FD0A-4A3C-9B51-0DA10DCDE7A6}.Release|x86.ActiveCfg = Release|x86
{57137A99-FD0A-4A3C-9B51-0DA10DCDE7A6}.Release|x86.Build.0 = Release|x86
{57137A99-FD0A-4A3C-9B51-0DA10DCDE7A6}.UseCaptureCardDefinitions|Any CPU.ActiveCfg = UseCaptureDefintionsRelease|x86
+ {57137A99-FD0A-4A3C-9B51-0DA10DCDE7A6}.UseCaptureCardDefinitions|Mixed Platforms.ActiveCfg = UseCaptureDefintionsRelease|x86
+ {57137A99-FD0A-4A3C-9B51-0DA10DCDE7A6}.UseCaptureCardDefinitions|Mixed Platforms.Build.0 = UseCaptureDefintionsRelease|x86
+ {57137A99-FD0A-4A3C-9B51-0DA10DCDE7A6}.UseCaptureCardDefinitions|Win32.ActiveCfg = UseCaptureDefintionsRelease|x86
{57137A99-FD0A-4A3C-9B51-0DA10DCDE7A6}.UseCaptureCardDefinitions|x86.ActiveCfg = UseCaptureDefintionsRelease|x86
{57137A99-FD0A-4A3C-9B51-0DA10DCDE7A6}.UseCaptureCardDefinitions|x86.Build.0 = UseCaptureDefintionsRelease|x86
{57137A99-FD0A-4A3C-9B51-0DA10DCDE7A6}.UseCaptureDefintionsRelease|Any CPU.ActiveCfg = UseCaptureDefintionsRelease|Any CPU
{57137A99-FD0A-4A3C-9B51-0DA10DCDE7A6}.UseCaptureDefintionsRelease|Any CPU.Build.0 = UseCaptureDefintionsRelease|Any CPU
+ {57137A99-FD0A-4A3C-9B51-0DA10DCDE7A6}.UseCaptureDefintionsRelease|Mixed Platforms.ActiveCfg = UseCaptureDefintionsRelease|x86
+ {57137A99-FD0A-4A3C-9B51-0DA10DCDE7A6}.UseCaptureDefintionsRelease|Mixed Platforms.Build.0 = UseCaptureDefintionsRelease|x86
+ {57137A99-FD0A-4A3C-9B51-0DA10DCDE7A6}.UseCaptureDefintionsRelease|Win32.ActiveCfg = UseCaptureDefintionsRelease|x86
{57137A99-FD0A-4A3C-9B51-0DA10DCDE7A6}.UseCaptureDefintionsRelease|x86.ActiveCfg = UseCaptureDefintionsRelease|x86
{57137A99-FD0A-4A3C-9B51-0DA10DCDE7A6}.UseCaptureDefintionsRelease|x86.Build.0 = UseCaptureDefintionsRelease|x86
{68168FAA-A363-4F64-981C-32629A537900}.Debug|Any CPU.ActiveCfg = Debug|x86
{68168FAA-A363-4F64-981C-32629A537900}.Debug|Any CPU.Build.0 = Debug|x86
+ {68168FAA-A363-4F64-981C-32629A537900}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {68168FAA-A363-4F64-981C-32629A537900}.Debug|Mixed Platforms.Build.0 = Debug|x86
+ {68168FAA-A363-4F64-981C-32629A537900}.Debug|Win32.ActiveCfg = Debug|x86
{68168FAA-A363-4F64-981C-32629A537900}.Debug|x86.ActiveCfg = Debug|x86
{68168FAA-A363-4F64-981C-32629A537900}.Debug|x86.Build.0 = Debug|x86
{68168FAA-A363-4F64-981C-32629A537900}.Release|Any CPU.ActiveCfg = Release|x86
{68168FAA-A363-4F64-981C-32629A537900}.Release|Any CPU.Build.0 = Release|x86
+ {68168FAA-A363-4F64-981C-32629A537900}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {68168FAA-A363-4F64-981C-32629A537900}.Release|Mixed Platforms.Build.0 = Release|x86
+ {68168FAA-A363-4F64-981C-32629A537900}.Release|Win32.ActiveCfg = Release|x86
{68168FAA-A363-4F64-981C-32629A537900}.Release|x86.ActiveCfg = Release|x86
{68168FAA-A363-4F64-981C-32629A537900}.Release|x86.Build.0 = Release|x86
{68168FAA-A363-4F64-981C-32629A537900}.UseCaptureCardDefinitions|Any CPU.ActiveCfg = UseCaptureCardDefinitions|Any CPU
{68168FAA-A363-4F64-981C-32629A537900}.UseCaptureCardDefinitions|Any CPU.Build.0 = UseCaptureCardDefinitions|Any CPU
+ {68168FAA-A363-4F64-981C-32629A537900}.UseCaptureCardDefinitions|Mixed Platforms.ActiveCfg = UseCaptureCardDefinitions|x86
+ {68168FAA-A363-4F64-981C-32629A537900}.UseCaptureCardDefinitions|Mixed Platforms.Build.0 = UseCaptureCardDefinitions|x86
+ {68168FAA-A363-4F64-981C-32629A537900}.UseCaptureCardDefinitions|Win32.ActiveCfg = UseCaptureCardDefinitions|x86
{68168FAA-A363-4F64-981C-32629A537900}.UseCaptureCardDefinitions|x86.ActiveCfg = UseCaptureCardDefinitions|x86
{68168FAA-A363-4F64-981C-32629A537900}.UseCaptureCardDefinitions|x86.Build.0 = UseCaptureCardDefinitions|x86
{68168FAA-A363-4F64-981C-32629A537900}.UseCaptureDefintionsRelease|Any CPU.ActiveCfg = UseCaptureDefintionsRelease|Any CPU
{68168FAA-A363-4F64-981C-32629A537900}.UseCaptureDefintionsRelease|Any CPU.Build.0 = UseCaptureDefintionsRelease|Any CPU
+ {68168FAA-A363-4F64-981C-32629A537900}.UseCaptureDefintionsRelease|Mixed Platforms.ActiveCfg = UseCaptureDefintionsRelease|x86
+ {68168FAA-A363-4F64-981C-32629A537900}.UseCaptureDefintionsRelease|Mixed Platforms.Build.0 = UseCaptureDefintionsRelease|x86
+ {68168FAA-A363-4F64-981C-32629A537900}.UseCaptureDefintionsRelease|Win32.ActiveCfg = UseCaptureDefintionsRelease|x86
{68168FAA-A363-4F64-981C-32629A537900}.UseCaptureDefintionsRelease|x86.ActiveCfg = UseCaptureDefintionsRelease|x86
{68168FAA-A363-4F64-981C-32629A537900}.UseCaptureDefintionsRelease|x86.Build.0 = UseCaptureDefintionsRelease|x86
{CBDFAA0E-01F5-4331-AB55-18A4A037B5AE}.Debug|Any CPU.ActiveCfg = Debug|x86
{CBDFAA0E-01F5-4331-AB55-18A4A037B5AE}.Debug|Any CPU.Build.0 = Debug|x86
+ {CBDFAA0E-01F5-4331-AB55-18A4A037B5AE}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {CBDFAA0E-01F5-4331-AB55-18A4A037B5AE}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {CBDFAA0E-01F5-4331-AB55-18A4A037B5AE}.Debug|Win32.ActiveCfg = Debug|Any CPU
{CBDFAA0E-01F5-4331-AB55-18A4A037B5AE}.Debug|x86.ActiveCfg = Debug|x86
{CBDFAA0E-01F5-4331-AB55-18A4A037B5AE}.Debug|x86.Build.0 = Debug|x86
{CBDFAA0E-01F5-4331-AB55-18A4A037B5AE}.Release|Any CPU.ActiveCfg = Release|x86
{CBDFAA0E-01F5-4331-AB55-18A4A037B5AE}.Release|Any CPU.Build.0 = Release|x86
+ {CBDFAA0E-01F5-4331-AB55-18A4A037B5AE}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {CBDFAA0E-01F5-4331-AB55-18A4A037B5AE}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {CBDFAA0E-01F5-4331-AB55-18A4A037B5AE}.Release|Win32.ActiveCfg = Release|Any CPU
{CBDFAA0E-01F5-4331-AB55-18A4A037B5AE}.Release|x86.ActiveCfg = Release|x86
{CBDFAA0E-01F5-4331-AB55-18A4A037B5AE}.Release|x86.Build.0 = Release|x86
{CBDFAA0E-01F5-4331-AB55-18A4A037B5AE}.UseCaptureCardDefinitions|Any CPU.ActiveCfg = UseCaptureCardDefinitions|Any CPU
{CBDFAA0E-01F5-4331-AB55-18A4A037B5AE}.UseCaptureCardDefinitions|Any CPU.Build.0 = UseCaptureCardDefinitions|Any CPU
+ {CBDFAA0E-01F5-4331-AB55-18A4A037B5AE}.UseCaptureCardDefinitions|Mixed Platforms.ActiveCfg = UseCaptureCardDefinitions|Any CPU
+ {CBDFAA0E-01F5-4331-AB55-18A4A037B5AE}.UseCaptureCardDefinitions|Mixed Platforms.Build.0 = UseCaptureCardDefinitions|Any CPU
+ {CBDFAA0E-01F5-4331-AB55-18A4A037B5AE}.UseCaptureCardDefinitions|Win32.ActiveCfg = UseCaptureCardDefinitions|Any CPU
{CBDFAA0E-01F5-4331-AB55-18A4A037B5AE}.UseCaptureCardDefinitions|x86.ActiveCfg = UseCaptureCardDefinitions|x86
{CBDFAA0E-01F5-4331-AB55-18A4A037B5AE}.UseCaptureCardDefinitions|x86.Build.0 = UseCaptureCardDefinitions|x86
{CBDFAA0E-01F5-4331-AB55-18A4A037B5AE}.UseCaptureDefintionsRelease|Any CPU.ActiveCfg = UseCaptureDefintionsRelease|Any CPU
{CBDFAA0E-01F5-4331-AB55-18A4A037B5AE}.UseCaptureDefintionsRelease|Any CPU.Build.0 = UseCaptureDefintionsRelease|Any CPU
+ {CBDFAA0E-01F5-4331-AB55-18A4A037B5AE}.UseCaptureDefintionsRelease|Mixed Platforms.ActiveCfg = UseCaptureDefintionsRelease|Any CPU
+ {CBDFAA0E-01F5-4331-AB55-18A4A037B5AE}.UseCaptureDefintionsRelease|Mixed Platforms.Build.0 = UseCaptureDefintionsRelease|Any CPU
+ {CBDFAA0E-01F5-4331-AB55-18A4A037B5AE}.UseCaptureDefintionsRelease|Win32.ActiveCfg = UseCaptureDefintionsRelease|Any CPU
{CBDFAA0E-01F5-4331-AB55-18A4A037B5AE}.UseCaptureDefintionsRelease|x86.ActiveCfg = UseCaptureDefintionsRelease|x86
{CBDFAA0E-01F5-4331-AB55-18A4A037B5AE}.UseCaptureDefintionsRelease|x86.Build.0 = UseCaptureDefintionsRelease|x86
{396C5208-5D46-4A11-92C1-FD0F2F42D7DD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{396C5208-5D46-4A11-92C1-FD0F2F42D7DD}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {396C5208-5D46-4A11-92C1-FD0F2F42D7DD}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {396C5208-5D46-4A11-92C1-FD0F2F42D7DD}.Debug|Mixed Platforms.Build.0 = Debug|x86
+ {396C5208-5D46-4A11-92C1-FD0F2F42D7DD}.Debug|Win32.ActiveCfg = Debug|x86
{396C5208-5D46-4A11-92C1-FD0F2F42D7DD}.Debug|x86.ActiveCfg = Debug|Any CPU
{396C5208-5D46-4A11-92C1-FD0F2F42D7DD}.Debug|x86.Build.0 = Debug|Any CPU
{396C5208-5D46-4A11-92C1-FD0F2F42D7DD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{396C5208-5D46-4A11-92C1-FD0F2F42D7DD}.Release|Any CPU.Build.0 = Release|Any CPU
+ {396C5208-5D46-4A11-92C1-FD0F2F42D7DD}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {396C5208-5D46-4A11-92C1-FD0F2F42D7DD}.Release|Mixed Platforms.Build.0 = Release|x86
+ {396C5208-5D46-4A11-92C1-FD0F2F42D7DD}.Release|Win32.ActiveCfg = Release|x86
{396C5208-5D46-4A11-92C1-FD0F2F42D7DD}.Release|x86.ActiveCfg = Release|Any CPU
{396C5208-5D46-4A11-92C1-FD0F2F42D7DD}.Release|x86.Build.0 = Release|Any CPU
{396C5208-5D46-4A11-92C1-FD0F2F42D7DD}.UseCaptureCardDefinitions|Any CPU.ActiveCfg = Release|x86
+ {396C5208-5D46-4A11-92C1-FD0F2F42D7DD}.UseCaptureCardDefinitions|Mixed Platforms.ActiveCfg = Release|x86
+ {396C5208-5D46-4A11-92C1-FD0F2F42D7DD}.UseCaptureCardDefinitions|Mixed Platforms.Build.0 = Release|x86
+ {396C5208-5D46-4A11-92C1-FD0F2F42D7DD}.UseCaptureCardDefinitions|Win32.ActiveCfg = Release|x86
{396C5208-5D46-4A11-92C1-FD0F2F42D7DD}.UseCaptureCardDefinitions|x86.ActiveCfg = Release|x86
{396C5208-5D46-4A11-92C1-FD0F2F42D7DD}.UseCaptureCardDefinitions|x86.Build.0 = Release|x86
{396C5208-5D46-4A11-92C1-FD0F2F42D7DD}.UseCaptureDefintionsRelease|Any CPU.ActiveCfg = Release|Any CPU
{396C5208-5D46-4A11-92C1-FD0F2F42D7DD}.UseCaptureDefintionsRelease|Any CPU.Build.0 = Release|Any CPU
+ {396C5208-5D46-4A11-92C1-FD0F2F42D7DD}.UseCaptureDefintionsRelease|Mixed Platforms.ActiveCfg = Release|x86
+ {396C5208-5D46-4A11-92C1-FD0F2F42D7DD}.UseCaptureDefintionsRelease|Mixed Platforms.Build.0 = Release|x86
+ {396C5208-5D46-4A11-92C1-FD0F2F42D7DD}.UseCaptureDefintionsRelease|Win32.ActiveCfg = Release|x86
{396C5208-5D46-4A11-92C1-FD0F2F42D7DD}.UseCaptureDefintionsRelease|x86.ActiveCfg = Release|x86
{396C5208-5D46-4A11-92C1-FD0F2F42D7DD}.UseCaptureDefintionsRelease|x86.Build.0 = Release|x86
{0A234721-1F13-4DF8-9B1E-64D9E3111203}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{0A234721-1F13-4DF8-9B1E-64D9E3111203}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {0A234721-1F13-4DF8-9B1E-64D9E3111203}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {0A234721-1F13-4DF8-9B1E-64D9E3111203}.Debug|Mixed Platforms.Build.0 = Debug|x86
+ {0A234721-1F13-4DF8-9B1E-64D9E3111203}.Debug|Win32.ActiveCfg = Debug|x86
{0A234721-1F13-4DF8-9B1E-64D9E3111203}.Debug|x86.ActiveCfg = Debug|Any CPU
{0A234721-1F13-4DF8-9B1E-64D9E3111203}.Debug|x86.Build.0 = Debug|Any CPU
{0A234721-1F13-4DF8-9B1E-64D9E3111203}.Release|Any CPU.ActiveCfg = Release|Any CPU
{0A234721-1F13-4DF8-9B1E-64D9E3111203}.Release|Any CPU.Build.0 = Release|Any CPU
+ {0A234721-1F13-4DF8-9B1E-64D9E3111203}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {0A234721-1F13-4DF8-9B1E-64D9E3111203}.Release|Mixed Platforms.Build.0 = Release|x86
+ {0A234721-1F13-4DF8-9B1E-64D9E3111203}.Release|Win32.ActiveCfg = Release|x86
{0A234721-1F13-4DF8-9B1E-64D9E3111203}.Release|x86.ActiveCfg = Release|Any CPU
{0A234721-1F13-4DF8-9B1E-64D9E3111203}.Release|x86.Build.0 = Release|Any CPU
{0A234721-1F13-4DF8-9B1E-64D9E3111203}.UseCaptureCardDefinitions|Any CPU.ActiveCfg = Release|x86
+ {0A234721-1F13-4DF8-9B1E-64D9E3111203}.UseCaptureCardDefinitions|Mixed Platforms.ActiveCfg = Release|x86
+ {0A234721-1F13-4DF8-9B1E-64D9E3111203}.UseCaptureCardDefinitions|Mixed Platforms.Build.0 = Release|x86
+ {0A234721-1F13-4DF8-9B1E-64D9E3111203}.UseCaptureCardDefinitions|Win32.ActiveCfg = Release|x86
{0A234721-1F13-4DF8-9B1E-64D9E3111203}.UseCaptureCardDefinitions|x86.ActiveCfg = Release|x86
{0A234721-1F13-4DF8-9B1E-64D9E3111203}.UseCaptureCardDefinitions|x86.Build.0 = Release|x86
{0A234721-1F13-4DF8-9B1E-64D9E3111203}.UseCaptureDefintionsRelease|Any CPU.ActiveCfg = Release|Any CPU
{0A234721-1F13-4DF8-9B1E-64D9E3111203}.UseCaptureDefintionsRelease|Any CPU.Build.0 = Release|Any CPU
+ {0A234721-1F13-4DF8-9B1E-64D9E3111203}.UseCaptureDefintionsRelease|Mixed Platforms.ActiveCfg = Release|x86
+ {0A234721-1F13-4DF8-9B1E-64D9E3111203}.UseCaptureDefintionsRelease|Mixed Platforms.Build.0 = Release|x86
+ {0A234721-1F13-4DF8-9B1E-64D9E3111203}.UseCaptureDefintionsRelease|Win32.ActiveCfg = Release|x86
{0A234721-1F13-4DF8-9B1E-64D9E3111203}.UseCaptureDefintionsRelease|x86.ActiveCfg = Release|x86
{0A234721-1F13-4DF8-9B1E-64D9E3111203}.UseCaptureDefintionsRelease|x86.Build.0 = Release|x86
{6DA0E4DF-6230-4642-98B5-E690BB6942BB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6DA0E4DF-6230-4642-98B5-E690BB6942BB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {6DA0E4DF-6230-4642-98B5-E690BB6942BB}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {6DA0E4DF-6230-4642-98B5-E690BB6942BB}.Debug|Mixed Platforms.Build.0 = Debug|x86
+ {6DA0E4DF-6230-4642-98B5-E690BB6942BB}.Debug|Win32.ActiveCfg = Debug|x86
{6DA0E4DF-6230-4642-98B5-E690BB6942BB}.Debug|x86.ActiveCfg = Debug|Any CPU
{6DA0E4DF-6230-4642-98B5-E690BB6942BB}.Debug|x86.Build.0 = Debug|Any CPU
{6DA0E4DF-6230-4642-98B5-E690BB6942BB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6DA0E4DF-6230-4642-98B5-E690BB6942BB}.Release|Any CPU.Build.0 = Release|Any CPU
+ {6DA0E4DF-6230-4642-98B5-E690BB6942BB}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {6DA0E4DF-6230-4642-98B5-E690BB6942BB}.Release|Mixed Platforms.Build.0 = Release|x86
+ {6DA0E4DF-6230-4642-98B5-E690BB6942BB}.Release|Win32.ActiveCfg = Release|x86
{6DA0E4DF-6230-4642-98B5-E690BB6942BB}.Release|x86.ActiveCfg = Release|Any CPU
{6DA0E4DF-6230-4642-98B5-E690BB6942BB}.Release|x86.Build.0 = Release|Any CPU
{6DA0E4DF-6230-4642-98B5-E690BB6942BB}.UseCaptureCardDefinitions|Any CPU.ActiveCfg = Release|x86
+ {6DA0E4DF-6230-4642-98B5-E690BB6942BB}.UseCaptureCardDefinitions|Mixed Platforms.ActiveCfg = Release|x86
+ {6DA0E4DF-6230-4642-98B5-E690BB6942BB}.UseCaptureCardDefinitions|Mixed Platforms.Build.0 = Release|x86
+ {6DA0E4DF-6230-4642-98B5-E690BB6942BB}.UseCaptureCardDefinitions|Win32.ActiveCfg = Release|x86
{6DA0E4DF-6230-4642-98B5-E690BB6942BB}.UseCaptureCardDefinitions|x86.ActiveCfg = Release|x86
{6DA0E4DF-6230-4642-98B5-E690BB6942BB}.UseCaptureCardDefinitions|x86.Build.0 = Release|x86
{6DA0E4DF-6230-4642-98B5-E690BB6942BB}.UseCaptureDefintionsRelease|Any CPU.ActiveCfg = Release|Any CPU
{6DA0E4DF-6230-4642-98B5-E690BB6942BB}.UseCaptureDefintionsRelease|Any CPU.Build.0 = Release|Any CPU
+ {6DA0E4DF-6230-4642-98B5-E690BB6942BB}.UseCaptureDefintionsRelease|Mixed Platforms.ActiveCfg = Release|x86
+ {6DA0E4DF-6230-4642-98B5-E690BB6942BB}.UseCaptureDefintionsRelease|Mixed Platforms.Build.0 = Release|x86
+ {6DA0E4DF-6230-4642-98B5-E690BB6942BB}.UseCaptureDefintionsRelease|Win32.ActiveCfg = Release|x86
{6DA0E4DF-6230-4642-98B5-E690BB6942BB}.UseCaptureDefintionsRelease|x86.ActiveCfg = Release|x86
{6DA0E4DF-6230-4642-98B5-E690BB6942BB}.UseCaptureDefintionsRelease|x86.Build.0 = Release|x86
{596BDC58-35E0-488F-BED2-FC7A133BC047}.Debug|Any CPU.ActiveCfg = Debug|x86
{596BDC58-35E0-488F-BED2-FC7A133BC047}.Debug|Any CPU.Build.0 = Debug|x86
+ {596BDC58-35E0-488F-BED2-FC7A133BC047}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {596BDC58-35E0-488F-BED2-FC7A133BC047}.Debug|Mixed Platforms.Build.0 = Debug|x86
+ {596BDC58-35E0-488F-BED2-FC7A133BC047}.Debug|Win32.ActiveCfg = Debug|x86
{596BDC58-35E0-488F-BED2-FC7A133BC047}.Debug|x86.ActiveCfg = Debug|x86
{596BDC58-35E0-488F-BED2-FC7A133BC047}.Debug|x86.Build.0 = Debug|x86
{596BDC58-35E0-488F-BED2-FC7A133BC047}.Release|Any CPU.ActiveCfg = Release|x86
{596BDC58-35E0-488F-BED2-FC7A133BC047}.Release|Any CPU.Build.0 = Release|x86
+ {596BDC58-35E0-488F-BED2-FC7A133BC047}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {596BDC58-35E0-488F-BED2-FC7A133BC047}.Release|Mixed Platforms.Build.0 = Release|x86
+ {596BDC58-35E0-488F-BED2-FC7A133BC047}.Release|Win32.ActiveCfg = Release|x86
{596BDC58-35E0-488F-BED2-FC7A133BC047}.Release|x86.ActiveCfg = Release|x86
{596BDC58-35E0-488F-BED2-FC7A133BC047}.Release|x86.Build.0 = Release|x86
{596BDC58-35E0-488F-BED2-FC7A133BC047}.UseCaptureCardDefinitions|Any CPU.ActiveCfg = Release|x86
+ {596BDC58-35E0-488F-BED2-FC7A133BC047}.UseCaptureCardDefinitions|Mixed Platforms.ActiveCfg = Release|x86
+ {596BDC58-35E0-488F-BED2-FC7A133BC047}.UseCaptureCardDefinitions|Mixed Platforms.Build.0 = Release|x86
+ {596BDC58-35E0-488F-BED2-FC7A133BC047}.UseCaptureCardDefinitions|Win32.ActiveCfg = Release|x86
{596BDC58-35E0-488F-BED2-FC7A133BC047}.UseCaptureCardDefinitions|x86.ActiveCfg = Release|x86
{596BDC58-35E0-488F-BED2-FC7A133BC047}.UseCaptureCardDefinitions|x86.Build.0 = Release|x86
{596BDC58-35E0-488F-BED2-FC7A133BC047}.UseCaptureDefintionsRelease|Any CPU.ActiveCfg = Release|Any CPU
{596BDC58-35E0-488F-BED2-FC7A133BC047}.UseCaptureDefintionsRelease|Any CPU.Build.0 = Release|Any CPU
+ {596BDC58-35E0-488F-BED2-FC7A133BC047}.UseCaptureDefintionsRelease|Mixed Platforms.ActiveCfg = Release|x86
+ {596BDC58-35E0-488F-BED2-FC7A133BC047}.UseCaptureDefintionsRelease|Mixed Platforms.Build.0 = Release|x86
+ {596BDC58-35E0-488F-BED2-FC7A133BC047}.UseCaptureDefintionsRelease|Win32.ActiveCfg = Release|x86
{596BDC58-35E0-488F-BED2-FC7A133BC047}.UseCaptureDefintionsRelease|x86.ActiveCfg = Release|x86
{596BDC58-35E0-488F-BED2-FC7A133BC047}.UseCaptureDefintionsRelease|x86.Build.0 = Release|x86
{DF3AC5D1-762E-4807-8642-1AE773B65E07}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DF3AC5D1-762E-4807-8642-1AE773B65E07}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {DF3AC5D1-762E-4807-8642-1AE773B65E07}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {DF3AC5D1-762E-4807-8642-1AE773B65E07}.Debug|Mixed Platforms.Build.0 = Debug|x86
+ {DF3AC5D1-762E-4807-8642-1AE773B65E07}.Debug|Win32.ActiveCfg = Debug|x86
{DF3AC5D1-762E-4807-8642-1AE773B65E07}.Debug|x86.ActiveCfg = Debug|Any CPU
{DF3AC5D1-762E-4807-8642-1AE773B65E07}.Debug|x86.Build.0 = Debug|Any CPU
{DF3AC5D1-762E-4807-8642-1AE773B65E07}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DF3AC5D1-762E-4807-8642-1AE773B65E07}.Release|Any CPU.Build.0 = Release|Any CPU
+ {DF3AC5D1-762E-4807-8642-1AE773B65E07}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {DF3AC5D1-762E-4807-8642-1AE773B65E07}.Release|Mixed Platforms.Build.0 = Release|x86
+ {DF3AC5D1-762E-4807-8642-1AE773B65E07}.Release|Win32.ActiveCfg = Release|x86
{DF3AC5D1-762E-4807-8642-1AE773B65E07}.Release|x86.ActiveCfg = Release|Any CPU
{DF3AC5D1-762E-4807-8642-1AE773B65E07}.Release|x86.Build.0 = Release|Any CPU
{DF3AC5D1-762E-4807-8642-1AE773B65E07}.UseCaptureCardDefinitions|Any CPU.ActiveCfg = Release|x86
+ {DF3AC5D1-762E-4807-8642-1AE773B65E07}.UseCaptureCardDefinitions|Mixed Platforms.ActiveCfg = Release|x86
+ {DF3AC5D1-762E-4807-8642-1AE773B65E07}.UseCaptureCardDefinitions|Mixed Platforms.Build.0 = Release|x86
+ {DF3AC5D1-762E-4807-8642-1AE773B65E07}.UseCaptureCardDefinitions|Win32.ActiveCfg = Release|x86
{DF3AC5D1-762E-4807-8642-1AE773B65E07}.UseCaptureCardDefinitions|x86.ActiveCfg = Release|x86
{DF3AC5D1-762E-4807-8642-1AE773B65E07}.UseCaptureCardDefinitions|x86.Build.0 = Release|x86
{DF3AC5D1-762E-4807-8642-1AE773B65E07}.UseCaptureDefintionsRelease|Any CPU.ActiveCfg = Release|Any CPU
{DF3AC5D1-762E-4807-8642-1AE773B65E07}.UseCaptureDefintionsRelease|Any CPU.Build.0 = Release|Any CPU
+ {DF3AC5D1-762E-4807-8642-1AE773B65E07}.UseCaptureDefintionsRelease|Mixed Platforms.ActiveCfg = Release|x86
+ {DF3AC5D1-762E-4807-8642-1AE773B65E07}.UseCaptureDefintionsRelease|Mixed Platforms.Build.0 = Release|x86
+ {DF3AC5D1-762E-4807-8642-1AE773B65E07}.UseCaptureDefintionsRelease|Win32.ActiveCfg = Release|x86
{DF3AC5D1-762E-4807-8642-1AE773B65E07}.UseCaptureDefintionsRelease|x86.ActiveCfg = Release|x86
{DF3AC5D1-762E-4807-8642-1AE773B65E07}.UseCaptureDefintionsRelease|x86.Build.0 = Release|x86
{BD4A3413-C9F9-4299-BB52-ED45027EE7CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{BD4A3413-C9F9-4299-BB52-ED45027EE7CC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {BD4A3413-C9F9-4299-BB52-ED45027EE7CC}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {BD4A3413-C9F9-4299-BB52-ED45027EE7CC}.Debug|Mixed Platforms.Build.0 = Debug|x86
+ {BD4A3413-C9F9-4299-BB52-ED45027EE7CC}.Debug|Win32.ActiveCfg = Debug|x86
{BD4A3413-C9F9-4299-BB52-ED45027EE7CC}.Debug|x86.ActiveCfg = Debug|Any CPU
{BD4A3413-C9F9-4299-BB52-ED45027EE7CC}.Debug|x86.Build.0 = Debug|Any CPU
{BD4A3413-C9F9-4299-BB52-ED45027EE7CC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{BD4A3413-C9F9-4299-BB52-ED45027EE7CC}.Release|Any CPU.Build.0 = Release|Any CPU
+ {BD4A3413-C9F9-4299-BB52-ED45027EE7CC}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {BD4A3413-C9F9-4299-BB52-ED45027EE7CC}.Release|Mixed Platforms.Build.0 = Release|x86
+ {BD4A3413-C9F9-4299-BB52-ED45027EE7CC}.Release|Win32.ActiveCfg = Release|x86
{BD4A3413-C9F9-4299-BB52-ED45027EE7CC}.Release|x86.ActiveCfg = Release|Any CPU
{BD4A3413-C9F9-4299-BB52-ED45027EE7CC}.Release|x86.Build.0 = Release|Any CPU
{BD4A3413-C9F9-4299-BB52-ED45027EE7CC}.UseCaptureCardDefinitions|Any CPU.ActiveCfg = Release|x86
+ {BD4A3413-C9F9-4299-BB52-ED45027EE7CC}.UseCaptureCardDefinitions|Mixed Platforms.ActiveCfg = Release|x86
+ {BD4A3413-C9F9-4299-BB52-ED45027EE7CC}.UseCaptureCardDefinitions|Mixed Platforms.Build.0 = Release|x86
+ {BD4A3413-C9F9-4299-BB52-ED45027EE7CC}.UseCaptureCardDefinitions|Win32.ActiveCfg = Release|x86
{BD4A3413-C9F9-4299-BB52-ED45027EE7CC}.UseCaptureCardDefinitions|x86.ActiveCfg = Release|x86
{BD4A3413-C9F9-4299-BB52-ED45027EE7CC}.UseCaptureCardDefinitions|x86.Build.0 = Release|x86
{BD4A3413-C9F9-4299-BB52-ED45027EE7CC}.UseCaptureDefintionsRelease|Any CPU.ActiveCfg = Release|Any CPU
{BD4A3413-C9F9-4299-BB52-ED45027EE7CC}.UseCaptureDefintionsRelease|Any CPU.Build.0 = Release|Any CPU
+ {BD4A3413-C9F9-4299-BB52-ED45027EE7CC}.UseCaptureDefintionsRelease|Mixed Platforms.ActiveCfg = Release|x86
+ {BD4A3413-C9F9-4299-BB52-ED45027EE7CC}.UseCaptureDefintionsRelease|Mixed Platforms.Build.0 = Release|x86
+ {BD4A3413-C9F9-4299-BB52-ED45027EE7CC}.UseCaptureDefintionsRelease|Win32.ActiveCfg = Release|x86
{BD4A3413-C9F9-4299-BB52-ED45027EE7CC}.UseCaptureDefintionsRelease|x86.ActiveCfg = Release|x86
{BD4A3413-C9F9-4299-BB52-ED45027EE7CC}.UseCaptureDefintionsRelease|x86.Build.0 = Release|x86
{C6564AA7-976B-43EF-9E35-7E607EE1DD12}.Debug|Any CPU.ActiveCfg = Debug|x86
{C6564AA7-976B-43EF-9E35-7E607EE1DD12}.Debug|Any CPU.Build.0 = Debug|x86
+ {C6564AA7-976B-43EF-9E35-7E607EE1DD12}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {C6564AA7-976B-43EF-9E35-7E607EE1DD12}.Debug|Mixed Platforms.Build.0 = Debug|x86
+ {C6564AA7-976B-43EF-9E35-7E607EE1DD12}.Debug|Win32.ActiveCfg = Debug|x86
{C6564AA7-976B-43EF-9E35-7E607EE1DD12}.Debug|x86.ActiveCfg = Debug|x86
{C6564AA7-976B-43EF-9E35-7E607EE1DD12}.Debug|x86.Build.0 = Debug|x86
{C6564AA7-976B-43EF-9E35-7E607EE1DD12}.Release|Any CPU.ActiveCfg = Release|x86
{C6564AA7-976B-43EF-9E35-7E607EE1DD12}.Release|Any CPU.Build.0 = Release|x86
+ {C6564AA7-976B-43EF-9E35-7E607EE1DD12}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {C6564AA7-976B-43EF-9E35-7E607EE1DD12}.Release|Mixed Platforms.Build.0 = Release|x86
+ {C6564AA7-976B-43EF-9E35-7E607EE1DD12}.Release|Win32.ActiveCfg = Release|x86
{C6564AA7-976B-43EF-9E35-7E607EE1DD12}.Release|x86.ActiveCfg = Release|x86
{C6564AA7-976B-43EF-9E35-7E607EE1DD12}.Release|x86.Build.0 = Release|x86
{C6564AA7-976B-43EF-9E35-7E607EE1DD12}.UseCaptureCardDefinitions|Any CPU.ActiveCfg = Release|x86
+ {C6564AA7-976B-43EF-9E35-7E607EE1DD12}.UseCaptureCardDefinitions|Mixed Platforms.ActiveCfg = Release|x86
+ {C6564AA7-976B-43EF-9E35-7E607EE1DD12}.UseCaptureCardDefinitions|Mixed Platforms.Build.0 = Release|x86
+ {C6564AA7-976B-43EF-9E35-7E607EE1DD12}.UseCaptureCardDefinitions|Win32.ActiveCfg = Release|x86
{C6564AA7-976B-43EF-9E35-7E607EE1DD12}.UseCaptureCardDefinitions|x86.ActiveCfg = Release|x86
{C6564AA7-976B-43EF-9E35-7E607EE1DD12}.UseCaptureCardDefinitions|x86.Build.0 = Release|x86
{C6564AA7-976B-43EF-9E35-7E607EE1DD12}.UseCaptureDefintionsRelease|Any CPU.ActiveCfg = Release|Any CPU
{C6564AA7-976B-43EF-9E35-7E607EE1DD12}.UseCaptureDefintionsRelease|Any CPU.Build.0 = Release|Any CPU
+ {C6564AA7-976B-43EF-9E35-7E607EE1DD12}.UseCaptureDefintionsRelease|Mixed Platforms.ActiveCfg = Release|x86
+ {C6564AA7-976B-43EF-9E35-7E607EE1DD12}.UseCaptureDefintionsRelease|Mixed Platforms.Build.0 = Release|x86
+ {C6564AA7-976B-43EF-9E35-7E607EE1DD12}.UseCaptureDefintionsRelease|Win32.ActiveCfg = Release|x86
{C6564AA7-976B-43EF-9E35-7E607EE1DD12}.UseCaptureDefintionsRelease|x86.ActiveCfg = Release|x86
{C6564AA7-976B-43EF-9E35-7E607EE1DD12}.UseCaptureDefintionsRelease|x86.Build.0 = Release|x86
{1CCD6A99-B59F-42B2-8A6B-A5BCE57FF3F1}.Debug|Any CPU.ActiveCfg = Debug|x86
{1CCD6A99-B59F-42B2-8A6B-A5BCE57FF3F1}.Debug|Any CPU.Build.0 = Debug|x86
+ {1CCD6A99-B59F-42B2-8A6B-A5BCE57FF3F1}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {1CCD6A99-B59F-42B2-8A6B-A5BCE57FF3F1}.Debug|Mixed Platforms.Build.0 = Debug|x86
+ {1CCD6A99-B59F-42B2-8A6B-A5BCE57FF3F1}.Debug|Win32.ActiveCfg = Debug|x86
{1CCD6A99-B59F-42B2-8A6B-A5BCE57FF3F1}.Debug|x86.ActiveCfg = Debug|x86
{1CCD6A99-B59F-42B2-8A6B-A5BCE57FF3F1}.Debug|x86.Build.0 = Debug|x86
{1CCD6A99-B59F-42B2-8A6B-A5BCE57FF3F1}.Release|Any CPU.ActiveCfg = Release|x86
{1CCD6A99-B59F-42B2-8A6B-A5BCE57FF3F1}.Release|Any CPU.Build.0 = Release|x86
+ {1CCD6A99-B59F-42B2-8A6B-A5BCE57FF3F1}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {1CCD6A99-B59F-42B2-8A6B-A5BCE57FF3F1}.Release|Mixed Platforms.Build.0 = Release|x86
+ {1CCD6A99-B59F-42B2-8A6B-A5BCE57FF3F1}.Release|Win32.ActiveCfg = Release|x86
{1CCD6A99-B59F-42B2-8A6B-A5BCE57FF3F1}.Release|x86.ActiveCfg = Release|x86
{1CCD6A99-B59F-42B2-8A6B-A5BCE57FF3F1}.Release|x86.Build.0 = Release|x86
{1CCD6A99-B59F-42B2-8A6B-A5BCE57FF3F1}.UseCaptureCardDefinitions|Any CPU.ActiveCfg = Release|x86
+ {1CCD6A99-B59F-42B2-8A6B-A5BCE57FF3F1}.UseCaptureCardDefinitions|Mixed Platforms.ActiveCfg = Release|x86
+ {1CCD6A99-B59F-42B2-8A6B-A5BCE57FF3F1}.UseCaptureCardDefinitions|Mixed Platforms.Build.0 = Release|x86
+ {1CCD6A99-B59F-42B2-8A6B-A5BCE57FF3F1}.UseCaptureCardDefinitions|Win32.ActiveCfg = Release|x86
{1CCD6A99-B59F-42B2-8A6B-A5BCE57FF3F1}.UseCaptureCardDefinitions|x86.ActiveCfg = Release|x86
{1CCD6A99-B59F-42B2-8A6B-A5BCE57FF3F1}.UseCaptureCardDefinitions|x86.Build.0 = Release|x86
{1CCD6A99-B59F-42B2-8A6B-A5BCE57FF3F1}.UseCaptureDefintionsRelease|Any CPU.ActiveCfg = Release|Any CPU
{1CCD6A99-B59F-42B2-8A6B-A5BCE57FF3F1}.UseCaptureDefintionsRelease|Any CPU.Build.0 = Release|Any CPU
+ {1CCD6A99-B59F-42B2-8A6B-A5BCE57FF3F1}.UseCaptureDefintionsRelease|Mixed Platforms.ActiveCfg = Release|x86
+ {1CCD6A99-B59F-42B2-8A6B-A5BCE57FF3F1}.UseCaptureDefintionsRelease|Mixed Platforms.Build.0 = Release|x86
+ {1CCD6A99-B59F-42B2-8A6B-A5BCE57FF3F1}.UseCaptureDefintionsRelease|Win32.ActiveCfg = Release|x86
{1CCD6A99-B59F-42B2-8A6B-A5BCE57FF3F1}.UseCaptureDefintionsRelease|x86.ActiveCfg = Release|x86
{1CCD6A99-B59F-42B2-8A6B-A5BCE57FF3F1}.UseCaptureDefintionsRelease|x86.Build.0 = Release|x86
{2B094D86-DD1A-4DDD-95D2-56A57E714C4E}.Debug|Any CPU.ActiveCfg = Debug|x86
{2B094D86-DD1A-4DDD-95D2-56A57E714C4E}.Debug|Any CPU.Build.0 = Debug|x86
+ {2B094D86-DD1A-4DDD-95D2-56A57E714C4E}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {2B094D86-DD1A-4DDD-95D2-56A57E714C4E}.Debug|Mixed Platforms.Build.0 = Debug|x86
+ {2B094D86-DD1A-4DDD-95D2-56A57E714C4E}.Debug|Win32.ActiveCfg = Debug|x86
{2B094D86-DD1A-4DDD-95D2-56A57E714C4E}.Debug|x86.ActiveCfg = Debug|x86
{2B094D86-DD1A-4DDD-95D2-56A57E714C4E}.Debug|x86.Build.0 = Debug|x86
{2B094D86-DD1A-4DDD-95D2-56A57E714C4E}.Release|Any CPU.ActiveCfg = Release|x86
{2B094D86-DD1A-4DDD-95D2-56A57E714C4E}.Release|Any CPU.Build.0 = Release|x86
+ {2B094D86-DD1A-4DDD-95D2-56A57E714C4E}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {2B094D86-DD1A-4DDD-95D2-56A57E714C4E}.Release|Mixed Platforms.Build.0 = Release|x86
+ {2B094D86-DD1A-4DDD-95D2-56A57E714C4E}.Release|Win32.ActiveCfg = Release|x86
{2B094D86-DD1A-4DDD-95D2-56A57E714C4E}.Release|x86.ActiveCfg = Release|x86
{2B094D86-DD1A-4DDD-95D2-56A57E714C4E}.Release|x86.Build.0 = Release|x86
{2B094D86-DD1A-4DDD-95D2-56A57E714C4E}.UseCaptureCardDefinitions|Any CPU.ActiveCfg = Release|x86
+ {2B094D86-DD1A-4DDD-95D2-56A57E714C4E}.UseCaptureCardDefinitions|Mixed Platforms.ActiveCfg = Release|x86
+ {2B094D86-DD1A-4DDD-95D2-56A57E714C4E}.UseCaptureCardDefinitions|Mixed Platforms.Build.0 = Release|x86
+ {2B094D86-DD1A-4DDD-95D2-56A57E714C4E}.UseCaptureCardDefinitions|Win32.ActiveCfg = Release|x86
{2B094D86-DD1A-4DDD-95D2-56A57E714C4E}.UseCaptureCardDefinitions|x86.ActiveCfg = Release|x86
{2B094D86-DD1A-4DDD-95D2-56A57E714C4E}.UseCaptureCardDefinitions|x86.Build.0 = Release|x86
{2B094D86-DD1A-4DDD-95D2-56A57E714C4E}.UseCaptureDefintionsRelease|Any CPU.ActiveCfg = Release|Any CPU
{2B094D86-DD1A-4DDD-95D2-56A57E714C4E}.UseCaptureDefintionsRelease|Any CPU.Build.0 = Release|Any CPU
+ {2B094D86-DD1A-4DDD-95D2-56A57E714C4E}.UseCaptureDefintionsRelease|Mixed Platforms.ActiveCfg = Release|x86
+ {2B094D86-DD1A-4DDD-95D2-56A57E714C4E}.UseCaptureDefintionsRelease|Mixed Platforms.Build.0 = Release|x86
+ {2B094D86-DD1A-4DDD-95D2-56A57E714C4E}.UseCaptureDefintionsRelease|Win32.ActiveCfg = Release|x86
{2B094D86-DD1A-4DDD-95D2-56A57E714C4E}.UseCaptureDefintionsRelease|x86.ActiveCfg = Release|x86
{2B094D86-DD1A-4DDD-95D2-56A57E714C4E}.UseCaptureDefintionsRelease|x86.Build.0 = Release|x86
{8635D515-A5D4-4FB7-BD30-71770651E18B}.Debug|Any CPU.ActiveCfg = Debug|x86
{8635D515-A5D4-4FB7-BD30-71770651E18B}.Debug|Any CPU.Build.0 = Debug|x86
+ {8635D515-A5D4-4FB7-BD30-71770651E18B}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {8635D515-A5D4-4FB7-BD30-71770651E18B}.Debug|Mixed Platforms.Build.0 = Debug|x86
+ {8635D515-A5D4-4FB7-BD30-71770651E18B}.Debug|Win32.ActiveCfg = Debug|x86
{8635D515-A5D4-4FB7-BD30-71770651E18B}.Debug|x86.ActiveCfg = Debug|x86
{8635D515-A5D4-4FB7-BD30-71770651E18B}.Debug|x86.Build.0 = Debug|x86
{8635D515-A5D4-4FB7-BD30-71770651E18B}.Release|Any CPU.ActiveCfg = Release|x86
{8635D515-A5D4-4FB7-BD30-71770651E18B}.Release|Any CPU.Build.0 = Release|x86
+ {8635D515-A5D4-4FB7-BD30-71770651E18B}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {8635D515-A5D4-4FB7-BD30-71770651E18B}.Release|Mixed Platforms.Build.0 = Release|x86
+ {8635D515-A5D4-4FB7-BD30-71770651E18B}.Release|Win32.ActiveCfg = Release|x86
{8635D515-A5D4-4FB7-BD30-71770651E18B}.Release|x86.ActiveCfg = Release|x86
{8635D515-A5D4-4FB7-BD30-71770651E18B}.Release|x86.Build.0 = Release|x86
{8635D515-A5D4-4FB7-BD30-71770651E18B}.UseCaptureCardDefinitions|Any CPU.ActiveCfg = Release|x86
+ {8635D515-A5D4-4FB7-BD30-71770651E18B}.UseCaptureCardDefinitions|Mixed Platforms.ActiveCfg = Release|x86
+ {8635D515-A5D4-4FB7-BD30-71770651E18B}.UseCaptureCardDefinitions|Mixed Platforms.Build.0 = Release|x86
+ {8635D515-A5D4-4FB7-BD30-71770651E18B}.UseCaptureCardDefinitions|Win32.ActiveCfg = Release|x86
{8635D515-A5D4-4FB7-BD30-71770651E18B}.UseCaptureCardDefinitions|x86.ActiveCfg = Release|Any CPU
{8635D515-A5D4-4FB7-BD30-71770651E18B}.UseCaptureDefintionsRelease|Any CPU.ActiveCfg = Release|Any CPU
{8635D515-A5D4-4FB7-BD30-71770651E18B}.UseCaptureDefintionsRelease|Any CPU.Build.0 = Release|Any CPU
+ {8635D515-A5D4-4FB7-BD30-71770651E18B}.UseCaptureDefintionsRelease|Mixed Platforms.ActiveCfg = Release|x86
+ {8635D515-A5D4-4FB7-BD30-71770651E18B}.UseCaptureDefintionsRelease|Mixed Platforms.Build.0 = Release|x86
+ {8635D515-A5D4-4FB7-BD30-71770651E18B}.UseCaptureDefintionsRelease|Win32.ActiveCfg = Release|x86
{8635D515-A5D4-4FB7-BD30-71770651E18B}.UseCaptureDefintionsRelease|x86.ActiveCfg = Release|Any CPU
{7701AA79-18D4-4A18-BB52-16774FB7943D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7701AA79-18D4-4A18-BB52-16774FB7943D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7701AA79-18D4-4A18-BB52-16774FB7943D}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {7701AA79-18D4-4A18-BB52-16774FB7943D}.Debug|Mixed Platforms.Build.0 = Debug|x86
+ {7701AA79-18D4-4A18-BB52-16774FB7943D}.Debug|Win32.ActiveCfg = Debug|x86
{7701AA79-18D4-4A18-BB52-16774FB7943D}.Debug|x86.ActiveCfg = Debug|Any CPU
{7701AA79-18D4-4A18-BB52-16774FB7943D}.Debug|x86.Build.0 = Debug|Any CPU
{7701AA79-18D4-4A18-BB52-16774FB7943D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7701AA79-18D4-4A18-BB52-16774FB7943D}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7701AA79-18D4-4A18-BB52-16774FB7943D}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {7701AA79-18D4-4A18-BB52-16774FB7943D}.Release|Mixed Platforms.Build.0 = Release|x86
+ {7701AA79-18D4-4A18-BB52-16774FB7943D}.Release|Win32.ActiveCfg = Release|x86
{7701AA79-18D4-4A18-BB52-16774FB7943D}.Release|x86.ActiveCfg = Release|Any CPU
{7701AA79-18D4-4A18-BB52-16774FB7943D}.Release|x86.Build.0 = Release|Any CPU
{7701AA79-18D4-4A18-BB52-16774FB7943D}.UseCaptureCardDefinitions|Any CPU.ActiveCfg = Release|x86
+ {7701AA79-18D4-4A18-BB52-16774FB7943D}.UseCaptureCardDefinitions|Mixed Platforms.ActiveCfg = Release|x86
+ {7701AA79-18D4-4A18-BB52-16774FB7943D}.UseCaptureCardDefinitions|Mixed Platforms.Build.0 = Release|x86
+ {7701AA79-18D4-4A18-BB52-16774FB7943D}.UseCaptureCardDefinitions|Win32.ActiveCfg = Release|x86
{7701AA79-18D4-4A18-BB52-16774FB7943D}.UseCaptureCardDefinitions|x86.ActiveCfg = Release|x86
{7701AA79-18D4-4A18-BB52-16774FB7943D}.UseCaptureCardDefinitions|x86.Build.0 = Release|x86
{7701AA79-18D4-4A18-BB52-16774FB7943D}.UseCaptureDefintionsRelease|Any CPU.ActiveCfg = Release|Any CPU
{7701AA79-18D4-4A18-BB52-16774FB7943D}.UseCaptureDefintionsRelease|Any CPU.Build.0 = Release|Any CPU
+ {7701AA79-18D4-4A18-BB52-16774FB7943D}.UseCaptureDefintionsRelease|Mixed Platforms.ActiveCfg = Release|x86
+ {7701AA79-18D4-4A18-BB52-16774FB7943D}.UseCaptureDefintionsRelease|Mixed Platforms.Build.0 = Release|x86
+ {7701AA79-18D4-4A18-BB52-16774FB7943D}.UseCaptureDefintionsRelease|Win32.ActiveCfg = Release|x86
{7701AA79-18D4-4A18-BB52-16774FB7943D}.UseCaptureDefintionsRelease|x86.ActiveCfg = Release|x86
{7701AA79-18D4-4A18-BB52-16774FB7943D}.UseCaptureDefintionsRelease|x86.Build.0 = Release|x86
{CC77F438-DBD3-4D9C-80B1-C86BA50CF635}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CC77F438-DBD3-4D9C-80B1-C86BA50CF635}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CC77F438-DBD3-4D9C-80B1-C86BA50CF635}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {CC77F438-DBD3-4D9C-80B1-C86BA50CF635}.Debug|Mixed Platforms.Build.0 = Debug|x86
+ {CC77F438-DBD3-4D9C-80B1-C86BA50CF635}.Debug|Win32.ActiveCfg = Debug|x86
{CC77F438-DBD3-4D9C-80B1-C86BA50CF635}.Debug|x86.ActiveCfg = Debug|Any CPU
{CC77F438-DBD3-4D9C-80B1-C86BA50CF635}.Debug|x86.Build.0 = Debug|Any CPU
{CC77F438-DBD3-4D9C-80B1-C86BA50CF635}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CC77F438-DBD3-4D9C-80B1-C86BA50CF635}.Release|Any CPU.Build.0 = Release|Any CPU
+ {CC77F438-DBD3-4D9C-80B1-C86BA50CF635}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {CC77F438-DBD3-4D9C-80B1-C86BA50CF635}.Release|Mixed Platforms.Build.0 = Release|x86
+ {CC77F438-DBD3-4D9C-80B1-C86BA50CF635}.Release|Win32.ActiveCfg = Release|x86
{CC77F438-DBD3-4D9C-80B1-C86BA50CF635}.Release|x86.ActiveCfg = Release|Any CPU
{CC77F438-DBD3-4D9C-80B1-C86BA50CF635}.Release|x86.Build.0 = Release|Any CPU
{CC77F438-DBD3-4D9C-80B1-C86BA50CF635}.UseCaptureCardDefinitions|Any CPU.ActiveCfg = Release|x86
+ {CC77F438-DBD3-4D9C-80B1-C86BA50CF635}.UseCaptureCardDefinitions|Mixed Platforms.ActiveCfg = Release|x86
+ {CC77F438-DBD3-4D9C-80B1-C86BA50CF635}.UseCaptureCardDefinitions|Mixed Platforms.Build.0 = Release|x86
+ {CC77F438-DBD3-4D9C-80B1-C86BA50CF635}.UseCaptureCardDefinitions|Win32.ActiveCfg = Release|x86
{CC77F438-DBD3-4D9C-80B1-C86BA50CF635}.UseCaptureCardDefinitions|x86.ActiveCfg = Release|x86
{CC77F438-DBD3-4D9C-80B1-C86BA50CF635}.UseCaptureCardDefinitions|x86.Build.0 = Release|x86
{CC77F438-DBD3-4D9C-80B1-C86BA50CF635}.UseCaptureDefintionsRelease|Any CPU.ActiveCfg = Release|Any CPU
{CC77F438-DBD3-4D9C-80B1-C86BA50CF635}.UseCaptureDefintionsRelease|Any CPU.Build.0 = Release|Any CPU
+ {CC77F438-DBD3-4D9C-80B1-C86BA50CF635}.UseCaptureDefintionsRelease|Mixed Platforms.ActiveCfg = Release|x86
+ {CC77F438-DBD3-4D9C-80B1-C86BA50CF635}.UseCaptureDefintionsRelease|Mixed Platforms.Build.0 = Release|x86
+ {CC77F438-DBD3-4D9C-80B1-C86BA50CF635}.UseCaptureDefintionsRelease|Win32.ActiveCfg = Release|x86
{CC77F438-DBD3-4D9C-80B1-C86BA50CF635}.UseCaptureDefintionsRelease|x86.ActiveCfg = Release|x86
{CC77F438-DBD3-4D9C-80B1-C86BA50CF635}.UseCaptureDefintionsRelease|x86.Build.0 = Release|x86
{F42B1A87-4CC6-4D2F-BDC6-1C90AF52D488}.Debug|Any CPU.ActiveCfg = Debug|x86
{F42B1A87-4CC6-4D2F-BDC6-1C90AF52D488}.Debug|Any CPU.Build.0 = Debug|x86
+ {F42B1A87-4CC6-4D2F-BDC6-1C90AF52D488}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {F42B1A87-4CC6-4D2F-BDC6-1C90AF52D488}.Debug|Mixed Platforms.Build.0 = Debug|x86
+ {F42B1A87-4CC6-4D2F-BDC6-1C90AF52D488}.Debug|Win32.ActiveCfg = Debug|x86
{F42B1A87-4CC6-4D2F-BDC6-1C90AF52D488}.Debug|x86.ActiveCfg = Debug|x86
{F42B1A87-4CC6-4D2F-BDC6-1C90AF52D488}.Debug|x86.Build.0 = Debug|x86
{F42B1A87-4CC6-4D2F-BDC6-1C90AF52D488}.Release|Any CPU.ActiveCfg = Release|x86
{F42B1A87-4CC6-4D2F-BDC6-1C90AF52D488}.Release|Any CPU.Build.0 = Release|x86
+ {F42B1A87-4CC6-4D2F-BDC6-1C90AF52D488}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {F42B1A87-4CC6-4D2F-BDC6-1C90AF52D488}.Release|Mixed Platforms.Build.0 = Release|x86
+ {F42B1A87-4CC6-4D2F-BDC6-1C90AF52D488}.Release|Win32.ActiveCfg = Release|x86
{F42B1A87-4CC6-4D2F-BDC6-1C90AF52D488}.Release|x86.ActiveCfg = Release|x86
{F42B1A87-4CC6-4D2F-BDC6-1C90AF52D488}.Release|x86.Build.0 = Release|x86
{F42B1A87-4CC6-4D2F-BDC6-1C90AF52D488}.UseCaptureCardDefinitions|Any CPU.ActiveCfg = Release|x86
+ {F42B1A87-4CC6-4D2F-BDC6-1C90AF52D488}.UseCaptureCardDefinitions|Mixed Platforms.ActiveCfg = Release|x86
+ {F42B1A87-4CC6-4D2F-BDC6-1C90AF52D488}.UseCaptureCardDefinitions|Mixed Platforms.Build.0 = Release|x86
+ {F42B1A87-4CC6-4D2F-BDC6-1C90AF52D488}.UseCaptureCardDefinitions|Win32.ActiveCfg = Release|x86
{F42B1A87-4CC6-4D2F-BDC6-1C90AF52D488}.UseCaptureCardDefinitions|x86.ActiveCfg = Release|Any CPU
{F42B1A87-4CC6-4D2F-BDC6-1C90AF52D488}.UseCaptureDefintionsRelease|Any CPU.ActiveCfg = Release|Any CPU
{F42B1A87-4CC6-4D2F-BDC6-1C90AF52D488}.UseCaptureDefintionsRelease|Any CPU.Build.0 = Release|Any CPU
+ {F42B1A87-4CC6-4D2F-BDC6-1C90AF52D488}.UseCaptureDefintionsRelease|Mixed Platforms.ActiveCfg = Release|x86
+ {F42B1A87-4CC6-4D2F-BDC6-1C90AF52D488}.UseCaptureDefintionsRelease|Mixed Platforms.Build.0 = Release|x86
+ {F42B1A87-4CC6-4D2F-BDC6-1C90AF52D488}.UseCaptureDefintionsRelease|Win32.ActiveCfg = Release|x86
{F42B1A87-4CC6-4D2F-BDC6-1C90AF52D488}.UseCaptureDefintionsRelease|x86.ActiveCfg = Release|Any CPU
{4458F642-6022-4A3F-996F-E8AA510FB7E8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4458F642-6022-4A3F-996F-E8AA510FB7E8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4458F642-6022-4A3F-996F-E8AA510FB7E8}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {4458F642-6022-4A3F-996F-E8AA510FB7E8}.Debug|Mixed Platforms.Build.0 = Debug|x86
+ {4458F642-6022-4A3F-996F-E8AA510FB7E8}.Debug|Win32.ActiveCfg = Debug|x86
{4458F642-6022-4A3F-996F-E8AA510FB7E8}.Debug|x86.ActiveCfg = Debug|Any CPU
{4458F642-6022-4A3F-996F-E8AA510FB7E8}.Debug|x86.Build.0 = Debug|Any CPU
{4458F642-6022-4A3F-996F-E8AA510FB7E8}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4458F642-6022-4A3F-996F-E8AA510FB7E8}.Release|Any CPU.Build.0 = Release|Any CPU
+ {4458F642-6022-4A3F-996F-E8AA510FB7E8}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {4458F642-6022-4A3F-996F-E8AA510FB7E8}.Release|Mixed Platforms.Build.0 = Release|x86
+ {4458F642-6022-4A3F-996F-E8AA510FB7E8}.Release|Win32.ActiveCfg = Release|x86
{4458F642-6022-4A3F-996F-E8AA510FB7E8}.Release|x86.ActiveCfg = Release|Any CPU
{4458F642-6022-4A3F-996F-E8AA510FB7E8}.Release|x86.Build.0 = Release|Any CPU
{4458F642-6022-4A3F-996F-E8AA510FB7E8}.UseCaptureCardDefinitions|Any CPU.ActiveCfg = Release|x86
+ {4458F642-6022-4A3F-996F-E8AA510FB7E8}.UseCaptureCardDefinitions|Mixed Platforms.ActiveCfg = Release|x86
+ {4458F642-6022-4A3F-996F-E8AA510FB7E8}.UseCaptureCardDefinitions|Mixed Platforms.Build.0 = Release|x86
+ {4458F642-6022-4A3F-996F-E8AA510FB7E8}.UseCaptureCardDefinitions|Win32.ActiveCfg = Release|x86
{4458F642-6022-4A3F-996F-E8AA510FB7E8}.UseCaptureCardDefinitions|x86.ActiveCfg = Release|Any CPU
{4458F642-6022-4A3F-996F-E8AA510FB7E8}.UseCaptureDefintionsRelease|Any CPU.ActiveCfg = Release|Any CPU
{4458F642-6022-4A3F-996F-E8AA510FB7E8}.UseCaptureDefintionsRelease|Any CPU.Build.0 = Release|Any CPU
+ {4458F642-6022-4A3F-996F-E8AA510FB7E8}.UseCaptureDefintionsRelease|Mixed Platforms.ActiveCfg = Release|x86
+ {4458F642-6022-4A3F-996F-E8AA510FB7E8}.UseCaptureDefintionsRelease|Mixed Platforms.Build.0 = Release|x86
+ {4458F642-6022-4A3F-996F-E8AA510FB7E8}.UseCaptureDefintionsRelease|Win32.ActiveCfg = Release|x86
{4458F642-6022-4A3F-996F-E8AA510FB7E8}.UseCaptureDefintionsRelease|x86.ActiveCfg = Release|Any CPU
{7A626CB9-0660-4F47-B059-7AC7F68EDB0A}.Debug|Any CPU.ActiveCfg = Debug|x86
{7A626CB9-0660-4F47-B059-7AC7F68EDB0A}.Debug|Any CPU.Build.0 = Debug|x86
+ {7A626CB9-0660-4F47-B059-7AC7F68EDB0A}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {7A626CB9-0660-4F47-B059-7AC7F68EDB0A}.Debug|Mixed Platforms.Build.0 = Debug|x86
+ {7A626CB9-0660-4F47-B059-7AC7F68EDB0A}.Debug|Win32.ActiveCfg = Debug|x86
{7A626CB9-0660-4F47-B059-7AC7F68EDB0A}.Debug|x86.ActiveCfg = Debug|x86
{7A626CB9-0660-4F47-B059-7AC7F68EDB0A}.Debug|x86.Build.0 = Debug|x86
{7A626CB9-0660-4F47-B059-7AC7F68EDB0A}.Release|Any CPU.ActiveCfg = Release|x86
{7A626CB9-0660-4F47-B059-7AC7F68EDB0A}.Release|Any CPU.Build.0 = Release|x86
+ {7A626CB9-0660-4F47-B059-7AC7F68EDB0A}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {7A626CB9-0660-4F47-B059-7AC7F68EDB0A}.Release|Mixed Platforms.Build.0 = Release|x86
+ {7A626CB9-0660-4F47-B059-7AC7F68EDB0A}.Release|Win32.ActiveCfg = Release|x86
{7A626CB9-0660-4F47-B059-7AC7F68EDB0A}.Release|x86.ActiveCfg = Release|x86
{7A626CB9-0660-4F47-B059-7AC7F68EDB0A}.Release|x86.Build.0 = Release|x86
{7A626CB9-0660-4F47-B059-7AC7F68EDB0A}.UseCaptureCardDefinitions|Any CPU.ActiveCfg = Release|x86
+ {7A626CB9-0660-4F47-B059-7AC7F68EDB0A}.UseCaptureCardDefinitions|Mixed Platforms.ActiveCfg = Release|x86
+ {7A626CB9-0660-4F47-B059-7AC7F68EDB0A}.UseCaptureCardDefinitions|Mixed Platforms.Build.0 = Release|x86
+ {7A626CB9-0660-4F47-B059-7AC7F68EDB0A}.UseCaptureCardDefinitions|Win32.ActiveCfg = Release|x86
{7A626CB9-0660-4F47-B059-7AC7F68EDB0A}.UseCaptureCardDefinitions|x86.ActiveCfg = Release|Any CPU
{7A626CB9-0660-4F47-B059-7AC7F68EDB0A}.UseCaptureDefintionsRelease|Any CPU.ActiveCfg = Release|Any CPU
{7A626CB9-0660-4F47-B059-7AC7F68EDB0A}.UseCaptureDefintionsRelease|Any CPU.Build.0 = Release|Any CPU
+ {7A626CB9-0660-4F47-B059-7AC7F68EDB0A}.UseCaptureDefintionsRelease|Mixed Platforms.ActiveCfg = Release|x86
+ {7A626CB9-0660-4F47-B059-7AC7F68EDB0A}.UseCaptureDefintionsRelease|Mixed Platforms.Build.0 = Release|x86
+ {7A626CB9-0660-4F47-B059-7AC7F68EDB0A}.UseCaptureDefintionsRelease|Win32.ActiveCfg = Release|x86
{7A626CB9-0660-4F47-B059-7AC7F68EDB0A}.UseCaptureDefintionsRelease|x86.ActiveCfg = Release|Any CPU
{74FB430C-6F41-434B-B9C3-F93BEE56E5FF}.Debug|Any CPU.ActiveCfg = Debug|x86
{74FB430C-6F41-434B-B9C3-F93BEE56E5FF}.Debug|Any CPU.Build.0 = Debug|x86
+ {74FB430C-6F41-434B-B9C3-F93BEE56E5FF}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {74FB430C-6F41-434B-B9C3-F93BEE56E5FF}.Debug|Mixed Platforms.Build.0 = Debug|x86
+ {74FB430C-6F41-434B-B9C3-F93BEE56E5FF}.Debug|Win32.ActiveCfg = Debug|x86
{74FB430C-6F41-434B-B9C3-F93BEE56E5FF}.Debug|x86.ActiveCfg = Debug|x86
{74FB430C-6F41-434B-B9C3-F93BEE56E5FF}.Debug|x86.Build.0 = Debug|x86
{74FB430C-6F41-434B-B9C3-F93BEE56E5FF}.Release|Any CPU.ActiveCfg = Release|x86
{74FB430C-6F41-434B-B9C3-F93BEE56E5FF}.Release|Any CPU.Build.0 = Release|x86
+ {74FB430C-6F41-434B-B9C3-F93BEE56E5FF}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {74FB430C-6F41-434B-B9C3-F93BEE56E5FF}.Release|Mixed Platforms.Build.0 = Release|x86
+ {74FB430C-6F41-434B-B9C3-F93BEE56E5FF}.Release|Win32.ActiveCfg = Release|x86
{74FB430C-6F41-434B-B9C3-F93BEE56E5FF}.Release|x86.ActiveCfg = Release|x86
{74FB430C-6F41-434B-B9C3-F93BEE56E5FF}.Release|x86.Build.0 = Release|x86
{74FB430C-6F41-434B-B9C3-F93BEE56E5FF}.UseCaptureCardDefinitions|Any CPU.ActiveCfg = Release|x86
+ {74FB430C-6F41-434B-B9C3-F93BEE56E5FF}.UseCaptureCardDefinitions|Mixed Platforms.ActiveCfg = Release|x86
+ {74FB430C-6F41-434B-B9C3-F93BEE56E5FF}.UseCaptureCardDefinitions|Mixed Platforms.Build.0 = Release|x86
+ {74FB430C-6F41-434B-B9C3-F93BEE56E5FF}.UseCaptureCardDefinitions|Win32.ActiveCfg = Release|x86
{74FB430C-6F41-434B-B9C3-F93BEE56E5FF}.UseCaptureCardDefinitions|x86.ActiveCfg = Release|x86
{74FB430C-6F41-434B-B9C3-F93BEE56E5FF}.UseCaptureDefintionsRelease|Any CPU.ActiveCfg = Release|x86
+ {74FB430C-6F41-434B-B9C3-F93BEE56E5FF}.UseCaptureDefintionsRelease|Mixed Platforms.ActiveCfg = Release|x86
+ {74FB430C-6F41-434B-B9C3-F93BEE56E5FF}.UseCaptureDefintionsRelease|Mixed Platforms.Build.0 = Release|x86
+ {74FB430C-6F41-434B-B9C3-F93BEE56E5FF}.UseCaptureDefintionsRelease|Win32.ActiveCfg = Release|x86
{74FB430C-6F41-434B-B9C3-F93BEE56E5FF}.UseCaptureDefintionsRelease|x86.ActiveCfg = Release|x86
{CE009BFA-5EF6-4153-B2A1-2FA79698A9AE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{CE009BFA-5EF6-4153-B2A1-2FA79698A9AE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CE009BFA-5EF6-4153-B2A1-2FA79698A9AE}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {CE009BFA-5EF6-4153-B2A1-2FA79698A9AE}.Debug|Mixed Platforms.Build.0 = Debug|x86
+ {CE009BFA-5EF6-4153-B2A1-2FA79698A9AE}.Debug|Win32.ActiveCfg = Debug|x86
{CE009BFA-5EF6-4153-B2A1-2FA79698A9AE}.Debug|x86.ActiveCfg = Debug|Any CPU
{CE009BFA-5EF6-4153-B2A1-2FA79698A9AE}.Debug|x86.Build.0 = Debug|Any CPU
{CE009BFA-5EF6-4153-B2A1-2FA79698A9AE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{CE009BFA-5EF6-4153-B2A1-2FA79698A9AE}.Release|Any CPU.Build.0 = Release|Any CPU
+ {CE009BFA-5EF6-4153-B2A1-2FA79698A9AE}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {CE009BFA-5EF6-4153-B2A1-2FA79698A9AE}.Release|Mixed Platforms.Build.0 = Release|x86
+ {CE009BFA-5EF6-4153-B2A1-2FA79698A9AE}.Release|Win32.ActiveCfg = Release|x86
{CE009BFA-5EF6-4153-B2A1-2FA79698A9AE}.Release|x86.ActiveCfg = Release|Any CPU
{CE009BFA-5EF6-4153-B2A1-2FA79698A9AE}.Release|x86.Build.0 = Release|Any CPU
{CE009BFA-5EF6-4153-B2A1-2FA79698A9AE}.UseCaptureCardDefinitions|Any CPU.ActiveCfg = Release|x86
+ {CE009BFA-5EF6-4153-B2A1-2FA79698A9AE}.UseCaptureCardDefinitions|Mixed Platforms.ActiveCfg = Release|x86
+ {CE009BFA-5EF6-4153-B2A1-2FA79698A9AE}.UseCaptureCardDefinitions|Mixed Platforms.Build.0 = Release|x86
+ {CE009BFA-5EF6-4153-B2A1-2FA79698A9AE}.UseCaptureCardDefinitions|Win32.ActiveCfg = Release|x86
{CE009BFA-5EF6-4153-B2A1-2FA79698A9AE}.UseCaptureCardDefinitions|x86.ActiveCfg = Release|x86
{CE009BFA-5EF6-4153-B2A1-2FA79698A9AE}.UseCaptureCardDefinitions|x86.Build.0 = Release|x86
{CE009BFA-5EF6-4153-B2A1-2FA79698A9AE}.UseCaptureDefintionsRelease|Any CPU.ActiveCfg = Release|Any CPU
{CE009BFA-5EF6-4153-B2A1-2FA79698A9AE}.UseCaptureDefintionsRelease|Any CPU.Build.0 = Release|Any CPU
+ {CE009BFA-5EF6-4153-B2A1-2FA79698A9AE}.UseCaptureDefintionsRelease|Mixed Platforms.ActiveCfg = Release|x86
+ {CE009BFA-5EF6-4153-B2A1-2FA79698A9AE}.UseCaptureDefintionsRelease|Mixed Platforms.Build.0 = Release|x86
+ {CE009BFA-5EF6-4153-B2A1-2FA79698A9AE}.UseCaptureDefintionsRelease|Win32.ActiveCfg = Release|x86
{CE009BFA-5EF6-4153-B2A1-2FA79698A9AE}.UseCaptureDefintionsRelease|x86.ActiveCfg = Release|x86
{CE009BFA-5EF6-4153-B2A1-2FA79698A9AE}.UseCaptureDefintionsRelease|x86.Build.0 = Release|x86
{F6EDA1F3-3DCD-43F4-8A90-E32DA70C8227}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{F6EDA1F3-3DCD-43F4-8A90-E32DA70C8227}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F6EDA1F3-3DCD-43F4-8A90-E32DA70C8227}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {F6EDA1F3-3DCD-43F4-8A90-E32DA70C8227}.Debug|Mixed Platforms.Build.0 = Debug|x86
+ {F6EDA1F3-3DCD-43F4-8A90-E32DA70C8227}.Debug|Win32.ActiveCfg = Debug|x86
{F6EDA1F3-3DCD-43F4-8A90-E32DA70C8227}.Debug|x86.ActiveCfg = Debug|Any CPU
{F6EDA1F3-3DCD-43F4-8A90-E32DA70C8227}.Debug|x86.Build.0 = Debug|Any CPU
{F6EDA1F3-3DCD-43F4-8A90-E32DA70C8227}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F6EDA1F3-3DCD-43F4-8A90-E32DA70C8227}.Release|Any CPU.Build.0 = Release|Any CPU
+ {F6EDA1F3-3DCD-43F4-8A90-E32DA70C8227}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {F6EDA1F3-3DCD-43F4-8A90-E32DA70C8227}.Release|Mixed Platforms.Build.0 = Release|x86
+ {F6EDA1F3-3DCD-43F4-8A90-E32DA70C8227}.Release|Win32.ActiveCfg = Release|x86
{F6EDA1F3-3DCD-43F4-8A90-E32DA70C8227}.Release|x86.ActiveCfg = Release|Any CPU
{F6EDA1F3-3DCD-43F4-8A90-E32DA70C8227}.Release|x86.Build.0 = Release|Any CPU
{F6EDA1F3-3DCD-43F4-8A90-E32DA70C8227}.UseCaptureCardDefinitions|Any CPU.ActiveCfg = Release|x86
+ {F6EDA1F3-3DCD-43F4-8A90-E32DA70C8227}.UseCaptureCardDefinitions|Mixed Platforms.ActiveCfg = Release|x86
+ {F6EDA1F3-3DCD-43F4-8A90-E32DA70C8227}.UseCaptureCardDefinitions|Mixed Platforms.Build.0 = Release|x86
+ {F6EDA1F3-3DCD-43F4-8A90-E32DA70C8227}.UseCaptureCardDefinitions|Win32.ActiveCfg = Release|x86
{F6EDA1F3-3DCD-43F4-8A90-E32DA70C8227}.UseCaptureCardDefinitions|x86.ActiveCfg = Release|x86
{F6EDA1F3-3DCD-43F4-8A90-E32DA70C8227}.UseCaptureCardDefinitions|x86.Build.0 = Release|x86
{F6EDA1F3-3DCD-43F4-8A90-E32DA70C8227}.UseCaptureDefintionsRelease|Any CPU.ActiveCfg = Release|Any CPU
{F6EDA1F3-3DCD-43F4-8A90-E32DA70C8227}.UseCaptureDefintionsRelease|Any CPU.Build.0 = Release|Any CPU
+ {F6EDA1F3-3DCD-43F4-8A90-E32DA70C8227}.UseCaptureDefintionsRelease|Mixed Platforms.ActiveCfg = Release|x86
+ {F6EDA1F3-3DCD-43F4-8A90-E32DA70C8227}.UseCaptureDefintionsRelease|Mixed Platforms.Build.0 = Release|x86
+ {F6EDA1F3-3DCD-43F4-8A90-E32DA70C8227}.UseCaptureDefintionsRelease|Win32.ActiveCfg = Release|x86
{F6EDA1F3-3DCD-43F4-8A90-E32DA70C8227}.UseCaptureDefintionsRelease|x86.ActiveCfg = Release|x86
{F6EDA1F3-3DCD-43F4-8A90-E32DA70C8227}.UseCaptureDefintionsRelease|x86.Build.0 = Release|x86
{49DFF256-09FD-4598-A3E8-855753E2A1FC}.Debug|Any CPU.ActiveCfg = Debug|x86
{49DFF256-09FD-4598-A3E8-855753E2A1FC}.Debug|Any CPU.Build.0 = Debug|x86
+ {49DFF256-09FD-4598-A3E8-855753E2A1FC}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {49DFF256-09FD-4598-A3E8-855753E2A1FC}.Debug|Mixed Platforms.Build.0 = Debug|x86
+ {49DFF256-09FD-4598-A3E8-855753E2A1FC}.Debug|Win32.ActiveCfg = Debug|x86
{49DFF256-09FD-4598-A3E8-855753E2A1FC}.Debug|x86.ActiveCfg = Debug|x86
{49DFF256-09FD-4598-A3E8-855753E2A1FC}.Debug|x86.Build.0 = Debug|x86
{49DFF256-09FD-4598-A3E8-855753E2A1FC}.Release|Any CPU.ActiveCfg = Release|x86
{49DFF256-09FD-4598-A3E8-855753E2A1FC}.Release|Any CPU.Build.0 = Release|x86
+ {49DFF256-09FD-4598-A3E8-855753E2A1FC}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {49DFF256-09FD-4598-A3E8-855753E2A1FC}.Release|Mixed Platforms.Build.0 = Release|x86
+ {49DFF256-09FD-4598-A3E8-855753E2A1FC}.Release|Win32.ActiveCfg = Release|x86
{49DFF256-09FD-4598-A3E8-855753E2A1FC}.Release|x86.ActiveCfg = Release|x86
{49DFF256-09FD-4598-A3E8-855753E2A1FC}.Release|x86.Build.0 = Release|x86
{49DFF256-09FD-4598-A3E8-855753E2A1FC}.UseCaptureCardDefinitions|Any CPU.ActiveCfg = Release|x86
+ {49DFF256-09FD-4598-A3E8-855753E2A1FC}.UseCaptureCardDefinitions|Mixed Platforms.ActiveCfg = Release|x86
+ {49DFF256-09FD-4598-A3E8-855753E2A1FC}.UseCaptureCardDefinitions|Mixed Platforms.Build.0 = Release|x86
+ {49DFF256-09FD-4598-A3E8-855753E2A1FC}.UseCaptureCardDefinitions|Win32.ActiveCfg = Release|x86
{49DFF256-09FD-4598-A3E8-855753E2A1FC}.UseCaptureCardDefinitions|x86.ActiveCfg = Release|x86
{49DFF256-09FD-4598-A3E8-855753E2A1FC}.UseCaptureDefintionsRelease|Any CPU.ActiveCfg = Release|Any CPU
{49DFF256-09FD-4598-A3E8-855753E2A1FC}.UseCaptureDefintionsRelease|Any CPU.Build.0 = Release|Any CPU
+ {49DFF256-09FD-4598-A3E8-855753E2A1FC}.UseCaptureDefintionsRelease|Mixed Platforms.ActiveCfg = Release|x86
+ {49DFF256-09FD-4598-A3E8-855753E2A1FC}.UseCaptureDefintionsRelease|Mixed Platforms.Build.0 = Release|x86
+ {49DFF256-09FD-4598-A3E8-855753E2A1FC}.UseCaptureDefintionsRelease|Win32.ActiveCfg = Release|x86
{49DFF256-09FD-4598-A3E8-855753E2A1FC}.UseCaptureDefintionsRelease|x86.ActiveCfg = Release|x86
{AE752FB4-7450-4150-9BAD-19EFA9D2AC37}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{AE752FB4-7450-4150-9BAD-19EFA9D2AC37}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {AE752FB4-7450-4150-9BAD-19EFA9D2AC37}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
+ {AE752FB4-7450-4150-9BAD-19EFA9D2AC37}.Debug|Mixed Platforms.Build.0 = Debug|x86
+ {AE752FB4-7450-4150-9BAD-19EFA9D2AC37}.Debug|Win32.ActiveCfg = Debug|x86
{AE752FB4-7450-4150-9BAD-19EFA9D2AC37}.Debug|x86.ActiveCfg = Debug|x86
{AE752FB4-7450-4150-9BAD-19EFA9D2AC37}.Debug|x86.Build.0 = Debug|x86
{AE752FB4-7450-4150-9BAD-19EFA9D2AC37}.Release|Any CPU.ActiveCfg = Release|Any CPU
{AE752FB4-7450-4150-9BAD-19EFA9D2AC37}.Release|Any CPU.Build.0 = Release|Any CPU
+ {AE752FB4-7450-4150-9BAD-19EFA9D2AC37}.Release|Mixed Platforms.ActiveCfg = Release|x86
+ {AE752FB4-7450-4150-9BAD-19EFA9D2AC37}.Release|Mixed Platforms.Build.0 = Release|x86
+ {AE752FB4-7450-4150-9BAD-19EFA9D2AC37}.Release|Win32.ActiveCfg = Release|x86
{AE752FB4-7450-4150-9BAD-19EFA9D2AC37}.Release|x86.ActiveCfg = Release|x86
{AE752FB4-7450-4150-9BAD-19EFA9D2AC37}.Release|x86.Build.0 = Release|x86
{AE752FB4-7450-4150-9BAD-19EFA9D2AC37}.UseCaptureCardDefinitions|Any CPU.ActiveCfg = Release|x86
+ {AE752FB4-7450-4150-9BAD-19EFA9D2AC37}.UseCaptureCardDefinitions|Mixed Platforms.ActiveCfg = Release|x86
+ {AE752FB4-7450-4150-9BAD-19EFA9D2AC37}.UseCaptureCardDefinitions|Mixed Platforms.Build.0 = Release|x86
+ {AE752FB4-7450-4150-9BAD-19EFA9D2AC37}.UseCaptureCardDefinitions|Win32.ActiveCfg = Release|x86
{AE752FB4-7450-4150-9BAD-19EFA9D2AC37}.UseCaptureCardDefinitions|x86.ActiveCfg = Release|x86
{AE752FB4-7450-4150-9BAD-19EFA9D2AC37}.UseCaptureCardDefinitions|x86.Build.0 = Release|x86
{AE752FB4-7450-4150-9BAD-19EFA9D2AC37}.UseCaptureDefintionsRelease|Any CPU.ActiveCfg = Release|Any CPU
{AE752FB4-7450-4150-9BAD-19EFA9D2AC37}.UseCaptureDefintionsRelease|Any CPU.Build.0 = Release|Any CPU
+ {AE752FB4-7450-4150-9BAD-19EFA9D2AC37}.UseCaptureDefintionsRelease|Mixed Platforms.ActiveCfg = Release|x86
+ {AE752FB4-7450-4150-9BAD-19EFA9D2AC37}.UseCaptureDefintionsRelease|Mixed Platforms.Build.0 = Release|x86
+ {AE752FB4-7450-4150-9BAD-19EFA9D2AC37}.UseCaptureDefintionsRelease|Win32.ActiveCfg = Release|x86
{AE752FB4-7450-4150-9BAD-19EFA9D2AC37}.UseCaptureDefintionsRelease|x86.ActiveCfg = Release|x86
{AE752FB4-7450-4150-9BAD-19EFA9D2AC37}.UseCaptureDefintionsRelease|x86.Build.0 = Release|x86
+ {E1A2655B-02A2-437A-8270-4AD81DDDC502}.Debug|Any CPU.ActiveCfg = Debug|Win32
+ {E1A2655B-02A2-437A-8270-4AD81DDDC502}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {E1A2655B-02A2-437A-8270-4AD81DDDC502}.Debug|Mixed Platforms.Build.0 = Debug|Win32
+ {E1A2655B-02A2-437A-8270-4AD81DDDC502}.Debug|Win32.ActiveCfg = Debug|Win32
+ {E1A2655B-02A2-437A-8270-4AD81DDDC502}.Debug|Win32.Build.0 = Debug|Win32
+ {E1A2655B-02A2-437A-8270-4AD81DDDC502}.Debug|x86.ActiveCfg = Debug|Win32
+ {E1A2655B-02A2-437A-8270-4AD81DDDC502}.Release|Any CPU.ActiveCfg = Release|Win32
+ {E1A2655B-02A2-437A-8270-4AD81DDDC502}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {E1A2655B-02A2-437A-8270-4AD81DDDC502}.Release|Mixed Platforms.Build.0 = Release|Win32
+ {E1A2655B-02A2-437A-8270-4AD81DDDC502}.Release|Win32.ActiveCfg = Release|Win32
+ {E1A2655B-02A2-437A-8270-4AD81DDDC502}.Release|Win32.Build.0 = Release|Win32
+ {E1A2655B-02A2-437A-8270-4AD81DDDC502}.Release|x86.ActiveCfg = Release|Win32
+ {E1A2655B-02A2-437A-8270-4AD81DDDC502}.UseCaptureCardDefinitions|Any CPU.ActiveCfg = Release|Win32
+ {E1A2655B-02A2-437A-8270-4AD81DDDC502}.UseCaptureCardDefinitions|Mixed Platforms.ActiveCfg = Release|Win32
+ {E1A2655B-02A2-437A-8270-4AD81DDDC502}.UseCaptureCardDefinitions|Mixed Platforms.Build.0 = Release|Win32
+ {E1A2655B-02A2-437A-8270-4AD81DDDC502}.UseCaptureCardDefinitions|Win32.ActiveCfg = Release|Win32
+ {E1A2655B-02A2-437A-8270-4AD81DDDC502}.UseCaptureCardDefinitions|Win32.Build.0 = Release|Win32
+ {E1A2655B-02A2-437A-8270-4AD81DDDC502}.UseCaptureCardDefinitions|x86.ActiveCfg = Release|Win32
+ {E1A2655B-02A2-437A-8270-4AD81DDDC502}.UseCaptureDefintionsRelease|Any CPU.ActiveCfg = Release|Win32
+ {E1A2655B-02A2-437A-8270-4AD81DDDC502}.UseCaptureDefintionsRelease|Mixed Platforms.ActiveCfg = Release|Win32
+ {E1A2655B-02A2-437A-8270-4AD81DDDC502}.UseCaptureDefintionsRelease|Mixed Platforms.Build.0 = Release|Win32
+ {E1A2655B-02A2-437A-8270-4AD81DDDC502}.UseCaptureDefintionsRelease|Win32.ActiveCfg = Release|Win32
+ {E1A2655B-02A2-437A-8270-4AD81DDDC502}.UseCaptureDefintionsRelease|Win32.Build.0 = Release|Win32
+ {E1A2655B-02A2-437A-8270-4AD81DDDC502}.UseCaptureDefintionsRelease|x86.ActiveCfg = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/mediaportal/MiniDisplayLibrary/MiniDisplayLibrary.csproj b/mediaportal/MiniDisplayLibrary/MiniDisplayLibrary.csproj
index f511782..131315e 100644
--- a/mediaportal/MiniDisplayLibrary/MiniDisplayLibrary.csproj
+++ b/mediaportal/MiniDisplayLibrary/MiniDisplayLibrary.csproj
@@ -107,6 +107,15 @@
Code
+
+
+
+ Form
+
+
+ ImonLcd_AdvancedSetupForm.cs
+
+
@@ -345,6 +354,11 @@
iMONLCDg_AdvancedSetupForm.cs
+
+
+ PreserveNewest
+
+
diff --git a/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/API/Soundgraph/iMONDisplay.dll b/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/API/Soundgraph/iMONDisplay.dll
new file mode 100644
index 0000000..aed34b7
Binary files /dev/null and b/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/API/Soundgraph/iMONDisplay.dll differ
diff --git a/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/ImonBase.cs b/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/ImonBase.cs
new file mode 100644
index 0000000..be812a1
--- /dev/null
+++ b/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/ImonBase.cs
@@ -0,0 +1,239 @@
+using System;
+using System.Collections.Generic;
+using System.Drawing;
+using System.Runtime.InteropServices;
+using System.Text;
+using MediaPortal.GUI.Library;
+
+namespace MediaPortal.ProcessPlugins.MiniDisplayPlugin.Drivers
+{
+ ///
+ /// Base Class for iMON Display API in iMON Manager >= 8.01.0419
+ ///
+ public abstract class ImonBase : IDisplay
+ {
+ public ImonBase()
+ {
+ Disabled = null;
+ ImonErrorMessage = string.Empty;
+ Initialized = false;
+ Line1 = string.Empty;
+ Line2 = string.Empty;
+ }
+
+ protected bool? Disabled { get; set; }
+
+ protected string ImonErrorMessage { get; set;}
+
+ protected bool Initialized { get; set; }
+
+ protected string Line1 { get; set; }
+
+ protected string Line2 { get; set; }
+
+ public string Description { get; protected set; }
+
+ protected string ClassErrorName { get; set; }
+
+ protected string UnsupportedDeviceErrorMessage { get; set; }
+
+ protected int DisplayType { get; set; }
+
+ public string ErrorMessage
+ {
+ get
+ {
+ if (IsDisabled)
+ {
+ return ImonErrorMessage;
+ }
+ return string.Empty;
+ }
+ }
+
+ public bool IsDisabled
+ {
+ get
+ {
+ if (!Disabled.HasValue)
+ {
+ IDWINITRESULT initResult = new IDWINITRESULT();
+ int ret = IDW_Init(initResult);
+ if (ret != DSP_SUCCEEDED)
+ {
+ ImonErrorMessage = DSPResult2String(ret);
+ Disabled = true;
+ Log.Error(string.Format("{0}.IsDisabled: {1}", ClassErrorName, ImonErrorMessage));
+ }
+ else if (initResult.initResult != DSPN_SUCCEEDED)
+ {
+ ImonErrorMessage = DSPNResult2String(initResult.initResult);
+ Disabled = true;
+ Log.Error(string.Format("{0}.IsDisabled: {1}", ClassErrorName, ImonErrorMessage));
+ }
+ else if (initResult.dspType != DisplayType)
+ {
+ ImonErrorMessage = UnsupportedDeviceErrorMessage;
+ Disabled = true;
+ IDW_Uninit();
+ Log.Error(string.Format("{0}.IsDisabled: {1}", ClassErrorName, ImonErrorMessage));
+ }
+ else
+ {
+ Disabled = false;
+ IDW_Uninit();
+ }
+
+ }
+ return Disabled.Value;
+ }
+ }
+
+ public string Name { get; protected set; }
+
+ public bool SupportsGraphics { get { return false; } }
+
+ public bool SupportsText { get { return true; } }
+
+ public virtual void Dispose()
+ {
+ CleanUp();
+ }
+
+ public virtual void Initialize()
+ {
+ Log.Info("(IDisplay) ImonBase.Initialize(): called");
+ if (Initialized)
+ {
+ Log.Info("(IDisplay) ImonBase.Initialize(): already initialized, skipping");
+ return;
+ }
+ if (IsDisabled)
+ {
+ Log.Info("(IDisplay) ImonBase.Initialize(): driver disabled, cannot initialize");
+ return;
+ }
+ IDWINITRESULT initResult = new IDWINITRESULT();
+ IDW_Init(initResult);
+ Initialized = true;
+ Log.Info("(IDisplay) ImonBase.Initialize(): completed");
+ }
+
+ public virtual void CleanUp()
+ {
+ Log.Info("(IDisplay) ImonBase.CleanUp(): called");
+ if (!Initialized)
+ {
+ return;
+ }
+ IDW_Uninit();
+ Initialized = false;
+ Log.Info("(IDisplay) ImonBase.CleanUp(): completed");
+ }
+
+ public abstract void SetLine(int line, string message);
+
+ public virtual void Configure()
+ {
+ // No configuration possible/necessary
+ }
+
+ public void DrawImage(Bitmap bitmap)
+ {
+ // Not supported
+ }
+
+ public void SetCustomCharacters(int[][] customCharacters)
+ {
+ // Not supported
+ }
+
+ public void Setup(string port,
+ int lines, int cols, int delay,
+ int linesG, int colsG, int timeG,
+ bool backLight, int backLightLevel,
+ bool contrast, int contrastLevel,
+ bool BlankOnExit)
+ {
+ // iMON VFD/LCD cannot be setup
+ }
+
+ protected string DSPResult2String(int result)
+ {
+ switch (result)
+ {
+ case DSP_SUCCEEDED:
+ return "Success";
+ case DSP_E_FAIL:
+ return "An unknown error occurred";
+ case DSP_E_OUTOFMEMORY:
+ return "Out of memory";
+ case DSP_E_INVALIDARG:
+ return "One or more arguments are invalid";
+ case DSP_E_NOT_INITED:
+ return "API is not initialized";
+ case DSP_E_POINTER:
+ return "Pointer is invalid";
+ default:
+ return "An unknown error occurred";
+ }
+ }
+
+ protected string DSPNResult2String(int result)
+ {
+ switch (result)
+ {
+ case DSPN_SUCCEEDED:
+ return "Success";
+ case DSPN_ERR_IN_USING:
+ return "Display plug-in is already used by another application";
+ case DSPN_ERR_HW_DISCONNECTED:
+ return "iMON hardware is not connected";
+ case DSPN_ERR_NOT_SUPPORTED_HW:
+ return "The connected hardware does not support the plug-in mode";
+ case DSPN_ERR_PLUGIN_DISABLED:
+ return "The plug-in mode option is disabled";
+ case DSPN_ERR_IMON_NO_REPLY:
+ return "The latest iMON is not installed or iMON is not running";
+ default:
+ return "An unknown error occurred";
+ }
+ }
+
+ protected const int DSP_SUCCEEDED = 0;
+ protected const int DSP_E_FAIL = 1;
+ protected const int DSP_E_OUTOFMEMORY = 2;
+ protected const int DSP_E_INVALIDARG = 3;
+ protected const int DSP_E_NOT_INITED = 4;
+ protected const int DSP_E_POINTER = 5;
+ protected const int DSP_S_INITED = 0x1000;
+ protected const int DSP_S_NOT_INITED = 0x1001;
+ protected const int DSP_S_IN_PLUGIN_MODE = 0x1002;
+ protected const int DSP_S_NOT_IN_PLUGIN_MODE = 0x1003;
+
+ protected const int DSPN_SUCCEEDED = 0;
+ protected const int DSPN_ERR_IN_USING = 0x0100;
+ protected const int DSPN_ERR_HW_DISCONNECTED = 0x0101;
+ protected const int DSPN_ERR_NOT_SUPPORTED_HW = 0x0102;
+ protected const int DSPN_ERR_PLUGIN_DISABLED = 0x0103;
+ protected const int DSPN_ERR_IMON_NO_REPLY = 0x0104;
+ protected const int DSPN_ERR_UNKNOWN = 0x0200;
+
+ protected const int DSPN_DSP_NONE = 0;
+ protected const int DSPN_DSP_VFD = 0x01;
+ protected const int DSPN_DSP_LCD = 0x02;
+
+ [StructLayout(LayoutKind.Sequential)]
+ protected class IDWINITRESULT
+ {
+ public int initResult;
+ public int dspType;
+ }
+
+ [DllImport("iMONDisplayWrapper.dll")]
+ protected static extern int IDW_Init(IDWINITRESULT initResult);
+
+ [DllImport("iMONDisplayWrapper.dll")]
+ protected static extern int IDW_Uninit();
+ }
+}
diff --git a/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/ImonLcd.cs b/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/ImonLcd.cs
new file mode 100644
index 0000000..e4794de
--- /dev/null
+++ b/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/ImonLcd.cs
@@ -0,0 +1,918 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Runtime.InteropServices;
+using System.Text;
+using System.Threading;
+using System.Windows.Forms;
+using System.Xml;
+using System.Xml.Serialization;
+using MediaPortal.Configuration;
+using MediaPortal.GUI.Library;
+using MediaPortal.Player;
+using Microsoft.Win32;
+
+namespace MediaPortal.ProcessPlugins.MiniDisplayPlugin.Drivers
+{
+ ///
+ /// iMON LCD Driver for iMON Manager >= 8.01.0419
+ ///
+ public class ImonLcd : ImonBase
+ {
+ Thread _monitorMediaThread;
+ volatile bool _stopMonitorMediaThread = false;
+ MediaTypes _currentMediaTypes;
+ const int MediaTotalTime = 100;
+ int _currentMediaCurrentPosition = 0;
+ byte _currentSpeakers = 0;
+ byte _currentSpeakerRR = 0;
+ byte _currentVideoCodecs = 0;
+ byte _currentAudioCodecs = 0;
+ byte _currentAspectRatioIcons = 0;
+ ImonMediaInfo _videoMediaInfo = new ImonMediaInfo();
+ ImonMediaInfo _audioMediaInfo = new ImonMediaInfo();
+ ActiveWindowInfo _activeWindowInfo = new ActiveWindowInfo();
+ private AdvancedSettings AdvSettings;
+ bool _preferLine1General;
+ bool _preferLine1Playback;
+
+ public ImonLcd()
+ {
+ UnsupportedDeviceErrorMessage = "Only LCDs are supported";
+ Description = "iMON LCD for iMON Manager >= 8.01.0419";
+ Name = "iMONLCD";
+ DisplayType = DSPN_DSP_LCD;
+
+ LoadAdvancedSettings();
+ AdvancedSettings.OnSettingsChanged +=
+ AdvancedSettings_OnSettingsChanged;
+
+ SystemEvents.PowerModeChanged +=
+ SystemEvents_PowerModeChanged;
+ }
+
+ private void SystemEvents_PowerModeChanged(object sender, PowerModeChangedEventArgs e)
+ {
+ Log.Info("(IDisplay) ImonLcd.SystemEvents_PowerModeChanged() called, power mode is now " + e.Mode.ToString());
+ SetDefaults();
+ Log.Info("(IDisplay) ImonLcd.SystemEvents_PowerModeChanged() completed");
+ }
+
+ private void SetDefaults()
+ {
+ Log.Info("(IDisplay) ImonLcd.SetDefaults() called");
+ _stopMonitorMediaThread = false;
+ _currentMediaCurrentPosition = 0;
+ _currentSpeakers = 0;
+ _currentSpeakerRR = 0;
+ _currentVideoCodecs = 0;
+ _currentAudioCodecs = 0;
+ _currentAspectRatioIcons = 0;
+ Log.Info("(IDisplay) ImonLcd.SetDefaults() completed");
+ }
+
+ [Flags]
+ enum OrangeDiskPieces : byte
+ {
+ Piece1 = 0x80, // top piece
+ Piece2 = 0x40, // next piece counter-clockwise
+ Piece3 = 0x20, // and so on...
+ Piece4 = 0x10,
+ Piece5 = 0x8,
+ Piece6 = 0x4,
+ Piece7 = 0x2,
+ Piece8 = 0x1,
+ None = 0x0
+ }
+
+ enum OrangeDiskIcon : byte
+ {
+ On = 0x80,
+ Off = 0x0
+ }
+
+ [Flags]
+ enum MediaTypes : byte
+ {
+ Music = 0x80,
+ Movie = 0x40,
+ Photo = 0x20,
+ Cd_Dvd = 0x10,
+ Tv = 0x8,
+ WebCasting = 0x4,
+ News_Weather = 0x2,
+ None = 0x0
+ }
+
+ [Flags]
+ enum Speakers : byte
+ {
+ L = 0x80,
+ C = 0x40,
+ R = 0x20,
+ SL = 0x10,
+ LFE = 0x8,
+ SR = 0x4,
+ RL = 0x2,
+ SPDIF = 0x1,
+ None = 0x0
+ }
+
+ enum SpeakersRR : byte
+ {
+ RR = 0x80,
+ Off = 0x0
+ }
+
+ [Flags]
+ enum VideoCodecs : byte
+ {
+ MPG = 0x80,
+ DIVX = 0x40,
+ XVID = 0x20,
+ WMV = 0x10,
+ MPG2 = 0x8,
+ AC3 = 0x4,
+ DTS = 0x2,
+ WMA = 0x1,
+ None = 0x0
+ }
+
+ [Flags]
+ enum AudioCodecs : byte
+ {
+ MP3 = 0x80,
+ OGG = 0x40,
+ WMA = 0x20,
+ WAV = 0x10,
+ None = 0x0
+ }
+
+ [Flags]
+ enum AspectRatios : byte
+ {
+ SRC = 0x80,
+ FIT = 0x40,
+ TV = 0x20,
+ HDTV = 0x10,
+ SCR1 = 0x8,
+ SCR2 = 0x4,
+ None = 0x0
+ }
+
+ [Flags]
+ enum EtcIcons : byte
+ {
+ Repeat = 0x80,
+ Shuffle = 0x40,
+ Alarm = 0x20,
+ Recording = 0x10,
+ Volume = 0x8,
+ Time = 0x4,
+ None = 0x0
+ }
+
+ public override void Configure()
+ {
+ Log.Info("(IDisplay) ImonLcd.Configure() called");
+ Form form = new ImonLcd_AdvancedSetupForm();
+ form.ShowDialog();
+ form.Dispose();
+ Log.Info("(IDisplay) ImonLcd.Configure() completed");
+ }
+
+ public override void SetLine(int line, string message)
+ {
+ Log.Info("(IDisplay) ImonLcd.SetLine() called");
+ if (message == null)
+ {
+ Log.Info("(IDisplay) ImonLcd.SetDefaults(): empty message, return");
+ return;
+ }
+
+ int lineToCheckFirst, lineToCheckSecond;
+ if (g_Player.Player != null && g_Player.Player.Playing)
+ {
+ Log.Info("(IDisplay) ImonLcd.SetLine(): determing line to display during playback");
+ if (_preferLine1Playback)
+ {
+ lineToCheckFirst = 0;
+ lineToCheckSecond = 1;
+ }
+ else
+ {
+ lineToCheckFirst = 1;
+ lineToCheckSecond = 0;
+ }
+ }
+ else
+ {
+ Log.Info("(IDisplay) ImonLcd.SetLine(): determine line to display during general use");
+ if (_preferLine1General)
+ {
+ lineToCheckFirst = 0;
+ lineToCheckSecond = 1;
+ }
+ else
+ {
+ lineToCheckFirst = 1;
+ lineToCheckSecond = 0;
+ }
+ }
+ Log.Info("(IDisplay) ImonLcd.SetLine(): preferred 0-based line: " + lineToCheckFirst);
+
+ if (line == lineToCheckFirst)
+ {
+ Line1 = message;
+ IDW_SetLcdText(Line1);
+ Log.Info("(IDisplay) ImonLcd.SetLine(): displaying 0-based line (first choice): " + line + ", message: " + Line1);
+ }
+ else if (line == lineToCheckSecond)
+ {
+ if (Line1.Trim().Length == 0 && message.Length > 0)
+ {
+ Line1 = message;
+ IDW_SetLcdText(Line1);
+ Log.Info("(IDisplay) ImonLcd.SetLine(): displaying 0-based line (second choice): " + line + ", message: " + Line1);
+ }
+ }
+ Log.Info("(IDisplay) ImonLcd.SetDefaults() completed");
+ }
+
+ private void MonitorMedia()
+ {
+ Log.Info("(IDisplay) ImonLcd.MonitorMedia() called");
+ while (true)
+ {
+ Log.Info("(IDisplay) ImonLcd.MonitorMedia() thread loop begin");
+ if (_stopMonitorMediaThread)
+ {
+ IDW_SetLcdAllIcons(false);
+ return;
+ }
+
+ SetMediaTypeIcons();
+ SetCodecs();
+ SetMediaProgress();
+ SetSpeakerConfig();
+ SetAspectRatio();
+
+ Thread.Sleep(300);
+ Log.Info("(IDisplay) ImonLcd.MonitorMedia() thread loop end");
+ }
+ Log.Info("(IDisplay) ImonLcd.MonitorMedia() complete");
+ }
+
+ private void SetAspectRatio()
+ {
+ Log.Info("(IDisplay) ImonLcd.SetAspectRatio() called");
+ byte newAspectRatioIcons = 0;
+
+ if (g_Player.Player != null && g_Player.Player.Playing &&
+ g_Player.MediaInfo != null && g_Player.IsVideo)
+ {
+ int videoHeight = g_Player.MediaInfo.Height;
+
+ if (videoHeight >= 720)
+ {
+ newAspectRatioIcons |= (byte)AspectRatios.HDTV;
+ }
+ else if (videoHeight > 0)
+ {
+ newAspectRatioIcons |= (byte)AspectRatios.TV;
+ }
+ Log.Info("(IDisplay) ImonLcd.SetAspectRatio(): determined video height: " + videoHeight);
+
+ if (g_Player.ARType == Geometry.Type.Original)
+ {
+ newAspectRatioIcons |= (byte)AspectRatios.SRC;
+ }
+ else
+ {
+ newAspectRatioIcons |= (byte)AspectRatios.FIT;
+ }
+ Log.Info("(IDisplay) ImonLcd.SetAspectRatio(): determined ARType: " + g_Player.ARType.ToString());
+ }
+ else
+ {
+ newAspectRatioIcons = 0;
+ }
+
+ if (newAspectRatioIcons != _currentAspectRatioIcons)
+ {
+ Log.Info("(IDisplay) ImonLcd.SetAspectRatio(): new settings found, call API");
+ IDW_SetLcdAspectRatioIcon(newAspectRatioIcons);
+ _currentAspectRatioIcons = newAspectRatioIcons;
+ }
+ Log.Info("(IDisplay) ImonLcd.SetAspectRatio() completed");
+ }
+
+ private void SetSpeakerConfig()
+ {
+ Log.Info("(IDisplay) ImonLcd.SetSpeakerConfig() called");
+ byte newSpeakers = 0, newSpeakerRR = 0;
+
+ if (g_Player.Player != null && g_Player.Player.Playing && g_Player.MediaInfo != null)
+ {
+ switch (g_Player.MediaInfo.AudioChannels)
+ {
+ case 1: // mono
+ case 2: // stereo
+ newSpeakers |= (byte)Speakers.L;
+ newSpeakers |= (byte)Speakers.R;
+ break;
+ case 3: // 2.1
+ newSpeakers |= (byte)Speakers.L;
+ newSpeakers |= (byte)Speakers.R;
+ newSpeakers |= (byte)Speakers.LFE;
+ break;
+ case 4: // quad
+ newSpeakers |= (byte)Speakers.L;
+ newSpeakers |= (byte)Speakers.R;
+ newSpeakers |= (byte)Speakers.SL;
+ newSpeakers |= (byte)Speakers.SR;
+ break;
+ case 5: // surround
+ newSpeakers |= (byte)Speakers.L;
+ newSpeakers |= (byte)Speakers.R;
+ newSpeakers |= (byte)Speakers.SL;
+ newSpeakers |= (byte)Speakers.SR;
+ newSpeakers |= (byte)Speakers.C;
+ break;
+ case 6: // 5.1
+ newSpeakers |= (byte)Speakers.L;
+ newSpeakers |= (byte)Speakers.R;
+ newSpeakers |= (byte)Speakers.RL;
+ newSpeakers |= (byte)Speakers.C;
+ newSpeakers |= (byte)Speakers.LFE;
+ newSpeakerRR |= (byte)SpeakersRR.RR;
+ break;
+ case 7: // 6.1
+ newSpeakers |= (byte)Speakers.L;
+ newSpeakers |= (byte)Speakers.R;
+ newSpeakers |= (byte)Speakers.SL;
+ newSpeakers |= (byte)Speakers.SR;
+ newSpeakers |= (byte)Speakers.C;
+ newSpeakers |= (byte)Speakers.LFE;
+ newSpeakers |= (byte)Speakers.RL;
+ break;
+ case 8: // 7.1
+ newSpeakers |= (byte)Speakers.L;
+ newSpeakers |= (byte)Speakers.R;
+ newSpeakers |= (byte)Speakers.SL;
+ newSpeakers |= (byte)Speakers.SR;
+ newSpeakers |= (byte)Speakers.C;
+ newSpeakers |= (byte)Speakers.LFE;
+ newSpeakers |= (byte)Speakers.RL;
+ newSpeakerRR |= (byte)SpeakersRR.RR;
+ break;
+ default: // no audio/unknown
+ newSpeakers = newSpeakerRR = 0;
+ break;
+ }
+ Log.Info("(IDisplay) ImonLcd.SetSpeakerConfig(): determined speaker config, speakers: " + newSpeakers + ", speakerRR: " + newSpeakerRR);
+ }
+ else
+ {
+ newSpeakers = newSpeakerRR = 0;
+ }
+ if (newSpeakers != _currentSpeakers || newSpeakerRR != _currentSpeakerRR)
+ {
+ Log.Info("(IDisplay) ImonLcd.SetSpeakerConfig(): new settings found, call API");
+ IDW_SetLcdSpeakerIcon(newSpeakers, newSpeakerRR);
+ _currentSpeakers = newSpeakers;
+ _currentSpeakerRR = newSpeakerRR;
+ }
+ Log.Info("(IDisplay) ImonLcd.SetSpeakerConfig() completed");
+ }
+
+ private void SetCodecs()
+ {
+ Log.Info("(IDisplay) ImonLcd.SetCodecs() called");
+ byte newVideoCodecs = 0;
+ byte newAudioCodecs = 0;
+ if (g_Player.Player != null && g_Player.Player.Playing)
+ {
+ if (g_Player.MediaInfo != null && g_Player.IsVideo)
+ {
+ // video playback
+ _videoMediaInfo.Format = g_Player.MediaInfo.VideoCodec;
+ _audioMediaInfo.Format = g_Player.MediaInfo.AudioCodec;
+
+ // video stream
+ if (_videoMediaInfo.IsMpg)
+ {
+ newVideoCodecs |= (byte)VideoCodecs.MPG;
+ }
+ else if (_videoMediaInfo.IsMpg2)
+ {
+ newVideoCodecs |= (byte)VideoCodecs.MPG2;
+ }
+ else if (_videoMediaInfo.IsDivx)
+ {
+ newVideoCodecs |= (byte)VideoCodecs.DIVX;
+ }
+ else if (_videoMediaInfo.IsXvid)
+ {
+ newVideoCodecs |= (byte)VideoCodecs.XVID;
+ }
+ else if (_videoMediaInfo.IsWmv)
+ {
+ newVideoCodecs |= (byte)VideoCodecs.WMV;
+ }
+
+ // audio stream
+ if (_audioMediaInfo.IsMp3)
+ {
+ newAudioCodecs |= (byte)AudioCodecs.MP3;
+ }
+ else if (_audioMediaInfo.IsWma)
+ {
+ newVideoCodecs |= (byte)VideoCodecs.WMA;
+ }
+ else if (_audioMediaInfo.IsDts)
+ {
+ newVideoCodecs |= (byte)VideoCodecs.DTS;
+ }
+ else if (_audioMediaInfo.IsAc3)
+ {
+ newVideoCodecs |= (byte)VideoCodecs.AC3;
+ }
+ else if (_audioMediaInfo.IsOgg)
+ {
+ newAudioCodecs |= (byte)AudioCodecs.OGG;
+ }
+ Log.Info("(IDisplay) ImonLcd.SetCodecs(): determined video codec: " + newVideoCodecs);
+ Log.Info("(IDisplay) ImonLcd.SetCodecs(): determined audio codec: " + newAudioCodecs);
+ }
+ else if (g_Player.IsMusic)
+ {
+ // music playback
+ string currentFile = GUIPropertyManager.GetProperty("#Play.Current.File");
+ Log.Info("(IDisplay) ImonLcd.SetCodecs(): determined current music file: " + currentFile);
+ if (currentFile != null && currentFile.Length > 0)
+ {
+ string extension = System.IO.Path.GetExtension(currentFile).ToUpper();
+
+ switch (extension)
+ {
+ case ".MP3":
+ newAudioCodecs |= (byte)AudioCodecs.MP3;
+ break;
+ case ".OGG":
+ newAudioCodecs |= (byte)AudioCodecs.OGG;
+ break;
+ case ".WMA":
+ newAudioCodecs |= (byte)AudioCodecs.WMA;
+ break;
+ case ".WAV":
+ newAudioCodecs |= (byte)AudioCodecs.WAV;
+ break;
+ default:
+ break;
+ }
+ Log.Info("(IDisplay) ImonLcd.SetCodecs(): determined music codec by extension: " + newAudioCodecs);
+ }
+ }
+ }
+ else
+ {
+ newVideoCodecs = 0;
+ }
+
+ if (newVideoCodecs != _currentVideoCodecs)
+ {
+ Log.Info("(IDisplay) ImonLcd.SetCodecs(): new video settings found, call API");
+ IDW_SetLcdVideoCodecIcon(newVideoCodecs);
+ _currentVideoCodecs = newVideoCodecs;
+ }
+
+ if (newAudioCodecs != _currentAudioCodecs)
+ {
+ Log.Info("(IDisplay) ImonLcd.SetCodecs(): new audio settings found, call API");
+ IDW_SetLcdAudioCodecIcon(newAudioCodecs);
+ _currentAudioCodecs = newAudioCodecs;
+ }
+ Log.Info("(IDisplay) ImonLcd.SetCodecs() completed");
+ }
+
+ private void SetMediaProgress()
+ {
+ Log.Info("(IDisplay) ImonLcd.SetMediaProgress() called");
+ int newMediaCurrentPosition = 0;
+
+ if (g_Player.Player != null && g_Player.Player.Playing)
+ {
+ double duration = g_Player.Duration;
+ double currentPosition = g_Player.CurrentPosition;
+ if (duration == 0)
+ {
+ newMediaCurrentPosition = 0;
+ }
+ else
+ {
+ newMediaCurrentPosition =
+ (int)((g_Player.CurrentPosition / g_Player.Duration) * MediaTotalTime);
+ }
+ Log.Info("(IDisplay) ImonLcd.SetMediaProgress(): determined media position: " + newMediaCurrentPosition);
+ }
+ else
+ {
+ newMediaCurrentPosition = 0;
+ }
+
+ if (newMediaCurrentPosition != _currentMediaCurrentPosition)
+ {
+ Log.Info("(IDisplay) ImonLcd.SetMediaProgress(): new settings found, call API");
+ IDW_SetLcdProgress(newMediaCurrentPosition, MediaTotalTime);
+ _currentMediaCurrentPosition = newMediaCurrentPosition;
+ }
+ Log.Info("(IDisplay) ImonLcd.SetMediaProgress() completed");
+ }
+
+ private void SetMediaTypeIcons()
+ {
+ Log.Info("(IDisplay) ImonLcd.SetMediaTypeIcons() called");
+ MediaTypes newMediaTypes = MediaTypes.None;
+
+ _activeWindowInfo.ActiveWindow = GUIWindowManager.ActiveWindow;
+ if (_activeWindowInfo.IsWeather)
+ {
+ newMediaTypes |= MediaTypes.News_Weather;
+ Log.Info("(IDisplay) ImonLcd.SetMediaTypeIcons(): in weather plugin");
+ }
+
+ if (g_Player.Player != null && g_Player.Player.Playing)
+ {
+ if (g_Player.IsCDA)
+ {
+ newMediaTypes |= MediaTypes.Cd_Dvd;
+ newMediaTypes |= MediaTypes.Music;
+ }
+ if (g_Player.IsDVD || g_Player.IsDVDMenu)
+ {
+ newMediaTypes |= MediaTypes.Cd_Dvd;
+ newMediaTypes |= MediaTypes.Movie;
+ }
+ if (g_Player.IsMusic)
+ {
+ newMediaTypes |= MediaTypes.Music;
+ }
+ if (g_Player.IsTV || g_Player.IsTVRecording)
+ {
+ newMediaTypes |= MediaTypes.Tv;
+ }
+ if (g_Player.IsVideo)
+ {
+ newMediaTypes |= MediaTypes.Movie;
+ }
+ if (_activeWindowInfo.IsWebCasting)
+ {
+ newMediaTypes |= MediaTypes.WebCasting;
+ }
+ Log.Info("(IDisplay) ImonLcd.SetMediaTypeIcons(): determined media type: " + newMediaTypes);
+ }
+
+ if (_currentMediaTypes != newMediaTypes)
+ {
+ Log.Info("(IDisplay) ImonLcd.SetMediaTypeIcons(): new settings found, call API");
+ IDW_SetLcdMediaTypeIcon((byte)newMediaTypes);
+ _currentMediaTypes = newMediaTypes;
+ }
+ Log.Info("(IDisplay) ImonLcd.SetMediaTypeIcons() completed");
+ }
+
+ public override void Initialize()
+ {
+ Log.Info("(IDisplay) ImonLcd.Initialize() called");
+ base.Initialize();
+ _monitorMediaThread = new Thread(new ThreadStart(MonitorMedia));
+ _monitorMediaThread.Start();
+ Log.Info("(IDisplay) ImonLcd.Initialize() completed");
+ }
+
+ public override void CleanUp()
+ {
+ Log.Info("(IDisplay) ImonLcd.CleanUp(): called");
+ if (!Initialized)
+ {
+ return;
+ }
+
+ _stopMonitorMediaThread = true;
+ int maxWaitTime = 10000; // 10 seconds
+ int waitTime = 0;
+ while (_monitorMediaThread.IsAlive)
+ {
+ waitTime += 200;
+ Thread.Sleep(200);
+ if (waitTime >= maxWaitTime)
+ {
+ try
+ {
+ _monitorMediaThread.Abort();
+ }
+ catch (ThreadAbortException ex)
+ {
+ Log.Error(
+ "(IDisplay) ImonLcd.CleanUp(): unable to exit mediaMonitorThread cleanly: "
+ + ex.Message + "\n" + ex.StackTrace);
+ }
+ break;
+ }
+ }
+
+ IDW_Uninit();
+ Initialized = false;
+ Log.Info("(IDisplay) ImonLcd.CleanUp(): completed");
+ }
+
+ public override void Dispose()
+ {
+ base.Dispose();
+
+ AdvancedSettings.OnSettingsChanged -=
+ AdvancedSettings_OnSettingsChanged;
+ SystemEvents.PowerModeChanged -=
+ SystemEvents_PowerModeChanged;
+ }
+
+ private void LoadAdvancedSettings()
+ {
+ AdvSettings = AdvancedSettings.Load();
+ _preferLine1General = AdvSettings.PreferFirstLineGeneral;
+ _preferLine1Playback = AdvSettings.PreferFirstLinePlayback;
+ }
+
+ private void AdvancedSettings_OnSettingsChanged()
+ {
+ Log.Info("ImonLcd.AdvancedSettings_OnSettingsChanged(): RELOADING SETTINGS");
+
+ CleanUp();
+ Thread.Sleep(100);
+ LoadAdvancedSettings();
+
+ Initialize();
+ }
+
+ [DllImport("iMONDisplayWrapper.dll")]
+ private static extern int IDW_SetLcdText(
+ [MarshalAs(UnmanagedType.LPWStr)] string line);
+
+ [DllImport("iMONDisplayWrapper.dll")]
+ private static extern int IDW_SetLcdAllIcons(
+ [MarshalAs(UnmanagedType.Bool)] bool on);
+
+ [DllImport("iMONDisplayWrapper.dll")]
+ private static extern int IDW_SetLcdOrangeIcon(
+ byte iconData1, byte iconData2);
+
+ [DllImport("iMONDisplayWrapper.dll")]
+ private static extern int IDW_SetLcdMediaTypeIcon(byte iconData);
+
+ [DllImport("iMONDisplayWrapper.dll")]
+ private static extern int IDW_SetLcdSpeakerIcon(
+ byte iconData1, byte iconData2);
+
+ [DllImport("iMONDisplayWrapper.dll")]
+ private static extern int IDW_SetLcdVideoCodecIcon(byte iconData);
+
+ [DllImport("iMONDisplayWrapper.dll")]
+ private static extern int IDW_SetLcdAudioCodecIcon(byte iconData);
+
+ [DllImport("iMONDisplayWrapper.dll")]
+ private static extern int IDW_SetLcdAspectRatioIcon(byte iconData);
+
+ [DllImport("iMONDisplayWrapper.dll")]
+ private static extern int IDW_SetLcdEtcIcon(byte iconData);
+
+ [DllImport("iMONDisplayWrapper.dll")]
+ private static extern int IDW_SetLcdProgress(
+ int currentPosition, int total);
+
+ private class ImonMediaInfo
+ {
+ const string _mpgCodec = "MPEG VIDEO";
+ readonly string[] _divxCodecs = { "DX50", "DIVX", "DIV3", "3IV" };
+ const string _xvidCodec = "XVID";
+ const string _wmvCodec = "VC-1";
+ const string _mpg2Codec = "AVC";
+ const string _dtsCodec = "DTS";
+ const string _wmaCodec = "WMA";
+ const string _ac3Codec = "AC-3";
+ const string _mp3Codec = "LAYER 3";
+ const string _oggCodec = "VORBIS";
+ private string _format;
+
+ public string Format
+ {
+ get { return _format; }
+ set
+ {
+ _format = value;
+ if (_format != null && _format.Length > 0)
+ {
+ _format = _format.ToUpper();
+ }
+ }
+ }
+
+ public bool IsMpg
+ {
+ get { return IsCodec(_mpgCodec); }
+ }
+
+ public bool IsDivx
+ {
+ get
+ {
+ if (Format != null && Format.Length > 0)
+ {
+ foreach (string codec in _divxCodecs)
+ {
+ if (Format.IndexOf(codec) >= 0)
+ {
+ return true;
+ }
+ }
+ return false;
+ }
+ return false;
+ }
+ }
+
+ public bool IsXvid
+ {
+ get { return IsCodec(_xvidCodec); }
+ }
+
+ public bool IsWmv
+ {
+ get { return IsCodec(_wmvCodec); }
+ }
+
+ public bool IsMpg2
+ {
+ get { return IsCodec(_mpg2Codec); }
+ }
+
+ public bool IsWma
+ {
+ get { return IsCodec(_wmaCodec); }
+ }
+
+ public bool IsDts
+ {
+ get { return IsCodec(_dtsCodec); }
+ }
+
+ public bool IsAc3
+ {
+ get { return IsCodec(_ac3Codec); }
+ }
+
+ public bool IsMp3
+ {
+ get { return IsCodec(_mp3Codec); }
+ }
+
+ public bool IsOgg
+ {
+ get { return IsCodec(_oggCodec); }
+ }
+
+ private bool IsCodec(string codec)
+ {
+ if (Format != null && Format.Length > 0)
+ {
+ if (Format.IndexOf(codec) >= 0)
+ {
+ return true;
+ }
+ return false;
+ }
+ return false;
+ }
+ }
+
+ private class ActiveWindowInfo
+ {
+ const int Weather = (int)GUIWindow.Window.WINDOW_WEATHER;
+ readonly int[] MyNetflix = { 10099 };
+ readonly int[] MyOnlineVideos = { 4755, 4757, 4758, 4759 };
+ readonly int[] MyTrailers = { 5900 };
+
+ readonly List OnlineStreamingPluginWindows;
+
+ public int ActiveWindow { get; set; }
+
+ public bool IsWeather
+ {
+ get { return ActiveWindow == Weather; }
+ }
+
+ public bool IsWebCasting
+ {
+ get { return OnlineStreamingPluginWindows.Contains(ActiveWindow); }
+ }
+
+ public ActiveWindowInfo()
+ {
+ OnlineStreamingPluginWindows = new List();
+ OnlineStreamingPluginWindows.AddRange(MyNetflix);
+ OnlineStreamingPluginWindows.AddRange(MyOnlineVideos);
+ OnlineStreamingPluginWindows.AddRange(MyTrailers);
+ }
+ }
+
+ [Serializable]
+ public class AdvancedSettings
+ {
+ #region Delegates
+
+ public delegate void OnSettingsChangedHandler();
+
+ #endregion
+
+ private static AdvancedSettings m_Instance;
+ public const string m_Filename = "MiniDisplay_ImonLcd.xml";
+
+ public static AdvancedSettings Instance
+ {
+ get
+ {
+ if (m_Instance == null)
+ {
+ m_Instance = Load();
+ }
+ return m_Instance;
+ }
+ set { m_Instance = value; }
+ }
+
+ [XmlAttribute]
+ public bool PreferFirstLineGeneral { get; set; }
+
+ [XmlAttribute]
+ public bool PreferFirstLinePlayback { get; set; }
+
+ public static event OnSettingsChangedHandler OnSettingsChanged;
+
+ private static void Default(AdvancedSettings _settings)
+ {
+ _settings.PreferFirstLineGeneral = true;
+ _settings.PreferFirstLinePlayback = true;
+ }
+
+ public static AdvancedSettings Load()
+ {
+ AdvancedSettings settings;
+ Log.Info("ImonLcd.AdvancedSettings.Load(): started");
+ if (File.Exists(Config.GetFile(Config.Dir.Config, m_Filename)))
+ {
+ Log.Info("ImonLcd.AdvancedSettings.Load(): Loading settings from XML file");
+ var serializer = new XmlSerializer(typeof(AdvancedSettings));
+ var xmlReader = new XmlTextReader(Config.GetFile(Config.Dir.Config, m_Filename));
+ settings = (AdvancedSettings)serializer.Deserialize(xmlReader);
+ xmlReader.Close();
+ }
+ else
+ {
+ Log.Info("ImonLcd.AdvancedSettings.Load(): Loading settings from defaults");
+ settings = new AdvancedSettings();
+ Default(settings);
+ Log.Info("ImonLcd.AdvancedSettings.Load(): Loaded settings from defaults");
+ }
+ Log.Info("ImonLcd.AdvancedSettings.Load(): completed");
+ return settings;
+ }
+
+ public static void NotifyDriver()
+ {
+ if (OnSettingsChanged != null)
+ {
+ OnSettingsChanged();
+ }
+ }
+
+ public static void Save()
+ {
+ Save(Instance);
+ }
+
+ public static void Save(AdvancedSettings ToSave)
+ {
+ var serializer = new XmlSerializer(typeof(AdvancedSettings));
+ var writer = new XmlTextWriter(Config.GetFile(Config.Dir.Config, m_Filename),
+ Encoding.UTF8) { Formatting = Formatting.Indented, Indentation = 2 };
+ serializer.Serialize(writer, ToSave);
+ writer.Close();
+ }
+
+ public static void SetDefaults()
+ {
+ Default(Instance);
+ }
+ }
+ }
+}
diff --git a/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/ImonLcd_AdvancedSetupForm.Designer.cs b/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/ImonLcd_AdvancedSetupForm.Designer.cs
new file mode 100644
index 0000000..64ef381
--- /dev/null
+++ b/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/ImonLcd_AdvancedSetupForm.Designer.cs
@@ -0,0 +1,162 @@
+namespace MediaPortal.ProcessPlugins.MiniDisplayPlugin.Drivers
+{
+ partial class ImonLcd_AdvancedSetupForm
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.btnOK = new MediaPortal.UserInterface.Controls.MPButton();
+ this.gbxLineOptions = new System.Windows.Forms.GroupBox();
+ this.gbxPlayback = new System.Windows.Forms.GroupBox();
+ this.rbtnPlaybackSecondLine = new System.Windows.Forms.RadioButton();
+ this.rbtnPlaybackFirstLine = new System.Windows.Forms.RadioButton();
+ this.gbxGeneral = new System.Windows.Forms.GroupBox();
+ this.rbtnGeneralSecondLine = new System.Windows.Forms.RadioButton();
+ this.rbtnGeneralFirstLine = new System.Windows.Forms.RadioButton();
+ this.gbxLineOptions.SuspendLayout();
+ this.gbxPlayback.SuspendLayout();
+ this.gbxGeneral.SuspendLayout();
+ this.SuspendLayout();
+ //
+ // btnOK
+ //
+ this.btnOK.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+ this.btnOK.Location = new System.Drawing.Point(244, 141);
+ this.btnOK.Name = "btnOK";
+ this.btnOK.Size = new System.Drawing.Size(78, 23);
+ this.btnOK.TabIndex = 7;
+ this.btnOK.Text = "&OK";
+ this.btnOK.UseVisualStyleBackColor = true;
+ this.btnOK.Click += new System.EventHandler(this.btnOK_Click);
+ //
+ // gbxLineOptions
+ //
+ this.gbxLineOptions.Controls.Add(this.gbxPlayback);
+ this.gbxLineOptions.Controls.Add(this.gbxGeneral);
+ this.gbxLineOptions.Location = new System.Drawing.Point(13, 13);
+ this.gbxLineOptions.Name = "gbxLineOptions";
+ this.gbxLineOptions.Size = new System.Drawing.Size(309, 123);
+ this.gbxLineOptions.TabIndex = 8;
+ this.gbxLineOptions.TabStop = false;
+ this.gbxLineOptions.Text = "Line Options";
+ //
+ // gbxPlayback
+ //
+ this.gbxPlayback.Controls.Add(this.rbtnPlaybackSecondLine);
+ this.gbxPlayback.Controls.Add(this.rbtnPlaybackFirstLine);
+ this.gbxPlayback.Location = new System.Drawing.Point(7, 69);
+ this.gbxPlayback.Name = "gbxPlayback";
+ this.gbxPlayback.Size = new System.Drawing.Size(296, 43);
+ this.gbxPlayback.TabIndex = 1;
+ this.gbxPlayback.TabStop = false;
+ this.gbxPlayback.Text = "During Playback";
+ //
+ // rbtnPlaybackSecondLine
+ //
+ this.rbtnPlaybackSecondLine.AutoSize = true;
+ this.rbtnPlaybackSecondLine.Location = new System.Drawing.Point(145, 18);
+ this.rbtnPlaybackSecondLine.Name = "rbtnPlaybackSecondLine";
+ this.rbtnPlaybackSecondLine.Size = new System.Drawing.Size(116, 17);
+ this.rbtnPlaybackSecondLine.TabIndex = 3;
+ this.rbtnPlaybackSecondLine.TabStop = true;
+ this.rbtnPlaybackSecondLine.Text = "Prefer Second Line";
+ this.rbtnPlaybackSecondLine.UseVisualStyleBackColor = true;
+ //
+ // rbtnPlaybackFirstLine
+ //
+ this.rbtnPlaybackFirstLine.AutoSize = true;
+ this.rbtnPlaybackFirstLine.Location = new System.Drawing.Point(7, 19);
+ this.rbtnPlaybackFirstLine.Name = "rbtnPlaybackFirstLine";
+ this.rbtnPlaybackFirstLine.Size = new System.Drawing.Size(98, 17);
+ this.rbtnPlaybackFirstLine.TabIndex = 2;
+ this.rbtnPlaybackFirstLine.TabStop = true;
+ this.rbtnPlaybackFirstLine.Text = "Prefer First Line";
+ this.rbtnPlaybackFirstLine.UseVisualStyleBackColor = true;
+ //
+ // gbxGeneral
+ //
+ this.gbxGeneral.Controls.Add(this.rbtnGeneralSecondLine);
+ this.gbxGeneral.Controls.Add(this.rbtnGeneralFirstLine);
+ this.gbxGeneral.Location = new System.Drawing.Point(7, 20);
+ this.gbxGeneral.Name = "gbxGeneral";
+ this.gbxGeneral.Size = new System.Drawing.Size(296, 43);
+ this.gbxGeneral.TabIndex = 0;
+ this.gbxGeneral.TabStop = false;
+ this.gbxGeneral.Text = "General";
+ //
+ // rbtnGeneralSecondLine
+ //
+ this.rbtnGeneralSecondLine.AutoSize = true;
+ this.rbtnGeneralSecondLine.Location = new System.Drawing.Point(145, 19);
+ this.rbtnGeneralSecondLine.Name = "rbtnGeneralSecondLine";
+ this.rbtnGeneralSecondLine.Size = new System.Drawing.Size(116, 17);
+ this.rbtnGeneralSecondLine.TabIndex = 1;
+ this.rbtnGeneralSecondLine.TabStop = true;
+ this.rbtnGeneralSecondLine.Text = "Prefer Second Line";
+ this.rbtnGeneralSecondLine.UseVisualStyleBackColor = true;
+ //
+ // rbtnGeneralFirstLine
+ //
+ this.rbtnGeneralFirstLine.AutoSize = true;
+ this.rbtnGeneralFirstLine.Location = new System.Drawing.Point(7, 20);
+ this.rbtnGeneralFirstLine.Name = "rbtnGeneralFirstLine";
+ this.rbtnGeneralFirstLine.Size = new System.Drawing.Size(98, 17);
+ this.rbtnGeneralFirstLine.TabIndex = 0;
+ this.rbtnGeneralFirstLine.TabStop = true;
+ this.rbtnGeneralFirstLine.Text = "Prefer First Line";
+ this.rbtnGeneralFirstLine.UseVisualStyleBackColor = true;
+ //
+ // ImonLcd_AdvancedSetupForm
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(334, 176);
+ this.Controls.Add(this.gbxLineOptions);
+ this.Controls.Add(this.btnOK);
+ this.Name = "ImonLcd_AdvancedSetupForm";
+ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+ this.Text = "MiniDisplay - Setup - Advanced Settings";
+ this.gbxLineOptions.ResumeLayout(false);
+ this.gbxPlayback.ResumeLayout(false);
+ this.gbxPlayback.PerformLayout();
+ this.gbxGeneral.ResumeLayout(false);
+ this.gbxGeneral.PerformLayout();
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+
+ private UserInterface.Controls.MPButton btnOK;
+ private System.Windows.Forms.GroupBox gbxLineOptions;
+ private System.Windows.Forms.GroupBox gbxPlayback;
+ private System.Windows.Forms.RadioButton rbtnPlaybackSecondLine;
+ private System.Windows.Forms.RadioButton rbtnPlaybackFirstLine;
+ private System.Windows.Forms.GroupBox gbxGeneral;
+ private System.Windows.Forms.RadioButton rbtnGeneralSecondLine;
+ private System.Windows.Forms.RadioButton rbtnGeneralFirstLine;
+ }
+}
\ No newline at end of file
diff --git a/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/ImonLcd_AdvancedSetupForm.cs b/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/ImonLcd_AdvancedSetupForm.cs
new file mode 100644
index 0000000..8956650
--- /dev/null
+++ b/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/ImonLcd_AdvancedSetupForm.cs
@@ -0,0 +1,41 @@
+using System;
+using MediaPortal.UserInterface.Controls;
+
+namespace MediaPortal.ProcessPlugins.MiniDisplayPlugin.Drivers
+{
+ public partial class ImonLcd_AdvancedSetupForm : MPConfigForm
+ {
+ public ImonLcd_AdvancedSetupForm()
+ {
+ InitializeComponent();
+
+ if (ImonLcd.AdvancedSettings.Instance.PreferFirstLineGeneral)
+ {
+ rbtnGeneralFirstLine.Checked = true;
+ }
+ else
+ {
+ rbtnGeneralSecondLine.Checked = true;
+ }
+
+ if (ImonLcd.AdvancedSettings.Instance.PreferFirstLinePlayback)
+ {
+ rbtnPlaybackFirstLine.Checked = true;
+ }
+ else
+ {
+ rbtnPlaybackSecondLine.Checked = true;
+ }
+ }
+
+ private void btnOK_Click(object sender, EventArgs e)
+ {
+ ImonLcd.AdvancedSettings.Instance.PreferFirstLineGeneral =
+ rbtnGeneralFirstLine.Checked;
+ ImonLcd.AdvancedSettings.Instance.PreferFirstLinePlayback =
+ rbtnPlaybackFirstLine.Checked;
+ ImonLcd.AdvancedSettings.Save();
+ Close();
+ }
+ }
+}
diff --git a/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/ImonLcd_AdvancedSetupForm.resx b/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/ImonLcd_AdvancedSetupForm.resx
new file mode 100644
index 0000000..7080a7d
--- /dev/null
+++ b/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/ImonLcd_AdvancedSetupForm.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/ImonVfd.cs b/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/ImonVfd.cs
new file mode 100644
index 0000000..89a6423
--- /dev/null
+++ b/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/ImonVfd.cs
@@ -0,0 +1,42 @@
+using System;
+using System.Collections.Generic;
+using System.Drawing;
+using System.Runtime.InteropServices;
+using System.Text;
+using MediaPortal.GUI.Library;
+
+namespace MediaPortal.ProcessPlugins.MiniDisplayPlugin.Drivers
+{
+ ///
+ /// iMON VFD Driver for iMON Manager >= 8.01.0419
+ ///
+ public class ImonVfd : ImonBase
+ {
+ public ImonVfd()
+ {
+ UnsupportedDeviceErrorMessage = "Only VFDs are supported";
+ Description = "iMON VFD for iMON Manager >= 8.01.0419";
+ Name = "iMONVFD";
+ DisplayType = DSPN_DSP_VFD;
+ }
+
+ public override void SetLine(int line, string message)
+ {
+ if (line == 0)
+ {
+ Line1 = message;
+ }
+ else if (line == 1)
+ {
+ Line2 = message;
+ IDW_SetVfdText(Line1, Line2);
+ }
+ }
+
+ [DllImport("iMONDisplayWrapper.dll")]
+ private static extern int IDW_SetVfdText(
+ [MarshalAs(UnmanagedType.LPWStr)] string line1,
+ [MarshalAs(UnmanagedType.LPWStr)] string line2);
+
+ }
+}
diff --git a/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/Event.cpp b/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/Event.cpp
new file mode 100644
index 0000000..d0f66fd
--- /dev/null
+++ b/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/Event.cpp
@@ -0,0 +1,29 @@
+//------------------------------------------------------------------------------
+#include "Event.h"
+//------------------------------------------------------------------------------
+Event::Event()
+{
+ m_hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
+}
+//------------------------------------------------------------------------------
+Event::~Event()
+{
+ if (m_hEvent)
+ CloseHandle(m_hEvent);
+}
+//------------------------------------------------------------------------------
+void Event::Signal() const
+{
+ SetEvent(m_hEvent);
+}
+//------------------------------------------------------------------------------
+void Event::Reset() const
+{
+ ResetEvent(m_hEvent);
+}
+//------------------------------------------------------------------------------
+void Event::Await() const
+{
+ WaitForSingleObject(m_hEvent, INFINITE);
+}
+//------------------------------------------------------------------------------
diff --git a/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/Event.h b/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/Event.h
new file mode 100644
index 0000000..d5c1b68
--- /dev/null
+++ b/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/Event.h
@@ -0,0 +1,27 @@
+//------------------------------------------------------------------------------
+#ifndef EVENT_H_INCLUDED
+#define EVENT_H_INCLUDED
+//------------------------------------------------------------------------------
+#include
+//------------------------------------------------------------------------------
+class Event
+{
+public:
+ Event();
+ virtual ~Event();
+
+private:
+ Event(const Event& other) {}
+ Event& operator=(const Event& other) { return *this; }
+
+public:
+ void Signal() const;
+ void Reset() const;
+ void Await() const;
+
+private:
+ HANDLE m_hEvent;
+};
+//------------------------------------------------------------------------------
+#endif
+//------------------------------------------------------------------------------
diff --git a/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/IdwApi.cpp b/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/IdwApi.cpp
new file mode 100644
index 0000000..5244191
--- /dev/null
+++ b/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/IdwApi.cpp
@@ -0,0 +1,247 @@
+//------------------------------------------------------------------------------
+#include "IdwApi.h"
+#include
+//------------------------------------------------------------------------------
+IdwApi::IdwApi(HINSTANCE hInstance)
+: m_hInstance(hInstance)
+, m_pIdwThread(NULL)
+, m_nInitCount(0)
+{
+}
+//------------------------------------------------------------------------------
+IdwApi::~IdwApi()
+{
+}
+//------------------------------------------------------------------------------
+DSPResult IdwApi::Init(IDW_INITRESULT* pInitResult)
+{
+ m_mutex.Request();
+ if (m_nInitCount == 0)
+ {
+ m_pIdwThread = new IdwThread(m_hInstance);
+ m_pIdwThread->Start();
+ }
+ ++m_nInitCount;
+ DSPResult ret = m_pIdwThread->Init(pInitResult);
+ m_mutex.Release();
+ return ret;
+}
+//------------------------------------------------------------------------------
+DSPResult IdwApi::Uninit()
+{
+ m_mutex.Request();
+ if (m_nInitCount == 0)
+ {
+ m_mutex.Release();
+ return DSP_E_NOT_INITED;
+ }
+ DSPResult ret = m_pIdwThread->Uninit();
+ if (ret == DSP_SUCCEEDED)
+ {
+ --m_nInitCount;
+ if (m_nInitCount == 0)
+ {
+ m_pIdwThread->Interrupt();
+ m_pIdwThread->Join();
+ delete m_pIdwThread;
+ }
+ }
+ m_mutex.Release();
+ return ret;
+}
+//------------------------------------------------------------------------------
+DSPResult IdwApi::IsInited()
+{
+ m_mutex.Request();
+ if (m_nInitCount == 0)
+ {
+ m_mutex.Release();
+ return DSP_S_NOT_INITED;
+ }
+ DSPResult ret = m_pIdwThread->IsInited();
+ m_mutex.Release();
+ return ret;
+}
+//------------------------------------------------------------------------------
+DSPResult IdwApi::IsPluginModeEnabled()
+{
+ m_mutex.Request();
+ if (m_nInitCount == 0)
+ {
+ m_mutex.Release();
+ return DSP_S_NOT_IN_PLUGIN_MODE;
+ }
+ DSPResult ret = m_pIdwThread->IsPluginModeEnabled();
+ m_mutex.Release();
+ return ret;
+}
+//------------------------------------------------------------------------------
+DSPResult IdwApi::SetVfdText(LPCWSTR lpszLine1, LPCWSTR lpszLine2)
+{
+ m_mutex.Request();
+ if (m_nInitCount == 0)
+ {
+ m_mutex.Release();
+ return DSP_E_NOT_INITED;
+ }
+ DSPResult ret = m_pIdwThread->SetVfdText(lpszLine1, lpszLine2);
+ m_mutex.Release();
+ return ret;
+}
+//------------------------------------------------------------------------------
+DSPResult IdwApi::SetVfdEqData(PDSPEQDATA pEqData)
+{
+ m_mutex.Request();
+ if (m_nInitCount == 0)
+ {
+ m_mutex.Release();
+ return DSP_E_NOT_INITED;
+ }
+ DSPResult ret = m_pIdwThread->SetVfdEqData(pEqData);
+ m_mutex.Release();
+ return ret;
+}
+//------------------------------------------------------------------------------
+DSPResult IdwApi::SetLcdText(LPCWSTR lpszLine1)
+{
+ m_mutex.Request();
+ if (m_nInitCount == 0)
+ {
+ m_mutex.Release();
+ return DSP_E_NOT_INITED;
+ }
+ DSPResult ret = m_pIdwThread->SetLcdText(lpszLine1);
+ m_mutex.Release();
+ return ret;
+}
+//------------------------------------------------------------------------------
+DSPResult IdwApi::SetLcdEqData(PDSPEQDATA pEqDataL, PDSPEQDATA pEqDataR)
+{
+ m_mutex.Request();
+ if (m_nInitCount == 0)
+ {
+ m_mutex.Release();
+ return DSP_E_NOT_INITED;
+ }
+ DSPResult ret = m_pIdwThread->SetLcdEqData(pEqDataL, pEqDataR);
+ m_mutex.Release();
+ return ret;
+}
+//------------------------------------------------------------------------------
+DSPResult IdwApi::SetLcdAllIcons(BOOL bOn)
+{
+ m_mutex.Request();
+ if (m_nInitCount == 0)
+ {
+ m_mutex.Release();
+ return DSP_E_NOT_INITED;
+ }
+ DSPResult ret = m_pIdwThread->SetLcdAllIcons(bOn);
+ m_mutex.Release();
+ return ret;
+}
+//------------------------------------------------------------------------------
+DSPResult IdwApi::SetLcdOrangeIcon(BYTE btIconData1, BYTE btIconData2)
+{
+ m_mutex.Request();
+ if (m_nInitCount == 0)
+ {
+ m_mutex.Release();
+ return DSP_E_NOT_INITED;
+ }
+ DSPResult ret = m_pIdwThread->SetLcdOrangeIcon(btIconData1, btIconData2);
+ m_mutex.Release();
+ return ret;
+}
+//------------------------------------------------------------------------------
+DSPResult IdwApi::SetLcdMediaTypeIcon(BYTE btIconData)
+{
+ m_mutex.Request();
+ if (m_nInitCount == 0)
+ {
+ m_mutex.Release();
+ return DSP_E_NOT_INITED;
+ }
+ DSPResult ret = m_pIdwThread->SetLcdMediaTypeIcon(btIconData);
+ m_mutex.Release();
+ return ret;
+}
+//------------------------------------------------------------------------------
+DSPResult IdwApi::SetLcdSpeakerIcon(BYTE btIconData1, BYTE btIconData2)
+{
+ m_mutex.Request();
+ if (m_nInitCount == 0)
+ {
+ m_mutex.Release();
+ return DSP_E_NOT_INITED;
+ }
+ DSPResult ret = m_pIdwThread->SetLcdSpeakerIcon(btIconData1, btIconData2);
+ m_mutex.Release();
+ return ret;
+}
+//------------------------------------------------------------------------------
+DSPResult IdwApi::SetLcdVideoCodecIcon(BYTE btIconData)
+{
+ m_mutex.Request();
+ if (m_nInitCount == 0)
+ {
+ m_mutex.Release();
+ return DSP_E_NOT_INITED;
+ }
+ DSPResult ret = m_pIdwThread->SetLcdVideoCodecIcon(btIconData);
+ m_mutex.Release();
+ return ret;
+}
+//------------------------------------------------------------------------------
+DSPResult IdwApi::SetLcdAudioCodecIcon(BYTE btIconData)
+{
+ m_mutex.Request();
+ if (m_nInitCount == 0)
+ {
+ m_mutex.Release();
+ return DSP_E_NOT_INITED;
+ }
+ DSPResult ret = m_pIdwThread->SetLcdAudioCodecIcon(btIconData);
+ m_mutex.Release();
+ return ret;
+}
+//------------------------------------------------------------------------------
+DSPResult IdwApi::SetLcdAspectRatioIcon(BYTE btIconData)
+{
+ m_mutex.Request();
+ if (m_nInitCount == 0)
+ {
+ m_mutex.Release();
+ return DSP_E_NOT_INITED;
+ }
+ DSPResult ret = m_pIdwThread->SetLcdAspectRatioIcon(btIconData);
+ m_mutex.Release();
+ return ret;
+}
+//------------------------------------------------------------------------------
+DSPResult IdwApi::SetLcdEtcIcon(BYTE btIconData)
+{
+ m_mutex.Request();
+ if (m_nInitCount == 0)
+ {
+ m_mutex.Release();
+ return DSP_E_NOT_INITED;
+ }
+ DSPResult ret = m_pIdwThread->SetLcdEtcIcon(btIconData);
+ m_mutex.Release();
+ return ret;
+}
+//------------------------------------------------------------------------------
+DSPResult IdwApi::SetLcdProgress(int nCurPos, int nTotal)
+{
+ m_mutex.Request();
+ if (m_nInitCount == 0)
+ {
+ m_mutex.Release();
+ return DSP_E_NOT_INITED;
+ }
+ DSPResult ret = m_pIdwThread->SetLcdProgress(nCurPos, nTotal);
+ m_mutex.Release();
+ return ret;
+}
+//------------------------------------------------------------------------------
\ No newline at end of file
diff --git a/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/IdwApi.h b/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/IdwApi.h
new file mode 100644
index 0000000..460d1ca
--- /dev/null
+++ b/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/IdwApi.h
@@ -0,0 +1,48 @@
+//------------------------------------------------------------------------------
+#ifndef IDWAPI_H_INCLUDED
+#define IDWAPI_H_INCLUDED
+//------------------------------------------------------------------------------
+#include
+#include "Mutex.h"
+#include "iMONDisplayDefines.h"
+#include "iMONDisplayWrapper.h"
+#include "IdwThread.h"
+//------------------------------------------------------------------------------
+class IdwApi
+{
+public:
+ IdwApi(HINSTANCE hInstance);
+ ~IdwApi();
+
+public:
+ DSPResult Init(IDW_INITRESULT* pInitResult);
+ DSPResult Uninit();
+ DSPResult IsInited();
+ DSPResult IsPluginModeEnabled();
+ DSPResult SetVfdText(LPCWSTR lpszLine1, LPCWSTR lpszLine2);
+ DSPResult SetVfdEqData(PDSPEQDATA pEqData);
+ DSPResult SetLcdText(LPCWSTR lpszText);
+ DSPResult SetLcdEqData(PDSPEQDATA pEqDataL, PDSPEQDATA pEqDataR);
+ DSPResult SetLcdAllIcons(BOOL bOn);
+ DSPResult SetLcdOrangeIcon(BYTE btIconData1, BYTE btIconData2);
+ DSPResult SetLcdMediaTypeIcon(BYTE btIconData);
+ DSPResult SetLcdSpeakerIcon(BYTE btIconData1, BYTE btIconData2);
+ DSPResult SetLcdVideoCodecIcon(BYTE btIconData);
+ DSPResult SetLcdAudioCodecIcon(BYTE btIconData);
+ DSPResult SetLcdAspectRatioIcon(BYTE btIconData);
+ DSPResult SetLcdEtcIcon(BYTE btIconData);
+ DSPResult SetLcdProgress(int nCurPos, int nTotal);
+
+private:
+ IdwApi(const IdwApi& other) {}
+ IdwApi& operator=(const IdwApi& other) { return *this; }
+
+private:
+ HINSTANCE m_hInstance;
+ Mutex m_mutex;
+ int m_nInitCount;
+ IdwThread* m_pIdwThread;
+};
+//------------------------------------------------------------------------------
+#endif
+//------------------------------------------------------------------------------
diff --git a/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/IdwThread.cpp b/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/IdwThread.cpp
new file mode 100644
index 0000000..ac40c43
--- /dev/null
+++ b/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/IdwThread.cpp
@@ -0,0 +1,745 @@
+//------------------------------------------------------------------------------
+#include "IdwThread.h"
+#include "iMONDisplayAPI.h"
+//------------------------------------------------------------------------------
+#define CLASSNAME TEXT("IDW_IMON_COM_WNDCLASS")
+//------------------------------------------------------------------------------
+#define WM_IDW_IMON (WM_USER + 1)
+#define WM_IDW_INIT (WM_USER + 2)
+#define WM_IDW_UNINIT (WM_USER + 3)
+#define WM_IDW_ISINITED (WM_USER + 4)
+#define WM_IDW_ISPLUGINMODEENABLED (WM_USER + 5)
+#define WM_IDW_SETVFDTEXT (WM_USER + 6)
+#define WM_IDW_SETVFDEQ (WM_USER + 7)
+#define WM_IDW_SETLCDTEXT (WM_USER + 8)
+#define WM_IDW_SETLCDEQ (WM_USER + 9)
+#define WM_IDW_SETLCDALLICONS (WM_USER + 10)
+#define WM_IDW_SETLCDORANGEICON (WM_USER + 11)
+#define WM_IDW_SETLCDMEDIATYPEICON (WM_USER + 12)
+#define WM_IDW_SETLCDSPEAKERICON (WM_USER + 13)
+#define WM_IDW_SETLCDVIDEOCODEC (WM_USER + 14)
+#define WM_IDW_SETLCDAUDIOCODEC (WM_USER + 15)
+#define WM_IDW_SETLCDASPECTRATIO (WM_USER + 16)
+#define WM_IDW_SETLCDETCICON (WM_USER + 17)
+#define WM_IDW_SETLCDPROGRESS (WM_USER + 18)
+#define WM_IDW_INTERRUPT (WM_USER + 100)
+//------------------------------------------------------------------------------
+struct IdwImonInitResult
+{
+ DSPResult result;
+ DSPNInitResult initResult;
+ DSPType dspType;
+};
+struct IdwSetVfdText
+{
+ DSPResult result;
+ LPCWSTR pszLine1;
+ LPCWSTR pszLine2;
+};
+struct IdwSetVfdEq
+{
+ DSPResult result;
+ PDSPEQDATA pEqData;
+};
+struct IdwSetLcdText
+{
+ DSPResult result;
+ LPCWSTR pszLine1;
+};
+struct IdwSetLcdEq
+{
+ DSPResult result;
+ PDSPEQDATA pEqDataL;
+ PDSPEQDATA pEqDataR;
+};
+struct IdwSetLcdAllIcons
+{
+ DSPResult result;
+ BOOL bOn;
+};
+struct IdwSetLcdIcons
+{
+ DSPResult result;
+ BYTE btIconData;
+};
+struct IdwSetLcdIcons2
+{
+ DSPResult result;
+ BYTE btIconData1;
+ BYTE btIconData2;
+};
+struct IdwSetLcdProgress
+{
+ DSPResult result;
+ int nCurPos;
+ int nTotal;
+};
+//------------------------------------------------------------------------------
+IdwThread::IdwThread(HINSTANCE hInstance)
+: m_hInstance(hInstance)
+, m_hWnd(NULL)
+{
+}
+//------------------------------------------------------------------------------
+IdwThread::~IdwThread()
+{
+}
+//------------------------------------------------------------------------------
+void IdwThread::Interrupt()
+{
+ if (!WaitForWindow())
+ return;
+ PostMessage(m_hWnd, WM_IDW_INTERRUPT, 0, 0);
+}
+//------------------------------------------------------------------------------
+DSPResult IdwThread::Init(IDW_INITRESULT* pInitResult)
+{
+ if (!WaitForWindow())
+ return DSP_E_FAIL;
+
+ IdwImonInitResult result;
+ Event finished;
+ PostMessage(m_hWnd, WM_IDW_INIT, (WPARAM)&result, (LPARAM)&finished);
+ finished.Await();
+ if (pInitResult != NULL)
+ {
+ pInitResult->initResult = result.initResult;
+ pInitResult->dspType = result.dspType;
+ }
+
+ return result.result;
+}
+//------------------------------------------------------------------------------
+DSPResult IdwThread::Uninit()
+{
+ if (!WaitForWindow())
+ return DSP_E_FAIL;
+
+ DSPResult result;
+ Event finished;
+ PostMessage(m_hWnd, WM_IDW_UNINIT, (WPARAM)&result, (LPARAM)&finished);
+ finished.Await();
+
+ return result;
+}
+//------------------------------------------------------------------------------
+DSPResult IdwThread::IsInited()
+{
+ if (!WaitForWindow())
+ return DSP_E_FAIL;
+
+ DSPResult result;
+ Event finished;
+ PostMessage(m_hWnd, WM_IDW_ISINITED, (WPARAM)&result, (LPARAM)&finished);
+ finished.Await();
+
+ return result;
+}
+//------------------------------------------------------------------------------
+DSPResult IdwThread::IsPluginModeEnabled()
+{
+ if (!WaitForWindow())
+ return DSP_E_FAIL;
+
+ DSPResult result;
+ Event finished;
+ PostMessage(m_hWnd, WM_IDW_ISPLUGINMODEENABLED, (WPARAM)&result,
+ (LPARAM)&finished);
+ finished.Await();
+
+ return result;
+}
+//------------------------------------------------------------------------------
+DSPResult IdwThread::SetVfdText(LPCWSTR lpszLine1, LPCWSTR lpszLine2)
+{
+ if (!WaitForWindow())
+ return DSP_E_FAIL;
+
+ IdwSetVfdText text;
+ text.pszLine1 = lpszLine1;
+ text.pszLine2 = lpszLine2;
+ Event finished;
+ PostMessage(m_hWnd, WM_IDW_SETVFDTEXT, (WPARAM)&text, (LPARAM)&finished);
+ finished.Await();
+
+ return text.result;
+}
+//------------------------------------------------------------------------------
+DSPResult IdwThread::SetVfdEqData(PDSPEQDATA pEqData)
+{
+ if (!WaitForWindow())
+ return DSP_E_FAIL;
+
+ IdwSetVfdEq eq;
+ eq.pEqData = pEqData;
+ Event finished;
+ PostMessage(m_hWnd, WM_IDW_SETVFDEQ, (WPARAM)&eq, (LPARAM)&finished);
+ finished.Await();
+
+ return eq.result;
+}
+//------------------------------------------------------------------------------
+DSPResult IdwThread::SetLcdText(LPCWSTR lpszLine1)
+{
+ if (!WaitForWindow())
+ return DSP_E_FAIL;
+
+ IdwSetLcdText text;
+ text.pszLine1 = lpszLine1;
+ Event finished;
+ PostMessage(m_hWnd, WM_IDW_SETLCDTEXT, (WPARAM)&text, (LPARAM)&finished);
+ finished.Await();
+
+ return text.result;
+}
+//------------------------------------------------------------------------------
+DSPResult IdwThread::SetLcdEqData(PDSPEQDATA pEqDataL, PDSPEQDATA pEqDataR)
+{
+ if (!WaitForWindow())
+ return DSP_E_FAIL;
+
+ IdwSetLcdEq eq;
+ eq.pEqDataL = pEqDataL;
+ eq.pEqDataR = pEqDataR;
+ Event finished;
+ PostMessage(m_hWnd, WM_IDW_SETLCDEQ, (WPARAM)&eq, (LPARAM)&finished);
+ finished.Await();
+
+ return eq.result;
+}
+//------------------------------------------------------------------------------
+DSPResult IdwThread::SetLcdAllIcons(BOOL bOn)
+{
+ if (!WaitForWindow())
+ return DSP_E_FAIL;
+
+ IdwSetLcdAllIcons allIcons;
+ allIcons.bOn = bOn;
+ Event finished;
+ PostMessage(m_hWnd, WM_IDW_SETLCDALLICONS,
+ (WPARAM)&allIcons, (LPARAM)&finished);
+ finished.Await();
+
+ return allIcons.result;
+}
+//------------------------------------------------------------------------------
+DSPResult IdwThread::SetLcdOrangeIcon(BYTE btIconData1, BYTE btIconData2)
+{
+ if (!WaitForWindow())
+ return DSP_E_FAIL;
+
+ IdwSetLcdIcons2 iconData;
+ iconData.btIconData1 = btIconData1;
+ iconData.btIconData2 = btIconData2;
+ Event finished;
+ PostMessage(m_hWnd, WM_IDW_SETLCDORANGEICON,
+ (WPARAM)&iconData, (LPARAM)&finished);
+ finished.Await();
+
+ return iconData.result;
+}
+//------------------------------------------------------------------------------
+DSPResult IdwThread::SetLcdMediaTypeIcon(BYTE btIconData)
+{
+ if (!WaitForWindow())
+ return DSP_E_FAIL;
+
+ IdwSetLcdIcons iconData;
+ iconData.btIconData = btIconData;
+ Event finished;
+ PostMessage(m_hWnd, WM_IDW_SETLCDMEDIATYPEICON,
+ (WPARAM)&iconData, (LPARAM)&finished);
+ finished.Await();
+
+ return iconData.result;
+}
+//------------------------------------------------------------------------------
+DSPResult IdwThread::SetLcdSpeakerIcon(BYTE btIconData1, BYTE btIconData2)
+{
+ if (!WaitForWindow())
+ return DSP_E_FAIL;
+
+ IdwSetLcdIcons2 iconData;
+ iconData.btIconData1 = btIconData1;
+ iconData.btIconData2 = btIconData2;
+ Event finished;
+ PostMessage(m_hWnd, WM_IDW_SETLCDSPEAKERICON,
+ (WPARAM)&iconData, (LPARAM)&finished);
+ finished.Await();
+
+ return iconData.result;
+}
+//------------------------------------------------------------------------------
+DSPResult IdwThread::SetLcdVideoCodecIcon(BYTE btIconData)
+{
+ if (!WaitForWindow())
+ return DSP_E_FAIL;
+
+ IdwSetLcdIcons iconData;
+ iconData.btIconData = btIconData;
+ Event finished;
+ PostMessage(m_hWnd, WM_IDW_SETLCDVIDEOCODEC,
+ (WPARAM)&iconData, (LPARAM)&finished);
+ finished.Await();
+
+ return iconData.result;
+}
+//------------------------------------------------------------------------------
+DSPResult IdwThread::SetLcdAudioCodecIcon(BYTE btIconData)
+{
+ if (!WaitForWindow())
+ return DSP_E_FAIL;
+
+ IdwSetLcdIcons iconData;
+ iconData.btIconData = btIconData;
+ Event finished;
+ PostMessage(m_hWnd, WM_IDW_SETLCDAUDIOCODEC,
+ (WPARAM)&iconData, (LPARAM)&finished);
+ finished.Await();
+
+ return iconData.result;
+}
+//------------------------------------------------------------------------------
+DSPResult IdwThread::SetLcdAspectRatioIcon(BYTE btIconData)
+{
+ if (!WaitForWindow())
+ return DSP_E_FAIL;
+
+ IdwSetLcdIcons iconData;
+ iconData.btIconData = btIconData;
+ Event finished;
+ PostMessage(m_hWnd, WM_IDW_SETLCDASPECTRATIO,
+ (WPARAM)&iconData, (LPARAM)&finished);
+ finished.Await();
+
+ return iconData.result;
+}
+//------------------------------------------------------------------------------
+DSPResult IdwThread::SetLcdEtcIcon(BYTE btIconData)
+{
+ if (!WaitForWindow())
+ return DSP_E_FAIL;
+
+ IdwSetLcdIcons iconData;
+ iconData.btIconData = btIconData;
+ Event finished;
+ PostMessage(m_hWnd, WM_IDW_SETLCDETCICON,
+ (WPARAM)&iconData, (LPARAM)&finished);
+ finished.Await();
+
+ return iconData.result;
+}
+//------------------------------------------------------------------------------
+DSPResult IdwThread::SetLcdProgress(int nCurPos, int nTotal)
+{
+ if (!WaitForWindow())
+ return DSP_E_FAIL;
+
+ IdwSetLcdProgress progressData;
+ progressData.nCurPos = nCurPos;
+ progressData.nTotal = nTotal;
+ Event finished;
+ PostMessage(m_hWnd, WM_IDW_SETLCDPROGRESS,
+ (WPARAM)&progressData, (LPARAM)&finished);
+ finished.Await();
+
+ return progressData.result;
+}
+//------------------------------------------------------------------------------
+void IdwThread::Run()
+{
+ if (!RegisterClass())
+ {
+ m_eventWindowCreationDone.Signal();
+ return;
+ }
+ if (!CreateMessageWindow())
+ {
+ m_eventWindowCreationDone.Signal();
+ return;
+ }
+ AllowImonMessages();
+
+ m_eventWindowCreationDone.Signal();
+
+ MSG msg;
+ BOOL fGotMessage;
+ while ((fGotMessage = GetMessage(&msg, (HWND) NULL, 0, 0)) != 0
+ && fGotMessage != -1)
+ {
+ TranslateMessage(&msg);
+ DispatchMessage(&msg);
+ }
+}
+//------------------------------------------------------------------------------
+bool IdwThread::RegisterClass()
+{
+ WNDCLASSEX wc;
+ if (GetClassInfoEx(m_hInstance, CLASSNAME, &wc))
+ {
+ return true;
+ }
+
+ wc.cbSize = sizeof(wc);
+ wc.style = CS_HREDRAW | CS_VREDRAW;
+ wc.lpfnWndProc = IdwThread::WndProc;
+ wc.cbClsExtra = 0;
+ wc.cbWndExtra = 0;
+ wc.hInstance = m_hInstance;
+ wc.hIcon = NULL;
+ wc.hCursor = NULL;
+ wc.hbrBackground = NULL;
+ wc.lpszMenuName = NULL;
+ wc.lpszClassName = CLASSNAME;
+ wc.hIconSm = NULL;
+ if (::RegisterClassEx(&wc))
+ {
+ return true;
+ }
+ return false;
+}
+//------------------------------------------------------------------------------
+bool IdwThread::CreateMessageWindow()
+{
+ m_hWnd = CreateWindow(
+ CLASSNAME,
+ TEXT("MP iMON MessageWindow"),
+ 0,
+ 0, 0, 0, 0,
+ HWND_MESSAGE,
+ NULL,
+ m_hInstance,
+ NULL);
+
+ if (!m_hWnd)
+ return false;
+ return true;
+}
+//------------------------------------------------------------------------------
+void IdwThread::AllowImonMessages()
+{
+ // Determine OS
+ OSVERSIONINFO version;
+ version.dwOSVersionInfoSize = sizeof(version);
+ GetVersionEx(&version);
+ if (version.dwMajorVersion < 6)
+ {
+ return;
+ }
+
+ // Determine and allow iMON message number
+ UINT iMonMsg =
+ RegisterWindowMessage(
+ TEXT("iMonMessage-431F1DC6-F31A-4AC6-A1FA-A4BB9C44FF10"));
+ ChangeWindowMessageFilter(iMonMsg, MSGFLT_ADD);
+}
+//------------------------------------------------------------------------------
+bool IdwThread::WaitForWindow()
+{
+ m_eventWindowCreationDone.Await();
+ if (m_hWnd == NULL)
+ return false;
+ return true;
+}
+//------------------------------------------------------------------------------
+LRESULT CALLBACK IdwThread::WndProc(HWND hwnd, UINT uMsg, WPARAM wParam,
+ LPARAM lParam)
+{
+ static bool initing = false;
+ static IdwImonInitResult* pInitResult = NULL;
+ static Event* pInitFinished = NULL;
+
+ DSPResult* pResult;
+ Event* pFinished;
+
+ switch (uMsg)
+ {
+ case WM_CREATE:
+ return 0;
+
+ case WM_DESTROY:
+ PostQuitMessage(0);
+ return 0;
+
+ case WM_IDW_IMON:
+ if (initing)
+ {
+ initing = false;
+ pInitResult->initResult = (DSPNInitResult)wParam;
+ pInitResult->dspType = (DSPType)lParam;
+ pInitFinished->Signal();
+ }
+ return 0;
+
+ case WM_IDW_INIT:
+ initing = true;
+ pInitResult = (IdwImonInitResult*)wParam;
+ pInitFinished = (Event*)lParam;
+ pInitResult->result = IMON_Display_Init(hwnd, WM_IDW_IMON);
+ if (pInitResult->result != DSP_SUCCEEDED)
+ {
+ initing = false;
+ pInitResult->initResult = DSPN_ERR_UNKNOWN;
+ pInitResult->dspType = DSPN_DSP_NONE;
+ pInitFinished->Signal();
+ }
+ return 0;
+
+ case WM_IDW_UNINIT:
+ pResult = (DSPResult*)wParam;
+ pFinished = (Event*)lParam;
+ *pResult = IMON_Display_Uninit();
+ pFinished->Signal();
+ return 0;
+
+ case WM_IDW_ISINITED:
+ pResult = (DSPResult*)wParam;
+ pFinished = (Event*)lParam;
+ *pResult = IMON_Display_IsInited();
+ pFinished->Signal();
+ return 0;
+
+ case WM_IDW_ISPLUGINMODEENABLED:
+ pResult = (DSPResult*)wParam;
+ pFinished = (Event*)lParam;
+ *pResult = IMON_Display_IsPluginModeEnabled();
+ pFinished->Signal();
+ return 0;
+
+ case WM_IDW_SETVFDTEXT:
+ {
+ IdwSetVfdText* pSetVfdText = (IdwSetVfdText*)wParam;
+ WCHAR szLine1[20];
+ WCHAR szLine2[20];
+ pFinished = (Event*)lParam;
+ MapChars(szLine1, pSetVfdText->pszLine1, 16);
+ MapChars(szLine2, pSetVfdText->pszLine2, 16);
+ pSetVfdText->result = IMON_Display_SetVfdText(szLine1, szLine2);
+ pFinished->Signal();
+ return 0;
+ }
+
+ case WM_IDW_SETVFDEQ:
+ {
+ IdwSetVfdEq* pSetVfdEq = (IdwSetVfdEq*)wParam;
+ pFinished = (Event*)lParam;
+ pSetVfdEq->result = IMON_Display_SetVfdEqData(pSetVfdEq->pEqData);
+ pFinished->Signal();
+ return 0;
+ }
+
+ case WM_IDW_SETLCDTEXT:
+ {
+ IdwSetLcdText* pSetLcdText = (IdwSetLcdText*)wParam;
+ pFinished = (Event*)lParam;
+ pSetLcdText->result = IMON_Display_SetLcdText(pSetLcdText->pszLine1);
+ pFinished->Signal();
+ return 0;
+ }
+
+ case WM_IDW_SETLCDEQ:
+ {
+ IdwSetLcdEq* pSetLcdEq = (IdwSetLcdEq*)wParam;
+ pFinished = (Event*)lParam;
+ pSetLcdEq->result =
+ IMON_Display_SetLcdEqData(pSetLcdEq->pEqDataL, pSetLcdEq->pEqDataR);
+ pFinished->Signal();
+ return 0;
+ }
+
+ case WM_IDW_SETLCDALLICONS:
+ {
+ IdwSetLcdAllIcons* pSetLcdAllIcons = (IdwSetLcdAllIcons*)wParam;
+ pFinished = (Event*)lParam;
+ pSetLcdAllIcons->result =
+ IMON_Display_SetLcdAllIcons(pSetLcdAllIcons->bOn);
+ pFinished->Signal();
+ return 0;
+ }
+
+ case WM_IDW_SETLCDORANGEICON:
+ {
+ IdwSetLcdIcons2* pSetLcdIcons2 = (IdwSetLcdIcons2*)wParam;
+ pFinished = (Event*)lParam;
+ pSetLcdIcons2->result = IMON_Display_SetLcdOrangeIcon(
+ pSetLcdIcons2->btIconData1, pSetLcdIcons2->btIconData2);
+ pFinished->Signal();
+ return 0;
+ }
+
+ case WM_IDW_SETLCDMEDIATYPEICON:
+ {
+ IdwSetLcdIcons* pSetLcdIcons = (IdwSetLcdIcons*)wParam;
+ pFinished = (Event*)lParam;
+ pSetLcdIcons->result =
+ IMON_Display_SetLcdMediaTypeIcon(pSetLcdIcons->btIconData);
+ pFinished->Signal();
+ return 0;
+ }
+
+ case WM_IDW_SETLCDSPEAKERICON:
+ {
+ IdwSetLcdIcons2* pSetLcdIcons2 = (IdwSetLcdIcons2*)wParam;
+ pFinished = (Event*)lParam;
+ pSetLcdIcons2->result = IMON_Display_SetLcdSpeakerIcon(
+ pSetLcdIcons2->btIconData1, pSetLcdIcons2->btIconData2);
+ pFinished->Signal();
+ return 0;
+ }
+
+ case WM_IDW_SETLCDVIDEOCODEC:
+ {
+ IdwSetLcdIcons* pSetLcdIcons = (IdwSetLcdIcons*)wParam;
+ pFinished = (Event*)lParam;
+ pSetLcdIcons->result =
+ IMON_Display_SetLcdVideoCodecIcon(pSetLcdIcons->btIconData);
+ pFinished->Signal();
+ return 0;
+ }
+
+ case WM_IDW_SETLCDAUDIOCODEC:
+ {
+ IdwSetLcdIcons* pSetLcdIcons = (IdwSetLcdIcons*)wParam;
+ pFinished = (Event*)lParam;
+ pSetLcdIcons->result =
+ IMON_Display_SetLcdAudioCodecIcon(pSetLcdIcons->btIconData);
+ pFinished->Signal();
+ return 0;
+ }
+
+ case WM_IDW_SETLCDASPECTRATIO:
+ {
+ IdwSetLcdIcons* pSetLcdIcons = (IdwSetLcdIcons*)wParam;
+ pFinished = (Event*)lParam;
+ pSetLcdIcons->result =
+ IMON_Display_SetLcdAspectRatioIcon(pSetLcdIcons->btIconData);
+ pFinished->Signal();
+ return 0;
+ }
+
+ case WM_IDW_SETLCDETCICON:
+ {
+ IdwSetLcdIcons* pSetLcdIcons = (IdwSetLcdIcons*)wParam;
+ pFinished = (Event*)lParam;
+ pSetLcdIcons->result =
+ IMON_Display_SetLcdEtcIcon(pSetLcdIcons->btIconData);
+ pFinished->Signal();
+ return 0;
+ }
+
+ case WM_IDW_SETLCDPROGRESS:
+ {
+ IdwSetLcdProgress* pSetLcdProgress = (IdwSetLcdProgress*)wParam;
+ pFinished = (Event*)lParam;
+ pSetLcdProgress->result = IMON_Display_SetLcdProgress(
+ pSetLcdProgress->nCurPos, pSetLcdProgress->nTotal);
+ pFinished->Signal();
+ return 0;
+ }
+
+ case WM_IDW_INTERRUPT:
+ DestroyWindow(hwnd);
+ return 0;
+ }
+ return DefWindowProc(hwnd, uMsg, wParam, lParam);
+}
+//------------------------------------------------------------------------------
+void IdwThread::MapChars(LPWSTR lpszTarget, LPCWSTR lpszSource,
+ int nMaxLength)
+{
+ int len = (int)wcslen(lpszSource);
+ if ((nMaxLength > 0) && (len > nMaxLength))
+ len = nMaxLength;
+ lpszTarget[len] = 0;
+ for (int i = 0; i < len; ++i)
+ {
+ wchar_t ch = lpszSource[i];
+ lpszTarget[i] = MapChar(ch);
+ }
+}
+//------------------------------------------------------------------------------
+#define IN_RANGE(ch, s, e) ((ch >= s) && (ch <= e))
+#define IS(ch, c) (ch == c)
+wchar_t IdwThread::MapChar(wchar_t ch)
+{
+ if (IN_RANGE(ch, 0x0020, 0x005B)
+ || IN_RANGE(ch, 0x005D, 0x007D)
+ || IS(ch, 0x0401)
+ || IS(ch, 0x0404)
+ || IN_RANGE(ch, 0x0406, 0x0407)
+ || IN_RANGE(ch, 0x0410, 0x044F)
+ || IS(ch, 0x0451)
+ || IS(ch, 0x0454)
+ || IN_RANGE(ch, 0x0456, 0x0457)
+ || IN_RANGE(ch, 0x0490, 0x0491))
+ return ch;
+
+ switch (ch)
+ {
+ case 0x5C:
+ return 0x8C;
+ case 0x7E:
+ return 0x8E;
+ case 0x7F:
+ return 0x20;
+ case 0xA2:
+ return 0xEC;
+ case 0xA3:
+ return 0x92;
+ case 0xA5:
+ return 0x5C;
+ case 0xA6:
+ return 0x98;
+ case 0xA7:
+ return 0x8F;
+ case 0xB0:
+ return 0xDF;
+ case 0xB5:
+ return 0xE4;
+ case 0xC2:
+ return 0x82;
+ case 0xC4:
+ return 0x80;
+ case 0xC5:
+ return 0x81;
+ case 0xC6:
+ return 0x90;
+ case 0xC7:
+ return 0x99;
+ case 0xD1:
+ return 0xEE;
+ case 0xD6:
+ return 0x86;
+ case 0xD8:
+ return 0x88;
+ case 0xDC:
+ return 0x8A;
+ case 0xDE:
+ return 0xF0;
+ case 0xDF:
+ return 0xE2;
+ case 0xE1:
+ return 0x83;
+ case 0xE4:
+ return 0xE1;
+ case 0xE5:
+ return 0x84;
+ case 0xE7:
+ return 0x99;
+ case 0xF1:
+ return 0xD1;
+ case 0xF6:
+ return 0x87;
+ case 0xF7:
+ return 0xFD;
+ case 0xF8:
+ return 0x89;
+ case 0xFC:
+ return 0x8B;
+ case 0xFE:
+ return 0xF0;
+ default:
+ return L'#';
+ }
+}
+//------------------------------------------------------------------------------
diff --git a/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/IdwThread.h b/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/IdwThread.h
new file mode 100644
index 0000000..199bbbe
--- /dev/null
+++ b/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/IdwThread.h
@@ -0,0 +1,63 @@
+//------------------------------------------------------------------------------
+#ifndef IDWTHREAD_H_INCLUDED
+#define IDWTHREAD_H_INCLUDED
+//------------------------------------------------------------------------------
+#include
+#include "Thread.h"
+#include "Event.h"
+#include "Mutex.h"
+#include "iMONDisplayDefines.h"
+#include "iMONDisplayWrapper.h"
+//------------------------------------------------------------------------------
+class IdwThread : public Thread
+{
+public:
+ IdwThread(HINSTANCE hInstance);
+ virtual ~IdwThread();
+
+private:
+ IdwThread(const IdwThread& other) {}
+ IdwThread& operator=(const IdwThread& other) { return *this; }
+
+public:
+ virtual void Interrupt();
+ DSPResult Init(IDW_INITRESULT* pInitResult);
+ DSPResult Uninit();
+ DSPResult IsInited();
+ DSPResult IsPluginModeEnabled();
+ DSPResult SetVfdText(LPCWSTR lpszLine1, LPCWSTR lpszLine2);
+ DSPResult SetVfdEqData(PDSPEQDATA pEqData);
+ DSPResult SetLcdText(LPCWSTR lpszText);
+ DSPResult SetLcdEqData(PDSPEQDATA pEqDataL, PDSPEQDATA pEqDataR);
+ DSPResult SetLcdAllIcons(BOOL bOn);
+ DSPResult SetLcdOrangeIcon(BYTE btIconData1, BYTE btIconData2);
+ DSPResult SetLcdMediaTypeIcon(BYTE btIconData);
+ DSPResult SetLcdSpeakerIcon(BYTE btIconData1, BYTE btIconData2);
+ DSPResult SetLcdVideoCodecIcon(BYTE btIconData);
+ DSPResult SetLcdAudioCodecIcon(BYTE btIconData);
+ DSPResult SetLcdAspectRatioIcon(BYTE btIconData);
+ DSPResult SetLcdEtcIcon(BYTE btIconData);
+ DSPResult SetLcdProgress(int nCurPos, int nTotal);
+
+protected:
+ virtual void Run();
+
+private:
+ bool RegisterClass();
+ bool CreateMessageWindow();
+ void AllowImonMessages();
+ bool WaitForWindow();
+ static LRESULT CALLBACK WndProc(
+ HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
+ static void MapChars(
+ LPWSTR lpszTarget, LPCWSTR lpszSource, int nMaxLength);
+ static wchar_t MapChar(wchar_t ch);
+
+private:
+ HINSTANCE m_hInstance;
+ HWND m_hWnd;
+ Event m_eventWindowCreationDone;
+};
+//------------------------------------------------------------------------------
+#endif
+//------------------------------------------------------------------------------
diff --git a/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/Mutex.cpp b/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/Mutex.cpp
new file mode 100644
index 0000000..1de142c
--- /dev/null
+++ b/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/Mutex.cpp
@@ -0,0 +1,24 @@
+//------------------------------------------------------------------------------
+#include "Mutex.h"
+//------------------------------------------------------------------------------
+Mutex::Mutex()
+{
+ m_hMutex = CreateMutex(NULL, FALSE, NULL);
+}
+//------------------------------------------------------------------------------
+Mutex::~Mutex()
+{
+ if (m_hMutex)
+ CloseHandle(m_hMutex);
+}
+//------------------------------------------------------------------------------
+void Mutex::Request() const
+{
+ WaitForSingleObject(m_hMutex, INFINITE);
+}
+//------------------------------------------------------------------------------
+void Mutex::Release() const
+{
+ ReleaseMutex(m_hMutex);
+}
+//------------------------------------------------------------------------------
diff --git a/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/Mutex.h b/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/Mutex.h
new file mode 100644
index 0000000..aab8da3
--- /dev/null
+++ b/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/Mutex.h
@@ -0,0 +1,26 @@
+//------------------------------------------------------------------------------
+#ifndef MUTEX_H_INCLUDED
+#define MUTEX_H_INCLUDED
+//------------------------------------------------------------------------------
+#include
+//------------------------------------------------------------------------------
+class Mutex
+{
+public:
+ Mutex();
+ virtual ~Mutex();
+
+private:
+ Mutex(const Mutex& other) {}
+ Mutex& operator=(const Mutex& other) { return *this; }
+
+public:
+ void Request() const;
+ void Release() const;
+
+private:
+ HANDLE m_hMutex;
+};
+//------------------------------------------------------------------------------
+#endif
+//------------------------------------------------------------------------------
diff --git a/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/Thread.cpp b/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/Thread.cpp
new file mode 100644
index 0000000..8ac81d5
--- /dev/null
+++ b/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/Thread.cpp
@@ -0,0 +1,41 @@
+//------------------------------------------------------------------------------
+#include "Thread.h"
+//------------------------------------------------------------------------------
+Thread::Thread() : m_hThread(NULL), m_dwThreadId(0)
+{
+}
+//------------------------------------------------------------------------------
+Thread::~Thread()
+{
+ if (m_hThread != NULL)
+ {
+ TerminateThread(m_hThread, -1);
+ m_hThread = NULL;
+ }
+}
+//------------------------------------------------------------------------------
+void Thread::Start()
+{
+ if (m_hThread != NULL)
+ return;
+ m_hThread = CreateThread(
+ NULL,
+ 0,
+ Thread::ThreadProc,
+ this,
+ 0,
+ &m_dwThreadId);
+}
+//------------------------------------------------------------------------------
+void Thread::Join() const
+{
+ WaitForSingleObject(m_hThread, INFINITE);
+}
+//------------------------------------------------------------------------------
+DWORD WINAPI Thread::ThreadProc(LPVOID lpParam)
+{
+ Thread* pThread = (Thread*)lpParam;
+ pThread->Run();
+ return 0;
+}
+//------------------------------------------------------------------------------
diff --git a/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/Thread.h b/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/Thread.h
new file mode 100644
index 0000000..baaef5e
--- /dev/null
+++ b/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/Thread.h
@@ -0,0 +1,34 @@
+//------------------------------------------------------------------------------
+#ifndef THREAD_H_INCLUDED
+#define THREAD_H_INCLUDED
+//------------------------------------------------------------------------------
+#include
+//------------------------------------------------------------------------------
+class Thread
+{
+protected:
+ Thread();
+ virtual ~Thread();
+
+private:
+ Thread(const Thread& other) {}
+ Thread& operator=(const Thread& other) { *this; }
+
+public:
+ void Start();
+ virtual void Interrupt() = 0;
+ void Join() const;
+
+protected:
+ virtual void Run() = 0;
+
+private:
+ static DWORD WINAPI ThreadProc(LPVOID lpParam);
+
+private:
+ HANDLE m_hThread;
+ DWORD m_dwThreadId;
+};
+//------------------------------------------------------------------------------
+#endif
+//------------------------------------------------------------------------------
diff --git a/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/iMONDisplay.lib b/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/iMONDisplay.lib
new file mode 100644
index 0000000..f143020
Binary files /dev/null and b/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/iMONDisplay.lib differ
diff --git a/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/iMONDisplayAPI.h b/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/iMONDisplayAPI.h
new file mode 100644
index 0000000..8ddbb16
--- /dev/null
+++ b/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/iMONDisplayAPI.h
@@ -0,0 +1,163 @@
+#ifndef __IMON_DISPLAY_API_H__
+#define __IMON_DISPLAY_API_H__
+
+////////////////////////////////////
+// includes
+/** iMONDisplayDefines.h
+This header file defines several enumerations. Open this file and check the definition and usage of enumerations and structures*/
+#include
+#include "iMONDisplayDefines.h"
+
+#ifdef IMON_DISPLAY_API_EXPORT
+#define IMONDSPAPI __declspec(dllexport)
+#else
+#define IMONDSPAPI __declspec(dllimport)
+#endif
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif //__cplusplus
+
+ /////////////////////////////////////
+ ///// Interfaces
+ /**DSPResult IMON_Display_Init(HWND hwndNoti, UINT uMsgNotification)
+ @brief This function should be called to use other functions in iMON Display API.\n
+ When the caller application calls this function, API tries to request Display Plug-in Mode to iMON.
+ @param [in] hwndNoti API will send/post message to this handle.
+ @param [in] uMsgNotification API will send/post message to hwndNoti with this message identifier.
+ @return This function will return one of DSPResult enumeration value.\n
+ DSP_SUCCEEDED will be returned if succeeded. DSP_E_INVALIDARG or DSP_E_OUTOFMEMORY can be returned when error occurs.*/
+ IMONDSPAPI DSPResult IMON_Display_Init(HWND hwndNoti, UINT uMsgNotification);
+
+ /**DSPResult IMON_Display_Uninit()
+ @brief This function should be called when the caller application need not use this API any more.\n
+ If this function call is missed, iMON can't display other information.\n
+ @return This function will return one of DSPResult enumeration value.\n
+ DSP_SUCCEEDED will be returned if succeeded.*/
+ IMONDSPAPI DSPResult IMON_Display_Uninit();
+
+ /**DSPResult IMON_Display_IsInited()
+ @brief This function can be used when the caller application wants to know if API is initialized.\n
+ @return This function will return one of DSPResult enumeration value.\n
+ If API is initialized, this call will return DSP_S_INITED. Otherwise DSP_S_NOT_INITED will be returned.*/
+ IMONDSPAPI DSPResult IMON_Display_IsInited();
+
+ /**DSPResult IMON_Display_IsPluginModeEnabled()
+ @brief This function can be used when the caller application wants to know if API can control iMON display.\n
+ @return This function will return one of DSPResult enumeration value.\n
+ If API can control iMON display, this call will return DSP_S_IN_PLUGIN_MODE. Otherwise DSP_S_NOT_IN_PLUGIN_MODE will be returned.*/
+ IMONDSPAPI DSPResult IMON_Display_IsPluginModeEnabled();
+
+
+ /**DSPResult IMON_Display_SetVfdText(LPCTSTR lpsz1stLine, LPCTSTR lpsz2ndLine)
+ @brief This function can be used when the caller application wants to display text data on VFD module.\n
+ @param [in] lpsz1stLine This string data will be displayed on the 1st line of VFD module.\n
+ It doesn't support multi-byte character and if string data is longer than 16 characters, it displays 16 characters from the first.\n
+ @param [in] lpsz2ndLine This string data will be displayed on the 2nd line of VFD module.\n
+ It doesn't support multi-byte character and if string data is longer than 16 characters, it displays 16 characters from the first.\n
+ @return This function will return one of DSPResult enumeration value.\n
+ DSP_SUCCEEDED will be returned if succeeded. DSP_E_POINTER, DSP_E_NOT_INITED or DSP_E_FAIL can be returned if failed.*/
+ IMONDSPAPI DSPResult IMON_Display_SetVfdText(LPCTSTR lpsz1stLine, LPCTSTR lpsz2ndLine);
+
+ /**DSPResult IMON_Display_SetVfdEqData(PDSPEQDATA pEqData)
+ @brief This function can be used when the caller application wants to display equalizer data on VFD module.\n
+ @param [in] pEqData Pointer of DSPEQDATA structure. The caller application should fill this structure with the equalizer data for 16 bands.\n
+ @return This function will return one of DSPResult enumeration value.\n
+ DSP_SUCCEEDED will be returned if succeeded. DSP_E_POINTER, DSP_E_NOT_INITED or DSP_E_FAIL can be returned if failed.*/
+ IMONDSPAPI DSPResult IMON_Display_SetVfdEqData(PDSPEQDATA pEqData);
+
+
+ /**DSPResult IMON_Display_SetLcdText(LPCTSTR lpszText)
+ @brief This function can be used when the caller application wants to display text data on LCD module.\n
+ @param [in] lpszText This string data will be displayed on the LCD module.\n
+ It supports multi-byte character and if string data is longer than display area, it will start to scroll.\n
+ When text scrolling is finished, API will notify it with DSPNotifyCode enumeration value, DSPNM_LCD_TEXT_SCROLL_DONE.\n
+ @return This function will return one of DSPResult enumeration value.\n
+ DSP_SUCCEEDED will be returned if succeeded. DSP_E_POINTER, DSP_E_NOT_INITED or DSP_E_FAIL can be returned if failed.*/
+ IMONDSPAPI DSPResult IMON_Display_SetLcdText(LPCTSTR lpszText);
+
+ /**DSPResult IMON_Display_SetLcdEqData(PDSPEQDATA pEqDataL, PDSPEQDATA pEqDataR)
+ @brief This function can be used when the caller application wants to display equalizer data on LCD module.\n
+ @param [in] pEqDataL Pointer of DSPEQDATA structure. This parameter represents equalizer data of left channel.\n
+ The caller application should fill this structure with the equalizer data of left channel for 16 bands.\n
+ @param [in] pEqDataR Pointer of DSPEQDATA structure. This parameter represents equalizer data of right channel.\n
+ The caller application should fill this structure with the equalizer data of right channel for 16 bands.\n
+ @return This function will return one of DSPResult enumeration value.\n
+ DSP_SUCCEEDED will be returned if succeeded. DSP_E_POINTER, DSP_E_NOT_INITED or DSP_E_FAIL can be returned if failed.*/
+ IMONDSPAPI DSPResult IMON_Display_SetLcdEqData(PDSPEQDATA pEqDataL, PDSPEQDATA pEqDataR);
+
+
+ /**DSPResult IMON_Display_SetLcdAllIcons(BOOL bOn)
+ @brief This function can be used when the caller application wants to turn on/off all icons on LCD module.\n
+ @param [in] bOn If this value is TRUE, iMON will turn on all icons. Otherwise, iMON will turn off all icons.\n
+ @return This function will return one of DSPResult enumeration value.\n
+ DSP_SUCCEEDED will be returned if succeeded. DSP_E_NOT_INITED or DSP_E_FAIL can be returned if failed.*/
+ IMONDSPAPI DSPResult IMON_Display_SetLcdAllIcons(BOOL bOn);
+
+ /**DSPResult IMON_Display_SetLcdOrangeIcon(BYTE btIconData1, BYTE btIconData2)
+ @brief This function can be used when the caller application wants to turn on/off orange shaped disk icons on the upper left part of LCD module.\n
+ Disk icons consist of 8 pieces of orange and orange peel.\n
+ @param [in] btIconData1 Each bit represents one of icons shaped the piece of orange.\n
+ MSB is used for the piece placed on top and the remaining bits are for the piece placed in CCW from top.\n
+ @param [in] btIconData2 MSB represents the orange peel shaped icon. Other bits are not used.\n
+ @return This function will return one of DSPResult enumeration value.\n
+ DSP_SUCCEEDED will be returned if succeeded. DSP_E_NOT_INITED or DSP_E_FAIL can be returned if failed.*/
+ IMONDSPAPI DSPResult IMON_Display_SetLcdOrangeIcon(BYTE btIconData1, BYTE btIconData2);
+
+ /**DSPResult IMON_Display_SetLcdMediaTypeIcon(BYTE btIconData)
+ @brief This function can be used when the caller application wants to turn on/off media type icons on the upper part of LCD module.\n
+ @param [in] btIconData Each bit represents one of media type icons. From MSB each bit represents MUSIC, MOVIE, PHOTO, CD/DVD, TV, WEBCASTING and NEWS/WEATHER icon.\n
+ @return This function will return one of DSPResult enumeration value.\n
+ DSP_SUCCEEDED will be returned if succeeded. DSP_E_NOT_INITED or DSP_E_FAIL can be returned if failed.*/
+ IMONDSPAPI DSPResult IMON_Display_SetLcdMediaTypeIcon(BYTE btIconData);
+
+ /**DSPResult IMON_Display_SetLcdSpeakerIcon(BYTE btIconData1, BYTE btIconData2)
+ @brief This function can be used when the caller application wants to turn on/off speaker icons on the upper right part of LCD module.\n
+ @param [in] btIconData1 Each bit represents one of speaker icons.\nFrom MSB each bit represents L, C, R, SL, LFE, SR, RL and SPDIF icon.
+ @param [in] btIconData2 MSB represents RR icon. Other bits are not used.\n
+ @return This function will return one of DSPResult enumeration value.\n
+ DSP_SUCCEEDED will be returned if succeeded. DSP_E_NOT_INITED or DSP_E_FAIL can be returned if failed.*/
+ IMONDSPAPI DSPResult IMON_Display_SetLcdSpeakerIcon(BYTE btIconData1, BYTE btIconData2);
+
+ /**DSPResult IMON_Display_SetLcdVideoCodecIcon(BYTE btIconData)
+ @brief This function can be used when the caller application wants to turn on/off codec icons for video file on the lower part of LCD module.\n
+ @param [in] btIconData Each bit represents one of video codec icons. From MSB each bit represents MPG, DIVX, XVID, WMV, MPG, AC3, DTS and WMA icon.\n
+ @return This function will return one of DSPResult enumeration value.\n
+ DSP_SUCCEEDED will be returned if succeeded. DSP_E_NOT_INITED or DSP_E_FAIL can be returned if failed.*/
+ IMONDSPAPI DSPResult IMON_Display_SetLcdVideoCodecIcon(BYTE btIconData);
+
+ /**DSPResult IMON_Display_SetLcdAudioCodecIcon(BYTE btIconData)
+ @brief This function can be used when the caller application wants to turn on/off codec icons for audio file on the lower part of LCD module.\n
+ @param [in] btIconData Each bit represents one of audio codec icons. From MSB each bit represents MP3, OGG, WMA and WAV icon.\n
+ @return This function will return one of DSPResult enumeration value.\n
+ DSP_SUCCEEDED will be returned if succeeded. DSP_E_NOT_INITED or DSP_E_FAIL can be returned if failed.*/
+ IMONDSPAPI DSPResult IMON_Display_SetLcdAudioCodecIcon(BYTE btIconData);
+
+ /**DSPResult IMON_Display_SetLcdAspectRatioIcon(BYTE btIconData)
+ @brief This function can be used when the caller application wants to turn on/off aspect ratio icons on the lower right part of LCD module.\n
+ @param [in] btIconData Each bit represents one of aspect ratio icons. From MSB each bit represents SRC, FIT, TV, HDTV, SCR1 and SCR2 icon.\n
+ @return This function will return one of DSPResult enumeration value.\n
+ DSP_SUCCEEDED will be returned if succeeded. DSP_E_NOT_INITED or DSP_E_FAIL can be returned if failed.*/
+ IMONDSPAPI DSPResult IMON_Display_SetLcdAspectRatioIcon(BYTE btIconData);
+
+ /**DSPResult IMON_Display_SetLcdEtcIcon(BYTE btIconData)
+ @brief This function can be used when the caller application wants to turn on/off icons on the lower left part of LCD module.\n
+ @param [in] btIconData Each bit represents icon. From MSB each bit represents REPEAT, SHUFFLE, ALARM, REC, VOL and TIME icon.\n
+ @return This function will return one of DSPResult enumeration value.\n
+ DSP_SUCCEEDED will be returned if succeeded. DSP_E_NOT_INITED or DSP_E_FAIL can be returned if failed.*/
+ IMONDSPAPI DSPResult IMON_Display_SetLcdEtcIcon(BYTE btIconData);
+
+ /**DSPResult IMON_Display_SetLcdProgress(int nCurPos, int nTotal)
+ @brief This function can be used when the caller application wants to display progress bar on the upper and lower left part of text area of LCD module.\n
+ @param [in] nCurPos It represents the current position of progress bar.\n
+ @param [in] nTotal It represents the total length of progress bar.\n
+ @return This function will return one of DSPResult enumeration value.\n
+ DSP_SUCCEEDED will be returned if succeeded. DSP_E_NOT_INITED or DSP_E_FAIL can be returned if failed.*/
+ IMONDSPAPI DSPResult IMON_Display_SetLcdProgress(int nCurPos, int nTotal);
+
+#ifdef __cplusplus
+}
+#endif //__cplusplus
+
+#endif //__IMON_DISPLAY_API_H__
\ No newline at end of file
diff --git a/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/iMONDisplayDefines.h b/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/iMONDisplayDefines.h
new file mode 100644
index 0000000..8555904
--- /dev/null
+++ b/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/iMONDisplayDefines.h
@@ -0,0 +1,114 @@
+#ifndef __IMON_DISPLAY_API_DEFINES_H__
+#define __IMON_DISPLAY_API_DEFINES_H__
+
+//////////////////////////////////////////////////
+//////////////////////////////////////////////////
+// Enumerations
+
+/**DSPResult
+@brief These enumeration values represent the returned result for iMON Display API function calls.\n
+ All iMON Display API function calls return one of this result values.\n
+ For meaning of each result, refer the comment of each line below*/
+enum DSPResult
+{
+ DSP_SUCCEEDED = 0, //// Function Call Succeeded Without Error
+ DSP_E_FAIL, //// Unspecified Failure
+ DSP_E_OUTOFMEMORY, //// Failed to Allocate Necessary Memory
+ DSP_E_INVALIDARG, //// One or More Arguments Are Not Valid
+ DSP_E_NOT_INITED, //// API is Not Initialized
+ DSP_E_POINTER, //// Pointer is Not Valid
+
+ DSP_S_INITED = 0x1000, //// API is Initialized
+ DSP_S_NOT_INITED, //// API is Not Initialized
+ DSP_S_IN_PLUGIN_MODE, //// API Can Control iMON Display (Display Plug-in Mode)
+ DSP_S_NOT_IN_PLUGIN_MODE, //// API Can't Control iMON Display
+};
+
+
+/**DSPNInitResult
+@brief These enumeration values represent the result status for requesting Display Plug-in Mode to iMON.\n
+ iMON Display API notifies one of this result values to the caller application after requesting Display Plug-in Mode to iMON.\n
+ For more information, refer the comment of each line below*/
+enum DSPNInitResult
+{
+ DSPN_SUCCEEDED = 0, //// Display Plug-in Mode is Initialized Successfully
+ DSPN_ERR_IN_USED = 0x0100, //// Display Plug-in is Already Used by Other Application
+ DSPN_ERR_HW_DISCONNECTED, //// iMON HW is Not Connected
+ DSPN_ERR_NOT_SUPPORTED_HW, //// The Connected iMON HW doesn't Support Display Plug-in
+ DSPN_ERR_PLUGIN_DISABLED, //// Display Plug-in Mode Option is Disabled
+ DSPN_ERR_IMON_NO_REPLY, //// The Latest iMON is Not Installed or iMON Not Running
+ DSPN_ERR_UNKNOWN = 0x0200, //// Unknown Failure
+};
+
+
+/**DSPType
+@brief These enumeration values represent display type.\n
+ Currently iMON Display API supports VFD and LCD products.*/
+enum DSPType
+{
+ DSPN_DSP_NONE = 0,
+ DSPN_DSP_VFD = 0x01, //// VFD products
+ DSPN_DSP_LCD = 0x02, //// LCD products
+};
+
+
+/**DSPNotifyCode
+@brief These enumeration values represent the notification codes.\n
+ iMON Display API will send or post message to the caller application.\n
+ The caller application should assign the message and the winodw handle to receivce message with IMON_Display_Init fucntion.\n
+ These enumeration values are used with WPARAM parameter of the message.\n
+ For more information, see the explanation of each notification code below*/
+enum DSPNotifyCode
+{
+ /**DSPNM_PLUGIN_SUCCEED
+ @brief When API succeeds to get the control for the display, API will post caller-specified message with DSPNM_PLUGIN_SUCCEED as WPARAM parameter.\n
+ LPARAM represents DSPType. This value can be 0x01 (VFD), 0x02 (LCD) or 0x03 (VFD+LCD).*/
+ DSPNM_PLUGIN_SUCCEED = 0,
+
+ /**DSPNM_PLUGIN_FAILED
+ @brief When API fails to get the control for the display, API will post caller-specified message with DSPNM_PLUGIN_FAILED as WPARAM parameter.\n
+ LPARAM represents error code with DSPNResult.*/
+ DSPNM_PLUGIN_FAILED,
+
+ /**DSPNM_IMON_RESTARTED
+ @brief When iMON starts, API will post caller-specified message with DSPNM_IMON_RESTARTED as WPARAM parameter.\n
+ LPARAM represents DSPType. This value can be 0 (No Display), 0x01 (VFD), 0x02 (LCD) or 0x03 (VFD+LCD).*/
+ DSPNM_IMON_RESTARTED,
+
+ /**DSPNM_IMON_CLOSED
+ @brief When iMON closed, API will post caller-specified message with DSPNM_IMON_CLOSED as WPARAM parameter.\n
+ LPARAM is not used.*/
+ DSPNM_IMON_CLOSED,
+
+ /**DSPNM_HW_CONNECTED
+ @brief When iMON HW newly connected, API will post caller-specified message with DSPNM_HW_CONNECTED as WPARAM parameter.\n
+ LPARAM represents DSPType. This value can be 0 (No Display), 0x01 (VFD), 0x02 (LCD) or 0x03 (VFD+LCD).*/
+ DSPNM_HW_CONNECTED,
+
+ /**DSPNM_HW_DISCONNECTED
+ @brief When iMON HW disconnected, API will post caller-specified message with DSPNM_HW_DISCONNECTED as WPARAM parameter.\n
+ LPARAM is DSPNResult value, DSPN_ERR_HW_DISCONNECTED.*/
+ DSPNM_HW_DISCONNECTED,
+
+
+ /**DSPNM_LCD_TEXT_SCROLL_DONE
+ @brief When iMON LCD finishes scrolling Text, API will post caller-specified message with DSPNM_LCD_TEXT_SCROLL_DONE as WPARAM parameter.\n
+ The caller application may need to know when text scroll is finished, for sending next text.\n
+ LPARAM is not used.*/
+ DSPNM_LCD_TEXT_SCROLL_DONE = 0x1000,
+};
+
+//////////////////////////////////////////////////
+//////////////////////////////////////////////////
+// Structure
+
+/**DspEqData
+@brief This structure contains Equalizer data for 16 bands.
+@param BandData It represents Equalizer data for 16 bands. Its range is from 0 to 100.*/
+typedef struct DspEqData
+{
+ int BandData[16];
+
+} DSPEQDATA, *PDSPEQDATA;
+
+#endif //__IMON_DISPLAY_API_DEFINES_H__
\ No newline at end of file
diff --git a/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/iMONDisplayWrapper.cpp b/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/iMONDisplayWrapper.cpp
new file mode 100644
index 0000000..3cee5aa
--- /dev/null
+++ b/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/iMONDisplayWrapper.cpp
@@ -0,0 +1,106 @@
+//------------------------------------------------------------------------------
+#include
+#include "iMONDisplayWrapper.h"
+#include "IdwApi.h"
+//------------------------------------------------------------------------------
+IdwApi* pIdwApi = NULL;
+//------------------------------------------------------------------------------
+BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
+{
+ switch (fdwReason)
+ {
+ case DLL_PROCESS_ATTACH:
+ pIdwApi = new IdwApi(hinstDLL);
+ break;
+ case DLL_PROCESS_DETACH:
+ delete pIdwApi;
+ break;
+ }
+ return TRUE;
+}
+//------------------------------------------------------------------------------
+DSPResult IDW_Init(IDW_INITRESULT* pInitResult)
+{
+ return pIdwApi->Init(pInitResult);
+}
+//------------------------------------------------------------------------------
+DSPResult IDW_Uninit()
+{
+ return pIdwApi->Uninit();
+}
+//------------------------------------------------------------------------------
+DSPResult IDW_IsInited()
+{
+ return pIdwApi->IsInited();
+}
+//------------------------------------------------------------------------------
+DSPResult IDW_IsPluginModeEnabled()
+{
+ return pIdwApi->IsPluginModeEnabled();
+}
+//------------------------------------------------------------------------------
+DSPResult IDW_SetVfdText(LPCWSTR lpszLine1, LPCWSTR lpszLine2)
+{
+ return pIdwApi->SetVfdText(lpszLine1, lpszLine2);
+}
+//------------------------------------------------------------------------------
+DSPResult IDW_SetVfdEqData(PDSPEQDATA pEqData)
+{
+ return pIdwApi->SetVfdEqData(pEqData);
+}
+//------------------------------------------------------------------------------
+DSPResult IDW_SetLcdText(LPCWSTR lpszLine1)
+{
+ return pIdwApi->SetLcdText(lpszLine1);
+}
+//------------------------------------------------------------------------------
+DSPResult IDW_SetLcdEqData(PDSPEQDATA pEqDataL, PDSPEQDATA pEqDataR)
+{
+ return pIdwApi->SetLcdEqData(pEqDataL, pEqDataR);
+}
+//------------------------------------------------------------------------------
+DSPResult IDW_SetLcdAllIcons(BOOL bOn)
+{
+ return pIdwApi->SetLcdAllIcons(bOn);
+}
+//------------------------------------------------------------------------------
+DSPResult IDW_SetLcdOrangeIcon(BYTE btIconData1, BYTE btIconData2)
+{
+ return pIdwApi->SetLcdOrangeIcon(btIconData1, btIconData2);
+}
+//------------------------------------------------------------------------------
+DSPResult IDW_SetLcdMediaTypeIcon(BYTE btIconData)
+{
+ return pIdwApi->SetLcdMediaTypeIcon(btIconData);
+}
+//------------------------------------------------------------------------------
+DSPResult IDW_SetLcdSpeakerIcon(BYTE btIconData1, BYTE btIconData2)
+{
+ return pIdwApi->SetLcdSpeakerIcon(btIconData1, btIconData2);
+}
+//------------------------------------------------------------------------------
+DSPResult IDW_SetLcdVideoCodecIcon(BYTE btIconData)
+{
+ return pIdwApi->SetLcdVideoCodecIcon(btIconData);
+}
+//------------------------------------------------------------------------------
+DSPResult IDW_SetLcdAudioCodecIcon(BYTE btIconData)
+{
+ return pIdwApi->SetLcdAudioCodecIcon(btIconData);
+}
+//------------------------------------------------------------------------------
+DSPResult IDW_SetLcdAspectRatioIcon(BYTE btIconData)
+{
+ return pIdwApi->SetLcdAspectRatioIcon(btIconData);
+}
+//------------------------------------------------------------------------------
+DSPResult IDW_SetLcdEtcIcon(BYTE btIconData)
+{
+ return pIdwApi->SetLcdEtcIcon(btIconData);
+}
+//------------------------------------------------------------------------------
+DSPResult IDW_SetLcdProgress(int nCurPos, int nTotal)
+{
+ return pIdwApi->SetLcdProgress(nCurPos, nTotal);
+}
+//------------------------------------------------------------------------------
\ No newline at end of file
diff --git a/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/iMONDisplayWrapper.h b/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/iMONDisplayWrapper.h
new file mode 100644
index 0000000..568c493
--- /dev/null
+++ b/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/iMONDisplayWrapper.h
@@ -0,0 +1,48 @@
+//------------------------------------------------------------------------------
+#ifndef IMONDISPLAYWRAPPER_H_INCLUDED
+#define IMONDISPLAYWRAPPER_H_INCLUDED
+//------------------------------------------------------------------------------
+#include "iMONDisplayDefines.h"
+#include
+//------------------------------------------------------------------------------
+#ifdef IMONDISPLAYWRAPPER_EXPORTS
+#define IMONDSPWRAPPER __declspec(dllexport)
+#else
+#define IMONDSPWRAPPER __declspec(dllimport)
+#endif
+//------------------------------------------------------------------------------
+typedef struct _IDW_INITRESULT
+{
+ DSPNInitResult initResult;
+ DSPType dspType;
+} IDW_INITRESULT;
+//------------------------------------------------------------------------------
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+//------------------------------------------------------------------------------
+IMONDSPWRAPPER DSPResult IDW_Init(IDW_INITRESULT* pInitResult);
+IMONDSPWRAPPER DSPResult IDW_Uninit();
+IMONDSPWRAPPER DSPResult IDW_IsInited();
+IMONDSPWRAPPER DSPResult IDW_IsPluginModeEnabled();
+IMONDSPWRAPPER DSPResult IDW_SetVfdText(LPCWSTR lpszLine1, LPCWSTR lpszLine2);
+IMONDSPWRAPPER DSPResult IDW_SetVfdEqData(PDSPEQDATA pEqData);
+IMONDSPWRAPPER DSPResult IDW_SetLcdText(LPCWSTR lpszLine1);
+IMONDSPWRAPPER DSPResult IDW_SetLcdEqData(PDSPEQDATA pEqDataL, PDSPEQDATA pEqDataR);
+IMONDSPWRAPPER DSPResult IDW_SetLcdAllIcons(BOOL bOn);
+IMONDSPWRAPPER DSPResult IDW_SetLcdOrangeIcon(BYTE btIconData1, BYTE btIconData2);
+IMONDSPWRAPPER DSPResult IDW_SetLcdMediaTypeIcon(BYTE btIconData);
+IMONDSPWRAPPER DSPResult IDW_SetLcdSpeakerIcon(BYTE btIconData1, BYTE btIconData2);
+IMONDSPWRAPPER DSPResult IDW_SetLcdVideoCodecIcon(BYTE btIconData);
+IMONDSPWRAPPER DSPResult IDW_SetLcdAudioCodecIcon(BYTE btIconData);
+IMONDSPWRAPPER DSPResult IDW_SetLcdAspectRatioIcon(BYTE btIconData);
+IMONDSPWRAPPER DSPResult IDW_SetLcdEtcIcon(BYTE btIconData);
+IMONDSPWRAPPER DSPResult IDW_SetLcdProgress(int nCurPos, int nTotal);
+//------------------------------------------------------------------------------
+#ifdef __cplusplus
+}
+#endif
+//------------------------------------------------------------------------------
+#endif
+//------------------------------------------------------------------------------
diff --git a/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/iMONDisplayWrapper.rc b/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/iMONDisplayWrapper.rc
new file mode 100644
index 0000000..467caf1
--- /dev/null
+++ b/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/iMONDisplayWrapper.rc
@@ -0,0 +1,103 @@
+// Microsoft Visual C++ generated resource script.
+//
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include "afxres.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// German (Germany) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_DEU)
+#ifdef _WIN32
+LANGUAGE LANG_GERMAN, SUBLANG_GERMAN
+#pragma code_page(1252)
+#endif //_WIN32
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE
+BEGIN
+ "resource.h\0"
+END
+
+2 TEXTINCLUDE
+BEGIN
+ "#include ""afxres.h""\r\n"
+ "\0"
+END
+
+3 TEXTINCLUDE
+BEGIN
+ "\r\n"
+ "\0"
+END
+
+#endif // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Version
+//
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION 0,2,3,1
+ PRODUCTVERSION 0,2,3,1
+ FILEFLAGSMASK 0x17L
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS 0x4L
+ FILETYPE 0x2L
+ FILESUBTYPE 0x0L
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "000004b0"
+ BEGIN
+ VALUE "Comments", "Use with iMON Manager 8.01.0419 or later"
+ VALUE "CompanyName", "Team MediaPortal"
+ VALUE "FileDescription", "iMONDisplayAPI Wrapper"
+ VALUE "FileVersion", "0, 2, 3, 1"
+ VALUE "InternalName", "iMONDisp"
+ VALUE "LegalCopyright", "Copyright (C) 2011 Team MediaPortal"
+ VALUE "OriginalFilename", "iMONDisplayWrapper.dll"
+ VALUE "ProductName", "iMONDisplayAPI Wrapper"
+ VALUE "ProductVersion", "0, 2, 3, 1"
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x0, 1200
+ END
+END
+
+#endif // German (Germany) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+
+
+/////////////////////////////////////////////////////////////////////////////
+#endif // not APSTUDIO_INVOKED
+
diff --git a/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/iMONDisplayWrapper.vcproj b/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/iMONDisplayWrapper.vcproj
new file mode 100644
index 0000000..9663112
--- /dev/null
+++ b/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/iMONDisplayWrapper.vcproj
@@ -0,0 +1,255 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/iMONDisplayWrapper.vcxproj b/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/iMONDisplayWrapper.vcxproj
new file mode 100644
index 0000000..6d57fb4
--- /dev/null
+++ b/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/iMONDisplayWrapper.vcxproj
@@ -0,0 +1,118 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Release
+ Win32
+
+
+
+ {E1A2655B-02A2-437A-8270-4AD81DDDC502}
+ iMONDisplayWrapper
+ Win32Proj
+
+
+
+ DynamicLibrary
+ Unicode
+ true
+
+
+ DynamicLibrary
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+
+ <_ProjectFileVersion>10.0.40219.1
+ $(SolutionDir)\MiniDisplayLibrary\bin\$(Configuration)\
+ $(SolutionDir)\MiniDisplayLibrary\obj\$(PlatformShortName)$(Configuration)\
+ true
+ $(SolutionDir)\MiniDisplayLibrary\bin\$(Configuration)\
+ $(SolutionDir)\MiniDisplayLibrary\obj\$(PlatformShortName)\$(Configuration)
+ false
+ AllRules.ruleset
+
+
+ AllRules.ruleset
+
+
+
+
+
+ Disabled
+ WIN32;_DEBUG;_WINDOWS;_USRDLL;IMONDISPLAYWRAPPER_EXPORTS;%(PreprocessorDefinitions)
+ true
+ EnableFastChecks
+ MultiThreadedDebugDLL
+
+
+ Level3
+ EditAndContinue
+
+
+ iMONDisplay.lib;%(AdditionalDependencies)
+ true
+ Windows
+ MachineX86
+
+
+
+
+ MaxSpeed
+ true
+ WIN32;NDEBUG;_WINDOWS;_USRDLL;IMONDISPLAYWRAPPER_EXPORTS;%(PreprocessorDefinitions)
+ MultiThreaded
+ true
+
+
+ Level3
+ ProgramDatabase
+
+
+ iMONDisplay.lib;%(AdditionalDependencies)
+ true
+ Windows
+ true
+ true
+ MachineX86
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/iMONDisplayWrapper.vcxproj.filters b/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/iMONDisplayWrapper.vcxproj.filters
new file mode 100644
index 0000000..d1119f9
--- /dev/null
+++ b/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/iMONDisplayWrapper.vcxproj.filters
@@ -0,0 +1,71 @@
+
+
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hpp;hxx;hm;inl;inc;xsd
+
+
+ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
+ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav
+
+
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+
+
+ Resource Files
+
+
+
\ No newline at end of file
diff --git a/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/resource.h b/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/resource.h
new file mode 100644
index 0000000..43a625f
--- /dev/null
+++ b/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Drivers/iMONDisplayWrapper/resource.h
@@ -0,0 +1,14 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft Visual C++ generated include file.
+// Used by iMONDisplayWrapper.rc
+
+// Next default values for new objects
+//
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NEXT_RESOURCE_VALUE 101
+#define _APS_NEXT_COMMAND_VALUE 40001
+#define _APS_NEXT_CONTROL_VALUE 1001
+#define _APS_NEXT_SYMED_VALUE 101
+#endif
+#endif
diff --git a/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Settings.cs b/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Settings.cs
index 464ef96..72e541d 100644
--- a/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Settings.cs
+++ b/mediaportal/MiniDisplayLibrary/MiniDisplayPlugin/Settings.cs
@@ -319,6 +319,16 @@ namespace MediaPortal.ProcessPlugins.MiniDisplayPlugin
list.Add(new ShuttlePF27());
if (this.ExtensiveLogging)
{
+ Log.Info("MiniDisplay.Settings.LoadDrivers(): Loading iMON VFD...");
+ }
+ list.Add(new ImonVfd());
+ if (this.ExtensiveLogging)
+ {
+ Log.Info("MiniDisplay.Settings.LoadDrivers(): Loading iMON LCD...");
+ }
+ list.Add(new ImonLcd());
+ if (this.ExtensiveLogging)
+ {
Log.Info("MiniDisplay.Settings.LoadDrivers(): Loading Debug Display...");
}
list.Add(new DebugForm());
diff --git a/mediaportal/Setup/setup.nsi b/mediaportal/Setup/setup.nsi
index f29aad2..0e7f74e 100644
--- a/mediaportal/Setup/setup.nsi
+++ b/mediaportal/Setup/setup.nsi
@@ -443,6 +443,8 @@ Section "MediaPortal core files (required)" SecCore
File "${git_DirectShowFilters}\mpc-hc_subs\bin\${BUILD_TYPE}\mpcSubs.dll"
File "${git_DirectShowFilters}\DXErr9\bin\${BUILD_TYPE}\Dxerr9.dll"
File "${git_MP}\MiniDisplayLibrary\bin\${BUILD_TYPE}\MiniDisplayLibrary.dll"
+ File "${git_MP}\MiniDisplayLibrary\bin\${BUILD_TYPE}\iMONDisplayWrapper.dll"
+ File "${git_MP}\MiniDisplayLibrary\bin\${BUILD_TYPE}\MiniDisplayPlugin\API\Soundgraph\iMONDisplay.dll"
; Utils
File "${git_MP}\Utils\bin\${BUILD_TYPE}\Utils.dll"
; Common Utils