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

Christopher at mailsrv.uni-klu.ac.at Christopher at mailsrv.uni-klu.ac.at
Sat Feb 11 11:59:59 CET 2012


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->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




More information about the vlc-devel mailing list