[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