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>2013-05-11 23:57:13 +0400
committerHendrik Leppkes <h.leppkes@gmail.com>2013-05-11 23:57:13 +0400
commit756e4047f89235a2e3ea6462cabe8d5384beb0b5 (patch)
tree18b01833fc730166ffd0d50e763eca720666d959
parent0dc09fbce5705ec16f732a0b2856078d0329d6ca (diff)
Improve handling of get_CurrentMarker with start-only chapters
-rw-r--r--demuxer/Demuxers/LAVFDemuxer.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/demuxer/Demuxers/LAVFDemuxer.cpp b/demuxer/Demuxers/LAVFDemuxer.cpp
index cbb4efe3..e3b2ca41 100644
--- a/demuxer/Demuxers/LAVFDemuxer.cpp
+++ b/demuxer/Demuxers/LAVFDemuxer.cpp
@@ -1128,17 +1128,22 @@ STDMETHODIMP CLAVFDemuxer::get_MarkerCount(long* pMarkerCount)
STDMETHODIMP CLAVFDemuxer::get_CurrentMarker(long* pCurrentMarker)
{
CheckPointer(pCurrentMarker, E_POINTER);
+
+ *pCurrentMarker = 0;
+
// Can the time_base change in between chapters?
// Anyhow, we do the calculation in the loop, just to be safe
for(unsigned int i = 0; i < m_avFormat->nb_chapters; ++i) {
int64_t pts = ConvertRTToTimestamp(m_rtCurrent, m_avFormat->chapters[i]->time_base.num, m_avFormat->chapters[i]->time_base.den);
// Check if the pts is in between the bounds of the chapter
- if (pts >= m_avFormat->chapters[i]->start && pts <= m_avFormat->chapters[i]->end) {
+ if (pts >= m_avFormat->chapters[i]->start) {
*pCurrentMarker = (i + 1);
- return S_OK;
+ // Many files only have chapter start points and no end times
+ if (pts <= m_avFormat->chapters[i]->end)
+ return S_OK;
}
}
- return E_FAIL;
+ return *pCurrentMarker > 0 ? S_OK : E_FAIL;
}
STDMETHODIMP CLAVFDemuxer::GetMarkerTime(long MarkerNum, double* pMarkerTime)