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 @@
     <Compile Include="MiniDisplayPlugin\ByteArray.cs">
       <SubType>Code</SubType>
     </Compile>
+    <Compile Include="MiniDisplayPlugin\Drivers\ImonBase.cs" />
+    <Compile Include="MiniDisplayPlugin\Drivers\ImonLcd.cs" />
+    <Compile Include="MiniDisplayPlugin\Drivers\ImonLcd_AdvancedSetupForm.cs">
+      <SubType>Form</SubType>
+    </Compile>
+    <Compile Include="MiniDisplayPlugin\Drivers\ImonLcd_AdvancedSetupForm.Designer.cs">
+      <DependentUpon>ImonLcd_AdvancedSetupForm.cs</DependentUpon>
+    </Compile>
+    <Compile Include="MiniDisplayPlugin\Drivers\ImonVfd.cs" />
     <Compile Include="MiniDisplayPlugin\Drivers\ShuttlePF27.cs" />
     <Compile Include="MiniDisplayPlugin\Drivers\DM140GINK.cs" />
     <Compile Include="MiniDisplayPlugin\Drivers\FicSpectra.cs" />
@@ -345,6 +354,11 @@
       <DependentUpon>iMONLCDg_AdvancedSetupForm.cs</DependentUpon>
     </EmbeddedResource>
   </ItemGroup>
