vlc | branch: master | Francois Cartegnie <[email protected]> | Fri Apr 19 11:34:48 2019 +0200| [e8dab66b213034ccb28414b3bba7b3f2b4145f42] | committer: Francois Cartegnie
demux: hls: load session key > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=e8dab66b213034ccb28414b3bba7b3f2b4145f42 --- modules/demux/hls/playlist/Parser.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/modules/demux/hls/playlist/Parser.cpp b/modules/demux/hls/playlist/Parser.cpp index 941f8f30ba..18e372b1d4 100644 --- a/modules/demux/hls/playlist/Parser.cpp +++ b/modules/demux/hls/playlist/Parser.cpp @@ -68,6 +68,17 @@ static std::list<Tag *> getTagsFromList(std::list<Tag *> &list, int tag) return ret; } +static Tag * getTagFromList(std::list<Tag *> &list, int tag) +{ + std::list<Tag *>::const_iterator it; + for(it = list.begin(); it != list.end(); ++it) + { + if( (*it)->getType() == tag ) + return *it; + } + return NULL; +} + static void releaseTagsList(std::list<Tag *> &list) { std::list<Tag *>::const_iterator it; @@ -421,6 +432,14 @@ M3U8 * M3U8Parser::parse(vlc_object_t *p_object, stream_t *p_stream, const std:: std::list<Tag *>::const_iterator it; std::map<std::string, AttributesTag *> groupsmap; + Tag *sessionKey = getTagFromList(tagslist, AttributesTag::EXTXSESSIONKEY); + if(sessionKey) + { + CommonEncryption sessionEncryption; + parseEncryption(static_cast<const AttributesTag *>(sessionKey), + playlist->getUrlSegment(), sessionEncryption); + } + /* We'll need to create an adaptation set for each media group / alternative rendering * we create a list of playlist being and alternative/group */ std::list<Tag *> mediainfotags = getTagsFromList(tagslist, AttributesTag::EXTXMEDIA); _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
