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
path: root/src
diff options
context:
space:
mode:
authorUnderground78 <underground78@users.sourceforge.net>2013-10-19 18:11:10 +0400
committerUnderground78 <underground78@users.sourceforge.net>2013-10-20 01:57:59 +0400
commita49664c48de044c9b7facd1b0862e09eeaeb4fab (patch)
tree346ee77c038d3609c93ad4c5e0c791cbd4dd0fca /src
parentde70d8a5190ac2c18fe085b66e541cea3dcd2f6f (diff)
Renderer statistics: Show the DXVA info from LAV when available.
Diffstat (limited to 'src')
-rw-r--r--src/filters/renderer/VideoRenderers/DX9AllocatorPresenter.cpp3
-rw-r--r--src/filters/renderer/VideoRenderers/RenderersSettings.h2
-rw-r--r--src/filters/renderer/VideoRenderers/SyncRenderer.cpp3
-rw-r--r--src/mpc-hc/FGFilterLAV.cpp19
-rw-r--r--src/mpc-hc/FGFilterLAV.h2
-rw-r--r--src/mpc-hc/MainFrm.cpp26
6 files changed, 45 insertions, 10 deletions
diff --git a/src/filters/renderer/VideoRenderers/DX9AllocatorPresenter.cpp b/src/filters/renderer/VideoRenderers/DX9AllocatorPresenter.cpp
index 652b8ea90..0f9fd0a55 100644
--- a/src/filters/renderer/VideoRenderers/DX9AllocatorPresenter.cpp
+++ b/src/filters/renderer/VideoRenderers/DX9AllocatorPresenter.cpp
@@ -2015,8 +2015,7 @@ void CDX9AllocatorPresenter::DrawStats()
}
- strText.Format(L"%-13s: %s", GetDXVAVersion(), GetDXVADecoderDescription());
- DrawText(rc, strText, 1);
+ DrawText(rc, rd->m_strDXVAInfo, 1);
OffsetRect(&rc, 0, TextHeight);
strText.Format(L"DirectX SDK : %u", rd->GetDXSdkRelease());
diff --git a/src/filters/renderer/VideoRenderers/RenderersSettings.h b/src/filters/renderer/VideoRenderers/RenderersSettings.h
index 0fabe7fac..e14ac76cc 100644
--- a/src/filters/renderer/VideoRenderers/RenderersSettings.h
+++ b/src/filters/renderer/VideoRenderers/RenderersSettings.h
@@ -138,7 +138,6 @@ class CRenderersData
public:
CRenderersData();
- // Casimir666
bool m_bTearingTest;
int m_iDisplayStats;
bool m_bResetStats; // Set to reset the presentation statistics
@@ -147,6 +146,7 @@ public:
// Hardware feature support
bool m_bFP16Support;
bool m_b10bitSupport;
+ CString m_strDXVAInfo;
LONGLONG GetPerfCounter() const;
HINSTANCE GetD3X9Dll();
diff --git a/src/filters/renderer/VideoRenderers/SyncRenderer.cpp b/src/filters/renderer/VideoRenderers/SyncRenderer.cpp
index a76bcb921..2351e0a79 100644
--- a/src/filters/renderer/VideoRenderers/SyncRenderer.cpp
+++ b/src/filters/renderer/VideoRenderers/SyncRenderer.cpp
@@ -2141,8 +2141,7 @@ void CBaseAP::DrawStats()
DrawText(rc, strText, 1);
OffsetRect(&rc, 0, TextHeight);
- strText.Format(L"%-13s: %s", GetDXVAVersion(), GetDXVADecoderDescription());
- DrawText(rc, strText, 1);
+ DrawText(rc, rd->m_strDXVAInfo, 1);
OffsetRect(&rc, 0, TextHeight);
strText.Format(L"DirectX SDK : %u", rd->GetDXSdkRelease());
diff --git a/src/mpc-hc/FGFilterLAV.cpp b/src/mpc-hc/FGFilterLAV.cpp
index ffe3aa869..7a3445264 100644
--- a/src/mpc-hc/FGFilterLAV.cpp
+++ b/src/mpc-hc/FGFilterLAV.cpp
@@ -546,6 +546,25 @@ void CFGFilterLAVVideo::ShowPropertyPages(CWnd* pParendWnd)
CFGFilterLAV::ShowPropertyPages<VIDEO_DECODER, CFGFilterLAVVideo, ILAVVideoSettings, 1>(pParendWnd);
}
+LPCTSTR CFGFilterLAVVideo::GetUserFriendlyDecoderName(const CString& decoderName)
+{
+ static std::pair<LPCTSTR, LPCTSTR> userFriendlyDecoderNames[] = {
+ make_pair(_T("avcodec"), _T("FFmpeg")),
+ make_pair(_T("dxva2n"), _T("DXVA2 Native")),
+ make_pair(_T("dxva2cb"), _T("DXVA2 Copy-back")),
+ make_pair(_T("cuvid"), _T("Nvidia CUVID")),
+ make_pair(_T("quicksync"), _T("Intel QuickSync"))
+ };
+
+ for (int i = 0; i < _countof(userFriendlyDecoderNames); i++) {
+ if (decoderName == userFriendlyDecoderNames[i].first) {
+ return userFriendlyDecoderNames[i].second;
+ }
+ }
+
+ return _T("None");
+}
+
static LPCTSTR pixFmtSettingsMap[LAVOutPixFmt_NB] = {
_T("yv12"), _T("nv12"), _T("yuy2"), _T("uyvy"), _T("ayuv"), _T("p010"), _T("p210"), _T("y410"),
_T("p016"), _T("p216"), _T("y416"), _T("rgb32"), _T("rgb24"), _T("v210"), _T("v410"), _T("yv16"),
diff --git a/src/mpc-hc/FGFilterLAV.h b/src/mpc-hc/FGFilterLAV.h
index 1ec7acc96..80c8e7272 100644
--- a/src/mpc-hc/FGFilterLAV.h
+++ b/src/mpc-hc/FGFilterLAV.h
@@ -183,6 +183,8 @@ public:
virtual HRESULT Create(IBaseFilter** ppBF, CInterfaceList<IUnknown, &IID_IUnknown>& pUnks);
static void ShowPropertyPages(CWnd* pParendWnd);
+
+ static LPCTSTR GetUserFriendlyDecoderName(const CString& decoderName);
};
class CFGFilterLAVAudio : public CFGFilterLAV
diff --git a/src/mpc-hc/MainFrm.cpp b/src/mpc-hc/MainFrm.cpp
index d27fad07b..7ee0ca3c6 100644
--- a/src/mpc-hc/MainFrm.cpp
+++ b/src/mpc-hc/MainFrm.cpp
@@ -11267,20 +11267,36 @@ void CMainFrame::OpenSetupVideo()
}
}
+ CString DXVAInfo;
+
if (m_fAudioOnly) {
if (IsD3DFullScreenMode()) {
m_pFullscreenWnd->DestroyWindow();
}
} else {
- // If LAV Video is in the graph, we query it directly since it's always more reliable than the hook.
+ CString DXVADecoderDescription = GetDXVADecoderDescription();
+ m_bUsingDXVA = (_T("Not using DXVA") != DXVADecoderDescription && _T("Unknown") != DXVADecoderDescription);
+
+ DXVAInfo.Format(_T("%-13s: %s"), GetDXVAVersion(), GetDXVADecoderDescription());
+
+ // If LAV Video is in the graph, we query it since it's always more reliable than the hook.
if (CComQIPtr<ILAVVideoStatus> pLAVVideoStatus = FindFilter(GUID_LAVVideo, m_pGB)) {
CStringW decoderName = pLAVVideoStatus->GetActiveDecoderName();
- m_bUsingDXVA = (decoderName.Find(L"dxva") == 0 || decoderName == L"cuvid" || decoderName == L"quicksync");
- } else {
- CString DXVA_Text = GetDXVADecoderDescription();
- m_bUsingDXVA = (_T("Not using DXVA") != DXVA_Text && _T("Unknown") != DXVA_Text);
+ if (decoderName.Find(L"dxva") == 0 || decoderName == L"cuvid" || decoderName == L"quicksync") {
+ CString LAVDXVAInfo;
+ LAVDXVAInfo.Format(_T("LAV Video Decoder (%s)"), CFGFilterLAVVideo::GetUserFriendlyDecoderName(decoderName));
+
+ if (!m_bUsingDXVA) { // Don't trust the hook
+ m_bUsingDXVA = true;
+ DXVAInfo.Format(_T("DXVA2 : %s"), LAVDXVAInfo);
+ } else {
+ DXVAInfo.AppendFormat(_T(" [%s]"), LAVDXVAInfo);
+ }
+ }
}
}
+
+ GetRenderersData()->m_strDXVAInfo = DXVAInfo;
}
void CMainFrame::OpenSetupAudio()