From 3398c84282159a679c2456330e01344ef2623216 Mon Sep 17 00:00:00 2001 From: Francois Cartegnie <fcvlcdev@free.fr> Date: Fri, 26 Apr 2019 17:03:50 +0200 Subject: [PATCH] demux: adaptive: delegate codecs string parsing to representation --- .../demux/adaptive/playlist/BaseRepresentation.cpp | 14 ++++++++++++-- .../demux/adaptive/playlist/BaseRepresentation.h | 2 +- modules/demux/dash/mpd/IsoffMainParser.cpp | 13 +------------ 3 files changed, 14 insertions(+), 15 deletions(-) diff --git a/modules/demux/adaptive/playlist/BaseRepresentation.cpp b/modules/demux/adaptive/playlist/BaseRepresentation.cpp index c632ea7f7714..541319b62086 100644 --- a/modules/demux/adaptive/playlist/BaseRepresentation.cpp +++ b/modules/demux/adaptive/playlist/BaseRepresentation.cpp @@ -32,6 +32,7 @@ #include "SegmentTemplate.h" #include "SegmentTimeline.h" #include "../ID.hpp" +#include "../tools/Helper.h" using namespace adaptive; using namespace adaptive::playlist; @@ -73,9 +74,18 @@ const std::list<std::string> & BaseRepresentation::getCodecs() const return codecs; } -void BaseRepresentation::addCodec(const std::string &codec) +void BaseRepresentation::addCodecs(const std::string &s) { - codecs.push_back(codec); + std::list<std::string> list = Helper::tokenize(s, ','); + std::list<std::string>::const_iterator it; + for(it=list.begin(); it!=list.end(); ++it) + { + std::size_t pos = (*it).find_first_of('.', 0); + if(pos != std::string::npos) + codecs.push_back((*it).substr(0, pos)); + else + codecs.push_back(*it); + } } bool BaseRepresentation::needsUpdate() const diff --git a/modules/demux/adaptive/playlist/BaseRepresentation.h b/modules/demux/adaptive/playlist/BaseRepresentation.h index 7d61a91472a3..089ede1299e5 100644 --- a/modules/demux/adaptive/playlist/BaseRepresentation.h +++ b/modules/demux/adaptive/playlist/BaseRepresentation.h @@ -60,7 +60,7 @@ namespace adaptive uint64_t getBandwidth () const; void setBandwidth ( uint64_t bandwidth ); const std::list<std::string> & getCodecs () const; - void addCodec (const std::string &); + void addCodecs (const std::string &); bool consistentSegmentNumber () const; virtual void pruneByPlaybackTime (vlc_tick_t); diff --git a/modules/demux/dash/mpd/IsoffMainParser.cpp b/modules/demux/dash/mpd/IsoffMainParser.cpp index f742dd206caa..0ae75780ebd9 100644 --- a/modules/demux/dash/mpd/IsoffMainParser.cpp +++ b/modules/demux/dash/mpd/IsoffMainParser.cpp @@ -302,18 +302,7 @@ void IsoffMainParser::parseRepresentations (Node *adaptationSetNode, Adaptati currentRepresentation->setMimeType(repNode->getAttributeValue("mimeType")); if(repNode->hasAttribute("codecs")) - { - std::list<std::string> list = Helper::tokenize(repNode->getAttributeValue("codecs"), ','); - std::list<std::string>::const_iterator it; - for(it=list.begin(); it!=list.end(); ++it) - { - std::size_t pos = (*it).find_first_of('.', 0); - if(pos != std::string::npos) - currentRepresentation->addCodec((*it).substr(0, pos)); - else - currentRepresentation->addCodec(*it); - } - } + currentRepresentation->addCodecs(repNode->getAttributeValue("codecs")); size_t i_total = parseSegmentInformation(repNode, currentRepresentation, &nextid); /* Empty Representation with just baseurl (ex: subtitles) */ -- GitLab