]> git.sesse.net Git - vlc/commitdiff
demux: dash: add missing periods baseUrl
authorFrancois Cartegnie <fcvlcdev@free.fr>
Mon, 23 Feb 2015 22:54:30 +0000 (23:54 +0100)
committerFrancois Cartegnie <fcvlcdev@free.fr>
Mon, 23 Feb 2015 22:54:30 +0000 (23:54 +0100)
modules/demux/dash/mpd/IsoffMainParser.cpp
modules/demux/dash/mpd/Period.cpp
modules/demux/dash/mpd/Period.h

index 17708dbe6b02b6813f3d96bd6e9bd2602b12335e..50379d61c0be5bd2d8afccc865c746fff8b46c18 100644 (file)
@@ -111,6 +111,10 @@ void IsoffMainParser::parsePeriods(Node *root)
             period->duration.Set(IsoTime((*it)->getAttributeValue("duration")));
         if((*it)->hasAttribute("id"))
             period->setId((*it)->getAttributeValue("id"));
+        std::vector<Node *> baseUrls = DOMHelper::getChildElementByTagName(*it, "BaseURL");
+        if(!baseUrls.empty())
+            period->baseUrl.Set( new Url( baseUrls.front()->getText() ) );
+
         setAdaptationSets(*it, period);
         mpd->addPeriod(period);
     }
index 904107b7768afdd083c8bfb7516842bdad22c4fe..1487d48c70ebb076fe2cb5c67533e3a730ab29fb 100644 (file)
@@ -39,11 +39,13 @@ Period::Period(MPD *mpd) :
 {
     duration.Set(0);
     startTime.Set(0);
+    baseUrl.Set(NULL);
 }
 
 Period::~Period ()
 {
     vlc_delete_all( this->adaptationSets );
+    delete baseUrl.Get();
     childs.clear();
 }
 
@@ -86,7 +88,10 @@ AdaptationSet * Period::getAdaptationSet(Streams::Type type) const
 
 Url Period::getUrlSegment() const
 {
-    return getParentUrlSegment();
+    if( baseUrl.Get() )
+        return *(baseUrl.Get());
+    else
+        return getParentUrlSegment();
 }
 
 std::vector<std::string> Period::toString(int indent) const
index 06304dd9df43a2c232b344edfdb82bbda72f84f9..ed54b1183f32d96d400a5176c624c6a0bbdc72a8 100644 (file)
@@ -55,6 +55,7 @@ namespace dash
                 virtual Url getUrlSegment() const; /* reimpl */
                 virtual mtime_t getPeriodStart() const; /* reimpl */
 
+                Property<Url *> baseUrl;
                 Property<mtime_t> duration;
                 Property<mtime_t> startTime;