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

demux: adaptative: add tracker listeners interface

parent 22d7d975
......@@ -166,6 +166,11 @@ mtime_t SegmentTracker::getSegmentStart() const
return 0;
}
void SegmentTracker::registerListener(SegmentTrackerListenerInterface *listener)
{
listeners.push_back(listener);
}
void SegmentTracker::pruneFromCurrent()
{
AbstractPlaylist *playlist = adaptationSet->getPlaylist();
......@@ -178,3 +183,10 @@ void SegmentTracker::updateSelected()
if(prevRepresentation)
prevRepresentation->runLocalUpdates(getSegmentStart(), count);
}
void SegmentTracker::notify(SegmentTrackerListenerInterface::notifications type, ISegment *segment)
{
std::list<SegmentTrackerListenerInterface *>::const_iterator it;
for(it=listeners.begin();it != listeners.end(); ++it)
(*it)->trackerNotification(type, segment);
}
......@@ -26,6 +26,7 @@
#include "StreamsType.hpp"
#include <vlc_common.h>
#include <list>
namespace adaptative
{
......@@ -39,11 +40,22 @@ namespace adaptative
class BaseAdaptationSet;
class BaseRepresentation;
class SegmentChunk;
class ISegment;
}
using namespace playlist;
using namespace logic;
class SegmentTrackerListenerInterface
{
public:
enum notifications
{
NOTIFICATION_DISCONTINUITY = 0
};
virtual void trackerNotification(notifications, ISegment *) = 0;
};
class SegmentTracker
{
public:
......@@ -53,12 +65,15 @@ namespace adaptative
void setAdaptationLogic(AbstractAdaptationLogic *);
void resetCounter();
SegmentChunk* getNextChunk(bool);
bool setPosition(mtime_t, bool, bool);
bool setPositionByTime(mtime_t, bool, bool);
void setPositionByNumber(uint64_t, bool);
mtime_t getSegmentStart() const;
void registerListener(SegmentTrackerListenerInterface *);
void pruneFromCurrent();
void updateSelected();
private:
void notify(SegmentTrackerListenerInterface::notifications, ISegment *);
bool initializing;
bool index_sent;
bool init_sent;
......@@ -67,6 +82,7 @@ namespace adaptative
AbstractAdaptationLogic *logic;
BaseAdaptationSet *adaptationSet;
BaseRepresentation *prevRepresentation;
std::list<SegmentTrackerListenerInterface *> listeners;
};
}
......
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