Commit ec5b75ba authored by François Cartegnie's avatar François Cartegnie 🤞

demux: dash: add timelines gathering

parent d84e3ad0
......@@ -46,6 +46,7 @@ AdaptationSet::AdaptationSet(Period *period) :
AdaptationSet::~AdaptationSet ()
{
vlc_delete_all( this->representations );
childs.clear();
}
const std::string& AdaptationSet::getMimeType() const
......@@ -88,6 +89,7 @@ const Representation *AdaptationSet::getRepresentationById(const std::string &id
void AdaptationSet::addRepresentation (Representation *rep)
{
this->representations.push_back(rep);
childs.push_back(rep);
}
......
......@@ -44,6 +44,7 @@ Period::Period(MPD *mpd) :
Period::~Period ()
{
vlc_delete_all( this->adaptationSets );
childs.clear();
}
const std::vector<AdaptationSet*>& Period::getAdaptationSets() const
......@@ -66,7 +67,10 @@ const std::vector<AdaptationSet*> Period::getAdaptationSets(Streams::Type type
void Period::addAdaptationSet(AdaptationSet *adaptationSet)
{
if ( adaptationSet != NULL )
{
this->adaptationSets.push_back(adaptationSet);
childs.push_back(adaptationSet);
}
}
AdaptationSet * Period::getAdaptationSet(Streams::Type type) const
......
......@@ -219,6 +219,16 @@ mtime_t SegmentInformation::getPlaybackTimeBySegmentNumber(uint64_t number) cons
return time;
}
void SegmentInformation::collectTimelines(std::vector<SegmentTimeline *> *timelines) const
{
if(mediaSegmentTemplate && mediaSegmentTemplate->segmentTimeline.Get())
timelines->push_back(mediaSegmentTemplate->segmentTimeline.Get());
std::vector<SegmentInformation *>::const_iterator it;
for(it = childs.begin(); it != childs.end(); it++)
(*it)->collectTimelines(timelines);
}
bool SegmentInformation::canBitswitch() const
{
if(bitswitch_policy == BITSWITCH_INHERIT)
......
......@@ -39,6 +39,7 @@ namespace dash
class SegmentBase;
class SegmentList;
class SegmentTemplate;
class SegmentTimeline;
/* common segment elements for period/adaptset/rep 5.3.9.1,
* with properties inheritance */
......@@ -73,10 +74,12 @@ namespace dash
ISegment * getSegment(SegmentInfoType, uint64_t = 0) const;
bool getSegmentNumberByTime(mtime_t, uint64_t *) const;
mtime_t getPlaybackTimeBySegmentNumber(uint64_t) const;
void collectTimelines(std::vector<SegmentTimeline *> *) const;
protected:
std::vector<ISegment *> getSegments() const;
std::vector<ISegment *> getSegments(SegmentInfoType) const;
std::vector<SegmentInformation *> childs;
private:
void setSegmentList(SegmentList *);
......
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