Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mpc-hc/mpc-hc.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mpc-hc.sln4
-rw-r--r--src/apps/mplayerc/FGFilter.cpp6
-rw-r--r--src/apps/mplayerc/FGManager.cpp6
-rw-r--r--src/apps/mplayerc/FakeFilterMapper2.cpp2
-rw-r--r--src/apps/mplayerc/MainFrm.cpp13
-rw-r--r--src/apps/mplayerc/QuicktimeGraph.cpp2
-rw-r--r--src/apps/mplayerc/QuicktimeGraph.h4
-rw-r--r--src/apps/mplayerc/RealMediaGraph.h4
-rw-r--r--src/apps/mplayerc/ShaderEditorDlg.cpp2
-rw-r--r--src/apps/mplayerc/mplayerc.h2
-rw-r--r--src/apps/mplayerc/mplayerc.vcproj12
-rw-r--r--src/filters/renderer/VideoRenderers/AllocatorCommon.cpp (renamed from src/VideoRenderers/AllocatorCommon.cpp)0
-rw-r--r--src/filters/renderer/VideoRenderers/AllocatorCommon.h (renamed from src/VideoRenderers/AllocatorCommon.h)0
-rw-r--r--src/filters/renderer/VideoRenderers/AllocatorCommon7.cpp (renamed from src/VideoRenderers/AllocatorCommon7.cpp)0
-rw-r--r--src/filters/renderer/VideoRenderers/AllocatorCommon7.h (renamed from src/VideoRenderers/AllocatorCommon7.h)0
-rw-r--r--src/filters/renderer/VideoRenderers/D3DFont.cpp (renamed from src/VideoRenderers/D3DFont.cpp)0
-rw-r--r--src/filters/renderer/VideoRenderers/D3DFont.h (renamed from src/VideoRenderers/D3DFont.h)0
-rw-r--r--src/filters/renderer/VideoRenderers/DX7AllocatorPresenter.cpp (renamed from src/VideoRenderers/DX7AllocatorPresenter.cpp)0
-rw-r--r--src/filters/renderer/VideoRenderers/DX7AllocatorPresenter.h (renamed from src/VideoRenderers/DX7AllocatorPresenter.h)0
-rw-r--r--src/filters/renderer/VideoRenderers/DX9AllocatorPresenter.cpp (renamed from src/VideoRenderers/DX9AllocatorPresenter.cpp)64
-rw-r--r--src/filters/renderer/VideoRenderers/DX9AllocatorPresenter.h (renamed from src/VideoRenderers/DX9AllocatorPresenter.h)4
-rw-r--r--src/filters/renderer/VideoRenderers/DXRAllocatorPresenter.cpp (renamed from src/VideoRenderers/DXRAllocatorPresenter.cpp)0
-rw-r--r--src/filters/renderer/VideoRenderers/DXRAllocatorPresenter.h (renamed from src/VideoRenderers/DXRAllocatorPresenter.h)0
-rw-r--r--src/filters/renderer/VideoRenderers/EVRAllocatorPresenter.cpp (renamed from src/VideoRenderers/EVRAllocatorPresenter.cpp)0
-rw-r--r--src/filters/renderer/VideoRenderers/EVRAllocatorPresenter.h (renamed from src/VideoRenderers/EVRAllocatorPresenter.h)0
-rw-r--r--src/filters/renderer/VideoRenderers/IPinHook.cpp (renamed from src/VideoRenderers/IPinHook.cpp)0
-rw-r--r--src/filters/renderer/VideoRenderers/IPinHook.h (renamed from src/VideoRenderers/IPinHook.h)0
-rw-r--r--src/filters/renderer/VideoRenderers/IQTVideoSurface.h (renamed from src/VideoRenderers/IQTVideoSurface.h)0
-rw-r--r--src/filters/renderer/VideoRenderers/MacrovisionKicker.cpp (renamed from src/VideoRenderers/MacrovisionKicker.cpp)0
-rw-r--r--src/filters/renderer/VideoRenderers/MacrovisionKicker.h (renamed from src/VideoRenderers/MacrovisionKicker.h)0
-rw-r--r--src/filters/renderer/VideoRenderers/PixelShaderCompiler.cpp (renamed from src/VideoRenderers/PixelShaderCompiler.cpp)0
-rw-r--r--src/filters/renderer/VideoRenderers/PixelShaderCompiler.h (renamed from src/VideoRenderers/PixelShaderCompiler.h)0
-rw-r--r--src/filters/renderer/VideoRenderers/QT7AllocatorPresenter.cpp (renamed from src/VideoRenderers/QT7AllocatorPresenter.cpp)0
-rw-r--r--src/filters/renderer/VideoRenderers/QT7AllocatorPresenter.h (renamed from src/VideoRenderers/QT7AllocatorPresenter.h)0
-rw-r--r--src/filters/renderer/VideoRenderers/QT9AllocatorPresenter.cpp (renamed from src/VideoRenderers/QT9AllocatorPresenter.cpp)0
-rw-r--r--src/filters/renderer/VideoRenderers/QT9AllocatorPresenter.h (renamed from src/VideoRenderers/QT9AllocatorPresenter.h)0
-rw-r--r--src/filters/renderer/VideoRenderers/RM7AllocatorPresenter.cpp (renamed from src/VideoRenderers/RM7AllocatorPresenter.cpp)0
-rw-r--r--src/filters/renderer/VideoRenderers/RM7AllocatorPresenter.h (renamed from src/VideoRenderers/RM7AllocatorPresenter.h)0
-rw-r--r--src/filters/renderer/VideoRenderers/RM9AllocatorPresenter.cpp (renamed from src/VideoRenderers/RM9AllocatorPresenter.cpp)0
-rw-r--r--src/filters/renderer/VideoRenderers/RM9AllocatorPresenter.h (renamed from src/VideoRenderers/RM9AllocatorPresenter.h)0
-rw-r--r--src/filters/renderer/VideoRenderers/RenderersSettings.cpp (renamed from src/VideoRenderers/RenderersSettings.cpp)0
-rw-r--r--src/filters/renderer/VideoRenderers/RenderersSettings.h (renamed from src/VideoRenderers/RenderersSettings.h)0
-rw-r--r--src/filters/renderer/VideoRenderers/SyncAllocatorPresenter.h (renamed from src/VideoRenderers/SyncAllocatorPresenter.h)0
-rw-r--r--src/filters/renderer/VideoRenderers/SyncRenderer.cpp (renamed from src/VideoRenderers/SyncRenderer.cpp)50
-rw-r--r--src/filters/renderer/VideoRenderers/SyncRenderer.h (renamed from src/VideoRenderers/SyncRenderer.h)4
-rw-r--r--src/filters/renderer/VideoRenderers/VMR7AllocatorPresenter.cpp (renamed from src/VideoRenderers/VMR7AllocatorPresenter.cpp)0
-rw-r--r--src/filters/renderer/VideoRenderers/VMR7AllocatorPresenter.h (renamed from src/VideoRenderers/VMR7AllocatorPresenter.h)0
-rw-r--r--src/filters/renderer/VideoRenderers/VMR9AllocatorPresenter.cpp (renamed from src/VideoRenderers/VMR9AllocatorPresenter.cpp)2
-rw-r--r--src/filters/renderer/VideoRenderers/VMR9AllocatorPresenter.h (renamed from src/VideoRenderers/VMR9AllocatorPresenter.h)0
-rw-r--r--src/filters/renderer/VideoRenderers/VideoRenderers.vcproj (renamed from src/VideoRenderers/VideoRenderers.vcproj)20
-rw-r--r--src/filters/renderer/VideoRenderers/madVRAllocatorPresenter.cpp (renamed from src/VideoRenderers/madVRAllocatorPresenter.cpp)0
-rw-r--r--src/filters/renderer/VideoRenderers/madVRAllocatorPresenter.h (renamed from src/VideoRenderers/madVRAllocatorPresenter.h)0
-rw-r--r--src/filters/renderer/VideoRenderers/stdafx.cpp (renamed from src/VideoRenderers/stdafx.cpp)0
-rw-r--r--src/filters/renderer/VideoRenderers/stdafx.h (renamed from src/VideoRenderers/stdafx.h)2
-rw-r--r--src/filters/switcher/AudioSwitcher/AudioSwitcher.cpp64
55 files changed, 179 insertions, 88 deletions
diff --git a/mpc-hc.sln b/mpc-hc.sln
index f556e8f47..0684af00e 100644
--- a/mpc-hc.sln
+++ b/mpc-hc.sln
@@ -416,7 +416,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SyncClock", "src\filters\mi
{273B3149-3192-4B75-A791-470320B90812} = {273B3149-3192-4B75-A791-470320B90812}
EndProjectSection
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "VideoRenderers", "src\VideoRenderers\VideoRenderers.vcproj", "{FB565A7A-50DC-4A0D-852D-5E7F74DAB82C}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "VideoRenderers", "src\filters\renderer\VideoRenderers\VideoRenderers.vcproj", "{FB565A7A-50DC-4A0D-852D-5E7F74DAB82C}"
ProjectSection(ProjectDependencies) = postProject
{D514EA4D-EAFB-47A9-A437-A582CA571251} = {D514EA4D-EAFB-47A9-A437-A582CA571251}
EndProjectSection
@@ -1027,13 +1027,13 @@ Global
{1A2DFD1A-3C6C-44D1-909D-294AF646B575} = {D9A0529B-9EC4-4D30-9E05-A5D533739D95}
{FC70988B-1AE5-4381-866D-4F405E28AC42} = {D9A0529B-9EC4-4D30-9E05-A5D533739D95}
{D514EA4D-EAFB-47A9-A437-A582CA571251} = {D9A0529B-9EC4-4D30-9E05-A5D533739D95}
- {FB565A7A-50DC-4A0D-852D-5E7F74DAB82C} = {D9A0529B-9EC4-4D30-9E05-A5D533739D95}
{03208025-D5C2-426A-B0FA-251D4338F30C} = {2913B7E4-7A8B-43D5-A60B-345A0782816A}
{476B97B4-F079-4A44-AF89-52CA30C35E28} = {2913B7E4-7A8B-43D5-A60B-345A0782816A}
{4CC7AE86-3E0A-430A-BFF4-BF00204CAFB0} = {2913B7E4-7A8B-43D5-A60B-345A0782816A}
{61E6EB4D-2F1A-443B-94B0-E8200B26E99F} = {2913B7E4-7A8B-43D5-A60B-345A0782816A}
{AB494732-EF6D-44D0-BCF8-80FF04858D10} = {2913B7E4-7A8B-43D5-A60B-345A0782816A}
{D0620EF4-1313-40D5-9069-A82F6FE26994} = {C0038E92-68BF-4491-B5AA-BEE9857A49F8}
+ {FB565A7A-50DC-4A0D-852D-5E7F74DAB82C} = {C0038E92-68BF-4491-B5AA-BEE9857A49F8}
{0B63409D-674D-47F8-A84E-87DBB7783189} = {AF6E1FC2-364A-4593-9828-6147BD58574C}
EndGlobalSection
GlobalSection(SubversionScc) = preSolution
diff --git a/src/apps/mplayerc/FGFilter.cpp b/src/apps/mplayerc/FGFilter.cpp
index bd1690fb3..5d0a69806 100644
--- a/src/apps/mplayerc/FGFilter.cpp
+++ b/src/apps/mplayerc/FGFilter.cpp
@@ -25,9 +25,9 @@
#include "FGFilter.h"
#include "MainFrm.h"
#include "../../DSUtil/DSUtil.h"
-#include "../../VideoRenderers/AllocatorCommon7.h"
-#include "../../VideoRenderers/AllocatorCommon.h"
-#include "../../VideoRenderers/SyncAllocatorPresenter.h"
+#include "AllocatorCommon7.h"
+#include "AllocatorCommon.h"
+#include "SyncAllocatorPresenter.h"
#include <moreuuids.h>
diff --git a/src/apps/mplayerc/FGManager.cpp b/src/apps/mplayerc/FGManager.cpp
index 1484e65f5..7cb04db64 100644
--- a/src/apps/mplayerc/FGManager.cpp
+++ b/src/apps/mplayerc/FGManager.cpp
@@ -26,9 +26,9 @@
#include "FGManager.h"
#include "../../DSUtil/DSUtil.h"
#include "../../filters/filters.h"
-#include "../../VideoRenderers/AllocatorCommon7.h"
-#include "../../VideoRenderers/AllocatorCommon.h"
-#include "../../VideoRenderers/SyncAllocatorPresenter.h"
+#include "AllocatorCommon7.h"
+#include "AllocatorCommon.h"
+#include "SyncAllocatorPresenter.h"
#include "DeinterlacerFilter.h"
#include "internal_filter_config.h"
#include <initguid.h>
diff --git a/src/apps/mplayerc/FakeFilterMapper2.cpp b/src/apps/mplayerc/FakeFilterMapper2.cpp
index 15f2dfad8..cee0a2b42 100644
--- a/src/apps/mplayerc/FakeFilterMapper2.cpp
+++ b/src/apps/mplayerc/FakeFilterMapper2.cpp
@@ -23,7 +23,7 @@
#include "stdafx.h"
#include "FakeFilterMapper2.h"
-#include "../../VideoRenderers/MacrovisionKicker.h"
+#include "MacrovisionKicker.h"
#include "../../DSUtil/DSUtil.h"
#include <initguid.h>
diff --git a/src/apps/mplayerc/MainFrm.cpp b/src/apps/mplayerc/MainFrm.cpp
index e75229f0c..201b60e85 100644
--- a/src/apps/mplayerc/MainFrm.cpp
+++ b/src/apps/mplayerc/MainFrm.cpp
@@ -73,16 +73,16 @@
#include "../../filters/filters.h"
#include "../../filters/PinInfoWnd.h"
-#include "../../VideoRenderers/AllocatorCommon7.h"
-#include "../../VideoRenderers/AllocatorCommon.h"
-#include "../../VideoRenderers/SyncAllocatorPresenter.h"
+#include "AllocatorCommon7.h"
+#include "AllocatorCommon.h"
+#include "SyncAllocatorPresenter.h"
#include "../../subtitles/SSF.h"
#include "ComPropertySheet.h"
#include "LcdSupport.h"
#include "SettingsDefines.h"
-#include "../../VideoRenderers/IPinHook.h"
+#include "IPinHook.h"
#define DEFCLIENTW 292
#define DEFCLIENTH 200
@@ -8783,7 +8783,9 @@ CSize CMainFrame::GetVideoSize()
long arx = 0, ary = 0;
CComQIPtr<IBasicVideo2> pBV2 = pBV;
- if(pBV2 && SUCCEEDED(pBV2->GetPreferredAspectRatio(&arx, &ary)) && arx > 0 && ary > 0) // FIXME: It can hang here, for few seconds (CPU goes to 100%), after the window have been moving over to another screen, due to GetPreferredAspectRatio, if it happens before CAudioSwitcherFilter::DeliverEndFlush, it seems.
+ // FIXME: It can hang here, for few seconds (CPU goes to 100%), after the window have been moving over to another screen,
+ // due to GetPreferredAspectRatio, if it happens before CAudioSwitcherFilter::DeliverEndFlush, it seems.
+ if(pBV2 && SUCCEEDED(pBV2->GetPreferredAspectRatio(&arx, &ary)) && arx > 0 && ary > 0)
arxy.SetSize(arx, ary);
}
@@ -10992,6 +10994,7 @@ void CMainFrame::CloseMediaPrivate()
m_pCAP2 = NULL;
m_pMC = NULL;
m_pMFVDC = NULL;
+ m_pSyncClock = NULL;
m_OSD.Stop();
pAMXBar.Release();
diff --git a/src/apps/mplayerc/QuicktimeGraph.cpp b/src/apps/mplayerc/QuicktimeGraph.cpp
index 5351ed2f2..50d6592ef 100644
--- a/src/apps/mplayerc/QuicktimeGraph.cpp
+++ b/src/apps/mplayerc/QuicktimeGraph.cpp
@@ -24,7 +24,7 @@
#include "stdafx.h"
#include <math.h>
#include "QuicktimeGraph.h"
-#include "../../VideoRenderers/IQTVideoSurface.h"
+#include "IQTVideoSurface.h"
#include "mplayerc.h"
#include "MainFrm.h"
#include "../../DSUtil/DSUtil.h"
diff --git a/src/apps/mplayerc/QuicktimeGraph.h b/src/apps/mplayerc/QuicktimeGraph.h
index 0f0c25864..a3c37126c 100644
--- a/src/apps/mplayerc/QuicktimeGraph.h
+++ b/src/apps/mplayerc/QuicktimeGraph.h
@@ -24,8 +24,8 @@
#pragma once
#include "BaseGraph.h"
-#include "../../VideoRenderers/AllocatorCommon7.h"
-#include "../../VideoRenderers/AllocatorCommon.h"
+#include "AllocatorCommon7.h"
+#include "AllocatorCommon.h"
namespace DSObjects
{
diff --git a/src/apps/mplayerc/RealMediaGraph.h b/src/apps/mplayerc/RealMediaGraph.h
index 7f095185d..f8f313996 100644
--- a/src/apps/mplayerc/RealMediaGraph.h
+++ b/src/apps/mplayerc/RealMediaGraph.h
@@ -25,8 +25,8 @@
#include "BaseGraph.h"
-#include "../../VideoRenderers/AllocatorCommon7.h"
-#include "../../VideoRenderers/AllocatorCommon.h"
+#include "AllocatorCommon7.h"
+#include "AllocatorCommon.h"
#include <RealMedia/pntypes.h>
#include <RealMedia/pnwintyp.h>
diff --git a/src/apps/mplayerc/ShaderEditorDlg.cpp b/src/apps/mplayerc/ShaderEditorDlg.cpp
index c43ba0d25..8a228e2f5 100644
--- a/src/apps/mplayerc/ShaderEditorDlg.cpp
+++ b/src/apps/mplayerc/ShaderEditorDlg.cpp
@@ -23,7 +23,7 @@
#include "stdafx.h"
#include "mplayerc.h"
-#include "../../VideoRenderers/PixelShaderCompiler.h"
+#include "PixelShaderCompiler.h"
#include "ShaderEditorDlg.h"
#include "MainFrm.h"
diff --git a/src/apps/mplayerc/mplayerc.h b/src/apps/mplayerc/mplayerc.h
index ffca3e8b5..a1bb42208 100644
--- a/src/apps/mplayerc/mplayerc.h
+++ b/src/apps/mplayerc/mplayerc.h
@@ -34,7 +34,7 @@
#include "MediaFormats.h"
#include "FakeFilterMapper2.h"
#include "DVBChannel.h"
-#include "../../VideoRenderers/RenderersSettings.h"
+#include "RenderersSettings.h"
#ifdef UNICODE
#define MPC_WND_CLASS_NAME L"MediaPlayerClassicW"
diff --git a/src/apps/mplayerc/mplayerc.vcproj b/src/apps/mplayerc/mplayerc.vcproj
index 21a744fe5..fe17367ce 100644
--- a/src/apps/mplayerc/mplayerc.vcproj
+++ b/src/apps/mplayerc/mplayerc.vcproj
@@ -27,7 +27,7 @@
UseOfATL="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="1"
- WholeProgramOptimization="1"
+ WholeProgramOptimization="0"
>
<Tool
Name="VCPreBuildEventTool"
@@ -52,7 +52,7 @@
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="/MP"
- AdditionalIncludeDirectories="..\..\..\include;..\..\..\include\dx;..\..\..\include\atl;..\..\filters\BaseClasses;..\..\zlib"
+ AdditionalIncludeDirectories="..\..\..\include;..\..\..\include\dx;..\..\..\include\atl;..\..\filters\BaseClasses;..\..\zlib;..\..\filters\renderer\VideoRenderers"
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;DETOURS_X32"
BufferSecurityCheck="true"
EnableEnhancedInstructionSet="1"
@@ -121,7 +121,7 @@
UseOfATL="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="1"
- WholeProgramOptimization="1"
+ WholeProgramOptimization="0"
>
<Tool
Name="VCPreBuildEventTool"
@@ -146,7 +146,7 @@
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="/MP"
- AdditionalIncludeDirectories="..\..\..\include;..\..\..\include\dx;..\..\..\include\atl;..\..\filters\BaseClasses;..\..\zlib"
+ AdditionalIncludeDirectories="..\..\..\include;..\..\..\include\dx;..\..\..\include\atl;..\..\filters\BaseClasses;..\..\zlib;..\..\filters\renderer\VideoRenderers"
PreprocessorDefinitions="_WIN64;NDEBUG;_WINDOWS;DETOURS_X64"
BufferSecurityCheck="true"
EnableEnhancedInstructionSet="0"
@@ -237,7 +237,7 @@
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="/MP"
- AdditionalIncludeDirectories="..\..\..\include;..\..\..\include\dx;..\..\..\include\atl;..\..\filters\BaseClasses;..\..\zlib"
+ AdditionalIncludeDirectories="..\..\..\include;..\..\..\include\dx;..\..\..\include\atl;..\..\filters\BaseClasses;..\..\zlib;..\..\filters\renderer\VideoRenderers"
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;DETOURS_X32"
UsePrecompiledHeader="2"
PrecompiledHeaderThrough="stdafx.h"
@@ -324,7 +324,7 @@
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="/MP"
- AdditionalIncludeDirectories="..\..\..\include;..\..\..\include\dx;..\..\..\include\atl;..\..\filters\BaseClasses;..\..\zlib"
+ AdditionalIncludeDirectories="..\..\..\include;..\..\..\include\dx;..\..\..\include\atl;..\..\filters\BaseClasses;..\..\zlib;..\..\filters\renderer\VideoRenderers"
PreprocessorDefinitions="_WIN64;_DEBUG;_WINDOWS;DETOURS_X64"
UsePrecompiledHeader="2"
PrecompiledHeaderThrough="stdafx.h"
diff --git a/src/VideoRenderers/AllocatorCommon.cpp b/src/filters/renderer/VideoRenderers/AllocatorCommon.cpp
index 311f6bc97..311f6bc97 100644
--- a/src/VideoRenderers/AllocatorCommon.cpp
+++ b/src/filters/renderer/VideoRenderers/AllocatorCommon.cpp
diff --git a/src/VideoRenderers/AllocatorCommon.h b/src/filters/renderer/VideoRenderers/AllocatorCommon.h
index e132c3c44..e132c3c44 100644
--- a/src/VideoRenderers/AllocatorCommon.h
+++ b/src/filters/renderer/VideoRenderers/AllocatorCommon.h
diff --git a/src/VideoRenderers/AllocatorCommon7.cpp b/src/filters/renderer/VideoRenderers/AllocatorCommon7.cpp
index f094311dd..f094311dd 100644
--- a/src/VideoRenderers/AllocatorCommon7.cpp
+++ b/src/filters/renderer/VideoRenderers/AllocatorCommon7.cpp
diff --git a/src/VideoRenderers/AllocatorCommon7.h b/src/filters/renderer/VideoRenderers/AllocatorCommon7.h
index fc18ddd4e..fc18ddd4e 100644
--- a/src/VideoRenderers/AllocatorCommon7.h
+++ b/src/filters/renderer/VideoRenderers/AllocatorCommon7.h
diff --git a/src/VideoRenderers/D3DFont.cpp b/src/filters/renderer/VideoRenderers/D3DFont.cpp
index 5bc1b8414..5bc1b8414 100644
--- a/src/VideoRenderers/D3DFont.cpp
+++ b/src/filters/renderer/VideoRenderers/D3DFont.cpp
diff --git a/src/VideoRenderers/D3DFont.h b/src/filters/renderer/VideoRenderers/D3DFont.h
index 34d603a80..34d603a80 100644
--- a/src/VideoRenderers/D3DFont.h
+++ b/src/filters/renderer/VideoRenderers/D3DFont.h
diff --git a/src/VideoRenderers/DX7AllocatorPresenter.cpp b/src/filters/renderer/VideoRenderers/DX7AllocatorPresenter.cpp
index e15e9cf2d..e15e9cf2d 100644
--- a/src/VideoRenderers/DX7AllocatorPresenter.cpp
+++ b/src/filters/renderer/VideoRenderers/DX7AllocatorPresenter.cpp
diff --git a/src/VideoRenderers/DX7AllocatorPresenter.h b/src/filters/renderer/VideoRenderers/DX7AllocatorPresenter.h
index da59c1ef8..da59c1ef8 100644
--- a/src/VideoRenderers/DX7AllocatorPresenter.h
+++ b/src/filters/renderer/VideoRenderers/DX7AllocatorPresenter.h
diff --git a/src/VideoRenderers/DX9AllocatorPresenter.cpp b/src/filters/renderer/VideoRenderers/DX9AllocatorPresenter.cpp
index 6b2fd3907..cb103561d 100644
--- a/src/VideoRenderers/DX9AllocatorPresenter.cpp
+++ b/src/filters/renderer/VideoRenderers/DX9AllocatorPresenter.cpp
@@ -236,6 +236,7 @@ CDX9AllocatorPresenter::CDX9AllocatorPresenter(HWND hWnd, bool bFullscreen, HRES
, m_hVSyncThread(NULL)
, m_hEvtQuit(NULL)
, m_bIsFullscreen(bFullscreen)
+ , m_CurrentAdapter(0)
{
HINSTANCE hDll;
@@ -930,7 +931,8 @@ HRESULT CDX9AllocatorPresenter::CreateDevice(CString &_Error)
D3DDISPLAYMODE d3ddm;
HRESULT hr;
ZeroMemory(&d3ddm, sizeof(d3ddm));
- if(FAILED(m_pD3D->GetAdapterDisplayMode(GetAdapter(m_pD3D), &d3ddm)))
+ m_CurrentAdapter = GetAdapter(m_pD3D);
+ if(FAILED(m_pD3D->GetAdapterDisplayMode(m_CurrentAdapter, &d3ddm)))
{
_Error += L"GetAdapterDisplayMode failed\n";
return E_UNEXPECTED;
@@ -1026,14 +1028,15 @@ HRESULT CDX9AllocatorPresenter::CreateDevice(CString &_Error)
{
D3DDISPLAYMODEEX DisplayMode;
ZeroMemory(&DisplayMode, sizeof(DisplayMode));
- DisplayMode.Size = sizeof(DisplayMode);
- m_pD3DEx->GetAdapterDisplayModeEx(GetAdapter(m_pD3DEx), &DisplayMode, NULL);
+ DisplayMode.Size = sizeof(DisplayMode);
+ m_pD3DEx->GetAdapterDisplayModeEx(m_CurrentAdapter, &DisplayMode, NULL);
DisplayMode.Format = pp.BackBufferFormat;
pp.FullScreen_RefreshRateInHz = DisplayMode.RefreshRate;
+ m_CurrentAdapter = GetAdapter(m_pD3D, true);
hr = m_pD3DEx->CreateDeviceEx(
- GetAdapter(m_pD3D, true), D3DDEVTYPE_HAL, m_hWnd,
+ m_CurrentAdapter, D3DDEVTYPE_HAL, m_hWnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING|D3DCREATE_MULTITHREADED, //D3DCREATE_MANAGED
&pp, &DisplayMode, &m_pD3DDevEx);
@@ -1047,9 +1050,10 @@ HRESULT CDX9AllocatorPresenter::CreateDevice(CString &_Error)
}
if (!m_pD3DDev)
- {
+ {
+ m_CurrentAdapter = GetAdapter(m_pD3D, true);
hr = m_pD3D->CreateDevice(
- GetAdapter(m_pD3D, true), D3DDEVTYPE_HAL, m_hWnd,
+ m_CurrentAdapter, D3DDEVTYPE_HAL, m_hWnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING|D3DCREATE_MULTITHREADED, //D3DCREATE_MANAGED
&pp, &m_pD3DDev);
if (m_pD3DDev)
@@ -1098,19 +1102,20 @@ HRESULT CDX9AllocatorPresenter::CreateDevice(CString &_Error)
// if(m_fVMRSyncFix = GetRenderersData()->m_s.fVMRSyncFix)
// pp.Flags |= D3DPRESENTFLAG_LOCKABLE_BACKBUFFER;
+ m_CurrentAdapter = GetAdapter(m_pD3D, true);
if (m_pD3DEx)
- {
+ {
hr = m_pD3DEx->CreateDeviceEx(
- GetAdapter(m_pD3D, true), D3DDEVTYPE_HAL, m_hWnd,
+ m_CurrentAdapter, D3DDEVTYPE_HAL, m_hWnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING|D3DCREATE_MULTITHREADED, //D3DCREATE_MANAGED
&pp, NULL, &m_pD3DDevEx);
if (m_pD3DDevEx)
m_pD3DDev = m_pD3DDevEx;
}
else
- {
+ {
hr = m_pD3D->CreateDevice(
- GetAdapter(m_pD3D, true), D3DDEVTYPE_HAL, m_hWnd,
+ m_CurrentAdapter, D3DDEVTYPE_HAL, m_hWnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING|D3DCREATE_MULTITHREADED, //D3DCREATE_MANAGED
&pp, &m_pD3DDev);
}
@@ -1248,7 +1253,9 @@ HRESULT CDX9AllocatorPresenter::CreateDevice(CString &_Error)
m_pLine = NULL;
if (m_pD3DXCreateLine)
- m_pD3DXCreateLine (m_pD3DDev, &m_pLine);
+ m_pD3DXCreateLine (m_pD3DDev, &m_pLine);
+
+ m_LastAdapterCheck = GetRenderersData()->GetPerfCounter();
StartWorkerThreads();
@@ -1325,13 +1332,13 @@ void CDX9AllocatorPresenter::DeleteSurfaces()
}
}
-UINT CDX9AllocatorPresenter::GetAdapter(IDirect3D9* pD3D, bool CreateDevice)
+UINT CDX9AllocatorPresenter::GetAdapter(IDirect3D9* pD3D, bool bCreateDevice)
{
if(m_hWnd == NULL || pD3D == NULL)
return D3DADAPTER_DEFAULT;
CRenderersSettings& s = GetRenderersSettings();
- if(CreateDevice && (pD3D->GetAdapterCount()>1) && (s.D3D9RenderDevice != _T("")))
+ if(bCreateDevice && (pD3D->GetAdapterCount()>1) && (s.D3D9RenderDevice != _T("")))
{
TCHAR strGUID[50];
D3DADAPTER_IDENTIFIER9 adapterIdentifier;
@@ -1358,7 +1365,7 @@ UINT CDX9AllocatorPresenter::GetAdapter(IDirect3D9* pD3D, bool CreateDevice)
HMONITOR hAdpMon = pD3D->GetAdapterMonitor(adp);
if(hAdpMon == hMonitor)
{
- if(CreateDevice)
+ if(bCreateDevice)
{
D3DADAPTER_IDENTIFIER9 adapterIdentifier;
if (pD3D->GetAdapterIdentifier(adp, 0, &adapterIdentifier) == S_OK)
@@ -2805,12 +2812,29 @@ STDMETHODIMP_(bool) CDX9AllocatorPresenter::Paint(bool fAll)
}
if(s.fResetDevice)
- {
- D3DDEVICE_CREATION_PARAMETERS Parameters;
- if(SUCCEEDED(m_pD3DDev->GetCreationParameters(&Parameters)) && m_pD3D->GetAdapterMonitor(Parameters.AdapterOrdinal) != m_pD3D->GetAdapterMonitor(GetAdapter(m_pD3D)))
- {
- fResetDevice = true;
- }
+ {
+ LONGLONG time = GetRenderersData()->GetPerfCounter();
+ if (time > m_LastAdapterCheck + 20000000) // check every 2 sec.
+ {
+ m_LastAdapterCheck = time;
+#ifdef _DEBUG
+ D3DDEVICE_CREATION_PARAMETERS Parameters;
+ if(SUCCEEDED(m_pD3DDev->GetCreationParameters(&Parameters)))
+ {
+ ASSERT(Parameters.AdapterOrdinal == m_CurrentAdapter);
+ }
+#endif
+ if(m_CurrentAdapter != GetAdapter(m_pD3D))
+ {
+ fResetDevice = true;
+ }
+#ifdef _DEBUG
+ else
+ {
+ ASSERT(m_pD3D->GetAdapterMonitor(m_CurrentAdapter) == m_pD3D->GetAdapterMonitor(GetAdapter(m_pD3D)));
+ }
+#endif
+ }
}
if(fResetDevice)
diff --git a/src/VideoRenderers/DX9AllocatorPresenter.h b/src/filters/renderer/VideoRenderers/DX9AllocatorPresenter.h
index ffff6fecd..605bdd19c 100644
--- a/src/VideoRenderers/DX9AllocatorPresenter.h
+++ b/src/filters/renderer/VideoRenderers/DX9AllocatorPresenter.h
@@ -157,7 +157,9 @@ protected:
void StartWorkerThreads();
void StopWorkerThreads();
- UINT GetAdapter(IDirect3D9 *pD3D, bool GetAdapter = false);
+ LONGLONG m_LastAdapterCheck;
+ UINT m_CurrentAdapter;
+ UINT GetAdapter(IDirect3D9 *pD3D, bool GetAdapter = false);
float m_bicubicA;
HRESULT InitResizers(float bicubicA, bool bNeedScreenSizeTexture);
diff --git a/src/VideoRenderers/DXRAllocatorPresenter.cpp b/src/filters/renderer/VideoRenderers/DXRAllocatorPresenter.cpp
index 941d1b9ec..941d1b9ec 100644
--- a/src/VideoRenderers/DXRAllocatorPresenter.cpp
+++ b/src/filters/renderer/VideoRenderers/DXRAllocatorPresenter.cpp
diff --git a/src/VideoRenderers/DXRAllocatorPresenter.h b/src/filters/renderer/VideoRenderers/DXRAllocatorPresenter.h
index fef02e56c..fef02e56c 100644
--- a/src/VideoRenderers/DXRAllocatorPresenter.h
+++ b/src/filters/renderer/VideoRenderers/DXRAllocatorPresenter.h
diff --git a/src/VideoRenderers/EVRAllocatorPresenter.cpp b/src/filters/renderer/VideoRenderers/EVRAllocatorPresenter.cpp
index 6ed708080..6ed708080 100644
--- a/src/VideoRenderers/EVRAllocatorPresenter.cpp
+++ b/src/filters/renderer/VideoRenderers/EVRAllocatorPresenter.cpp
diff --git a/src/VideoRenderers/EVRAllocatorPresenter.h b/src/filters/renderer/VideoRenderers/EVRAllocatorPresenter.h
index 9939c6f0e..9939c6f0e 100644
--- a/src/VideoRenderers/EVRAllocatorPresenter.h
+++ b/src/filters/renderer/VideoRenderers/EVRAllocatorPresenter.h
diff --git a/src/VideoRenderers/IPinHook.cpp b/src/filters/renderer/VideoRenderers/IPinHook.cpp
index 266f75fbe..266f75fbe 100644
--- a/src/VideoRenderers/IPinHook.cpp
+++ b/src/filters/renderer/VideoRenderers/IPinHook.cpp
diff --git a/src/VideoRenderers/IPinHook.h b/src/filters/renderer/VideoRenderers/IPinHook.h
index 325ea7f9d..325ea7f9d 100644
--- a/src/VideoRenderers/IPinHook.h
+++ b/src/filters/renderer/VideoRenderers/IPinHook.h
diff --git a/src/VideoRenderers/IQTVideoSurface.h b/src/filters/renderer/VideoRenderers/IQTVideoSurface.h
index 2f55ca95e..2f55ca95e 100644
--- a/src/VideoRenderers/IQTVideoSurface.h
+++ b/src/filters/renderer/VideoRenderers/IQTVideoSurface.h
diff --git a/src/VideoRenderers/MacrovisionKicker.cpp b/src/filters/renderer/VideoRenderers/MacrovisionKicker.cpp
index 7933fbc18..7933fbc18 100644
--- a/src/VideoRenderers/MacrovisionKicker.cpp
+++ b/src/filters/renderer/VideoRenderers/MacrovisionKicker.cpp
diff --git a/src/VideoRenderers/MacrovisionKicker.h b/src/filters/renderer/VideoRenderers/MacrovisionKicker.h
index f033aaf0f..f033aaf0f 100644
--- a/src/VideoRenderers/MacrovisionKicker.h
+++ b/src/filters/renderer/VideoRenderers/MacrovisionKicker.h
diff --git a/src/VideoRenderers/PixelShaderCompiler.cpp b/src/filters/renderer/VideoRenderers/PixelShaderCompiler.cpp
index 462003835..462003835 100644
--- a/src/VideoRenderers/PixelShaderCompiler.cpp
+++ b/src/filters/renderer/VideoRenderers/PixelShaderCompiler.cpp
diff --git a/src/VideoRenderers/PixelShaderCompiler.h b/src/filters/renderer/VideoRenderers/PixelShaderCompiler.h
index a941cc505..a941cc505 100644
--- a/src/VideoRenderers/PixelShaderCompiler.h
+++ b/src/filters/renderer/VideoRenderers/PixelShaderCompiler.h
diff --git a/src/VideoRenderers/QT7AllocatorPresenter.cpp b/src/filters/renderer/VideoRenderers/QT7AllocatorPresenter.cpp
index 451c5b2e0..451c5b2e0 100644
--- a/src/VideoRenderers/QT7AllocatorPresenter.cpp
+++ b/src/filters/renderer/VideoRenderers/QT7AllocatorPresenter.cpp
diff --git a/src/VideoRenderers/QT7AllocatorPresenter.h b/src/filters/renderer/VideoRenderers/QT7AllocatorPresenter.h
index 466bc8dcd..466bc8dcd 100644
--- a/src/VideoRenderers/QT7AllocatorPresenter.h
+++ b/src/filters/renderer/VideoRenderers/QT7AllocatorPresenter.h
diff --git a/src/VideoRenderers/QT9AllocatorPresenter.cpp b/src/filters/renderer/VideoRenderers/QT9AllocatorPresenter.cpp
index 115f5b4a3..115f5b4a3 100644
--- a/src/VideoRenderers/QT9AllocatorPresenter.cpp
+++ b/src/filters/renderer/VideoRenderers/QT9AllocatorPresenter.cpp
diff --git a/src/VideoRenderers/QT9AllocatorPresenter.h b/src/filters/renderer/VideoRenderers/QT9AllocatorPresenter.h
index 1ffca90f4..1ffca90f4 100644
--- a/src/VideoRenderers/QT9AllocatorPresenter.h
+++ b/src/filters/renderer/VideoRenderers/QT9AllocatorPresenter.h
diff --git a/src/VideoRenderers/RM7AllocatorPresenter.cpp b/src/filters/renderer/VideoRenderers/RM7AllocatorPresenter.cpp
index 272ea2f1f..272ea2f1f 100644
--- a/src/VideoRenderers/RM7AllocatorPresenter.cpp
+++ b/src/filters/renderer/VideoRenderers/RM7AllocatorPresenter.cpp
diff --git a/src/VideoRenderers/RM7AllocatorPresenter.h b/src/filters/renderer/VideoRenderers/RM7AllocatorPresenter.h
index ab1d8fe78..ab1d8fe78 100644
--- a/src/VideoRenderers/RM7AllocatorPresenter.h
+++ b/src/filters/renderer/VideoRenderers/RM7AllocatorPresenter.h
diff --git a/src/VideoRenderers/RM9AllocatorPresenter.cpp b/src/filters/renderer/VideoRenderers/RM9AllocatorPresenter.cpp
index 7d5c25795..7d5c25795 100644
--- a/src/VideoRenderers/RM9AllocatorPresenter.cpp
+++ b/src/filters/renderer/VideoRenderers/RM9AllocatorPresenter.cpp
diff --git a/src/VideoRenderers/RM9AllocatorPresenter.h b/src/filters/renderer/VideoRenderers/RM9AllocatorPresenter.h
index c673a2664..c673a2664 100644
--- a/src/VideoRenderers/RM9AllocatorPresenter.h
+++ b/src/filters/renderer/VideoRenderers/RM9AllocatorPresenter.h
diff --git a/src/VideoRenderers/RenderersSettings.cpp b/src/filters/renderer/VideoRenderers/RenderersSettings.cpp
index 5668e6b96..5668e6b96 100644
--- a/src/VideoRenderers/RenderersSettings.cpp
+++ b/src/filters/renderer/VideoRenderers/RenderersSettings.cpp
diff --git a/src/VideoRenderers/RenderersSettings.h b/src/filters/renderer/VideoRenderers/RenderersSettings.h
index 96b28c49b..96b28c49b 100644
--- a/src/VideoRenderers/RenderersSettings.h
+++ b/src/filters/renderer/VideoRenderers/RenderersSettings.h
diff --git a/src/VideoRenderers/SyncAllocatorPresenter.h b/src/filters/renderer/VideoRenderers/SyncAllocatorPresenter.h
index 9e3caaa0d..9e3caaa0d 100644
--- a/src/VideoRenderers/SyncAllocatorPresenter.h
+++ b/src/filters/renderer/VideoRenderers/SyncAllocatorPresenter.h
diff --git a/src/VideoRenderers/SyncRenderer.cpp b/src/filters/renderer/VideoRenderers/SyncRenderer.cpp
index 13cc62766..6c5bc8de4 100644
--- a/src/VideoRenderers/SyncRenderer.cpp
+++ b/src/filters/renderer/VideoRenderers/SyncRenderer.cpp
@@ -169,7 +169,8 @@ CBaseAP::CBaseAP(HWND hWnd, bool bFullscreen, HRESULT& hr, CString &_Error):
m_dFrameCycle(0.0),
m_dOptimumDisplayCycle(0.0),
m_dCycleDifference(1.0),
- m_llEstVBlankTime(0)
+ m_llEstVBlankTime(0),
+ m_CurrentAdapter(0)
{
if(FAILED(hr))
{
@@ -523,13 +524,14 @@ HRESULT CBaseAP::CreateDXDevice(CString &_Error)
D3DDISPLAYMODE d3ddm;
ZeroMemory(&d3ddm, sizeof(d3ddm));
- if(FAILED(m_pD3D->GetAdapterDisplayMode(GetAdapter(m_pD3D), &d3ddm)))
+ m_CurrentAdapter = GetAdapter(m_pD3D);
+ if(FAILED(m_pD3D->GetAdapterDisplayMode(m_CurrentAdapter, &d3ddm)))
{
_Error += L"Can not retrieve display mode data\n";
return E_UNEXPECTED;
}
- if FAILED(m_pD3D->GetDeviceCaps(GetAdapter(m_pD3D), D3DDEVTYPE_HAL, &m_caps))
+ if FAILED(m_pD3D->GetDeviceCaps(m_CurrentAdapter, D3DDEVTYPE_HAL, &m_caps))
if ((m_caps.Caps & D3DCAPS_READ_SCANLINE) == 0)
{
_Error += L"Video card does not have scanline access. Display synchronization is not possible.\n";
@@ -577,12 +579,12 @@ HRESULT CBaseAP::CreateDXDevice(CString &_Error)
D3DDISPLAYMODEEX DisplayMode;
ZeroMemory(&DisplayMode, sizeof(DisplayMode));
DisplayMode.Size = sizeof(DisplayMode);
- m_pD3DEx->GetAdapterDisplayModeEx(GetAdapter(m_pD3DEx), &DisplayMode, NULL);
+ m_pD3DEx->GetAdapterDisplayModeEx(m_CurrentAdapter, &DisplayMode, NULL);
DisplayMode.Format = pp.BackBufferFormat;
pp.FullScreen_RefreshRateInHz = DisplayMode.RefreshRate;
- if FAILED(m_pD3DEx->CreateDeviceEx(GetAdapter(m_pD3D), D3DDEVTYPE_HAL, m_hWnd, D3DCREATE_HARDWARE_VERTEXPROCESSING|D3DCREATE_MULTITHREADED, &pp, &DisplayMode, &m_pD3DDevEx))
+ if FAILED(m_pD3DEx->CreateDeviceEx(m_CurrentAdapter, D3DDEVTYPE_HAL, m_hWnd, D3DCREATE_HARDWARE_VERTEXPROCESSING|D3DCREATE_MULTITHREADED, &pp, &DisplayMode, &m_pD3DDevEx))
{
_Error += GothSyncErrorMessage(hr, m_hD3D9);
return hr;
@@ -596,7 +598,7 @@ HRESULT CBaseAP::CreateDXDevice(CString &_Error)
}
else
{
- if FAILED(m_pD3D->CreateDevice(GetAdapter(m_pD3D), D3DDEVTYPE_HAL, m_hWnd, D3DCREATE_HARDWARE_VERTEXPROCESSING|D3DCREATE_MULTITHREADED, &pp, &m_pD3DDev))
+ if FAILED(m_pD3D->CreateDevice(m_CurrentAdapter, D3DDEVTYPE_HAL, m_hWnd, D3DCREATE_HARDWARE_VERTEXPROCESSING|D3DCREATE_MULTITHREADED, &pp, &m_pD3DDev))
{
_Error += GothSyncErrorMessage(hr, m_hD3D9);
return hr;
@@ -646,7 +648,7 @@ HRESULT CBaseAP::CreateDXDevice(CString &_Error)
}
if (m_pD3DEx)
{
- if FAILED(m_pD3DEx->CreateDeviceEx(GetAdapter(m_pD3D), D3DDEVTYPE_HAL, m_hWnd, D3DCREATE_HARDWARE_VERTEXPROCESSING|D3DCREATE_MULTITHREADED, &pp, NULL, &m_pD3DDevEx))
+ if FAILED(m_pD3DEx->CreateDeviceEx(m_CurrentAdapter, D3DDEVTYPE_HAL, m_hWnd, D3DCREATE_HARDWARE_VERTEXPROCESSING|D3DCREATE_MULTITHREADED, &pp, NULL, &m_pD3DDevEx))
{
_Error += GothSyncErrorMessage(hr, m_hD3D9);
return hr;
@@ -655,7 +657,7 @@ HRESULT CBaseAP::CreateDXDevice(CString &_Error)
}
else
{
- if FAILED(m_pD3D->CreateDevice(GetAdapter(m_pD3D), D3DDEVTYPE_HAL, m_hWnd, D3DCREATE_HARDWARE_VERTEXPROCESSING|D3DCREATE_MULTITHREADED, &pp, &m_pD3DDev))
+ if FAILED(m_pD3D->CreateDevice(m_CurrentAdapter, D3DDEVTYPE_HAL, m_hWnd, D3DCREATE_HARDWARE_VERTEXPROCESSING|D3DCREATE_MULTITHREADED, &pp, &m_pD3DDev))
{
_Error += GothSyncErrorMessage(hr, m_hD3D9);
return hr;
@@ -758,7 +760,8 @@ HRESULT CBaseAP::CreateDXDevice(CString &_Error)
DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, ANTIALIASED_QUALITY, FIXED_PITCH | FF_DONTCARE, L"Lucida Console", &m_pFont);
}
if (m_pD3DXCreateSprite) m_pD3DXCreateSprite(m_pD3DDev, &m_pSprite);
- if (m_pD3DXCreateLine) m_pD3DXCreateLine (m_pD3DDev, &m_pLine);
+ if (m_pD3DXCreateLine) m_pD3DXCreateLine (m_pD3DDev, &m_pLine);
+ m_LastAdapterCheck = GetRenderersData()->GetPerfCounter();
return S_OK;
}
@@ -2005,11 +2008,30 @@ STDMETHODIMP_(bool) CBaseAP::Paint(bool fAll)
}
if(s.fResetDevice)
- {
- D3DDEVICE_CREATION_PARAMETERS Parameters;
- if(SUCCEEDED(m_pD3DDev->GetCreationParameters(&Parameters)) && m_pD3D->GetAdapterMonitor(Parameters.AdapterOrdinal) != m_pD3D->GetAdapterMonitor(GetAdapter(m_pD3D)))
- fResetDevice = true;
- }
+ {
+ LONGLONG time = GetRenderersData()->GetPerfCounter();
+ if (time > m_LastAdapterCheck + 20000000) // check every 2 sec.
+ {
+ m_LastAdapterCheck = time;
+#ifdef _DEBUG
+ D3DDEVICE_CREATION_PARAMETERS Parameters;
+ if(SUCCEEDED(m_pD3DDev->GetCreationParameters(&Parameters)))
+ {
+ ASSERT(Parameters.AdapterOrdinal == m_CurrentAdapter);
+ }
+#endif
+ if(m_CurrentAdapter != GetAdapter(m_pD3D))
+ {
+ fResetDevice = true;
+ }
+#ifdef _DEBUG
+ else
+ {
+ ASSERT(m_pD3D->GetAdapterMonitor(m_CurrentAdapter) == m_pD3D->GetAdapterMonitor(GetAdapter(m_pD3D)));
+ }
+#endif
+ }
+ }
if(fResetDevice)
{
diff --git a/src/VideoRenderers/SyncRenderer.h b/src/filters/renderer/VideoRenderers/SyncRenderer.h
index cd8c71548..3e8f3bf5a 100644
--- a/src/VideoRenderers/SyncRenderer.h
+++ b/src/filters/renderer/VideoRenderers/SyncRenderer.h
@@ -169,7 +169,9 @@ protected:
virtual HRESULT AllocSurfaces(D3DFORMAT Format = D3DFMT_A8R8G8B8);
virtual void DeleteSurfaces();
- HANDLE m_hEvtQuit; // Stop rendering thread event
+ HANDLE m_hEvtQuit; // Stop rendering thread event
+ LONGLONG m_LastAdapterCheck;
+ UINT m_CurrentAdapter;
UINT GetAdapter(IDirect3D9 *pD3D);
float m_bicubicA;
diff --git a/src/VideoRenderers/VMR7AllocatorPresenter.cpp b/src/filters/renderer/VideoRenderers/VMR7AllocatorPresenter.cpp
index a450fdc32..a450fdc32 100644
--- a/src/VideoRenderers/VMR7AllocatorPresenter.cpp
+++ b/src/filters/renderer/VideoRenderers/VMR7AllocatorPresenter.cpp
diff --git a/src/VideoRenderers/VMR7AllocatorPresenter.h b/src/filters/renderer/VideoRenderers/VMR7AllocatorPresenter.h
index 6d6716c08..6d6716c08 100644
--- a/src/VideoRenderers/VMR7AllocatorPresenter.h
+++ b/src/filters/renderer/VideoRenderers/VMR7AllocatorPresenter.h
diff --git a/src/VideoRenderers/VMR9AllocatorPresenter.cpp b/src/filters/renderer/VideoRenderers/VMR9AllocatorPresenter.cpp
index ef1ad32f6..a1a9975be 100644
--- a/src/VideoRenderers/VMR9AllocatorPresenter.cpp
+++ b/src/filters/renderer/VideoRenderers/VMR9AllocatorPresenter.cpp
@@ -603,7 +603,7 @@ HRESULT CVMR9AllocatorPresenter::CreateDevice(CString &_Error)
if(m_pIVMRSurfAllocNotify)
{
- HMONITOR hMonitor = m_pD3D->GetAdapterMonitor(GetAdapter(m_pD3D));
+ HMONITOR hMonitor = m_pD3D->GetAdapterMonitor(m_CurrentAdapter);
if(FAILED(hr = m_pIVMRSurfAllocNotify->ChangeD3DDevice(m_pD3DDev, hMonitor)))
{
_Error += L"m_pIVMRSurfAllocNotify->ChangeD3DDevice failed";
diff --git a/src/VideoRenderers/VMR9AllocatorPresenter.h b/src/filters/renderer/VideoRenderers/VMR9AllocatorPresenter.h
index 587839afe..587839afe 100644
--- a/src/VideoRenderers/VMR9AllocatorPresenter.h
+++ b/src/filters/renderer/VideoRenderers/VMR9AllocatorPresenter.h
diff --git a/src/VideoRenderers/VideoRenderers.vcproj b/src/filters/renderer/VideoRenderers/VideoRenderers.vcproj
index c3d45c701..2beebbc58 100644
--- a/src/VideoRenderers/VideoRenderers.vcproj
+++ b/src/filters/renderer/VideoRenderers/VideoRenderers.vcproj
@@ -22,12 +22,12 @@
<Configuration
Name="Release Unicode|Win32"
ConfigurationType="4"
- InheritedPropertySheets="..\common.vsprops;..\release.vsprops"
+ InheritedPropertySheets="..\..\..\common.vsprops;..\..\..\release.vsprops"
UseOfMFC="1"
UseOfATL="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="1"
- WholeProgramOptimization="1"
+ WholeProgramOptimization="0"
>
<Tool
Name="VCPreBuildEventTool"
@@ -52,7 +52,7 @@
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="/MP"
- AdditionalIncludeDirectories="..\..\include;..\..\include\dx;..\..\include\atl;..\filters\BaseClasses;..\zlib"
+ AdditionalIncludeDirectories="..\..\..\..\include;..\..\..\..\include\dx;..\..\..\..\include\atl;..\..\BaseClasses;..\..\..\zlib"
PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS;DETOURS_X32"
BufferSecurityCheck="true"
EnableEnhancedInstructionSet="1"
@@ -98,12 +98,12 @@
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="4"
- InheritedPropertySheets="..\common.vsprops;..\release.vsprops"
+ InheritedPropertySheets="..\..\..\common.vsprops;..\..\..\release.vsprops"
UseOfMFC="1"
UseOfATL="0"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="1"
- WholeProgramOptimization="1"
+ WholeProgramOptimization="0"
>
<Tool
Name="VCPreBuildEventTool"
@@ -128,7 +128,7 @@
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="/MP"
- AdditionalIncludeDirectories="..\..\include;..\..\include\dx;..\..\include\atl;..\filters\BaseClasses;..\zlib"
+ AdditionalIncludeDirectories="..\..\..\include;..\..\..\include\dx;..\..\..\include\atl;..\..\BaseClasses;..\..\..\zlib"
PreprocessorDefinitions="_WIN64;NDEBUG;_WINDOWS;DETOURS_X64"
BufferSecurityCheck="true"
EnableEnhancedInstructionSet="0"
@@ -172,7 +172,7 @@
<Configuration
Name="Debug Unicode|Win32"
ConfigurationType="4"
- InheritedPropertySheets="..\common.vsprops;..\debug.vsprops"
+ InheritedPropertySheets="..\..\..\common.vsprops;..\..\..\debug.vsprops"
UseOfMFC="1"
UseOfATL="0"
ATLMinimizesCRunTimeLibraryUsage="false"
@@ -201,7 +201,7 @@
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="/MP"
- AdditionalIncludeDirectories="..\..\include;..\..\include\dx;..\..\include\atl;..\filters\BaseClasses;..\zlib"
+ AdditionalIncludeDirectories="..\..\..\include;..\..\..\include\dx;..\..\..\include\atl;..\..\BaseClasses;..\..\..\zlib"
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;DETOURS_X32"
UsePrecompiledHeader="2"
PrecompiledHeaderThrough="stdafx.h"
@@ -243,7 +243,7 @@
OutputDirectory="$(PlatformName)\$(ConfigurationName)"
IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
ConfigurationType="4"
- InheritedPropertySheets="..\common.vsprops;..\debug.vsprops"
+ InheritedPropertySheets="..\..\..\common.vsprops;..\..\..\debug.vsprops"
UseOfMFC="1"
ATLMinimizesCRunTimeLibraryUsage="false"
CharacterSet="1"
@@ -271,7 +271,7 @@
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="/MP"
- AdditionalIncludeDirectories="..\..\include;..\..\include\dx;..\..\include\atl;..\filters\BaseClasses;..\zlib"
+ AdditionalIncludeDirectories="..\..\..\include;..\..\..\include\dx;..\..\..\include\atl;..\..\BaseClasses;..\..\..\zlib"
PreprocessorDefinitions="_WIN64;_DEBUG;_WINDOWS;DETOURS_X64"
UsePrecompiledHeader="2"
PrecompiledHeaderThrough="stdafx.h"
diff --git a/src/VideoRenderers/madVRAllocatorPresenter.cpp b/src/filters/renderer/VideoRenderers/madVRAllocatorPresenter.cpp
index 9da9fdeec..9da9fdeec 100644
--- a/src/VideoRenderers/madVRAllocatorPresenter.cpp
+++ b/src/filters/renderer/VideoRenderers/madVRAllocatorPresenter.cpp
diff --git a/src/VideoRenderers/madVRAllocatorPresenter.h b/src/filters/renderer/VideoRenderers/madVRAllocatorPresenter.h
index 1bf230a71..1bf230a71 100644
--- a/src/VideoRenderers/madVRAllocatorPresenter.h
+++ b/src/filters/renderer/VideoRenderers/madVRAllocatorPresenter.h
diff --git a/src/VideoRenderers/stdafx.cpp b/src/filters/renderer/VideoRenderers/stdafx.cpp
index 346b89373..346b89373 100644
--- a/src/VideoRenderers/stdafx.cpp
+++ b/src/filters/renderer/VideoRenderers/stdafx.cpp
diff --git a/src/VideoRenderers/stdafx.h b/src/filters/renderer/VideoRenderers/stdafx.h
index 2ca72e1ef..d1cc4cb4c 100644
--- a/src/VideoRenderers/stdafx.h
+++ b/src/filters/renderer/VideoRenderers/stdafx.h
@@ -30,7 +30,7 @@
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
-#include "../DSUtil/SharedInclude.h"
+#include "../../../DSUtil/SharedInclude.h"
// VS2005 changed result of OnNCHitTest
#if _MSC_VER >= 1400
diff --git a/src/filters/switcher/AudioSwitcher/AudioSwitcher.cpp b/src/filters/switcher/AudioSwitcher/AudioSwitcher.cpp
index 3f9da40e9..e27b06c72 100644
--- a/src/filters/switcher/AudioSwitcher/AudioSwitcher.cpp
+++ b/src/filters/switcher/AudioSwitcher/AudioSwitcher.cpp
@@ -139,7 +139,7 @@ void mix(DWORD mask, int ch, int bps, BYTE* src, BYTE* dst)
{
U sum = 0;
- for(int i = 0, j = min(18, ch); i < j; i++)
+ for(int i = 0, j = ch; i < j; i++)
{
if(mask & (1<<i))
{
@@ -148,7 +148,7 @@ void mix(DWORD mask, int ch, int bps, BYTE* src, BYTE* dst)
}
if(sum < Umin) sum = Umin;
- if(sum > Umax) sum = Umax;
+ else if(sum > Umax) sum = Umax;
*(T*)dst = (T)sum;
}
@@ -158,7 +158,7 @@ void mix<int, INT64, (-1<<24), (+1<<24)-1>(DWORD mask, int ch, int bps, BYTE* sr
{
INT64 sum = 0;
- for(int i = 0, j = min(18, ch); i < j; i++)
+ for(int i = 0, j = ch; i < j; i++)
{
if(mask & (1<<i))
{
@@ -173,6 +173,35 @@ void mix<int, INT64, (-1<<24), (+1<<24)-1>(DWORD mask, int ch, int bps, BYTE* sr
memcpy(dst, (BYTE*)&sum, 3);
}
+template<class T, class U, int Umin, int Umax>
+void mix4(DWORD mask, BYTE* src, BYTE* dst)
+{
+ U sum = 0;
+ int bps = sizeof T;
+
+ if(mask & (1<<0))
+ {
+ sum += *(T*)&src[bps*0];
+ }
+ if(mask & (1<<1))
+ {
+ sum += *(T*)&src[bps*1];
+ }
+ if(mask & (1<<2))
+ {
+ sum += *(T*)&src[bps*2];
+ }
+ if(mask & (1<<3))
+ {
+ sum += *(T*)&src[bps*3];
+ }
+
+ if(sum < Umin) sum = Umin;
+ else if(sum > Umax) sum = Umax;
+
+ *(T*)dst = (T)sum;
+}
+
template<class T>
T clamp(double s, T smin, T smax)
{
@@ -242,8 +271,6 @@ HRESULT CAudioSwitcherFilter::Transform(IMediaSample* pIn, IMediaSample* pOut)
// len = 0 doesn't mean it's failed, return S_OK otherwise might skrew the sound
if(len == 0) {pOut->SetActualDataLength(0); return S_OK;}
- memset(pDataOut, 0, pOut->GetSize());
-
if(m_fCustomChannelMapping)
{
if(m_chs[wfe->nChannels-1].GetCount() > 0)
@@ -257,47 +284,57 @@ HRESULT CAudioSwitcherFilter::Transform(IMediaSample* pIn, IMediaSample* pOut)
int srcstep = bps*wfe->nChannels;
int dststep = bps*wfeout->nChannels;
-
+ int channels = min(18, wfe->nChannels);
if(fPCM && wfe->wBitsPerSample == 8)
{
for(int k = 0; k < len; k++, src += srcstep, dst += dststep)
{
- mix<unsigned char, INT64, 0, UCHAR_MAX>(mask, wfe->nChannels, bps, src, dst);
+ mix<unsigned char, INT64, 0, UCHAR_MAX>(mask, channels, bps, src, dst);
}
}
else if(fPCM && wfe->wBitsPerSample == 16)
{
- for(int k = 0; k < len; k++, src += srcstep, dst += dststep)
+ if (wfe->nChannels != 4 || wfeout->nChannels != 4)
+ {
+ for(int k = 0; k < len; k++, src += srcstep, dst += dststep)
+ {
+ mix<short, INT64, SHRT_MIN, SHRT_MAX>(mask, channels, bps, src, dst);
+ }
+ }
+ else
{
- mix<short, INT64, SHRT_MIN, SHRT_MAX>(mask, wfe->nChannels, bps, src, dst);
+ for(int k = 0; k < len; k++, src += srcstep, dst += dststep)
+ {
+ mix4<short, INT64, SHRT_MIN, SHRT_MAX>(mask, src, dst);
+ }
}
}
else if(fPCM && wfe->wBitsPerSample == 24)
{
for(int k = 0; k < len; k++, src += srcstep, dst += dststep)
{
- mix<int, INT64, (-1<<24), (+1<<24)-1>(mask, wfe->nChannels, bps, src, dst);
+ mix<int, INT64, (-1<<24), (+1<<24)-1>(mask, channels, bps, src, dst);
}
}
else if(fPCM && wfe->wBitsPerSample == 32)
{
for(int k = 0; k < len; k++, src += srcstep, dst += dststep)
{
- mix<int, __int64, INT_MIN, INT_MAX>(mask, wfe->nChannels, bps, src, dst);
+ mix<int, __int64, INT_MIN, INT_MAX>(mask, channels, bps, src, dst);
}
}
else if(fFloat && wfe->wBitsPerSample == 32)
{
for(int k = 0; k < len; k++, src += srcstep, dst += dststep)
{
- mix<float, double, -1, 1>(mask, wfe->nChannels, bps, src, dst);
+ mix<float, double, -1, 1>(mask, channels, bps, src, dst);
}
}
else if(fFloat && wfe->wBitsPerSample == 64)
{
for(int k = 0; k < len; k++, src += srcstep, dst += dststep)
{
- mix<double, double, -1, 1>(mask, wfe->nChannels, bps, src, dst);
+ mix<double, double, -1, 1>(mask, channels, bps, src, dst);
}
}
}
@@ -312,6 +349,7 @@ HRESULT CAudioSwitcherFilter::Transform(IMediaSample* pIn, IMediaSample* pOut)
}
else
{
+ memset(pDataOut, 0, pOut->GetSize());
HRESULT hr;
if(S_OK != (hr = __super::Transform(pIn, pOut)))
return hr;