diff options
author | Aleksoid <aleksoid@users.sourceforge.net> | 2011-12-03 16:00:36 +0400 |
---|---|---|
committer | Aleksoid <aleksoid@users.sourceforge.net> | 2011-12-03 16:00:36 +0400 |
commit | 77ac6e1d1ded3bbb455dcb29cc7e045530ebb277 (patch) | |
tree | b6ab34496f14561cca6d7da4d81d6d8954087382 /src/filters/parser | |
parent | dbafad790e361edc1d06ca8a3be84cdf11f03645 (diff) |
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
Diffstat (limited to 'src/filters/parser')
-rw-r--r-- | src/filters/parser/MpegSplitter/MpegSplitter.cpp | 13 | ||||
-rw-r--r-- | src/filters/parser/MpegSplitter/MpegSplitter.h | 2 |
2 files changed, 14 insertions, 1 deletions
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 <ITrackInfo.h>
#define PauseGraph \
CComQIPtr<IMediaControl> _pMC(m_pGraph); \
@@ -57,6 +58,7 @@ class __declspec(uuid("DC257063-045F-4BE2-BD5B-E12279C464F0")) protected:
CAutoPtr<CMpegSplitterFile> m_pFile;
+ CComQIPtr<ITrackInfo> pTI;
HRESULT CreateOutputs(IAsyncReader* pAsyncReader);
void ReadClipInfo(LPCOLESTR pszFileName);
|