diff options
Diffstat (limited to 'src/filters/parser/MpegSplitter')
-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);
|