vlc | branch: master | Francois Cartegnie <fcvlc...@free.fr> | Wed Sep 23 17:48:28 2015 +0200| [3872f3b2f35d681e89db6b6c7dac02355682971b] | committer: Francois Cartegnie
demux: adaptative: flag template segments > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=3872f3b2f35d681e89db6b6c7dac02355682971b --- modules/demux/adaptative/playlist/Segment.cpp | 6 ++++++ modules/demux/adaptative/playlist/Segment.h | 2 ++ modules/demux/adaptative/playlist/SegmentInformation.cpp | 7 +++---- modules/demux/adaptative/playlist/SegmentTemplate.cpp | 1 + 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/modules/demux/adaptative/playlist/Segment.cpp b/modules/demux/adaptative/playlist/Segment.cpp index 88b16a1..64f2dc8 100644 --- a/modules/demux/adaptative/playlist/Segment.cpp +++ b/modules/demux/adaptative/playlist/Segment.cpp @@ -48,6 +48,7 @@ ISegment::ISegment(const ICanonicalUrl *parent): duration.Set(0); chunksuse.Set(0); sequence = SEQUENCE_INVALID; + templated = false; } ISegment::~ISegment() @@ -90,6 +91,11 @@ SegmentChunk* ISegment::toChunk(size_t index, BaseRepresentation *ctxrep) return chunk; } +bool ISegment::isTemplate() const +{ + return templated; +} + void ISegment::setByteRange(size_t start, size_t end) { startByte = start; diff --git a/modules/demux/adaptative/playlist/Segment.h b/modules/demux/adaptative/playlist/Segment.h index 2b0e1f6..7ba7619 100644 --- a/modules/demux/adaptative/playlist/Segment.h +++ b/modules/demux/adaptative/playlist/Segment.h @@ -57,6 +57,7 @@ namespace adaptative virtual void setByteRange (size_t start, size_t end); virtual void setSequenceNumber(uint64_t); virtual uint64_t getSequenceNumber() const; + virtual bool isTemplate () const; virtual size_t getOffset () const; virtual std::vector<ISegment*> subSegments () = 0; virtual void addSubSegment (SubSegment *) = 0; @@ -77,6 +78,7 @@ namespace adaptative size_t endByte; std::string debugName; int classId; + bool templated; uint64_t sequence; static const int SEQUENCE_INVALID; static const int SEQUENCE_FIRST; diff --git a/modules/demux/adaptative/playlist/SegmentInformation.cpp b/modules/demux/adaptative/playlist/SegmentInformation.cpp index 11f8831..485b87c 100644 --- a/modules/demux/adaptative/playlist/SegmentInformation.cpp +++ b/modules/demux/adaptative/playlist/SegmentInformation.cpp @@ -159,11 +159,10 @@ ISegment * SegmentInformation::getSegment(SegmentInfoType type, uint64_t pos) co const size_t size = getSegments( type, retSegments ); if( size ) { - /* check if that's a template (fixme: find a better way) */ - MediaSegmentTemplate *templ; - if( size == 1 && (templ = dynamic_cast<MediaSegmentTemplate*>(retSegments[0])) ) + if(size == 1 && retSegments[0]->isTemplate()) { - if(templ->segmentTimeline.Get() == NULL || + MediaSegmentTemplate *templ = dynamic_cast<MediaSegmentTemplate*>(retSegments[0]); + if(!templ || templ->segmentTimeline.Get() == NULL || templ->segmentTimeline.Get()->maxElementNumber() > pos) return templ; } diff --git a/modules/demux/adaptative/playlist/SegmentTemplate.cpp b/modules/demux/adaptative/playlist/SegmentTemplate.cpp index 210e873..52b2a31 100644 --- a/modules/demux/adaptative/playlist/SegmentTemplate.cpp +++ b/modules/demux/adaptative/playlist/SegmentTemplate.cpp @@ -43,6 +43,7 @@ MediaSegmentTemplate::MediaSegmentTemplate( SegmentInformation *parent ) : classId = Segment::CLASSID_SEGMENT; startNumber.Set( 1 ); initialisationSegment.Set( NULL ); + templated = true; } void MediaSegmentTemplate::mergeWith(MediaSegmentTemplate *updated, mtime_t prunebarrier) _______________________________________________ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits