]> git.sesse.net Git - vlc/commitdiff
stream_filter: dash: handle segments through interface
authorFrancois Cartegnie <fcvlcdev@free.fr>
Sun, 23 Nov 2014 19:18:23 +0000 (20:18 +0100)
committerFrancois Cartegnie <fcvlcdev@free.fr>
Thu, 18 Dec 2014 20:23:49 +0000 (21:23 +0100)
modules/stream_filter/dash/adaptationlogic/AlwaysBestAdaptationLogic.cpp
modules/stream_filter/dash/adaptationlogic/AlwaysBestAdaptationLogic.h
modules/stream_filter/dash/adaptationlogic/RateBasedAdaptationLogic.cpp
modules/stream_filter/dash/mpd/Representation.cpp
modules/stream_filter/dash/mpd/Representation.h

index c35ea2be036d918429cc1dfbe66e1f549dc3a7cf..6fe3a5ddc4aa68089ac61a29e686fe2fb3470c85 100644 (file)
@@ -75,8 +75,8 @@ void    AlwaysBestAdaptationLogic::initSchedule ()
             Representation *best = selector.select(*it);
             if(best)
             {
-                std::vector<Segment *> segments = best->getSegments();
-                std::vector<Segment *>::const_iterator segIt;
+                std::vector<ISegment *> segments = best->getSegments();
+                std::vector<ISegment *>::const_iterator segIt;
                 for(segIt=segments.begin(); segIt!=segments.end(); segIt++)
                 {
                     schedule.push_back(*segIt);
index 7fb9a231c66159b01afe420d1eff01fa2864cdf7..b72b8dc72d3d1a5f6c69ac125600568aa7f4ffa3 100644 (file)
@@ -48,7 +48,7 @@ namespace dash
                 const mpd::Representation *getCurrentRepresentation() const;
 
             private:
-                std::vector<mpd::Segment *>         schedule;
+                std::vector<mpd::ISegment *>        schedule;
                 dash::mpd::MPDManager              *mpdManager;
                 size_t                              count;
                 dash::mpd::Representation           *bestRepresentation;
index 3543250cd4c4157b464db3a12f10583cb4bfb5d6..5e6c61b47a14c0cc17a18aefb19cf31b671386a3 100644 (file)
@@ -52,7 +52,7 @@ Chunk*  RateBasedAdaptationLogic::getNextChunk()
     if (!rep)
         return NULL;
 
-    std::vector<Segment *> segments = rep->getSegments();
+    std::vector<ISegment *> segments = rep->getSegments();
 
     if ( this->count == segments.size() )
     {
@@ -63,7 +63,7 @@ Chunk*  RateBasedAdaptationLogic::getNextChunk()
 
     if ( segments.size() > this->count )
     {
-        Segment *seg = segments.at( this->count );
+        ISegment *seg = segments.at( this->count );
         Chunk *chunk = seg->toChunk();
         //In case of UrlTemplate, we must stay on the same segment.
         if ( seg->isSingleShot() == true )
index 8567b7b276d952fb762db67b72e7069e19157e6c..93e077e3fbcbcaf8dff6211165b678d9ea943a21 100644 (file)
@@ -131,28 +131,42 @@ void Representation::addDependency(const Representation *dep)
         this->dependencies.push_back( dep );
 }
 
-std::vector<Segment *> Representation::getSegments() const
+std::vector<ISegment *> Representation::getSegments() const
 {
-    std::vector<Segment *>  retSegments;
+    std::vector<ISegment *>  retSegments;
 
     if ( segmentInfo )
     {
+        /* init segments are always single segment */
         retSegments.push_back( segmentInfo->getInitialisationSegment() );
 
         if ( !segmentInfo->getSegments().empty() )
-            retSegments.insert( retSegments.end(),
-                                segmentInfo->getSegments().begin(),
-                                segmentInfo->getSegments().end() );
+        {
+            std::vector<Segment *>::const_iterator it;
+            for(it=segmentInfo->getSegments().begin();
+                it!=segmentInfo->getSegments().end(); it++)
+            {
+                std::vector<ISegment *> list = (*it)->subSegments();
+                retSegments.insert( retSegments.end(), list.begin(), list.end() );
+            }
+        }
     }
     else
     {
+        /* init segments are always single segment */
         if( segmentBase && segmentBase->getInitSegment() )
             retSegments.push_back( segmentBase->getInitSegment() );
 
-        if ( segmentList )
-            retSegments.insert( retSegments.end(),
-                                segmentList->getSegments().begin(),
-                                segmentList->getSegments().end() );
+        if ( segmentList && !segmentList->getSegments().empty() )
+        {
+            std::vector<Segment *>::const_iterator it;
+            for(it=segmentList->getSegments().begin();
+                it!=segmentList->getSegments().end(); it++)
+            {
+                std::vector<ISegment *> list = (*it)->subSegments();
+                retSegments.insert( retSegments.end(), list.begin(), list.end() );
+            }
+        }
     }
 
     return retSegments;
@@ -194,17 +208,11 @@ std::vector<std::string> Representation::toString() const
 {
     std::vector<std::string> ret;
     ret.push_back(std::string("  Representation"));
-    std::vector<Segment *> list = getSegments();
-    std::vector<Segment *>::const_iterator l;
+    std::vector<ISegment *> list = getSegments();
+    std::vector<ISegment *>::const_iterator l;
     for(l = list.begin(); l < list.end(); l++)
-    {
-        if ((*l)->isInit())
-            ret.push_back(std::string("    InitSeg url=")
-                          .append((*l)->getUrlSegment()));
-        else
-            ret.push_back(std::string("    Segment url=")
-                          .append((*l)->getUrlSegment()));
-    }
+        ret.push_back((*l)->toString());
+
     return ret;
 }
 
index d5525d4cb2f3cfd255d4315e15f800114fe697a1..7a097143917793fd321237f60882a33042203e47 100644 (file)
@@ -76,7 +76,7 @@ namespace dash
                 const AdaptationSet*        getParentGroup() const;
                 void                setParentGroup( const AdaptationSet *group );
 
-                std::vector<Segment*> getSegments           ()const;
+                std::vector<ISegment*> getSegments          ()const;
                 void                setSegmentList          (SegmentList *list);
                 void                setSegmentBase          (SegmentBase *base);
                 void                setWidth                (int width);