+  <ItemGroup>
+    <Content Include="MiniDisplayPlugin\API\Soundgraph\iMONDisplay.dll">
+      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+    </Content>
+  </ItemGroup>
   <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
   <PropertyGroup>
     <PreBuildEvent>
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
+{
+    /// <summary>
+    /// Base Class for iMON Display API in iMON Manager >= 8.01.0419
+    /// </summary>
+    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
+{
+    /// <summary>
+    /// iMON LCD Driver for iMON Manager >= 8.01.0419
+    /// </summary>
+    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<int> 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<int>();
+                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
+    {
+        /// <summary>
+        /// Required designer variable.
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary>
+        /// Clean up any resources being used.
+        /// </summary>
+        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region Windows Form Designer generated code
+
+        /// <summary>
+        /// Required method for Designer support - do not modify
+        /// the contents of this method with the code editor.
+        /// </summary>
+        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 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
\ 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
+{
+    /// <summary>
+    /// iMON VFD Driver for iMON Manager >= 8.01.0419
+    /// </summary>
+    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 <windows.h>
+//------------------------------------------------------------------------------
+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 <windows.h>
+//------------------------------------------------------------------------------
+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 <windows.h>
+#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 <windows.h>
+#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 <windows.h>
+//------------------------------------------------------------------------------
+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 <windows.h>
+//------------------------------------------------------------------------------
+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 <windows.h>
+#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 <windows.h>
+#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 <windows.h>
+//------------------------------------------------------------------------------
+#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 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+	ProjectType="Visual C++"
+	Version="9,00"
+	Name="iMONDisplayWrapper"
+	ProjectGUID="{E1A2655B-02A2-437A-8270-4AD81DDDC502}"
+	RootNamespace="iMONDisplayWrapper"
+	Keyword="Win32Proj"
+	TargetFrameworkVersion="131072"
+	>
+	<Platforms>
+		<Platform
+			Name="Win32"
+		/>
+	</Platforms>
+	<ToolFiles>
+	</ToolFiles>
+	<Configurations>
+		<Configuration
+			Name="Debug|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="2"
+			CharacterSet="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="0"
+				PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;IMONDISPLAYWRAPPER_EXPORTS"
+				MinimalRebuild="true"
+				BasicRuntimeChecks="3"
+				RuntimeLibrary="3"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				DebugInformationFormat="4"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="iMONDisplay.lib"
+				LinkIncremental="2"
+				GenerateDebugInformation="true"
+				SubSystem="2"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+		<Configuration
+			Name="Release|Win32"
+			OutputDirectory="$(SolutionDir)$(ConfigurationName)"
+			IntermediateDirectory="$(ConfigurationName)"
+			ConfigurationType="2"
+			CharacterSet="1"
+			WholeProgramOptimization="1"
+			>
+			<Tool
+				Name="VCPreBuildEventTool"
+			/>
+			<Tool
+				Name="VCCustomBuildTool"
+			/>
+			<Tool
+				Name="VCXMLDataGeneratorTool"
+			/>
+			<Tool
+				Name="VCWebServiceProxyGeneratorTool"
+			/>
+			<Tool
+				Name="VCMIDLTool"
+			/>
+			<Tool
+				Name="VCCLCompilerTool"
+				Optimization="2"
+				EnableIntrinsicFunctions="true"
+				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;_USRDLL;IMONDISPLAYWRAPPER_EXPORTS"
+				RuntimeLibrary="0"
+				EnableFunctionLevelLinking="true"
+				UsePrecompiledHeader="0"
+				WarningLevel="3"
+				DebugInformationFormat="3"
+			/>
+			<Tool
+				Name="VCManagedResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCResourceCompilerTool"
+			/>
+			<Tool
+				Name="VCPreLinkEventTool"
+			/>
+			<Tool
+				Name="VCLinkerTool"
+				AdditionalDependencies="iMONDisplay.lib"
+				LinkIncremental="1"
+				GenerateDebugInformation="true"
+				SubSystem="2"
+				OptimizeReferences="2"
+				EnableCOMDATFolding="2"
+				TargetMachine="1"
+			/>
+			<Tool
+				Name="VCALinkTool"
+			/>
+			<Tool
+				Name="VCManifestTool"
+			/>
+			<Tool
+				Name="VCXDCMakeTool"
+			/>
+			<Tool
+				Name="VCBscMakeTool"
+			/>
+			<Tool
+				Name="VCFxCopTool"
+			/>
+			<Tool
+				Name="VCAppVerifierTool"
+			/>
+			<Tool
+				Name="VCPostBuildEventTool"
+			/>
+		</Configuration>
+	</Configurations>
+	<References>
+	</References>
+	<Files>
+		<Filter
+			Name="Source Files"
+			Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
+			UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
+			>
+			<File
+				RelativePath=".\Event.cpp"
+				>
+			</File>
+			<File
+				RelativePath=".\IdwApi.cpp"
+				>
+			</File>
+			<File
+				RelativePath=".\IdwThread.cpp"
+				>
+			</File>
+			<File
+				RelativePath=".\iMONDisplayWrapper.cpp"
+				>
+			</File>
+			<File
+				RelativePath=".\Mutex.cpp"
+				>
+			</File>
+			<File
+				RelativePath=".\Thread.cpp"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Header Files"
+			Filter="h;hpp;hxx;hm;inl;inc;xsd"
+			UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
+			>
+			<File
+				RelativePath=".\Event.h"
+				>
+			</File>
+			<File
+				RelativePath=".\IdwApi.h"
+				>
+			</File>
+			<File
+				RelativePath=".\IdwThread.h"
+				>
+			</File>
+			<File
+				RelativePath=".\iMONDisplayAPI.h"
+				>
+			</File>
+			<File
+				RelativePath=".\iMONDisplayDefines.h"
+				>
+			</File>
+			<File
+				RelativePath=".\iMONDisplayWrapper.h"
+				>
+			</File>
+			<File
+				RelativePath=".\Mutex.h"
+				>
+			</File>
+			<File
+				RelativePath=".\resource.h"
+				>
+			</File>
+			<File
+				RelativePath=".\Thread.h"
+				>
+			</File>
+		</Filter>
+		<Filter
+			Name="Resource Files"
+			Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
+			UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
+			>
+			<File
+				RelativePath=".\iMONDisplayWrapper.rc"
+				>
+			</File>
+		</Filter>
+	</Files>
+	<Globals>
+	</Globals>
+</VisualStudioProject>
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 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{E1A2655B-02A2-437A-8270-4AD81DDDC502}</ProjectGuid>
+    <RootNamespace>iMONDisplayWrapper</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>true</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>DynamicLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)\MiniDisplayLibrary\bin\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)\MiniDisplayLibrary\obj\$(PlatformShortName)$(Configuration)\</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</LinkIncremental>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)\MiniDisplayLibrary\bin\$(Configuration)\</OutDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)\MiniDisplayLibrary\obj\$(PlatformShortName)\$(Configuration)</IntDir>
+    <LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</LinkIncremental>
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
+    <CodeAnalysisRuleSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AllRules.ruleset</CodeAnalysisRuleSet>
+    <CodeAnalysisRules Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+    <CodeAnalysisRuleAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;IMONDISPLAYWRAPPER_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <MinimalRebuild>true</MinimalRebuild>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>iMONDisplay.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;IMONDISPLAYWRAPPER_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <RuntimeLibrary>MultiThreaded</RuntimeLibrary>
+      <FunctionLevelLinking>true</FunctionLevelLinking>
+      <PrecompiledHeader>
+      </PrecompiledHeader>
+      <WarningLevel>Level3</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+    </ClCompile>
+    <Link>
+      <AdditionalDependencies>iMONDisplay.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <GenerateDebugInformation>true</GenerateDebugInformation>
+      <SubSystem>Windows</SubSystem>
+      <OptimizeReferences>true</OptimizeReferences>
+      <EnableCOMDATFolding>true</EnableCOMDATFolding>
+      <TargetMachine>MachineX86</TargetMachine>
+    </Link>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClCompile Include="Event.cpp" />
+    <ClCompile Include="IdwApi.cpp" />
+    <ClCompile Include="IdwThread.cpp" />
+    <ClCompile Include="iMONDisplayWrapper.cpp" />
+    <ClCompile Include="Mutex.cpp" />
+    <ClCompile Include="Thread.cpp" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="Event.h" />
+    <ClInclude Include="IdwApi.h" />
+    <ClInclude Include="IdwThread.h" />
+    <ClInclude Include="iMONDisplayAPI.h" />
+    <ClInclude Include="iMONDisplayDefines.h" />
+    <ClInclude Include="iMONDisplayWrapper.h" />
+    <ClInclude Include="Mutex.h" />
+    <ClInclude Include="resource.h" />
+    <ClInclude Include="Thread.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include="iMONDisplayWrapper.rc" />
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ 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 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup>
+    <Filter Include="Source Files">
+      <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
+      <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
+    </Filter>
+    <Filter Include="Header Files">
+      <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
+      <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
+    </Filter>
+    <Filter Include="Resource Files">
+      <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
+      <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
+    </Filter>
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="Event.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="IdwApi.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="IdwThread.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="iMONDisplayWrapper.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="Mutex.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+    <ClCompile Include="Thread.cpp">
+      <Filter>Source Files</Filter>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ClInclude Include="Event.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="IdwApi.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="IdwThread.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="iMONDisplayAPI.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="iMONDisplayDefines.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="iMONDisplayWrapper.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="Mutex.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="resource.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+    <ClInclude Include="Thread.h">
+      <Filter>Header Files</Filter>
+    </ClInclude>
+  </ItemGroup>
+  <ItemGroup>
+    <ResourceCompile Include="iMONDisplayWrapper.rc">
+      <Filter>Resource Files</Filter>
+    </ResourceCompile>
+  </ItemGroup>
+</Project>
\ 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
