[vlc-commits] demux: adaptive: allow to override default resources

Francois Cartegnie git at videolan.org
Mon Dec 28 16:57:24 UTC 2020


vlc | branch: master | Francois Cartegnie <fcvlcdev at free.fr> | Thu Dec 24 12:44:07 2020 +0100| [5357940b0eb4feeb39a4ad1847f3ae5a4601a705] | committer: Francois Cartegnie

demux: adaptive: allow to override default resources

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=5357940b0eb4feeb39a4ad1847f3ae5a4601a705
---

 modules/demux/adaptive/SharedResources.cpp | 35 +++++++++++++++++-------------
 modules/demux/adaptive/SharedResources.hpp |  5 ++++-
 modules/demux/adaptive/adaptive.cpp        | 19 +++++-----------
 3 files changed, 30 insertions(+), 29 deletions(-)

diff --git a/modules/demux/adaptive/SharedResources.cpp b/modules/demux/adaptive/SharedResources.cpp
index 21606a3e1b..66e23bda24 100644
--- a/modules/demux/adaptive/SharedResources.cpp
+++ b/modules/demux/adaptive/SharedResources.cpp
@@ -27,24 +27,14 @@
 #include "http/HTTPConnection.hpp"
 #include "encryption/Keyring.hpp"
 
-#include <vlc_common.h>
-
 using namespace adaptive;
 
-SharedResources::SharedResources(vlc_object_t *obj, bool local)
+SharedResources::SharedResources(AuthStorage *auth, Keyring *ring,
+                                 AbstractConnectionManager *conn)
 {
-    authStorage = new AuthStorage(obj);
-    encryptionKeyring = new Keyring(obj);
-    HTTPConnectionManager *m = new HTTPConnectionManager(obj);
-    if(m)
-    {
-        if(!var_InheritBool(obj, "adaptive-use-access")) /* only use http from access */
-            m->addFactory(new NativeConnectionFactory(authStorage));
-        m->addFactory(new StreamUrlConnectionFactory());
-        if(local)
-            m->setLocalConnectionsAllowed();
-    }
-    connManager = m;
+    authStorage = auth;
+    encryptionKeyring = ring;
+    connManager = conn;
 }
 
 SharedResources::~SharedResources()
@@ -68,3 +58,18 @@ AbstractConnectionManager * SharedResources::getConnManager()
 {
     return connManager;
 }
+
+SharedResources * SharedResources::createDefault(vlc_object_t *obj,
+                                                 const std::string & playlisturl)
+{
+    AuthStorage *auth = new AuthStorage(obj);
+    Keyring *keyring = new Keyring(obj);
+    HTTPConnectionManager *m = new HTTPConnectionManager(obj);
+    if(!var_InheritBool(obj, "adaptive-use-access")) /* only use http from access */
+        m->addFactory(new NativeConnectionFactory(auth));
+    m->addFactory(new StreamUrlConnectionFactory());
+    ConnectionParams params(playlisturl);
+    if(params.isLocal())
+        m->setLocalConnectionsAllowed();
+    return new SharedResources(auth, keyring, m);
+}
diff --git a/modules/demux/adaptive/SharedResources.hpp b/modules/demux/adaptive/SharedResources.hpp
index 0ef5256da5..13917601e8 100644
--- a/modules/demux/adaptive/SharedResources.hpp
+++ b/modules/demux/adaptive/SharedResources.hpp
@@ -21,6 +21,7 @@
 #define SHAREDRESOURCES_H_
 
 #include <vlc_common.h>
+#include <string>
 
 namespace adaptive
 {
@@ -41,11 +42,13 @@ namespace adaptive
     class SharedResources
     {
         public:
-            SharedResources(vlc_object_t *, bool = false);
+            SharedResources(AuthStorage *, Keyring *, AbstractConnectionManager *);
             ~SharedResources();
             AuthStorage *getAuthStorage();
             Keyring     *getKeyring();
             AbstractConnectionManager *getConnManager();
+            /* Helper */
+            static SharedResources * createDefault(vlc_object_t *, const std::string &);
 
         private:
             AuthStorage *authStorage;
diff --git a/modules/demux/adaptive/adaptive.cpp b/modules/demux/adaptive/adaptive.cpp
index f4aae7dc14..2f4016e112 100644
--- a/modules/demux/adaptive/adaptive.cpp
+++ b/modules/demux/adaptive/adaptive.cpp
@@ -280,13 +280,6 @@ static void Close(vlc_object_t *p_obj)
 /*****************************************************************************
  *
  *****************************************************************************/
-static bool IsLocalResource(const std::string & url)
-{
-    ConnectionParams params(url);
-    return params.isLocal();
-}
-
-
 static PlaylistManager * HandleDash(demux_t *p_demux, DOMParser &xmlParser,
                                     const std::string & playlisturl,
                                     AbstractAdaptationLogic::LogicType logic)
@@ -305,8 +298,8 @@ static PlaylistManager * HandleDash(demux_t *p_demux, DOMParser &xmlParser,
         return NULL;
     }
 
-    SharedResources *resources = new (std::nothrow) SharedResources(VLC_OBJECT(p_demux),
-                                                                    IsLocalResource(playlisturl));
+    SharedResources *resources =
+            SharedResources::createDefault(VLC_OBJECT(p_demux), playlisturl);
     DASHStreamFactory *factory = new (std::nothrow) DASHStreamFactory;
     DASHManager *manager = NULL;
     if(!resources || !factory ||
@@ -338,8 +331,8 @@ static PlaylistManager * HandleSmooth(demux_t *p_demux, DOMParser &xmlParser,
         return NULL;
     }
 
-    SharedResources *resources = new (std::nothrow) SharedResources(VLC_OBJECT(p_demux),
-                                                                    IsLocalResource(playlisturl));
+    SharedResources *resources =
+            SharedResources::createDefault(VLC_OBJECT(p_demux), playlisturl);
     SmoothStreamFactory *factory = new (std::nothrow) SmoothStreamFactory;
     SmoothManager *manager = NULL;
     if(!resources || !factory ||
@@ -357,8 +350,8 @@ static PlaylistManager * HandleHLS(demux_t *p_demux,
                                    const std::string & playlisturl,
                                    AbstractAdaptationLogic::LogicType logic)
 {
-    SharedResources *resources = new SharedResources(VLC_OBJECT(p_demux),
-                                                     IsLocalResource(playlisturl));
+    SharedResources *resources =
+            SharedResources::createDefault(VLC_OBJECT(p_demux), playlisturl);
     if(!resources)
         return NULL;
 



More information about the vlc-commits mailing list