Commit 09df186b authored by François Cartegnie's avatar François 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)
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 )
{
......
......@@ -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)
......
......@@ -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
......
......@@ -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;
};
}
}
......
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