[vlc-commits] demux: hls: load session key

Francois Cartegnie git at videolan.org
Mon Mar 30 16:16:16 CEST 2020


vlc/vlc-3.0 | branch: master | Francois Cartegnie <fcvlcdev at free.fr> | Fri Apr 19 11:34:48 2019 +0200| [960e66fdbdfa8e17f1929690ca87d1e3fbddbc40] | committer: Francois Cartegnie

demux: hls: load session key

(cherry picked from commit e8dab66b213034ccb28414b3bba7b3f2b4145f42)

> http://git.videolan.org/gitweb.cgi/vlc/vlc-3.0.git/?a=commit;h=960e66fdbdfa8e17f1929690ca87d1e3fbddbc40
---

 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 a107dfd6d9..9e8a2404dd 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;
@@ -389,6 +400,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);



More information about the vlc-commits mailing list