vlc | branch: master | Francois Cartegnie <fcvlc...@free.fr> | Mon Nov 17 20:00:04 2014 +0100| [82a8e3f282e63aba9649293f9fcaea63e9ee32e2] | committer: Francois Cartegnie
stream_filter: dash: update profiles > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=82a8e3f282e63aba9649293f9fcaea63e9ee32e2 --- modules/stream_filter/dash/mpd/IsoffMainParser.cpp | 7 ++- modules/stream_filter/dash/mpd/MPD.cpp | 6 +- modules/stream_filter/dash/mpd/MPD.h | 6 +- modules/stream_filter/dash/mpd/MPDFactory.cpp | 4 +- modules/stream_filter/dash/mpd/MPDFactory.h | 2 +- modules/stream_filter/dash/mpd/Profile.cpp | 66 ++++++++++++++------ modules/stream_filter/dash/mpd/Profile.hpp | 10 ++- modules/stream_filter/dash/xml/DOMParser.cpp | 13 ++-- modules/stream_filter/dash/xml/DOMParser.h | 2 +- 9 files changed, 78 insertions(+), 38 deletions(-) diff --git a/modules/stream_filter/dash/mpd/IsoffMainParser.cpp b/modules/stream_filter/dash/mpd/IsoffMainParser.cpp index 94c09eb..8329990 100644 --- a/modules/stream_filter/dash/mpd/IsoffMainParser.cpp +++ b/modules/stream_filter/dash/mpd/IsoffMainParser.cpp @@ -175,9 +175,10 @@ void IsoffMainParser::print () { if(mpd) { - msg_Dbg(p_stream, "MPD profile=%d mediaPresentationDuration=%ld minBufferTime=%ld", mpd->getProfile(), - mpd->getDuration(), - mpd->getMinBufferTime()); + msg_Dbg(p_stream, "MPD profile=%s mediaPresentationDuration=%ld minBufferTime=%ld", + static_cast<std::string>(mpd->getProfile()).c_str(), + mpd->getDuration(), + mpd->getMinBufferTime()); std::vector<BaseUrl *>::const_iterator h; for(h = mpd->getBaseUrls().begin(); h != mpd->getBaseUrls().end(); h++) msg_Dbg(p_stream, "BaseUrl=%s", (*h)->getUrl().c_str()); diff --git a/modules/stream_filter/dash/mpd/MPD.cpp b/modules/stream_filter/dash/mpd/MPD.cpp index 6270829..7563b9f 100644 --- a/modules/stream_filter/dash/mpd/MPD.cpp +++ b/modules/stream_filter/dash/mpd/MPD.cpp @@ -158,12 +158,12 @@ void MPD::setAvailabilityEndTime(time_t time) this->availabilityEndTime = time; } -Profile::Name MPD::getProfile() const +Profile MPD::getProfile() const { - return this->profile; + return profile; } -void MPD::setProfile(Profile::Name profile) +void MPD::setProfile(Profile profile) { this->profile = profile; } diff --git a/modules/stream_filter/dash/mpd/MPD.h b/modules/stream_filter/dash/mpd/MPD.h index 89da03d..99f59d7 100644 --- a/modules/stream_filter/dash/mpd/MPD.h +++ b/modules/stream_filter/dash/mpd/MPD.h @@ -44,8 +44,8 @@ namespace dash MPD(); virtual ~MPD(); - Profile::Name getProfile() const; - void setProfile( Profile::Name profile ); + Profile getProfile() const; + void setProfile( Profile profile ); bool isLive() const; void setLive( bool live ); time_t getAvailabilityStartTime() const; @@ -69,7 +69,7 @@ namespace dash void setProgramInformation (ProgramInformation *progInfo); private: - Profile::Name profile; + Profile profile; bool live; time_t availabilityStartTime; time_t availabilityEndTime; diff --git a/modules/stream_filter/dash/mpd/MPDFactory.cpp b/modules/stream_filter/dash/mpd/MPDFactory.cpp index 824409d..ecfc567 100644 --- a/modules/stream_filter/dash/mpd/MPDFactory.cpp +++ b/modules/stream_filter/dash/mpd/MPDFactory.cpp @@ -31,9 +31,9 @@ using namespace dash::xml; using namespace dash::mpd; -MPD* MPDFactory::create (dash::xml::Node *root, stream_t *p_stream, Profile::Name profile) +MPD* MPDFactory::create (dash::xml::Node *root, stream_t *p_stream, Profile profile) { - switch(profile) + switch( profile ) { case dash::mpd::Profile::Full: case dash::mpd::Profile::ISOOnDemand: diff --git a/modules/stream_filter/dash/mpd/MPDFactory.h b/modules/stream_filter/dash/mpd/MPDFactory.h index bd63d8b..a3842a4 100644 --- a/modules/stream_filter/dash/mpd/MPDFactory.h +++ b/modules/stream_filter/dash/mpd/MPDFactory.h @@ -36,7 +36,7 @@ namespace dash class MPDFactory { public: - static MPD* create(dash::xml::Node *root, stream_t *p_stream, Profile::Name profile); + static MPD* create(dash::xml::Node *root, stream_t *p_stream, Profile profile); private: static MPD* createBasicCMMPD (dash::xml::Node *root, stream_t *p_stream); diff --git a/modules/stream_filter/dash/mpd/Profile.cpp b/modules/stream_filter/dash/mpd/Profile.cpp index bcc14ca..617bfa6 100644 --- a/modules/stream_filter/dash/mpd/Profile.cpp +++ b/modules/stream_filter/dash/mpd/Profile.cpp @@ -25,26 +25,36 @@ using namespace dash::mpd; -Profile::Name Profile::getNameByURN(std::string urn) +struct { - struct - { - const Name name; - const char * urn; - } - urnmap[] = - { - { Full, "urn:mpeg:dash:profile:full:2011" }, - { ISOOnDemand, "urn:mpeg:dash:profile:isoff-on-demand:2011" }, - { ISOOnDemand, "urn:mpeg:mpegB:profile:dash:isoff-basic-on-demand:cm" }, - { ISOOnDemand, "urn:mpeg:dash:profile:isoff-ondemand:2011" }, - { ISOMain, "urn:mpeg:dash:profile:isoff-main:2011" }, - { ISOLive, "urn:mpeg:dash:profile:isoff-live:2011" }, - { MPEG2TSMain, "urn:mpeg:dash:profile:mp2t-main:2011" }, - { MPEG2TSSimple,"urn:mpeg:dash:profile:mp2t-simple:2011" }, - { Unknown, "" }, - }; + const Profile::Name name; + const char * urn; +} +const urnmap[] = +{ + { Profile::Full, "urn:mpeg:dash:profile:full:2011" }, + { Profile::ISOOnDemand, "urn:mpeg:dash:profile:isoff-on-demand:2011" }, + { Profile::ISOOnDemand, "urn:mpeg:mpegB:profile:dash:isoff-basic-on-demand:cm" }, + { Profile::ISOOnDemand, "urn:mpeg:dash:profile:isoff-ondemand:2011" }, + { Profile::ISOMain, "urn:mpeg:dash:profile:isoff-main:2011" }, + { Profile::ISOLive, "urn:mpeg:dash:profile:isoff-live:2011" }, + { Profile::MPEG2TSMain, "urn:mpeg:dash:profile:mp2t-main:2011" }, + { Profile::MPEG2TSSimple,"urn:mpeg:dash:profile:mp2t-simple:2011" }, + { Profile::Unknown, "" }, +}; + +Profile::Profile(Name name) +{ + type = name; +} + +Profile::Profile(const std::string &urn) +{ + type = getNameByURN(urn); +} +Profile::Name Profile::getNameByURN(const std::string &urn) const +{ for( int i=0; urnmap[i].name != Unknown; i++ ) { if ( urn == urnmap[i].urn ) @@ -52,3 +62,23 @@ Profile::Name Profile::getNameByURN(std::string urn) } return Unknown; } + +Profile::operator Profile::Name () +{ + return type; +} + +Profile::operator std::string () +{ + for( int i=0; urnmap[i].name != Unknown; i++ ) + { + if ( urnmap[i].name == type ) + return std::string( urnmap[i].urn ); + } + return std::string(); +} + +bool Profile::operator==(Profile &profile) const +{ + return profile.type == type; +} diff --git a/modules/stream_filter/dash/mpd/Profile.hpp b/modules/stream_filter/dash/mpd/Profile.hpp index ab7175d..9b44231 100644 --- a/modules/stream_filter/dash/mpd/Profile.hpp +++ b/modules/stream_filter/dash/mpd/Profile.hpp @@ -39,7 +39,15 @@ namespace dash MPEG2TSMain, MPEG2TSSimple, }; - static Name getNameByURN( std::string urn ); + Profile(Name); + Profile(const std::string &); + bool operator==(Profile &) const; + operator Profile::Name (); + operator std::string (); + + private: + Name getNameByURN(const std::string &) const; + Name type; }; } } diff --git a/modules/stream_filter/dash/xml/DOMParser.cpp b/modules/stream_filter/dash/xml/DOMParser.cpp index f7dc1a0..5fb80ac 100644 --- a/modules/stream_filter/dash/xml/DOMParser.cpp +++ b/modules/stream_filter/dash/xml/DOMParser.cpp @@ -161,14 +161,15 @@ bool DOMParser::isDash (stream_t *stream) } return false; } -Profile::Name DOMParser::getProfile () + +Profile DOMParser::getProfile() const { if(this->root == NULL) - return dash::mpd::Profile::Unknown; + return Profile(Profile::Unknown); - std::string profile = this->root->getAttributeValue("profiles"); - if ( profile.length() == 0 ) - profile = this->root->getAttributeValue("profile"); //The standard spells it the both ways... + std::string urn = this->root->getAttributeValue("profiles"); + if ( urn.length() == 0 ) + urn = this->root->getAttributeValue("profile"); //The standard spells it the both ways... - return dash::mpd::Profile::getNameByURN(profile); + return Profile(urn); } diff --git a/modules/stream_filter/dash/xml/DOMParser.h b/modules/stream_filter/dash/xml/DOMParser.h index b9c55c1..9f1f2f4 100644 --- a/modules/stream_filter/dash/xml/DOMParser.h +++ b/modules/stream_filter/dash/xml/DOMParser.h @@ -46,7 +46,7 @@ namespace dash Node* getRootNode (); void print (); static bool isDash (stream_t *stream); - mpd::Profile::Name getProfile (); + mpd::Profile getProfile () const; private: Node *root; _______________________________________________ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits