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