summaryrefslogtreecommitdiff
path: root/libavformat
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2012-10-10 13:00:28 +0200
committerMichael Niedermayer <michaelni@gmx.at>2012-10-10 13:01:27 +0200
commiteadba3e94daac2f48fd9ce7c9fdf5a562d3274ed (patch)
treee33c21663364927e22ba4a259ff8afb746e06ec6 /libavformat
parentb4e516e30e7004a0454a9009080c4de38987189a (diff)
parentcbcd497f384f0f8ef3f76f85b29b644b900d6b9f (diff)
Merge commit 'cbcd497f384f0f8ef3f76f85b29b644b900d6b9f'
* commit 'cbcd497f384f0f8ef3f76f85b29b644b900d6b9f': adxdec: use planar sample format adpcmdec: use planar sample format for adpcm_thp adpcmdec: use planar sample format for adpcm_ea_xas adpcmdec: use planar sample format for adpcm_ea_r1/r2/r3 adpcmdec: use planar sample format for adpcm_xa adpcmdec: use planar sample format for adpcm_ima_ws for vqa version 3 adpcmdec: use planar sample format for adpcm_4xm adpcmdec: use planar sample format for adpcm_ima_wav adpcmdec: use planar sample format for adpcm_ima_qt pcmdec: use planar sample format for pcm_lxf mace: use planar sample format atrac1: use planar sample format build: non-x86: Only compile mpegvideo optimizations when necessary rtpdec_mpeg4: au_headers is a single array, simple av_free is enough avcodec: free extended_data instead address of it fate: Add tests of the ff_make_absolute_url function url: Handle relative urls starting with two slashes url: Handle relative urls being just a new query string url: Don't treat slashes in query parameters as directory separators Conflicts: libavcodec/adxdec.c libavcodec/mips/Makefile libavcodec/pcm.c libavcodec/utils.c libavformat/Makefile libavformat/utils.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavformat')
-rw-r--r--libavformat/Makefile3
-rw-r--r--libavformat/rtpdec_mpeg4.c10
-rw-r--r--libavformat/url-test.c58
-rw-r--r--libavformat/utils.c4
4 files changed, 63 insertions, 12 deletions
diff --git a/libavformat/Makefile b/libavformat/Makefile
index 6f8a9faa4b..bddd7e17d9 100644
--- a/libavformat/Makefile
+++ b/libavformat/Makefile
@@ -412,7 +412,8 @@ OBJS-$(CONFIG_UDP_PROTOCOL) += udp.o
SKIPHEADERS-$(CONFIG_FFRTMPCRYPT_PROTOCOL) += rtmpdh.h
SKIPHEADERS-$(CONFIG_NETWORK) += network.h rtsp.h
-TESTPROGS = seek
+TESTPROGS = seek \
+ url \
TOOLS = aviocat \
ismindex \
diff --git a/libavformat/rtpdec_mpeg4.c b/libavformat/rtpdec_mpeg4.c
index 7b16d12dfa..a647169e0e 100644
--- a/libavformat/rtpdec_mpeg4.c
+++ b/libavformat/rtpdec_mpeg4.c
@@ -93,15 +93,7 @@ static PayloadContext *new_context(void)
static void free_context(PayloadContext * data)
{
- int i;
- for (i = 0; i < data->nb_au_headers; i++) {
- /* according to rtp_parse_mp4_au, we treat multiple
- * au headers as one, so nb_au_headers is always 1.
- * loop anyway in case this changes.
- * (note: changes done carelessly might lead to a double free)
- */
- av_free(&data->au_headers[i]);
- }
+ av_free(data->au_headers);
av_free(data->mode);
av_free(data);
}
diff --git a/libavformat/url-test.c b/libavformat/url-test.c
new file mode 100644
index 0000000000..ceaffe8e9a
--- /dev/null
+++ b/libavformat/url-test.c
@@ -0,0 +1,58 @@
+/*
+ * Copyright (c) 2012 Martin Storsjo
+ *
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg 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.
+ *
+ * FFmpeg 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 FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include "internal.h"
+
+#undef printf
+#undef exit
+
+static void test(const char *base, const char *rel)
+{
+ char buf[200], buf2[200];
+ ff_make_absolute_url(buf, sizeof(buf), base, rel);
+ printf("%s\n", buf);
+ if (base) {
+ /* Test in-buffer replacement */
+ snprintf(buf2, sizeof(buf2), "%s", base);
+ ff_make_absolute_url(buf2, sizeof(buf2), buf2, rel);
+ if (strcmp(buf, buf2)) {
+ printf("In-place handling of %s + %s failed\n", base, rel);
+ exit(1);
+ }
+ }
+}
+
+int main(void)
+{
+ test(NULL, "baz");
+ test("/foo/bar", "baz");
+ test("/foo/bar", "../baz");
+ test("/foo/bar", "/baz");
+ test("http://server/foo/", "baz");
+ test("http://server/foo/bar", "baz");
+ test("http://server/foo/", "../baz");
+ test("http://server/foo/bar/123", "../../baz");
+ test("http://server/foo/bar/123", "/baz");
+ test("http://server/foo/bar/123", "https://other/url");
+ test("http://server/foo/bar?param=value/with/slashes", "/baz");
+ test("http://server/foo/bar?param&otherparam", "?someparam");
+ test("http://server/foo/bar", "//other/url");
+ return 0;
+}
diff --git a/libavformat/utils.c b/libavformat/utils.c
index 4399de7629..9074f0e2fc 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -3824,9 +3824,9 @@ void ff_make_absolute_url(char *buf, int size, const char *base,
sep = strstr(buf, "://");
if (sep) {
/* Take scheme from base url */
- if (rel[1] == '/')
+ if (rel[1] == '/') {
sep[1] = '\0';
- else {
+ } else {
/* Take scheme and host from base url */
sep += 3;
sep = strchr(sep, '/');