[vlc-devel] [PATCH 08/13] dash: added buffer and downloader to manager

Hugo Beauzée-Luyssen beauze.h at gmail.com
Tue Feb 14 16:21:06 CET 2012


On Sat, Feb 11, 2012 at 11:59 AM,  <Christopher at mailsrv.uni-klu.ac.at> wrote:
> From: Christopher Mueller <christopher.mueller at itec.aau.at>
>
> ---
>  modules/stream_filter/dash/DASHManager.cpp |   60 ++++++++-------------------
>  modules/stream_filter/dash/DASHManager.h   |   12 ++++-
>  2 files changed, 27 insertions(+), 45 deletions(-)
>
> diff --git a/modules/stream_filter/dash/DASHManager.cpp b/modules/stream_filter/dash/DASHManager.cpp
> index 7060d3e..3c5cc08 100644
> --- a/modules/stream_filter/dash/DASHManager.cpp
> +++ b/modules/stream_filter/dash/DASHManager.cpp
> @@ -32,17 +32,18 @@ using namespace dash::http;
>  using namespace dash::xml;
>  using namespace dash::logic;
>  using namespace dash::mpd;
> +using namespace dash::buffer;
>  using namespace dash::exception;
>
>  DASHManager::DASHManager    ( HTTPConnectionManager *conManager, MPD *mpd,
>                               IAdaptationLogic::LogicType type, stream_t *stream) :
> -    conManager( conManager ),
> -    currentChunk( NULL ),
> -    adaptationLogic( NULL ),
> -    logicType( type ),
> -    mpdManager( NULL ),
> -    mpd( mpd ),
> -    stream(stream)
> +             conManager     ( conManager ),
> +             currentChunk   ( NULL ),
> +             adaptationLogic( NULL ),
> +             logicType      ( type ),
> +             mpdManager     ( NULL ),
> +             mpd            ( mpd ),
> +             stream         (stream)
>  {
>     this->mpdManager        = mpd::MPDManagerFactory::create( mpd );
>     if ( this->mpdManager == NULL )
> @@ -51,54 +52,29 @@ DASHManager::DASHManager    ( HTTPConnectionManager *conManager, MPD *mpd,
>     if ( this->adaptationLogic == NULL )
>         return ;
>     this->conManager->attach(this->adaptationLogic);
> +
> +    this->buffer    = new BlockBuffer(this->stream);

This doesn't get released nor in the downloader nor in the DASHManager DTOR

> +    this->downloader = new DASHDownloader(this->conManager, this->adaptationLogic, this->buffer);
>  }
>  DASHManager::~DASHManager   ()
>  {
> +    delete this->downloader;
>     delete this->adaptationLogic;
>     delete this->mpdManager;
>  }
>
> +bool    DASHManager::start()
> +{
> +    return this->downloader->start();
> +}
>  int     DASHManager::read( void *p_buffer, size_t len )
>  {
> -    if ( this->currentChunk == NULL )
> -    {
> -        try
> -        {
> -            this->currentChunk = this->adaptationLogic->getNextChunk();
> -        }
> -        catch(EOFException &e)
> -        {
> -            this->currentChunk = NULL;
> -            return 0;
> -        }
> -    }
> -
> -    int ret = this->conManager->read( this->currentChunk, p_buffer, len );
> -    if ( ret == 0 )
> -    {
> -        this->currentChunk = NULL;
> -        return this->read(p_buffer, len );
> -    }
> -
> -    return ret;
> +    return this->buffer->get(p_buffer, len);
>  }
>
>  int     DASHManager::peek( const uint8_t **pp_peek, size_t i_peek )
>  {
> -    if ( this->currentChunk == NULL )
> -    {
> -        try
> -        {
> -            this->currentChunk = this->adaptationLogic->getNextChunk();
> -        }
> -        catch(EOFException &e)
> -        {
> -            return 0;
> -        }
> -    }
> -
> -    int ret = this->conManager->peek( this->currentChunk, pp_peek, i_peek );
> -    return ret;
> +    return this->buffer->peek(pp_peek, i_peek);
>  }
>
>  const mpd::IMPDManager*         DASHManager::getMpdManager() const
> diff --git a/modules/stream_filter/dash/DASHManager.h b/modules/stream_filter/dash/DASHManager.h
> index 8fc1c56..6c9d16a 100644
> --- a/modules/stream_filter/dash/DASHManager.h
> +++ b/modules/stream_filter/dash/DASHManager.h
> @@ -31,6 +31,8 @@
>  #include "adaptationlogic/AdaptationLogicFactory.h"
>  #include "mpd/IMPDManager.h"
>  #include "mpd/MPDManagerFactory.h"
> +#include "buffer/BlockBuffer.h"
> +#include "DASHDownloader.h"
>  #include "exceptions/EOFException.h"
>  #include "mpd/MPD.h"
>
> @@ -43,9 +45,11 @@ namespace dash
>                          logic::IAdaptationLogic::LogicType type, stream_t *stream);
>             virtual ~DASHManager    ();
>
> -            int read( void *p_buffer, size_t len );
> -            int peek( const uint8_t **pp_peek, size_t i_peek );
> -            const mpd::IMPDManager*         getMpdManager() const;
> +            bool    start   ();
> +            int     read    ( void *p_buffer, size_t len );
> +            int     peek    ( const uint8_t **pp_peek, size_t i_peek );
> +
> +            const mpd::IMPDManager*         getMpdManager   () const;
>             const logic::IAdaptationLogic*  getAdaptionLogic() const;
>             const http::Chunk *getCurrentChunk() const;
>
> @@ -57,6 +61,8 @@ namespace dash
>             mpd::IMPDManager                    *mpdManager;
>             mpd::MPD                            *mpd;
>             stream_t                            *stream;
> +            DASHDownloader                      *downloader;
> +            buffer::BlockBuffer                 *buffer;
>     };
>  }
>
> --
> 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