[vlc-devel] [PATCH 06/17] dash: segment added byterange and tochunk
Hugo Beauzée-Luyssen
beauze.h at gmail.com
Mon Jan 30 17:46:08 CET 2012
On Mon, Jan 30, 2012 at 2:48 PM, <Christopher at mailsrv.uni-klu.ac.at> wrote:
> 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;
> +}
Since this returns a non-temporary value, it would be better not to
copy it using a (const) reference.
> +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);
> + }
Can't a startByte or an endByte be defined without the other?
> +
> + 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();
> + }
Is baseURL guarantied to be '/' terminated?
> +
> + }
> + 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
>
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> http://mailman.videolan.org/listinfo/vlc-devel
--
Hugo Beauzée-Luyssen
More information about the vlc-devel
mailing list