diff options
author | v0lt <v0lt@rambler.ru> | 2013-05-12 18:18:23 +0400 |
---|---|---|
committer | v0lt <v0lt@rambler.ru> | 2013-05-12 18:18:23 +0400 |
commit | 10de765546ccac4e829953c185768da3f110618b (patch) | |
tree | b211f57e952c8d1c57dba93d06e23a66aaa05df1 /src/filters/parser | |
parent | 65dfd8e8b8f2ad058fa0ed0ae44f6d3da072366b (diff) |
AviSplitter: back support DivX subtitles after a8719e5ec1.
Diffstat (limited to 'src/filters/parser')
-rw-r--r-- | src/filters/parser/AviSplitter/AviFile.cpp | 5 | ||||
-rw-r--r-- | src/filters/parser/AviSplitter/AviSplitter.cpp | 9 |
2 files changed, 13 insertions, 1 deletions
diff --git a/src/filters/parser/AviSplitter/AviFile.cpp b/src/filters/parser/AviSplitter/AviFile.cpp index b94ef77f8..4fbb40318 100644 --- a/src/filters/parser/AviSplitter/AviFile.cpp +++ b/src/filters/parser/AviSplitter/AviFile.cpp @@ -324,6 +324,11 @@ REFERENCE_TIME CAviFile::GetTotalTime() for (DWORD i = 0; i < m_avih.dwStreams; ++i) {
strm_t* s = m_strms[i];
+
+ if (s->IsRawSubtitleStream()) {
+ continue;
+ }
+
REFERENCE_TIME t2 = s->GetRefTime((DWORD)s->cs.GetCount(), s->totalsize);
t = max(t, t2);
}
diff --git a/src/filters/parser/AviSplitter/AviSplitter.cpp b/src/filters/parser/AviSplitter/AviSplitter.cpp index fbf2968ed..0c52f0725 100644 --- a/src/filters/parser/AviSplitter/AviSplitter.cpp +++ b/src/filters/parser/AviSplitter/AviSplitter.cpp @@ -537,10 +537,17 @@ bool CAviSplitterFilter::DemuxLoop() CAviFile::strm_t* s = m_pFile->m_strms[j];
DWORD f = m_tFrame[j];
- if (f >= (DWORD)s->cs.GetCount() || s->IsRawSubtitleStream()) {
+ if (f >= (DWORD)s->cs.GetCount()) {
continue;
}
+ if (s->IsRawSubtitleStream()) {
+ // TODO: get subtitle time from index
+ minTime = 0;
+ curTrack = j;
+ break; // read all subtitles at once
+ }
+
REFERENCE_TIME start = s->GetRefTime(f, s->cs[f].size);
if (start < minTime) {
minTime = start;
|