vlc | branch: master | Francois Cartegnie <[email protected]> | Wed Jun 10 14:34:47 2015 +0200| [a3195dae034a742d2cf38e7fe69158bc0b492749] | committer: Francois Cartegnie
demux: adaptative: fix scheme handling in segments > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=a3195dae034a742d2cf38e7fe69158bc0b492749 --- modules/demux/adaptative/playlist/Segment.cpp | 17 ++++++++++++----- modules/demux/adaptative/playlist/Segment.h | 2 +- modules/demux/adaptative/playlist/SegmentTemplate.cpp | 17 +++++------------ modules/demux/adaptative/playlist/SegmentTemplate.h | 2 +- modules/demux/adaptative/playlist/Url.cpp | 5 +++++ modules/demux/adaptative/playlist/Url.hpp | 1 + 6 files changed, 25 insertions(+), 19 deletions(-) diff --git a/modules/demux/adaptative/playlist/Segment.cpp b/modules/demux/adaptative/playlist/Segment.cpp index f32003c..5b738d5 100644 --- a/modules/demux/adaptative/playlist/Segment.cpp +++ b/modules/demux/adaptative/playlist/Segment.cpp @@ -182,7 +182,7 @@ Segment::~Segment() void Segment::setSourceUrl ( const std::string &url ) { if ( url.empty() == false ) - this->sourceUrl = url; + this->sourceUrl = Url(url); } void Segment::debug(vlc_object_t *obj, int indent) const @@ -204,10 +204,17 @@ void Segment::debug(vlc_object_t *obj, int indent) const Url Segment::getUrlSegment() const { - Url ret = getParentUrlSegment(); - if (!sourceUrl.empty()) - ret.append(sourceUrl); - return ret; + if(sourceUrl.hasScheme()) + { + return sourceUrl; + } + else + { + Url ret = getParentUrlSegment(); + if (!sourceUrl.empty()) + ret.append(sourceUrl); + return ret; + } } Chunk* Segment::toChunk(size_t index, BaseRepresentation *ctxrep) diff --git a/modules/demux/adaptative/playlist/Segment.h b/modules/demux/adaptative/playlist/Segment.h index 7b22214..92c7e39 100644 --- a/modules/demux/adaptative/playlist/Segment.h +++ b/modules/demux/adaptative/playlist/Segment.h @@ -104,7 +104,7 @@ namespace adaptative protected: std::vector<SubSegment *> subsegments; - std::string sourceUrl; + Url sourceUrl; int size; }; diff --git a/modules/demux/adaptative/playlist/SegmentTemplate.cpp b/modules/demux/adaptative/playlist/SegmentTemplate.cpp index e7ae4d0..210e873 100644 --- a/modules/demux/adaptative/playlist/SegmentTemplate.cpp +++ b/modules/demux/adaptative/playlist/SegmentTemplate.cpp @@ -35,18 +35,6 @@ BaseSegmentTemplate::BaseSegmentTemplate( ICanonicalUrl *parent ) : { } -Url BaseSegmentTemplate::getUrlSegment() const -{ - Url ret = getParentUrlSegment(); - if (!sourceUrl.empty()) - { - ret.append(Url::Component( - sourceUrl, - dynamic_cast<const MediaSegmentTemplate *>(this)) /* casts to NULL if != */ - ); - } - return ret; -} MediaSegmentTemplate::MediaSegmentTemplate( SegmentInformation *parent ) : BaseSegmentTemplate( parent ), Timelineable(), TimescaleAble( parent ) @@ -67,6 +55,11 @@ void MediaSegmentTemplate::mergeWith(MediaSegmentTemplate *updated, mtime_t prun } } +void MediaSegmentTemplate::setSourceUrl(const std::string &url) +{ + sourceUrl = Url(Url::Component(url, this)); +} + InitSegmentTemplate::InitSegmentTemplate( ICanonicalUrl *parent ) : BaseSegmentTemplate(parent) { diff --git a/modules/demux/adaptative/playlist/SegmentTemplate.h b/modules/demux/adaptative/playlist/SegmentTemplate.h index 5f4d6e3..5c8ef64 100644 --- a/modules/demux/adaptative/playlist/SegmentTemplate.h +++ b/modules/demux/adaptative/playlist/SegmentTemplate.h @@ -40,7 +40,6 @@ namespace adaptative { public: BaseSegmentTemplate( ICanonicalUrl * = NULL ); - virtual Url getUrlSegment() const; /* reimpl */ }; class MediaSegmentTemplate : public BaseSegmentTemplate, @@ -50,6 +49,7 @@ namespace adaptative { public: MediaSegmentTemplate( SegmentInformation * = NULL ); + virtual void setSourceUrl( const std::string &url ); /* reimpl */ void mergeWith( MediaSegmentTemplate *, mtime_t ); Property<size_t> startNumber; }; diff --git a/modules/demux/adaptative/playlist/Url.cpp b/modules/demux/adaptative/playlist/Url.cpp index acc64c9..b3352dd 100644 --- a/modules/demux/adaptative/playlist/Url.cpp +++ b/modules/demux/adaptative/playlist/Url.cpp @@ -45,6 +45,11 @@ bool Url::hasScheme() const return components[0].b_scheme; } +bool Url::empty() const +{ + return components.empty(); +} + Url & Url::prepend(const Component & comp) { components.insert(components.begin(), comp); diff --git a/modules/demux/adaptative/playlist/Url.hpp b/modules/demux/adaptative/playlist/Url.hpp index e40ccf9..4c349ba 100644 --- a/modules/demux/adaptative/playlist/Url.hpp +++ b/modules/demux/adaptative/playlist/Url.hpp @@ -57,6 +57,7 @@ namespace adaptative Url(const Component &); explicit Url(const std::string &); bool hasScheme() const; + bool empty() const; Url & prepend(const Component &); Url & append(const Component &); Url & append(const Url &); _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
