vlc | branch: master | Hugo Beauzée-Luyssen <beauz...@gmail.com> | Wed Dec 28 17:30:13 2011 +0100| [9caf4cee157920d0f27fda86d9fe411a625a3173] | committer: Jean-Baptiste Kempf
dash: Try to fetch mimeType attribute from the parent element. Signed-off-by: Jean-Baptiste Kempf <j...@videolan.org> > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=9caf4cee157920d0f27fda86d9fe411a625a3173 --- modules/stream_filter/dash/mpd/BasicCMParser.cpp | 15 ++++++++++----- modules/stream_filter/dash/mpd/BasicCMParser.h | 4 +++- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/modules/stream_filter/dash/mpd/BasicCMParser.cpp b/modules/stream_filter/dash/mpd/BasicCMParser.cpp index dde4c9d..c1db5ad 100644 --- a/modules/stream_filter/dash/mpd/BasicCMParser.cpp +++ b/modules/stream_filter/dash/mpd/BasicCMParser.cpp @@ -150,7 +150,7 @@ void BasicCMParser::setGroups (Node *root, Period *period) for(size_t i = 0; i < groups.size(); i++) { Group *group = new Group(groups.at(i)->getAttributes()); - if ( this->parseCommonAttributesElements( groups.at( i ), group ) == false ) + if ( this->parseCommonAttributesElements( groups.at( i ), group, NULL ) == false ) { delete group; continue ; @@ -169,7 +169,7 @@ void BasicCMParser::setRepresentations (Node *root, Group *group) const std::map<std::string, std::string> attributes = representations.at(i)->getAttributes(); Representation *rep = new Representation( attributes ); - if ( this->parseCommonAttributesElements( representations.at( i ), rep ) == false ) + if ( this->parseCommonAttributesElements( representations.at( i ), rep, group ) == false ) { delete rep; continue ; @@ -351,7 +351,7 @@ void BasicCMParser::parseContentDescriptor(Node *node, const std::string &name, } } -bool BasicCMParser::parseCommonAttributesElements( Node *node, CommonAttributesElements *common) const +bool BasicCMParser::parseCommonAttributesElements( Node *node, CommonAttributesElements *common, CommonAttributesElements *parent ) const { const std::map<std::string, std::string> &attr = node->getAttributes(); std::map<std::string, std::string>::const_iterator it; @@ -359,8 +359,13 @@ bool BasicCMParser::parseCommonAttributesElements( Node *node, CommonAttribut it = attr.find( "mimeType" ); if ( it == attr.end() ) { - std::cerr << "Missing mandatory attribute: @mimeType" << std::endl; - return false; + if ( parent && parent->getMimeType().empty() == false ) + common->setMimeType( parent->getMimeType() ); + else + { + std::cerr << "Missing mandatory attribute: @mimeType" << std::endl; + return false; + } } common->setMimeType( it->second ); //Everything else is optionnal. diff --git a/modules/stream_filter/dash/mpd/BasicCMParser.h b/modules/stream_filter/dash/mpd/BasicCMParser.h index 9033e13..fbf808d 100644 --- a/modules/stream_filter/dash/mpd/BasicCMParser.h +++ b/modules/stream_filter/dash/mpd/BasicCMParser.h @@ -67,7 +67,9 @@ namespace dash void parseContentDescriptor( xml::Node *node, const std::string &name, void (CommonAttributesElements::*addPtr)(ContentDescription*), CommonAttributesElements *self ) const; - bool parseCommonAttributesElements( dash::xml::Node *node, CommonAttributesElements *common ) const; + bool parseCommonAttributesElements( dash::xml::Node *node, + CommonAttributesElements *common, + CommonAttributesElements *parent ) const; bool parseSegment( Segment *seg, const std::map<std::string, std::string> &attr ); ProgramInformation* parseProgramInformation(); }; _______________________________________________ vlc-commits mailing list vlc-commits@videolan.org http://mailman.videolan.org/listinfo/vlc-commits