[vlc-devel] [PATCH 06/17] dash: segment added byterange and tochunk

Christopher at mailsrv.uni-klu.ac.at Christopher at mailsrv.uni-klu.ac.at
Mon Jan 30 14:48:24 CET 2012


From: Christopher Mueller <christopher.mueller at itec.aau.at>

---
 modules/stream_filter/dash/mpd/Segment.cpp |   71 +++++++++++++++++++++++++--
 modules/stream_filter/dash/mpd/Segment.h   |   20 +++++++-
 2 files changed, 82 insertions(+), 9 deletions(-)

diff --git a/modules/stream_filter/dash/mpd/Segment.cpp b/modules/stream_filter/dash/mpd/Segment.cpp
index 5ac7f03..a6ab2d8 100644
--- a/modules/stream_filter/dash/mpd/Segment.cpp
+++ b/modules/stream_filter/dash/mpd/Segment.cpp
@@ -28,24 +28,83 @@
 #include "Segment.h"
 
 using namespace dash::mpd;
+using namespace dash::http;
 
-std::string Segment::getSourceUrl() const
+Segment::Segment    () :
+         startByte  (-1),
+         endByte    (-1)
+{
+
+}
+
+std::string             Segment::getSourceUrl   () const
 {
     return this->sourceUrl;
 }
 
-void        Segment::setSourceUrl( const std::string &url )
+void                    Segment::setSourceUrl   ( const std::string &url )
 {
     if ( url.empty() == false )
         this->sourceUrl = url;
 }
-
-bool        Segment::isSingleShot() const
+bool                    Segment::isSingleShot   () const
 {
     return true;
 }
-
-void Segment::done()
+void                    Segment::done           ()
 {
     //Only used for a SegmentTemplate.
 }
+void                    Segment::addBaseUrl     (BaseUrl *url)
+{
+    this->baseUrls.push_back(url);
+}
+std::vector<BaseUrl *>  Segment::getBaseUrls    () const
+{
+    return this->baseUrls;
+}
+void                    Segment::setByteRange   (int start, int end)
+{
+    this->startByte = start;
+    this->endByte   = end;
+}
+int                     Segment::getStartByte   () const
+{
+    return this->startByte;
+}
+int                     Segment::getEndByte     () const
+{
+    return this->endByte;
+}
+dash::http::Chunk*      Segment::toChunk        ()
+{
+    Chunk *chunk = new Chunk();
+
+    if(this->startByte != -1 && this->endByte != -1)
+    {
+        chunk->setStartByte(this->startByte);
+        chunk->setEndByte(this->endByte);
+    }
+
+    if(this->baseUrls.size() > 0)
+    {
+        std::stringstream ss;
+        ss << this->baseUrls.at(0)->getUrl() << this->sourceUrl;
+        chunk->setUrl(ss.str());
+        ss.clear();
+
+        for(size_t i = 1; i < this->baseUrls.size(); i++)
+        {
+            ss << this->baseUrls.at(i)->getUrl() << this->sourceUrl;
+            chunk->addOptionalUrl(ss.str());
+            ss.clear();
+        }
+
+    }
+    else
+    {
+        chunk->setUrl(this->sourceUrl);
+    }
+
+    return chunk;
+}
diff --git a/modules/stream_filter/dash/mpd/Segment.h b/modules/stream_filter/dash/mpd/Segment.h
index 9c2dd7e..a3b09a1 100644
--- a/modules/stream_filter/dash/mpd/Segment.h
+++ b/modules/stream_filter/dash/mpd/Segment.h
@@ -26,6 +26,10 @@
 #define SEGMENT_H_
 
 #include <string>
+#include <sstream>
+#include <vector>
+#include "mpd/BaseUrl.h"
+#include "http/Chunk.h"
 
 namespace dash
 {
@@ -34,6 +38,7 @@ namespace dash
         class Segment
         {
             public:
+                Segment();
                 virtual ~Segment(){}
                 virtual std::string getSourceUrl() const;
                 virtual void        setSourceUrl( const std::string &url );
@@ -42,11 +47,20 @@ namespace dash
                  *          That is basically true when using an Url, and false
                  *          when using an UrlTemplate
                  */
-                virtual bool        isSingleShot() const;
-                virtual void        done();
+                virtual bool                        isSingleShot    () const;
+                virtual void                        done            ();
+                virtual void                        addBaseUrl      (BaseUrl *url);
+                virtual std::vector<BaseUrl *>      getBaseUrls     () const;
+                virtual void                        setByteRange    (int start, int end);
+                virtual int                         getStartByte    () const;
+                virtual int                         getEndByte      () const;
+                virtual dash::http::Chunk*          toChunk         ();
 
             protected:
-                std::string         sourceUrl;
+                std::string             sourceUrl;
+                std::vector<BaseUrl *>  baseUrls;
+                int                     startByte;
+                int                     endByte;
         };
     }
 }
-- 
1.7.0.4




More information about the vlc-devel mailing list