diff options
author | Hendrik Leppkes <h.leppkes@gmail.com> | 2014-01-12 13:50:22 +0400 |
---|---|---|
committer | Hendrik Leppkes <h.leppkes@gmail.com> | 2014-01-12 13:50:22 +0400 |
commit | 921f238111d49a405295331f4bdfcefac6b85995 (patch) | |
tree | c5f1b4514b0a34297f460b37d0aeafac6e235405 /demuxer | |
parent | 22c27445fd2add96dede66c8f97cb73c5d27e09c (diff) |
Change "No subtitles" pin to use a basic text-only type
Diffstat (limited to 'demuxer')
-rw-r--r-- | demuxer/Demuxers/BaseDemuxer.cpp | 12 | ||||
-rw-r--r-- | demuxer/Demuxers/BaseDemuxer.h | 3 | ||||
-rw-r--r-- | demuxer/Demuxers/LAVFDemuxer.cpp | 2 | ||||
-rw-r--r-- | demuxer/LAVSplitter/LAVSplitter.cpp | 2 |
4 files changed, 15 insertions, 4 deletions
diff --git a/demuxer/Demuxers/BaseDemuxer.cpp b/demuxer/Demuxers/BaseDemuxer.cpp index 8649f405..4a958920 100644 --- a/demuxer/Demuxers/BaseDemuxer.cpp +++ b/demuxer/Demuxers/BaseDemuxer.cpp @@ -30,12 +30,22 @@ CBaseDemuxer::CBaseDemuxer(LPCTSTR pName, CCritSec *pLock) } } -void CBaseDemuxer::CreateNoSubtitleStream(CMediaType& mtype) +void CBaseDemuxer::CreateNoSubtitleStream() { stream s; s.pid = NO_SUBTITLE_PID; s.streamInfo = new CStreamInfo(); s.language = "und"; + // Create the media type + CMediaType mtype; + mtype.majortype = MEDIATYPE_Subtitle; + mtype.subtype = MEDIASUBTYPE_UTF8; + mtype.formattype = FORMAT_SubtitleInfo; + SUBTITLEINFO *subInfo = (SUBTITLEINFO *)mtype.AllocFormatBuffer(sizeof(SUBTITLEINFO)); + memset(subInfo, 0, mtype.FormatLength()); + wcscpy_s(subInfo->TrackName, NO_SUB_STRING); + strcpy_s(subInfo->IsoLang, "und"); + subInfo->dwOffset = sizeof(SUBTITLEINFO); s.streamInfo->mtypes.push_back(mtype); // Append it to the list m_streams[subpic].push_back(s); diff --git a/demuxer/Demuxers/BaseDemuxer.h b/demuxer/Demuxers/BaseDemuxer.h index 32012ba4..62abb1d5 100644 --- a/demuxer/Demuxers/BaseDemuxer.h +++ b/demuxer/Demuxers/BaseDemuxer.h @@ -28,6 +28,7 @@ #define NO_SUBTITLE_PID DWORD_MAX #define FORCED_SUBTITLE_PID (NO_SUBTITLE_PID - 1) +#define NO_SUB_STRING L"No subtitles" #define FORCED_SUB_STRING L"Forced Subtitles (auto)" struct ILAVFSettingsInternal; @@ -120,7 +121,7 @@ public: protected: CBaseDemuxer(LPCTSTR pName, CCritSec *pLock); - void CreateNoSubtitleStream(CMediaType& mtype); + void CreateNoSubtitleStream(); void CreatePGSForcedSubtitleStream(); public: diff --git a/demuxer/Demuxers/LAVFDemuxer.cpp b/demuxer/Demuxers/LAVFDemuxer.cpp index 93809557..7188b041 100644 --- a/demuxer/Demuxers/LAVFDemuxer.cpp +++ b/demuxer/Demuxers/LAVFDemuxer.cpp @@ -1644,7 +1644,7 @@ STDMETHODIMP CLAVFDemuxer::CreateStreams() // Create fake subtitle pin if(!m_streams[subpic].empty()) { - CreateNoSubtitleStream(m_streams[subpic].front().streamInfo->mtypes.front()); + CreateNoSubtitleStream(); } return S_OK; } diff --git a/demuxer/LAVSplitter/LAVSplitter.cpp b/demuxer/LAVSplitter/LAVSplitter.cpp index fe03f8d9..cc42680b 100644 --- a/demuxer/LAVSplitter/LAVSplitter.cpp +++ b/demuxer/LAVSplitter/LAVSplitter.cpp @@ -1310,7 +1310,7 @@ STDMETHODIMP CLAVSplitter::Info(long lIndex, AM_MEDIA_TYPE **ppmt, DWORD *pdwFla if(s.pid == NO_SUBTITLE_PID) { if (plcid) *plcid = LCID_NOSUBTITLES; if (ppszName) { - WCHAR str[] = L"S: No subtitles"; + WCHAR str[] = L"S: " NO_SUB_STRING; size_t len = wcslen(str) + 1; *ppszName = (WCHAR*)CoTaskMemAlloc(len * sizeof(WCHAR)); if (*ppszName) |