[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