From 77ac6e1d1ded3bbb455dcb29cc7e045530ebb277 Mon Sep 17 00:00:00 2001 From: Aleksoid Date: Sat, 3 Dec 2011 12:00:36 +0000 Subject: Add : Support language info for Audio stream on .IFO play; git-svn-id: https://mpc-hc.svn.sourceforge.net/svnroot/mpc-hc/trunk@3875 10f7b99b-c216-0410-bff0-8a66a9350fd8 --- src/filters/parser/MpegSplitter/MpegSplitter.cpp | 13 ++++++++++++- src/filters/parser/MpegSplitter/MpegSplitter.h | 2 ++ 2 files changed, 14 insertions(+), 1 deletion(-) (limited to 'src/filters/parser/MpegSplitter') diff --git a/src/filters/parser/MpegSplitter/MpegSplitter.cpp b/src/filters/parser/MpegSplitter/MpegSplitter.cpp index 47f650fdc..0d5d7ff70 100644 --- a/src/filters/parser/MpegSplitter/MpegSplitter.cpp +++ b/src/filters/parser/MpegSplitter/MpegSplitter.cpp @@ -788,6 +788,12 @@ HRESULT CMpegSplitterFilter::CreateOutputs(IAsyncReader* pAsyncReader) return hr; } + if(m_pFile->m_type == CMpegSplitterFile::ps) { + if(m_pInput && m_pInput->IsConnected() && (GetCLSID(m_pInput->GetConnected()) == GUIDFromCString(_T("{773EAEDE-D5EE-4fce-9C8F-C4F53D0A2F73}")))){ // MPC VTS Reader + pTI = GetFilterFromPin(m_pInput->GetConnected()); + } + } + CString cs_audioProgram = _T(""); CString cs_subpicProgram = _T(""); @@ -859,6 +865,8 @@ HRESULT CMpegSplitterFilter::CreateOutputs(IAsyncReader* pAsyncReader) lang_name = ISO6392ToLanguage(ch); } + lang_name = pTI ? pTI->GetTrackName(s.ps1id) : lang_name; + CString FormatDesc = GetMediaTypeDesc(&s.mt, pClipInfo, StreamType, lang_name); if (!FormatDesc.IsEmpty()) { @@ -944,6 +952,8 @@ HRESULT CMpegSplitterFilter::CreateOutputs(IAsyncReader* pAsyncReader) lang_name = ISO6392ToLanguage(ch); } + lang_name = pTI ? pTI->GetTrackName(s.ps1id) : lang_name; + CString FormatDesc = GetMediaTypeDesc(&s.mt, pClipInfo, StreamType, lang_name); if (!FormatDesc.IsEmpty()) { @@ -1351,7 +1361,6 @@ STDMETHODIMP CMpegSplitterFilter::Info(long lIndex, AM_MEDIA_TYPE** ppmt, DWORD* *ppUnk = NULL; } - if(ppszName) { CStringW name = CMpegSplitterFile::CStreamList::ToString(i); @@ -1381,6 +1390,8 @@ STDMETHODIMP CMpegSplitterFilter::Info(long lIndex, AM_MEDIA_TYPE** ppmt, DWORD* lang_name = ISO6392ToLanguage(ch); } + lang_name = pTI ? pTI->GetTrackName(s.ps1id) : lang_name; + CString FormatDesc = GetMediaTypeDesc(&s.mt, pClipInfo, StreamType, lang_name); if (!FormatDesc.IsEmpty()) { diff --git a/src/filters/parser/MpegSplitter/MpegSplitter.h b/src/filters/parser/MpegSplitter/MpegSplitter.h index 800599582..f3909b398 100644 --- a/src/filters/parser/MpegSplitter/MpegSplitter.h +++ b/src/filters/parser/MpegSplitter/MpegSplitter.h @@ -24,6 +24,7 @@ #include "../BaseSplitter/BaseSplitter.h" #include "MpegSplitterFile.h" #include "MpegSplitterSettingsWnd.h" +#include #define PauseGraph \ CComQIPtr _pMC(m_pGraph); \ @@ -57,6 +58,7 @@ class __declspec(uuid("DC257063-045F-4BE2-BD5B-E12279C464F0")) protected: CAutoPtr m_pFile; + CComQIPtr pTI; HRESULT CreateOutputs(IAsyncReader* pAsyncReader); void ReadClipInfo(LPCOLESTR pszFileName); -- cgit v1.2.3