Commit 09df186b authored by Francois Cartegnie's avatar Francois Cartegnie

stream_filter: dash: evaluate correctly live stream

Live profile can be replayed as static after broadcast.
parent a8a3c8e4
...@@ -71,7 +71,7 @@ bool BasicCMParser::parse (Profile profile) ...@@ -71,7 +71,7 @@ bool BasicCMParser::parse (Profile profile)
Standard specifies a default of "On-Demand", Standard specifies a default of "On-Demand",
so anything that is not "Live" is "On-Demand" so anything that is not "Live" is "On-Demand"
*/ */
this->mpd->setLive( it != attr.end() && it->second == "Live" );
it = attr.find( "availabilityStartTime" ); it = attr.find( "availabilityStartTime" );
if ( it == attr.end() && this->mpd->isLive() == true ) if ( it == attr.end() && this->mpd->isLive() == true )
{ {
......
...@@ -67,6 +67,9 @@ void IsoffMainParser::setMPDAttributes () ...@@ -67,6 +67,9 @@ void IsoffMainParser::setMPDAttributes ()
if(it != attr.end()) if(it != attr.end())
this->mpd->setMinBufferTime(str_duration( it->second.c_str())); 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) void IsoffMainParser::setAdaptationSets (Node *periodNode, Period *period)
......
...@@ -35,7 +35,6 @@ MPD::MPD (stream_t *stream_, Profile profile_) : ...@@ -35,7 +35,6 @@ MPD::MPD (stream_t *stream_, Profile profile_) :
ICanonicalUrl(), ICanonicalUrl(),
stream(stream_), stream(stream_),
profile( profile_ ), profile( profile_ ),
live( false ),
availabilityStartTime( -1 ), availabilityStartTime( -1 ),
availabilityEndTime( -1 ), availabilityEndTime( -1 ),
duration( -1 ), duration( -1 ),
...@@ -126,12 +125,18 @@ void MPD::setProgramInformation (ProgramInformation *progInf ...@@ -126,12 +125,18 @@ void MPD::setProgramInformation (ProgramInformation *progInf
bool MPD::isLive() const 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 time_t MPD::getAvailabilityStartTime() const
......
...@@ -47,11 +47,11 @@ namespace dash ...@@ -47,11 +47,11 @@ namespace dash
Profile getProfile() const; Profile getProfile() const;
bool isLive() const; bool isLive() const;
void setLive( bool live );
time_t getAvailabilityStartTime() const; time_t getAvailabilityStartTime() const;
void setAvailabilityStartTime( time_t time ); void setAvailabilityStartTime( time_t time );
time_t getAvailabilityEndTime() const; time_t getAvailabilityEndTime() const;
void setAvailabilityEndTime( time_t time ); void setAvailabilityEndTime( time_t time );
void setType(const std::string &);
time_t getDuration() const; time_t getDuration() const;
void setDuration( time_t duration ); void setDuration( time_t duration );
time_t getMinUpdatePeriod() const; time_t getMinUpdatePeriod() const;
...@@ -76,7 +76,6 @@ namespace dash ...@@ -76,7 +76,6 @@ namespace dash
private: private:
stream_t *stream; stream_t *stream;
Profile profile; Profile profile;
bool live;
time_t availabilityStartTime; time_t availabilityStartTime;
time_t availabilityEndTime; time_t availabilityEndTime;
time_t duration; time_t duration;
...@@ -86,6 +85,7 @@ namespace dash ...@@ -86,6 +85,7 @@ namespace dash
std::vector<Period *> periods; std::vector<Period *> periods;
std::vector<BaseUrl *> baseUrls; std::vector<BaseUrl *> baseUrls;
ProgramInformation *programInfo; ProgramInformation *programInfo;
std::string type;
}; };
} }
} }
......
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