diff options
author | Kacper Michajłow <kasper93@gmail.com> | 2017-08-27 03:59:52 +0300 |
---|---|---|
committer | Kacper Michajłow <kasper93@gmail.com> | 2017-08-28 00:15:13 +0300 |
commit | b660a26f3ee5a13d16ec2a4aea560357fdf35fe9 (patch) | |
tree | 4e7393124e5b1de6f1fbf4a7c3dfdda106f175fd | |
parent | 4c42c10eb5a554ab382ba7f6bfcd58eb597799a1 (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.cpp | 24 | ||||
-rw-r--r-- | src/mpc-hc/FGFilterLAV.h | 4 | ||||
-rw-r--r-- | src/mpc-hc/MainFrm.cpp | 17 | ||||
-rw-r--r-- | src/mpc-hc/MainFrm.h | 2 |
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);
|