vlc | branch: master | Francois Cartegnie <[email protected]> | Thu Jun 9 11:44:55 2016 +0200| [91f528c97fad2400a42ba8af02f5fde2fc1a36f9] | committer: Francois Cartegnie
demux: adaptive: set demux time offset to segment start, not seek time otherwise creates out of sync multiple streams with mp4 > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=91f528c97fad2400a42ba8af02f5fde2fc1a36f9 --- modules/demux/adaptive/Streams.cpp | 16 ++++++++++++---- modules/demux/adaptive/Streams.hpp | 1 + 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/modules/demux/adaptive/Streams.cpp b/modules/demux/adaptive/Streams.cpp index d05dd15..2e98da9 100644 --- a/modules/demux/adaptive/Streams.cpp +++ b/modules/demux/adaptive/Streams.cpp @@ -250,6 +250,7 @@ AbstractStream::status AbstractStream::demux(mtime_t nz_deadline, bool send) dead = true; /* Prevent further retries */ return AbstractStream::status_eof; } + setTimeOffset(); } if(nz_deadline + VLC_TS_0 > getBufferingLevel()) /* not already demuxed */ @@ -351,10 +352,7 @@ bool AbstractStream::setPosition(mtime_t time, bool tryonly) if( !restartDemux() ) dead = true; - /* Check if we need to set an offset as the demuxer - * will start from zero from seek point */ - if(demuxer->alwaysStartsFromZero()) - fakeesout->setTimestampOffset(time); + setTimeOffset(); } pcr = VLC_TS_INVALID; @@ -383,6 +381,16 @@ void AbstractStream::fillExtraFMTInfo( es_format_t *p_fmt ) const p_fmt->psz_description = strdup(description.c_str()); } +void AbstractStream::setTimeOffset() +{ + /* Check if we need to set an offset as the demuxer + * will start from zero from seek point */ + if(demuxer && demuxer->alwaysStartsFromZero()) + fakeesout->setTimestampOffset(segmentTracker->getPlaybackTime()); + else + fakeesout->setTimestampOffset(0); +} + void AbstractStream::trackerEvent(const SegmentTrackerEvent &event) { switch(event.type) diff --git a/modules/demux/adaptive/Streams.hpp b/modules/demux/adaptive/Streams.hpp index 6fa20ea..696d0b1 100644 --- a/modules/demux/adaptive/Streams.hpp +++ b/modules/demux/adaptive/Streams.hpp @@ -86,6 +86,7 @@ namespace adaptive protected: bool seekAble() const; + virtual void setTimeOffset(); virtual block_t *checkBlock(block_t *, bool) = 0; virtual AbstractDemuxer * createDemux(const StreamFormat &) = 0; virtual bool startDemux(); _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
