vlc | branch: master | Francois Cartegnie <fcvlc...@free.fr> | Wed Dec 10 14:47:02 2014 +0100| [09df186b596d2ffa1b01d6cad50b4636ab85eb53] | committer: Francois Cartegnie
stream_filter: dash: evaluate correctly live stream Live profile can be replayed as static after broadcast. > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=09df186b596d2ffa1b01d6cad50b4636ab85eb53 --- modules/stream_filter/dash/mpd/BasicCMParser.cpp | 2 +- modules/stream_filter/dash/mpd/IsoffMainParser.cpp | 3 +++ modules/stream_filter/dash/mpd/MPD.cpp | 13 +++++++++---- modules/stream_filter/dash/mpd/MPD.h | 4 ++-- 4 files changed, 15 insertions(+), 7 deletions(-) diff --git a/modules/stream_filter/dash/mpd/BasicCMParser.cpp b/modules/stream_filter/dash/mpd/BasicCMParser.cpp index f180585..1828412 100644 --- a/modules/stream_filter/dash/mpd/BasicCMParser.cpp +++ b/modules/stream_filter/dash/mpd/BasicCMParser.cpp @@ -71,7 +71,7 @@ bool BasicCMParser::parse (Profile profile) Standard specifies a default of "On-Demand", so anything that is not "Live" is "On-Demand" */ - this->mpd->setLive( it != attr.end() && it->second == "Live" ); + it = attr.find( "availabilityStartTime" ); if ( it == attr.end() && this->mpd->isLive() == true ) { diff --git a/modules/stream_filter/dash/mpd/IsoffMainParser.cpp b/modules/stream_filter/dash/mpd/IsoffMainParser.cpp index 4f751a2..fe8f98a 100644 --- a/modules/stream_filter/dash/mpd/IsoffMainParser.cpp +++ b/modules/stream_filter/dash/mpd/IsoffMainParser.cpp @@ -67,6 +67,9 @@ void IsoffMainParser::setMPDAttributes () if(it != attr.end()) this->mpd->setMinBufferTime(str_duration( it->second.c_str())); + it = attr.find("type"); + if(it != attr.end()) + mpd->setType(it->second); } void IsoffMainParser::setAdaptationSets (Node *periodNode, Period *period) diff --git a/modules/stream_filter/dash/mpd/MPD.cpp b/modules/stream_filter/dash/mpd/MPD.cpp index 80d7f29..12befa3 100644 --- a/modules/stream_filter/dash/mpd/MPD.cpp +++ b/modules/stream_filter/dash/mpd/MPD.cpp @@ -35,7 +35,6 @@ MPD::MPD (stream_t *stream_, Profile profile_) : ICanonicalUrl(), stream(stream_), profile( profile_ ), - live( false ), availabilityStartTime( -1 ), availabilityEndTime( -1 ), duration( -1 ), @@ -126,12 +125,18 @@ void MPD::setProgramInformation (ProgramInformation *progInf bool MPD::isLive() const { - return this->live; + if(type.empty()) + { + Profile live(Profile::ISOLive); + return profile == live; + } + else + return (type != "static"); } -void MPD::setLive( bool live ) +void MPD::setType(const std::string &type_) { - this->live = live; + type = type_; } time_t MPD::getAvailabilityStartTime() const diff --git a/modules/stream_filter/dash/mpd/MPD.h b/modules/stream_filter/dash/mpd/MPD.h index e3e04dc..b9f961b 100644 --- a/modules/stream_filter/dash/mpd/MPD.h +++ b/modules/stream_filter/dash/mpd/MPD.h @@ -47,11 +47,11 @@ namespace dash Profile getProfile() const; bool isLive() const; - void setLive( bool live ); time_t getAvailabilityStartTime() const; void setAvailabilityStartTime( time_t time ); time_t getAvailabilityEndTime() const; void setAvailabilityEndTime( time_t time ); + void setType(const std::string &); time_t getDuration() const; void setDuration( time_t duration ); time_t getMinUpdatePeriod() const; @@ -76,7 +76,6 @@ namespace dash private: stream_t *stream; Profile profile; - bool live; time_t availabilityStartTime; time_t availabilityEndTime; time_t duration; @@ -86,6 +85,7 @@ namespace dash std::vector<Period *> periods; std::vector<BaseUrl *> baseUrls; ProgramInformation *programInfo; + std::string type; }; } } _______________________________________________ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits