Commit de283d70 authored by Francois Cartegnie's avatar Francois Cartegnie

demux: adaptative: add tracker listeners interface

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