Commit eaf97ac6 authored by Hugo Beauzée-Luyssen's avatar Hugo Beauzée-Luyssen Committed by Jean-Baptiste Kempf

dash: Handle relative URL

Signed-off-by: default avatarJean-Baptiste Kempf <jb@videolan.org>
(cherry picked from commit a90c1374)
Signed-off-by: default avatarJean-Baptiste Kempf <jb@videolan.org>
parent 3e682352
...@@ -42,11 +42,19 @@ using namespace dash::xml; ...@@ -42,11 +42,19 @@ using namespace dash::xml;
BasicCMParser::BasicCMParser( Node *root, stream_t *p_stream ) : BasicCMParser::BasicCMParser( Node *root, stream_t *p_stream ) :
root( root ), root( root ),
mpd( NULL ) mpd( NULL ),
p_stream( p_stream )
{ {
this->url = p_stream->psz_access; this->url = p_stream->psz_access;
this->url += "://"; this->url += "://";
this->url += p_stream->psz_path; //Only append without the mpd file.
std::string path = p_stream->psz_path;
size_t it = path.find_last_of( '/', path.length() - 1 );
if ( it != std::string::npos )
this->url.append( path, 0, it );
else
this->url += p_stream->psz_path;
this->url += '/';
} }
BasicCMParser::~BasicCMParser () BasicCMParser::~BasicCMParser ()
...@@ -374,7 +382,12 @@ bool BasicCMParser::parseSegment(Segment *seg, const std::map<std::string, std:: ...@@ -374,7 +382,12 @@ bool BasicCMParser::parseSegment(Segment *seg, const std::map<std::string, std::
//FIXME: When not present, the sourceUrl attribute should be computed //FIXME: When not present, the sourceUrl attribute should be computed
//using BaseURL and the range attribute. //using BaseURL and the range attribute.
if ( it != attr.end() ) if ( it != attr.end() )
seg->setSourceUrl( it->second ); {
std::string url = it->second;
if ( url.find( this->p_stream->psz_access ) != 0 ) //Relative url
url = this->url + url;
seg->setSourceUrl( url );
}
return true; return true;
} }
......
...@@ -80,6 +80,7 @@ namespace dash ...@@ -80,6 +80,7 @@ namespace dash
dash::xml::Node *root; dash::xml::Node *root;
MPD *mpd; MPD *mpd;
std::string url; std::string url;
stream_t *p_stream;
}; };
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment