]> git.sesse.net Git - vlc/commitdiff
stream_filter: dash: always get segments through representation
authorFrancois Cartegnie <fcvlcdev@free.fr>
Tue, 18 Nov 2014 15:43:21 +0000 (16:43 +0100)
committerFrancois Cartegnie <fcvlcdev@free.fr>
Thu, 18 Dec 2014 20:23:48 +0000 (21:23 +0100)
modules/stream_filter/dash/adaptationlogic/AlwaysBestAdaptationLogic.cpp
modules/stream_filter/dash/adaptationlogic/RateBasedAdaptationLogic.cpp
modules/stream_filter/dash/mpd/BasicCMManager.cpp
modules/stream_filter/dash/mpd/BasicCMManager.h
modules/stream_filter/dash/mpd/IMPDManager.h
modules/stream_filter/dash/mpd/IsoffMainManager.cpp
modules/stream_filter/dash/mpd/IsoffMainManager.h
modules/stream_filter/dash/mpd/IsoffMainParser.cpp
modules/stream_filter/dash/mpd/Representation.cpp
modules/stream_filter/dash/mpd/Representation.h

index 9b12a910f859973e08d9ae088045b0194e60abe4..e5ef3b64d9e839781ee1a30369e61ff69607dae8 100644 (file)
@@ -80,7 +80,7 @@ void    AlwaysBestAdaptationLogic::initSchedule ()
 
             if(best != NULL)
             {
-                std::vector<Segment *> segments = this->mpdManager->getSegments(best);
+                std::vector<Segment *> segments = best->getSegments();
                 for(size_t j = 0; j < segments.size(); j++)
                 {
                     this->schedule.push_back(segments.at(j));
index 9a7a0485b92000d79589a7465490448acdc4e7c8..938f8d9dbc2bc8fc4a11ca68d3f0081d6feefb42 100644 (file)
@@ -62,7 +62,7 @@ Chunk*  RateBasedAdaptationLogic::getNextChunk()
     if ( rep == NULL )
         return NULL;
 
-    std::vector<Segment *> segments = this->mpdManager->getSegments(rep);
+    std::vector<Segment *> segments = rep->getSegments();
 
     if ( this->count == segments.size() )
     {
index bf45a2f2a48e278724a75b333ef1eed63c8530ef..44029ebce79bb9c8d0b92550ce4798af3287405d 100644 (file)
@@ -35,19 +35,6 @@ BasicCMManager::BasicCMManager(MPD *mpd) :
 
 }
 
-std::vector<Segment*>   BasicCMManager::getSegments( const Representation *rep )
-{
-    std::vector<Segment *>          retSegments;
-    SegmentInfo*                    info = rep->getSegmentInfo();
-    Segment*                        initSegment = info->getInitialisationSegment();
-
-    if ( initSegment )
-        retSegments.push_back( initSegment );
-    retSegments.insert( retSegments.end(), info->getSegments().begin(),
-                                            info->getSegments().end() );
-    return retSegments;
-}
-
 Representation*         BasicCMManager::getRepresentation (Period *period, uint64_t bitrate, int, int ) const
 {
     return IMPDManager::getRepresentation(period, bitrate);
index ea1d19acf4554795ae84d6cf4db3046d54e02d29..b69d67f3a4764e55a1aa0f21dc88f36bdf6d6c20 100644 (file)
@@ -42,7 +42,6 @@ namespace dash
             public:
                 BasicCMManager          (MPD *mpd);
 
-                std::vector<Segment *>          getSegments( const Representation *rep );
                 Representation*                 getRepresentation (Period *period, uint64_t bitrate,
                                                                    int width, int height) const;
         };
index 37f84d709ef2badf07febfcd27e9509ca3be3163..efb820cb7959b5fca2dad8381b8564e7bf6c083c 100644 (file)
@@ -43,7 +43,6 @@ namespace dash
                 virtual Period*                         getFirstPeriod          () const;
                 virtual Period*                         getNextPeriod           (Period *period);
                 virtual Representation*                 getBestRepresentation   (Period *period) const;
-                virtual std::vector<Segment *>          getSegments             (const Representation *rep)         = 0;
                 virtual Representation*                 getRepresentation       (Period *period, uint64_t bitrate) const;
                 virtual const MPD*                      getMPD                  () const;
                 virtual Representation*                 getRepresentation       (Period *period, uint64_t bitrate,
index a1a0b4cd91e0ceee03cf3f19059a7ac81b6c05b9..064c3d7d799634874b267c767567b9f201c4fffe 100644 (file)
@@ -36,24 +36,6 @@ IsoffMainManager::IsoffMainManager(MPD *mpd) :
 
 }
 
-std::vector<Segment*>       IsoffMainManager::getSegments           (const Representation *rep)
-{
-    std::vector<Segment *>  retSegments;
-    SegmentList*            list= rep->getSegmentList();
-
-    if(rep->getSegmentBase())
-    {
-        Segment* initSegment = rep->getSegmentBase()->getInitSegment();
-
-        if(initSegment)
-            retSegments.push_back(initSegment);
-    }
-
-    if ( list )
-        retSegments.insert(retSegments.end(), list->getSegments().begin(), list->getSegments().end());
-    return retSegments;
-}
-
 Representation*             IsoffMainManager::getRepresentation     (Period *period, uint64_t bitrate, int width, int height) const
 {
     if(period == NULL)
index 1cae4796691b4ab32633ed47baf848e7472a9d48..244a6e46c16effe1a0c5d9f957737b6c5cfb1f10 100644 (file)
@@ -43,7 +43,6 @@ namespace dash
             public:
                 IsoffMainManager            (MPD *mpd);
 
-                std::vector<Segment *>          getSegments             (const Representation *rep);
                 Representation*                 getRepresentation       (Period *period, uint64_t bitrate,
                                                                          int width, int height) const;
         };
index 0f5ae6c5d9a94c5792a137e8ffc58c9ec58dfe67..a2f594f5455527d37f200923f6480a4f58a7be31 100644 (file)
@@ -198,18 +198,11 @@ void    IsoffMainParser::print              ()
                 std::vector<Representation *>::const_iterator k;
                 for(k = (*j)->getRepresentations().begin(); k != (*j)->getRepresentations().end(); k++)
                 {
-                    msg_Dbg(p_stream, "   Representation");
-                    msg_Dbg(p_stream, "    InitSeg url=%s", (*k)->getSegmentBase()->getInitSegment()->getSourceUrl().c_str());
-
-                    const SegmentList *segmentList = (*k)->getSegmentList();
-                    if (segmentList)
+                    std::vector<std::string> debug = (*k)->toString();
+                    std::vector<std::string>::const_iterator l;
+                    for(l = debug.begin(); l < debug.end(); l++)
                     {
-                        std::vector<Segment *>::const_iterator l;
-                        for(l = segmentList->getSegments().begin();
-                            l < segmentList->getSegments().end(); l++)
-                        {
-                            msg_Dbg(p_stream, "    Segment url=%s", (*l)->getSourceUrl().c_str());
-                        }
+                        msg_Dbg(p_stream, "%s", (*l).c_str());
                     }
                 }
             }
index 26a3abf22ec8da78baf0932293009194c9b2a8b5..765509cd59c816e1d30fc199d3693b00ace706b7 100644 (file)
@@ -127,18 +127,39 @@ void Representation::addDependency(const Representation *dep)
     if ( dep != NULL )
         this->dependencies.push_back( dep );
 }
-SegmentList*        Representation::getSegmentList          () const
+
+std::vector<Segment *> Representation::getSegments() const
 {
-    return this->segmentList;
+    std::vector<Segment *>  retSegments;
+
+    if ( segmentInfo )
+    {
+        retSegments.push_back( segmentInfo->getInitialisationSegment() );
+
+        if ( !segmentInfo->getSegments().empty() )
+            retSegments.insert( retSegments.end(),
+                                segmentInfo->getSegments().begin(),
+                                segmentInfo->getSegments().end() );
+    }
+    else
+    {
+        if( segmentBase && segmentBase->getInitSegment() )
+            retSegments.push_back( segmentBase->getInitSegment() );
+
+        if ( segmentList )
+            retSegments.insert( retSegments.end(),
+                                segmentList->getSegments().begin(),
+                                segmentList->getSegments().end() );
+    }
+
+    return retSegments;
 }
+
 void                Representation::setSegmentList          (SegmentList *list)
 {
     this->segmentList = list;
 }
-SegmentBase*        Representation::getSegmentBase          () const
-{
-    return this->segmentBase;
-}
+
 void                Representation::setSegmentBase          (SegmentBase *base)
 {
     this->segmentBase = base;
@@ -170,3 +191,22 @@ int                 Representation::getHeight               () const
 {
     return this->height;
 }
+
+std::vector<std::string> Representation::toString() const
+{
+    std::vector<std::string> ret;
+    ret.push_back(std::string("  Representation"));
+    ret.push_back(std::string("    InitSeg url=")
+                  .append(segmentBase->getInitSegment()->getSourceUrl()));
+    if (segmentList)
+    {
+        std::vector<Segment *>::const_iterator l;
+        for(l = segmentList->getSegments().begin();
+            l < segmentList->getSegments().end(); l++)
+        {
+            ret.push_back(std::string("    Segment url=")
+                          .append((*l)->getSourceUrl()));
+        }
+    }
+    return ret;
+}
index e8cce46c5303f45dab84c62b21c0ab3989022340..a77f4be4acf833c5f9d5eea2ef4d742491e87de9 100644 (file)
@@ -73,9 +73,8 @@ namespace dash
                 const AdaptationSet*        getParentGroup() const;
                 void                setParentGroup( const AdaptationSet *group );
 
-                SegmentList*        getSegmentList          () const;
+                std::vector<Segment*> getSegments           ()const;
                 void                setSegmentList          (SegmentList *list);
-                SegmentBase*        getSegmentBase          () const;
                 void                setSegmentBase          (SegmentBase *base);
                 void                setWidth                (int width);
                 int                 getWidth                () const;
@@ -84,6 +83,8 @@ namespace dash
                 BaseUrl*            getBaseUrl              () const;
                 void                setBaseUrl              (BaseUrl *baseUrl);
 
+                std::vector<std::string> toString() const;
+
             private:
                 uint64_t                            bandwidth;
                 std::string                         id;