vlc | branch: master | Francois Cartegnie <fcvlc...@free.fr> | Tue Nov 28 
10:28:58 2017 +0100| [00c6ac9055cd582d86cae89024cd2d909f61d2a2] | committer: 
Francois Cartegnie

demux: adaptive: use vlc_url_resolve (fix #19164)

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=00c6ac9055cd582d86cae89024cd2d909f61d2a2
---

 modules/demux/adaptive/playlist/Url.cpp | 21 +++++++++++++++++++--
 1 file changed, 19 insertions(+), 2 deletions(-)

diff --git a/modules/demux/adaptive/playlist/Url.cpp 
b/modules/demux/adaptive/playlist/Url.cpp
index c6eb264328..fd9f0d203e 100644
--- a/modules/demux/adaptive/playlist/Url.cpp
+++ b/modules/demux/adaptive/playlist/Url.cpp
@@ -25,6 +25,8 @@
 #include "BaseRepresentation.h"
 #include "SegmentTemplate.h"
 
+#include <vlc_url.h>
+
 using namespace adaptive::playlist;
 
 Url::Url()
@@ -109,14 +111,29 @@ std::string Url::toString(size_t index, const 
BaseRepresentation *rep) const
 {
     std::string ret;
     std::vector<Component>::const_iterator it;
+
     for(it = components.begin(); it != components.end(); ++it)
     {
+        std::string part;
         const Component *comp = & (*it);
         if(rep)
-            ret.append(rep->contextualize(index, comp->component, 
comp->templ));
+            part = rep->contextualize(index, comp->component, comp->templ);
         else
-            ret.append(comp->component);
+            part = comp->component;
+
+        if( ret.empty() )
+            ret = part;
+        else
+        {
+            char *psz_resolved = vlc_uri_resolve( ret.c_str(), part.c_str() );
+            if( psz_resolved )
+            {
+                ret = std::string( psz_resolved );
+                free( psz_resolved );
+            }
+        }
     }
+
     return ret;
 }
 

_______________________________________________
vlc-commits mailing list
vlc-commits@videolan.org
https://mailman.videolan.org/listinfo/vlc-commits

Reply via email to