Commit 58e9be2a authored by Francois Cartegnie's avatar Francois Cartegnie

stream_filter: dash: handle segments through interface

parent b59e03d0
...@@ -75,8 +75,8 @@ void AlwaysBestAdaptationLogic::initSchedule () ...@@ -75,8 +75,8 @@ void AlwaysBestAdaptationLogic::initSchedule ()
Representation *best = selector.select(*it); Representation *best = selector.select(*it);
if(best) if(best)
{ {
std::vector<Segment *> segments = best->getSegments(); std::vector<ISegment *> segments = best->getSegments();
std::vector<Segment *>::const_iterator segIt; std::vector<ISegment *>::const_iterator segIt;
for(segIt=segments.begin(); segIt!=segments.end(); segIt++) for(segIt=segments.begin(); segIt!=segments.end(); segIt++)
{ {
schedule.push_back(*segIt); schedule.push_back(*segIt);
......
...@@ -48,7 +48,7 @@ namespace dash ...@@ -48,7 +48,7 @@ namespace dash
const mpd::Representation *getCurrentRepresentation() const; const mpd::Representation *getCurrentRepresentation() const;
private: private:
std::vector<mpd::Segment *> schedule; std::vector<mpd::ISegment *> schedule;
dash::mpd::MPDManager *mpdManager; dash::mpd::MPDManager *mpdManager;
size_t count; size_t count;
dash::mpd::Representation *bestRepresentation; dash::mpd::Representation *bestRepresentation;
......
...@@ -52,7 +52,7 @@ Chunk* RateBasedAdaptationLogic::getNextChunk() ...@@ -52,7 +52,7 @@ Chunk* RateBasedAdaptationLogic::getNextChunk()
if (!rep) if (!rep)
return NULL; return NULL;
std::vector<Segment *> segments = rep->getSegments(); std::vector<ISegment *> segments = rep->getSegments();
if ( this->count == segments.size() ) if ( this->count == segments.size() )
{ {
...@@ -63,7 +63,7 @@ Chunk* RateBasedAdaptationLogic::getNextChunk() ...@@ -63,7 +63,7 @@ Chunk* RateBasedAdaptationLogic::getNextChunk()
if ( segments.size() > this->count ) if ( segments.size() > this->count )
{ {
Segment *seg = segments.at( this->count ); ISegment *seg = segments.at( this->count );
Chunk *chunk = seg->toChunk(); Chunk *chunk = seg->toChunk();
//In case of UrlTemplate, we must stay on the same segment. //In case of UrlTemplate, we must stay on the same segment.
if ( seg->isSingleShot() == true ) if ( seg->isSingleShot() == true )
......
...@@ -131,28 +131,42 @@ void Representation::addDependency(const Representation *dep) ...@@ -131,28 +131,42 @@ void Representation::addDependency(const Representation *dep)
this->dependencies.push_back( dep ); this->dependencies.push_back( dep );
} }
std::vector<Segment *> Representation::getSegments() const std::vector<ISegment *> Representation::getSegments() const
{ {
std::vector<Segment *> retSegments; std::vector<ISegment *> retSegments;
if ( segmentInfo ) if ( segmentInfo )
{ {
/* init segments are always single segment */
retSegments.push_back( segmentInfo->getInitialisationSegment() ); retSegments.push_back( segmentInfo->getInitialisationSegment() );
if ( !segmentInfo->getSegments().empty() ) if ( !segmentInfo->getSegments().empty() )
retSegments.insert( retSegments.end(), {
segmentInfo->getSegments().begin(), std::vector<Segment *>::const_iterator it;
segmentInfo->getSegments().end() ); for(it=segmentInfo->getSegments().begin();
it!=segmentInfo->getSegments().end(); it++)
{
std::vector<ISegment *> list = (*it)->subSegments();
retSegments.insert( retSegments.end(), list.begin(), list.end() );
}
}
} }
else else
{ {
/* init segments are always single segment */
if( segmentBase && segmentBase->getInitSegment() ) if( segmentBase && segmentBase->getInitSegment() )
retSegments.push_back( segmentBase->getInitSegment() ); retSegments.push_back( segmentBase->getInitSegment() );
if ( segmentList ) if ( segmentList && !segmentList->getSegments().empty() )
retSegments.insert( retSegments.end(), {
segmentList->getSegments().begin(), std::vector<Segment *>::const_iterator it;
segmentList->getSegments().end() ); for(it=segmentList->getSegments().begin();
it!=segmentList->getSegments().end(); it++)
{
std::vector<ISegment *> list = (*it)->subSegments();
retSegments.insert( retSegments.end(), list.begin(), list.end() );
}
}
} }
return retSegments; return retSegments;
...@@ -194,17 +208,11 @@ std::vector<std::string> Representation::toString() const ...@@ -194,17 +208,11 @@ std::vector<std::string> Representation::toString() const
{ {
std::vector<std::string> ret; std::vector<std::string> ret;
ret.push_back(std::string(" Representation")); ret.push_back(std::string(" Representation"));
std::vector<Segment *> list = getSegments(); std::vector<ISegment *> list = getSegments();
std::vector<Segment *>::const_iterator l; std::vector<ISegment *>::const_iterator l;
for(l = list.begin(); l < list.end(); l++) for(l = list.begin(); l < list.end(); l++)
{ ret.push_back((*l)->toString());
if ((*l)->isInit())
ret.push_back(std::string(" InitSeg url=")
.append((*l)->getUrlSegment()));
else
ret.push_back(std::string(" Segment url=")
.append((*l)->getUrlSegment()));
}
return ret; return ret;
} }
......
...@@ -76,7 +76,7 @@ namespace dash ...@@ -76,7 +76,7 @@ namespace dash
const AdaptationSet* getParentGroup() const; const AdaptationSet* getParentGroup() const;
void setParentGroup( const AdaptationSet *group ); void setParentGroup( const AdaptationSet *group );
std::vector<Segment*> getSegments ()const; std::vector<ISegment*> getSegments ()const;
void setSegmentList (SegmentList *list); void setSegmentList (SegmentList *list);
void setSegmentBase (SegmentBase *base); void setSegmentBase (SegmentBase *base);
void setWidth (int width); void setWidth (int width);
......
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