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:
authorKacper Michajłow <kasper93@gmail.com>2017-08-27 03:59:52 +0300
committerKacper Michajłow <kasper93@gmail.com>2017-08-28 00:15:13 +0300
commitb660a26f3ee5a13d16ec2a4aea560357fdf35fe9 (patch)
tree4e7393124e5b1de6f1fbf4a7c3dfdda106f175fd
parent4c42c10eb5a554ab382ba7f6bfcd58eb597799a1 (diff)
Do not init CString for H/W accelerator.
While at it fix S/W decoders being mistaken for H/W ones.
-rw-r--r--src/mpc-hc/FGFilterLAV.cpp24
-rw-r--r--src/mpc-hc/FGFilterLAV.h4
-rw-r--r--src/mpc-hc/MainFrm.cpp17
-rw-r--r--src/mpc-hc/MainFrm.h2
4 files changed, 26 insertions, 21 deletions
diff --git a/src/mpc-hc/FGFilterLAV.cpp b/src/mpc-hc/FGFilterLAV.cpp
index b0e846c1c..201fa9988 100644
--- a/src/mpc-hc/FGFilterLAV.cpp
+++ b/src/mpc-hc/FGFilterLAV.cpp
@@ -556,22 +556,22 @@ void CFGFilterLAVVideo::ShowPropertyPages(CWnd* pParendWnd)
CFGFilterLAV::ShowPropertyPages<VIDEO_DECODER, CFGFilterLAVVideo, ILAVVideoSettings, 1>(pParendWnd);
}
-LPCTSTR CFGFilterLAVVideo::GetUserFriendlyDecoderName(const CString& decoderName)
+LPCTSTR CFGFilterLAVVideo::GetUserFriendlyDecoderName(const LPCWSTR decoderName)
{
- static constexpr std::pair<LPCTSTR, LPCTSTR> userFriendlyDecoderNames[] = {
- std::make_pair(_T("avcodec"), _T("FFmpeg")),
- std::make_pair(_T("dxva2n"), _T("DXVA2 Native")),
- std::make_pair(_T("dxva2cb"), _T("DXVA2 Copy-back")),
- std::make_pair(_T("dxva2cb direct"), _T("DXVA2 Copy-back (Direct)")),
- std::make_pair(_T("cuvid"), _T("NVIDIA CUVID")),
- std::make_pair(_T("quicksync"), _T("Intel QuickSync")),
- std::make_pair(_T("d3d11 cb direct"), _T("D3D11 Copy-back (Direct)")),
- std::make_pair(_T("d3d11 cb"), _T("D3D11 Copy-back")),
- std::make_pair(_T("d3d11 native"), _T("D3D11 Native")),
+ static constexpr std::pair<const LPCWSTR, const LPCTSTR> userFriendlyDecoderNames[] = {
+ std::make_pair(L"avcodec", _T("FFmpeg")),
+ std::make_pair(L"dxva2n", _T("DXVA2 Native")),
+ std::make_pair(L"dxva2cb", _T("DXVA2 Copy-back")),
+ std::make_pair(L"dxva2cb direct", _T("DXVA2 Copy-back (Direct)")),
+ std::make_pair(L"cuvid", _T("NVIDIA CUVID")),
+ std::make_pair(L"quicksync", _T("Intel QuickSync")),
+ std::make_pair(L"d3d11 cb direct", _T("D3D11 Copy-back (Direct)")),
+ std::make_pair(L"d3d11 cb", _T("D3D11 Copy-back")),
+ std::make_pair(L"d3d11 native", _T("D3D11 Native")),
};
for (const auto& name : userFriendlyDecoderNames) {
- if (decoderName == name.first) {
+ if (wcscmp(decoderName, name.first) == 0) {
return name.second;
}
}
diff --git a/src/mpc-hc/FGFilterLAV.h b/src/mpc-hc/FGFilterLAV.h
index bb979ba42..fac2d8379 100644
--- a/src/mpc-hc/FGFilterLAV.h
+++ b/src/mpc-hc/FGFilterLAV.h
@@ -1,5 +1,5 @@
/*
- * (C) 2013-2016 see Authors.txt
+ * (C) 2013-2017 see Authors.txt
*
* This file is part of MPC-HC.
*
@@ -190,7 +190,7 @@ public:
static void ShowPropertyPages(CWnd* pParendWnd);
- static LPCTSTR GetUserFriendlyDecoderName(const CString& decoderName);
+ static LPCTSTR GetUserFriendlyDecoderName(const LPCWSTR decoderName);
};
class CFGFilterLAVAudio : public CFGFilterLAV
diff --git a/src/mpc-hc/MainFrm.cpp b/src/mpc-hc/MainFrm.cpp
index 2337937f7..720d340b7 100644
--- a/src/mpc-hc/MainFrm.cpp
+++ b/src/mpc-hc/MainFrm.cpp
@@ -694,6 +694,7 @@ CMainFrame::CMainFrame()
: m_timer32Hz(this, TIMER_32HZ, 32)
, m_timerOneTime(this, TIMER_ONETIME_START, TIMER_ONETIME_END - TIMER_ONETIME_START + 1)
, m_bUsingDXVA(false)
+ , m_HWAccelType(nullptr)
, m_posFirstExtSub(nullptr)
, m_bDelaySetOutputRect(false)
, m_nJumpToSubMenusCount(0)
@@ -16698,19 +16699,20 @@ GUID CMainFrame::GetTimeFormat()
void CMainFrame::UpdateDXVAStatus()
{
CString DXVADecoderDescription = GetDXVADecoderDescription();
- m_bUsingDXVA = (_T("Not using DXVA") != DXVADecoderDescription && _T("Unknown") != DXVADecoderDescription);
m_HWAccelType = GetDXVAVersion();
+ m_bUsingDXVA = (_T("Not using DXVA") != DXVADecoderDescription && _T("Unknown") != DXVADecoderDescription);
CString DXVAInfo;
- DXVAInfo.Format(_T("%-13s: %s"), m_HWAccelType.GetString(), DXVADecoderDescription.GetString());
+ DXVAInfo.Format(_T("%-13s: %s"), m_HWAccelType, DXVADecoderDescription.GetString());
// 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();
- if (decoderName != L"avcodec") {
+ const LPCWSTR decoderName = pLAVVideoStatus->GetActiveDecoderName();
+ ASSERT(decoderName != nullptr);
+ if (wcscmp(decoderName, L"avcodec") != 0 && wcscmp(decoderName, L"wmv9 mft") != 0 && wcscmp(decoderName, L"msdk mvc") != 0) {
m_HWAccelType = CFGFilterLAVVideo::GetUserFriendlyDecoderName(decoderName);
CString LAVDXVAInfo;
- LAVDXVAInfo.Format(_T("LAV Video Decoder (%s)"), m_HWAccelType.GetString());
+ LAVDXVAInfo.Format(_T("LAV Video Decoder (%s)"), m_HWAccelType);
if (!m_bUsingDXVA) { // Don't trust the hook
m_bUsingDXVA = true;
@@ -16726,7 +16728,10 @@ void CMainFrame::UpdateDXVAStatus()
bool CMainFrame::GetDecoderType(CString& type) const
{
if (!m_fAudioOnly) {
- type = m_bUsingDXVA ? m_HWAccelType : StrRes(IDS_TOOLTIP_SOFTWARE_DECODING);
+ if (m_bUsingDXVA)
+ type = m_HWAccelType;
+ else
+ type.LoadString(IDS_TOOLTIP_SOFTWARE_DECODING);
return true;
}
return false;
diff --git a/src/mpc-hc/MainFrm.h b/src/mpc-hc/MainFrm.h
index aa0229d27..768c84ca2 100644
--- a/src/mpc-hc/MainFrm.h
+++ b/src/mpc-hc/MainFrm.h
@@ -241,7 +241,7 @@ private:
CComPtr<IUnknown> m_pProv;
bool m_bUsingDXVA;
- CString m_HWAccelType;
+ LPCTSTR m_HWAccelType;
void UpdateDXVAStatus();
void SetVolumeBoost(UINT nAudioBoost);