Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mpc-hc/LAVFilters.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHendrik Leppkes <h.leppkes@gmail.com>2014-01-12 13:50:22 +0400
committerHendrik Leppkes <h.leppkes@gmail.com>2014-01-12 13:50:22 +0400
commit921f238111d49a405295331f4bdfcefac6b85995 (patch)
treec5f1b4514b0a34297f460b37d0aeafac6e235405 /demuxer
parent22c27445fd2add96dede66c8f97cb73c5d27e09c (diff)
Change "No subtitles" pin to use a basic text-only type
Diffstat (limited to 'demuxer')
-rw-r--r--demuxer/Demuxers/BaseDemuxer.cpp12
-rw-r--r--demuxer/Demuxers/BaseDemuxer.h3
-rw-r--r--demuxer/Demuxers/LAVFDemuxer.cpp2
-rw-r--r--demuxer/LAVSplitter/LAVSplitter.cpp2
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)