Commit fedf1dcb authored by Christopher Mueller's avatar Christopher Mueller Committed by Hugo Beauzée-Luyssen

dash: segment added byterange and tochunk

Signed-off-by: default avatarHugo Beauzée-Luyssen <beauze.h@gmail.com>
parent 22230d8a
...@@ -28,24 +28,83 @@ ...@@ -28,24 +28,83 @@
#include "Segment.h" #include "Segment.h"
using namespace dash::mpd; 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; return this->sourceUrl;
} }
void Segment::setSourceUrl( const std::string &url ) void Segment::setSourceUrl ( const std::string &url )
{ {
if ( url.empty() == false ) if ( url.empty() == false )
this->sourceUrl = url; this->sourceUrl = url;
} }
bool Segment::isSingleShot () const
bool Segment::isSingleShot() const
{ {
return true; return true;
} }
void Segment::done ()
void Segment::done()
{ {
//Only used for a SegmentTemplate. //Only used for a SegmentTemplate.
} }
void Segment::addBaseUrl (BaseUrl *url)
{
this->baseUrls.push_back(url);
}
const 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;
}
...@@ -26,6 +26,10 @@ ...@@ -26,6 +26,10 @@
#define SEGMENT_H_ #define SEGMENT_H_
#include <string> #include <string>
#include <sstream>
#include <vector>
#include "mpd/BaseUrl.h"
#include "http/Chunk.h"
namespace dash namespace dash
{ {
...@@ -34,6 +38,7 @@ namespace dash ...@@ -34,6 +38,7 @@ namespace dash
class Segment class Segment
{ {
public: public:
Segment();
virtual ~Segment(){} virtual ~Segment(){}
virtual std::string getSourceUrl() const; virtual std::string getSourceUrl() const;
virtual void setSourceUrl( const std::string &url ); virtual void setSourceUrl( const std::string &url );
...@@ -42,11 +47,20 @@ namespace dash ...@@ -42,11 +47,20 @@ namespace dash
* That is basically true when using an Url, and false * That is basically true when using an Url, and false
* when using an UrlTemplate * when using an UrlTemplate
*/ */
virtual bool isSingleShot() const; virtual bool isSingleShot () const;
virtual void done(); virtual void done ();
virtual void addBaseUrl (BaseUrl *url);
virtual const 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: protected:
std::string sourceUrl; std::string sourceUrl;
std::vector<BaseUrl *> baseUrls;
int startByte;
int endByte;
}; };
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment