vlc | branch: master | Francois Cartegnie <[email protected]> | 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 _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
