bool CSupSubFile::Open(CString fn, CString SubName) { CFile f; if (!f.Open(fn, CFile::modeRead | CFile::typeBinary | CFile::shareDenyNone)) { return false; } WORD sync = (WORD)ReadByte(&f, 2); if (sync != 'PG') { return false; } m_fname = fn; m_Subname = SubName; m_pSub = DNew CHdmvSub(); m_Thread = AfxBeginThread(::ThreadProc, static_cast<LPVOID>(this)); return (m_Thread) ? true : false; }
CRenderedHdmvSubtitle::CRenderedHdmvSubtitle(CCritSec* pLock, SUBTITLE_TYPE nType, const CString& name, LCID lcid) : CSubPicProviderImpl(pLock) , m_name(name) , m_lcid(lcid) , m_nType(nType) { switch (m_nType) { case ST_DVB : m_pSub = DNew CDVBSub(); if (name.IsEmpty() || (name == _T("Unknown"))) m_name = _T("DVB"); break; case ST_HDMV : m_pSub = DNew CHdmvSub(); if (name.IsEmpty() || (name == _T("Unknown"))) m_name = _T("PGS"); break; default : ASSERT (FALSE); m_pSub = NULL; } m_rtStart = 0; }
bool SupFileSubtitleProvider::Open(CString fn, CString subName /*= _T("")*/) { if (!m_fname.IsEmpty()) { return false; } CFile f; if (!f.Open(fn, CFile::modeRead|CFile::typeBinary|CFile::shareDenyNone)) { return false; } WORD sync = 0; sync = (WORD)ReadByte(&f, 2); if (sync != 'PG') { return false; } m_fname = fn; m_subname = subName; if (m_subname.IsEmpty()) { m_subname = fn.Left(fn.ReverseFind('.')); m_subname = m_subname.Mid(m_subname.ReverseFind('/')+1); m_subname = m_subname.Mid(m_subname.ReverseFind('.')+1); } { CAutoLock cAutoLock(&m_csCritSec); delete m_pSub; delete m_helper; m_pSub = DEBUG_NEW CHdmvSub(); m_helper = DEBUG_NEW HdmvSubtitleProviderImpl(m_pSub); } return CAMThread::Create()==TRUE; }
// // HdmvSubtitleProvider // HdmvSubtitleProvider::HdmvSubtitleProvider( CCritSec* pLock, SUBTITLE_TYPE nType , const CString& name, LCID lcid ) : CUnknown(NAME("HdmvSubtitleProvider"), NULL) , m_name(name), m_lcid(lcid) { switch (nType) { case ST_DVB : m_pSub = DEBUG_NEW CDVBSub(); if (name.IsEmpty() || (name == _T("Unknown"))) m_name = "DVB Embedded Subtitle"; m_helper = DEBUG_NEW HdmvSubtitleProviderImpl(m_pSub); break; case ST_HDMV : m_pSub = DEBUG_NEW CHdmvSub(); if (name.IsEmpty() || (name == _T("Unknown"))) m_name = "HDMV Embedded Subtitle"; m_helper = DEBUG_NEW HdmvSubtitleProviderImpl(m_pSub); break; default : ASSERT (FALSE); m_pSub = NULL; m_helper = NULL; } m_rtStart = 0; }
CRenderedHdmvSubtitle::CRenderedHdmvSubtitle(CCritSec* pLock, SUBTITLE_TYPE nType, const CString& name, LCID lcid) : CSubPicProviderImpl(pLock) , m_name(name) , m_lcid(lcid) { switch (nType) { case ST_DVB: m_pSub = DEBUG_NEW CDVBSub(); if (name.IsEmpty() || (name == _T("Unknown"))) { m_name = "DVB Embedded Subtitle"; } break; case ST_HDMV: m_pSub = DEBUG_NEW CHdmvSub(); if (name.IsEmpty() || (name == _T("Unknown"))) { m_name = "HDMV Embedded Subtitle"; } break; default: ASSERT(FALSE); m_pSub = nullptr; } m_rtStart = 0; }