vlc | branch: master | Francois Cartegnie <[email protected]> | Sat Jul 25 19:36:14 2015 +0200| [07fb2c8825f227564de30492e23c18645802198d] | committer: Francois Cartegnie
demux: dash: parse language > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=07fb2c8825f227564de30492e23c18645802198d --- modules/demux/adaptative/PlaylistManager.cpp | 15 +++++++++++++++ modules/demux/dash/mpd/IsoffMainParser.cpp | 10 ++++++++++ 2 files changed, 25 insertions(+) diff --git a/modules/demux/adaptative/PlaylistManager.cpp b/modules/demux/adaptative/PlaylistManager.cpp index fae117b..32c251d 100644 --- a/modules/demux/adaptative/PlaylistManager.cpp +++ b/modules/demux/adaptative/PlaylistManager.cpp @@ -28,6 +28,7 @@ #include "playlist/AbstractPlaylist.hpp" #include "playlist/BasePeriod.h" #include "playlist/BaseAdaptationSet.h" +#include "playlist/BaseRepresentation.h" #include "http/HTTPConnectionManager.h" #include "logic/AlwaysBestAdaptationLogic.h" #include "logic/RateBasedAdaptationLogic.h" @@ -102,6 +103,20 @@ bool PlaylistManager::setupPeriod() delete logic; throw VLC_ENOMEM; } + + std::list<std::string> languages; + if(!set->getLang().empty()) + { + languages = set->getLang(); + } + else if(!set->getRepresentations().empty()) + { + languages = set->getRepresentations().front()->getLang(); + } + + if(!languages.empty()) + st->setLanguage(languages.front()); + st->create(logic, tracker, streamOutputFactory); streams.push_back(st); } catch (int) { diff --git a/modules/demux/dash/mpd/IsoffMainParser.cpp b/modules/demux/dash/mpd/IsoffMainParser.cpp index c4e665e..cf81742 100644 --- a/modules/demux/dash/mpd/IsoffMainParser.cpp +++ b/modules/demux/dash/mpd/IsoffMainParser.cpp @@ -225,6 +225,16 @@ void IsoffMainParser::setAdaptationSets (Node *periodNode, Period *period) if((*it)->hasAttribute("mimeType")) adaptationSet->setMimeType((*it)->getAttributeValue("mimeType")); + if((*it)->hasAttribute("lang")) + { + std::string lang = (*it)->getAttributeValue("lang"); + std::size_t pos = lang.find_first_of('-'); + if(pos != std::string::npos && pos > 0) + adaptationSet->addLang(lang.substr(0, pos)); + else if (lang.size() < 4) + adaptationSet->addLang(lang); + } + Node *baseUrl = DOMHelper::getFirstChildElementByName((*it), "BaseURL"); if(baseUrl) adaptationSet->baseUrl.Set(new Url(baseUrl->getText())); _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
