[vlc-commits] demux: adaptative: have chunks ref segments
Francois Cartegnie
git at videolan.org
Wed Jun 10 18:58:02 CEST 2015
vlc | branch: master | Francois Cartegnie <fcvlcdev at free.fr> | Fri Jun 5 19:15:07 2015 +0200| [5f8fc0c95d5f138b5b11afcb44cddfc68133f756] | committer: Francois Cartegnie
demux: adaptative: have chunks ref segments
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=5f8fc0c95d5f138b5b11afcb44cddfc68133f756
---
modules/demux/adaptative/playlist/Segment.cpp | 14 ++++++++++++++
modules/demux/adaptative/playlist/Segment.h | 4 +++-
2 files changed, 17 insertions(+), 1 deletion(-)
diff --git a/modules/demux/adaptative/playlist/Segment.cpp b/modules/demux/adaptative/playlist/Segment.cpp
index 3ac04f0..b47aacb 100644
--- a/modules/demux/adaptative/playlist/Segment.cpp
+++ b/modules/demux/adaptative/playlist/Segment.cpp
@@ -29,6 +29,7 @@
#include "Segment.h"
#include "BaseRepresentation.h"
+#include <cassert>
using namespace adaptative::http;
using namespace adaptative::playlist;
@@ -42,6 +43,12 @@ ISegment::ISegment(const ICanonicalUrl *parent):
classId = CLASSID_ISEGMENT;
startTime.Set(VLC_TS_INVALID);
duration.Set(0);
+ chunksuse.Set(0);
+}
+
+ISegment::~ISegment()
+{
+ assert(chunksuse.Get() == 0);
}
Chunk * ISegment::getChunk(const std::string &url)
@@ -114,6 +121,13 @@ ISegment::SegmentChunk::SegmentChunk(ISegment *segment_, const std::string &url)
Chunk(url)
{
segment = segment_;
+ segment->chunksuse.Set(segment->chunksuse.Get() + 1);
+}
+
+ISegment::SegmentChunk::~SegmentChunk()
+{
+ assert(segment->chunksuse.Get() > 0);
+ segment->chunksuse.Set(segment->chunksuse.Get() - 1);
}
void ISegment::SegmentChunk::setRepresentation(BaseRepresentation *rep_)
diff --git a/modules/demux/adaptative/playlist/Segment.h b/modules/demux/adaptative/playlist/Segment.h
index 9a672be..44b4970 100644
--- a/modules/demux/adaptative/playlist/Segment.h
+++ b/modules/demux/adaptative/playlist/Segment.h
@@ -45,7 +45,7 @@ namespace adaptative
{
public:
ISegment(const ICanonicalUrl *parent);
- virtual ~ISegment(){}
+ virtual ~ISegment();
/**
* @return true if the segment should be dropped after being read.
* That is basically true when using an Url, and false
@@ -61,6 +61,7 @@ namespace adaptative
int getClassId () const;
Property<mtime_t> startTime;
Property<mtime_t> duration;
+ Property<unsigned> chunksuse;
static const int CLASSID_ISEGMENT = 0;
@@ -74,6 +75,7 @@ namespace adaptative
{
public:
SegmentChunk(ISegment *segment, const std::string &url);
+ virtual ~SegmentChunk();
void setRepresentation(BaseRepresentation *);
virtual void onDownload(block_t **); // reimpl
More information about the vlc-commits
mailing list