vlc | branch: master | Francois Cartegnie <[email protected]> | Tue Jul 31 18:14:00 2018 +0200| [cad966546b1f1e51dbd9c78a9f4aba4fc3db4c4a] | committer: Francois Cartegnie
tests: check dash uri token replacements > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=cad966546b1f1e51dbd9c78a9f4aba4fc3db4c4a --- modules/demux/Makefile.am | 2 + test/Makefile.am | 6 +- test/modules/demux/dashuri.cpp | 164 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 171 insertions(+), 1 deletion(-) diff --git a/modules/demux/Makefile.am b/modules/demux/Makefile.am index 8ce45537ba..73df494df5 100644 --- a/modules/demux/Makefile.am +++ b/modules/demux/Makefile.am @@ -403,6 +403,8 @@ libadaptive_dash_SOURCES = \ demux/dash/mpd/ProgramInformation.h \ demux/dash/mpd/Representation.cpp \ demux/dash/mpd/Representation.h \ + demux/dash/mpd/TemplatedUri.cpp \ + demux/dash/mpd/TemplatedUri.hpp \ demux/dash/mpd/TrickModeType.cpp \ demux/dash/mpd/TrickModeType.h \ demux/dash/mp4/IndexReader.cpp \ diff --git a/test/Makefile.am b/test/Makefile.am index e6c511adff..db8e8b1786 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -32,7 +32,8 @@ check_PROGRAMS = \ test_src_misc_keystore \ test_modules_packetizer_helpers \ test_modules_packetizer_hxxx \ - test_modules_keystore + test_modules_keystore \ + test_modules_demux_dashuri if ENABLE_SOUT check_PROGRAMS += test_modules_tls endif @@ -132,6 +133,9 @@ test_modules_keystore_SOURCES = modules/keystore/test.c test_modules_keystore_LDADD = $(LIBVLCCORE) $(LIBVLC) test_modules_tls_SOURCES = modules/misc/tls.c test_modules_tls_LDADD = $(LIBVLCCORE) $(LIBVLC) +test_modules_demux_dashuri_SOURCES = modules/demux/dashuri.cpp \ + ../modules/demux/dash/mpd/TemplatedUri.cpp \ + ../modules/demux/dash/mpd/TemplatedUri.hpp checkall: $(MAKE) check_PROGRAMS="$(check_PROGRAMS) $(EXTRA_PROGRAMS)" check diff --git a/test/modules/demux/dashuri.cpp b/test/modules/demux/dashuri.cpp new file mode 100644 index 0000000000..64ff9c401c --- /dev/null +++ b/test/modules/demux/dashuri.cpp @@ -0,0 +1,164 @@ +/***************************************************************************** + * dashuri.cpp + ***************************************************************************** + * Copyright (C) 2018 VideoLabs, VideoLAN and VLC 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. + *****************************************************************************/ +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include "../modules/demux/dash/mpd/TemplatedUri.hpp" + +#include <iostream> +#include <cstring> + +using namespace dash::mpd; + +static const struct +{ + const char *src; + const char *dst; + const char *str; + const unsigned val; +} dataset[] = { + { + "", + "", + NULL, + 0, + }, + { + "$", + "$", + NULL, + 0, + }, + { + "/Num$$ber.m4v", + "/Num$ber.m4v", + NULL, + 0, + }, + { + "/$Number$.m4v", + "/123.m4v", + NULL, + 123, + }, + { + "/$$$Number$.m4v", + "/$456789123.m4v", + NULL, + 456789123, + }, + { + "$Number%d$", + "123", + NULL, + 123, + }, + { + "/$Number%5d$.m4v", + "/00001.m4v", + NULL, + 1, + }, + { + "/$Number%2d$.m4v", + "/123456.m4v", + NULL, + 123456, /* Must not truncate */ + }, + { + "/$RepresentationID$.m4v", + "/foobar.m4v", + "foobar", + 0, + }, + { + "/$RepresentationID$.m4v", + "/$Time$.m4v", + "$Time$", + 0, + }, + { + "$RepresentationID$/$Number$$Time$$$", + "id/123123$", + "id", + 123, /* Must not truncate */ + }, +}; + +int main(int, char **) +{ + for(size_t i=0; i<sizeof(dataset)/sizeof(dataset[0]); i++) + { + std::string str = std::string(dataset[i].src); + + std::cout << str << std::endl; + + std::string::size_type pos = 0; + while(pos < str.length()) + { + TemplatedUri::Token token; + + if(str[pos] == '$' && TemplatedUri::IsDASHToken(str, pos, token)) + { + std::cout << " * token " << str.substr(pos, token.fulllength) + << " " << token.width << std::endl; + + TemplatedUri::TokenReplacement replparam; + + switch(token.type) + { + case TemplatedUri::Token::TOKEN_TIME: + case TemplatedUri::Token::TOKEN_BANDWIDTH: + case TemplatedUri::Token::TOKEN_NUMBER: + replparam.value = dataset[i].val; + break; + case TemplatedUri::Token::TOKEN_REPRESENTATION: + { + if(!dataset[i].str) + return -1; + replparam.str = std::string(dataset[i].str); + break; + } + case TemplatedUri::Token::TOKEN_ESCAPE: + break; + + default: + pos += token.fulllength; + continue; + } + + std::string::size_type newlen = + TemplatedUri::ReplaceDASHToken(str, pos, token, replparam); + if(newlen == std::string::npos) + return -1; + pos += newlen; + } + else pos++; + } + + std::cout << " -> " << str << std::endl; + + if(std::strcmp(dataset[i].dst, str.c_str())) + return 1; + } + + return 0; +} _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
