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

github.com/mpc-hc/mpc-hc.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/filters/parser/BaseSplitter/BaseSplitter.cpp')
-rw-r--r--src/filters/parser/BaseSplitter/BaseSplitter.cpp28
1 files changed, 24 insertions, 4 deletions
diff --git a/src/filters/parser/BaseSplitter/BaseSplitter.cpp b/src/filters/parser/BaseSplitter/BaseSplitter.cpp
index c23a2cd8a..9749ac27a 100644
--- a/src/filters/parser/BaseSplitter/BaseSplitter.cpp
+++ b/src/filters/parser/BaseSplitter/BaseSplitter.cpp
@@ -1206,18 +1206,38 @@ STDMETHODIMP CBaseSplitterFilter::Load(LPCOLESTR pszFileName, const AM_MEDIA_TYP
HRESULT hr = E_FAIL;
CComPtr<IAsyncReader> pAsyncReader;
CAtlList<CHdmvClipInfo::PlaylistItem> Items;
- if (BuildPlaylist (pszFileName, Items)) {
+ CAtlList<CHdmvClipInfo::PlaylistChapter> Chapters;
+
+ if (BuildPlaylist (pszFileName, Items))
pAsyncReader = (IAsyncReader*)DNew CAsyncFileReader(Items, hr);
- } else {
+ else
pAsyncReader = (IAsyncReader*)DNew CAsyncFileReader(CString(pszFileName), hr);
- }
+
if(FAILED(hr)
|| FAILED(hr = DeleteOutputs())
- || FAILED(hr = CreateOutputs(pAsyncReader))) {
+ || FAILED(hr = CreateOutputs(pAsyncReader)))
+ {
m_fn = "";
return hr;
}
+ if (BuildChapters (pszFileName, Items, Chapters))
+ {
+ POSITION pos = Chapters.GetHeadPosition();
+ int i = 1;
+ while(pos)
+ {
+ CString str;
+ CHdmvClipInfo::PlaylistChapter& chap = Chapters.GetNext(pos);
+ if (chap.m_nMarkType == CHdmvClipInfo::PlaylistMarkType::EntryMark)
+ {
+ str.Format (_T("Chapter %d"), i);
+ ChapAppend (chap.m_rtTimestamp, str);
+ i++;
+ }
+ }
+ }
+
ChapSort();
m_pSyncReader = pAsyncReader;