[vlc-commits] demux: adaptative: add retriever helper

Francois Cartegnie git at videolan.org
Wed Jun 10 18:58:03 CEST 2015


vlc | branch: master | Francois Cartegnie <fcvlcdev at free.fr> | Wed May 27 20:04:55 2015 +0200| [adcd90a0ab06afa305bc4f0fd9d92594f6e64f11] | committer: Francois Cartegnie

demux: adaptative: add retriever helper

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

 modules/demux/Makefile.am                   |    4 +-
 modules/demux/adaptative/tools/Retrieve.cpp |   70 +++++++++++++++++++++++++++
 modules/demux/adaptative/tools/Retrieve.hpp |   40 +++++++++++++++
 3 files changed, 113 insertions(+), 1 deletion(-)

diff --git a/modules/demux/Makefile.am b/modules/demux/Makefile.am
index cb34603..3d7aa47 100644
--- a/modules/demux/Makefile.am
+++ b/modules/demux/Makefile.am
@@ -341,7 +341,9 @@ libdash_plugin_la_SOURCES += \
     demux/adaptative/StreamsType.hpp \
     demux/adaptative/tools/Helper.cpp \
     demux/adaptative/tools/Helper.h \
-    demux/adaptative/tools/Properties.hpp
+    demux/adaptative/tools/Properties.hpp \
+    demux/adaptative/tools/Retrieve.cpp \
+    demux/adaptative/tools/Retrieve.hpp
 
 libdash_plugin_la_SOURCES += demux/mp4/libmp4.c demux/mp4/libmp4.h
 
diff --git a/modules/demux/adaptative/tools/Retrieve.cpp b/modules/demux/adaptative/tools/Retrieve.cpp
new file mode 100644
index 0000000..3584869
--- /dev/null
+++ b/modules/demux/adaptative/tools/Retrieve.cpp
@@ -0,0 +1,70 @@
+/*
+ * Parser.cpp
+ *****************************************************************************
+ * Copyright © 2015 - VideoLAN Authors
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+#include "Retrieve.hpp"
+
+#include "../http/HTTPConnectionManager.h"
+#include "../http/HTTPConnection.hpp"
+#include "../http/Chunk.h"
+
+using namespace adaptative;
+using namespace adaptative::http;
+
+uint64_t Retrieve::HTTP(vlc_object_t *obj, const std::string &uri, void **pp_data)
+{
+    HTTPConnectionManager connManager(obj);
+    Chunk *datachunk;
+    try
+    {
+        datachunk = new Chunk(uri);
+    } catch (int) {
+        *pp_data = NULL;
+        return 0;
+    }
+
+    if(!connManager.connectChunk(datachunk) ||
+        datachunk->getConnection()->query(datachunk->getPath()) != VLC_SUCCESS ||
+        datachunk->getBytesToRead() == 0 )
+    {
+        datachunk->getConnection()->releaseChunk();
+        delete datachunk;
+        *pp_data = NULL;
+        return 0;
+    }
+
+    size_t i_data = datachunk->getBytesToRead();
+    *pp_data = malloc(i_data);
+    if(*pp_data)
+    {
+        ssize_t ret = datachunk->getConnection()->read(*pp_data, i_data);
+        if(ret < 0)
+        {
+            free(*pp_data);
+            *pp_data = NULL;
+            i_data = 0;
+        }
+        else
+        {
+            i_data = ret;
+        }
+    }
+    datachunk->getConnection()->releaseChunk();
+    delete datachunk;
+    return i_data;
+}
diff --git a/modules/demux/adaptative/tools/Retrieve.hpp b/modules/demux/adaptative/tools/Retrieve.hpp
new file mode 100644
index 0000000..fef2bb5
--- /dev/null
+++ b/modules/demux/adaptative/tools/Retrieve.hpp
@@ -0,0 +1,40 @@
+/*
+ * Retrieve.hpp
+ *****************************************************************************
+ * Copyright © 2015 - VideoLAN Authors
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published
+ * by the Free Software Foundation; either version 2.1 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+#ifndef RETRIEVE_HPP
+#define RETRIEVE_HPP
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+//#include <inttypes.h>
+#include <vlc_common.h>
+#include <string>
+
+namespace adaptative
+{
+    class Retrieve
+    {
+        public:
+            static uint64_t HTTP(vlc_object_t *, const std::string &uri, void **pp_data);
+    };
+}
+
+#endif // RETRIEVE_HPP



More information about the vlc-commits mailing list