vlc | branch: master | Francois Cartegnie <[email protected]> | Wed Oct 14 
21:16:33 2020 +0200| [4cf6ba8e06e9e1f75a6a9d0509463cbbc24bf136] | committer: 
Francois Cartegnie

demux: adaptive: download and use index once

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=4cf6ba8e06e9e1f75a6a9d0509463cbbc24bf136
---

 modules/demux/adaptive/SegmentTracker.cpp              | 9 ++++++---
 modules/demux/adaptive/playlist/BaseRepresentation.cpp | 6 ++++++
 modules/demux/adaptive/playlist/BaseRepresentation.h   | 1 +
 3 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/modules/demux/adaptive/SegmentTracker.cpp 
b/modules/demux/adaptive/SegmentTracker.cpp
index c83a6f1fec..7f987abec8 100644
--- a/modules/demux/adaptive/SegmentTracker.cpp
+++ b/modules/demux/adaptive/SegmentTracker.cpp
@@ -305,9 +305,12 @@ SegmentChunk * SegmentTracker::getNextChunk(bool 
switch_allowed,
     if(!current.index_sent)
     {
         ++next;
-        segment = current.rep->getSegment(BaseRepresentation::INFOTYPE_INDEX);
-        if(segment)
-            return segment->toChunk(resources, connManager, current.number, 
current.rep);
+        if(current.rep->needsIndex())
+        {
+            segment = 
current.rep->getSegment(BaseRepresentation::INFOTYPE_INDEX);
+            if(segment)
+                return segment->toChunk(resources, connManager, 
current.number, current.rep);
+        }
         current = next;
     }
 
diff --git a/modules/demux/adaptive/playlist/BaseRepresentation.cpp 
b/modules/demux/adaptive/playlist/BaseRepresentation.cpp
index b55808d620..6afc11fef1 100644
--- a/modules/demux/adaptive/playlist/BaseRepresentation.cpp
+++ b/modules/demux/adaptive/playlist/BaseRepresentation.cpp
@@ -92,6 +92,12 @@ bool BaseRepresentation::needsUpdate(uint64_t) const
     return false;
 }
 
+bool BaseRepresentation::needsIndex() const
+{
+    SegmentBase *base = inheritSegmentBase();
+    return base && base->subSegments().empty();
+}
+
 bool BaseRepresentation::runLocalUpdates(SharedResources *)
 {
     return false;
diff --git a/modules/demux/adaptive/playlist/BaseRepresentation.h 
b/modules/demux/adaptive/playlist/BaseRepresentation.h
index b770b78ffc..414e10920e 100644
--- a/modules/demux/adaptive/playlist/BaseRepresentation.h
+++ b/modules/demux/adaptive/playlist/BaseRepresentation.h
@@ -66,6 +66,7 @@ namespace adaptive
 
                 virtual vlc_tick_t  getMinAheadTime         (uint64_t) const;
                 virtual bool        needsUpdate             (uint64_t) const;
+                virtual bool        needsIndex              () const;
                 virtual bool        runLocalUpdates         (SharedResources 
*);
                 virtual void        scheduleNextUpdate      (uint64_t, bool);
 

_______________________________________________
vlc-commits mailing list
[email protected]
https://mailman.videolan.org/listinfo/vlc-commits

Reply via email to