[vlc-commits] dash: Handle relative URL
Hugo Beauzée-Luyssen
git at videolan.org
Tue Jan 24 23:22:00 CET 2012
vlc/vlc-1.2 | branch: master | Hugo Beauzée-Luyssen <beauze.h at gmail.com> | Thu Jan 5 12:20:47 2012 +0100| [eaf97ac67a41dff33a611941d565e0f1189c7743] | committer: Jean-Baptiste Kempf
dash: Handle relative URL
Signed-off-by: Jean-Baptiste Kempf <jb at videolan.org>
(cherry picked from commit a90c1374304a712b6329015132d3ce3956a6ea1f)
Signed-off-by: Jean-Baptiste Kempf <jb at videolan.org>
> http://git.videolan.org/gitweb.cgi/vlc/vlc-1.2.git/?a=commit;h=eaf97ac67a41dff33a611941d565e0f1189c7743
---
modules/stream_filter/dash/mpd/BasicCMParser.cpp | 19 ++++++++++++++++---
modules/stream_filter/dash/mpd/BasicCMParser.h | 1 +
2 files changed, 17 insertions(+), 3 deletions(-)
diff --git a/modules/stream_filter/dash/mpd/BasicCMParser.cpp b/modules/stream_filter/dash/mpd/BasicCMParser.cpp
index 9b5f0f2..708b577 100644
--- a/modules/stream_filter/dash/mpd/BasicCMParser.cpp
+++ b/modules/stream_filter/dash/mpd/BasicCMParser.cpp
@@ -42,11 +42,19 @@ using namespace dash::xml;
BasicCMParser::BasicCMParser( Node *root, stream_t *p_stream ) :
root( root ),
- mpd( NULL )
+ mpd( NULL ),
+ p_stream( p_stream )
{
this->url = p_stream->psz_access;
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 ()
@@ -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
//using BaseURL and the range attribute.
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;
}
diff --git a/modules/stream_filter/dash/mpd/BasicCMParser.h b/modules/stream_filter/dash/mpd/BasicCMParser.h
index e76f577..07de212 100644
--- a/modules/stream_filter/dash/mpd/BasicCMParser.h
+++ b/modules/stream_filter/dash/mpd/BasicCMParser.h
@@ -80,6 +80,7 @@ namespace dash
dash::xml::Node *root;
MPD *mpd;
std::string url;
+ stream_t *p_stream;
};
}
}
More information about the vlc-commits
mailing list