[FFmpeg-cvslog] avformat: Add the https protocol
Martin Storsjö
git at videolan.org
Sun Nov 6 02:39:14 CET 2011
ffmpeg | branch: master | Martin Storsjö <martin at martin.st> | Sun Feb 6 00:20:26 2011 +0200| [183baeadca74f4087b58dc5a94a649473f28470c] | committer: Martin Storsjö
avformat: Add the https protocol
Signed-off-by: Martin Storsjö <martin at martin.st>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=183baeadca74f4087b58dc5a94a649473f28470c
---
Changelog | 1 +
configure | 1 +
libavformat/Makefile | 1 +
libavformat/allformats.c | 1 +
libavformat/http.c | 29 +++++++++++++++++++++++++----
libavformat/version.h | 2 +-
6 files changed, 30 insertions(+), 5 deletions(-)
diff --git a/Changelog b/Changelog
index 4d89510..34ec3c6 100644
--- a/Changelog
+++ b/Changelog
@@ -57,6 +57,7 @@ easier to use. The changes are:
- 4:2:2 H.264 decoding support
- Pulseaudio input device
- replacement Indeo 3 decoder
+- TLS/SSL and HTTPS protocol support
version 0.7:
diff --git a/configure b/configure
index 89a39b2..fa23619 100755
--- a/configure
+++ b/configure
@@ -1478,6 +1478,7 @@ x11_grab_device_indev_extralibs="-lX11 -lXext -lXfixes"
gopher_protocol_deps="network"
http_protocol_deps="network"
http_protocol_select="tcp_protocol"
+https_protocol_select="tls_protocol"
mmsh_protocol_select="http_protocol"
mmst_protocol_deps="network"
rtmp_protocol_select="tcp_protocol"
diff --git a/libavformat/Makefile b/libavformat/Makefile
index 5da01aa..54bc8a1 100644
--- a/libavformat/Makefile
+++ b/libavformat/Makefile
@@ -322,6 +322,7 @@ OBJS-$(CONFIG_CRYPTO_PROTOCOL) += crypto.o
OBJS-$(CONFIG_FILE_PROTOCOL) += file.o
OBJS-$(CONFIG_GOPHER_PROTOCOL) += gopher.o
OBJS-$(CONFIG_HTTP_PROTOCOL) += http.o httpauth.o
+OBJS-$(CONFIG_HTTPS_PROTOCOL) += http.o httpauth.o
OBJS-$(CONFIG_MMSH_PROTOCOL) += mmsh.o mms.o asf.o
OBJS-$(CONFIG_MMST_PROTOCOL) += mmst.o mms.o asf.o
OBJS-$(CONFIG_MD5_PROTOCOL) += md5proto.o
diff --git a/libavformat/allformats.c b/libavformat/allformats.c
index d078a15..01900e8 100644
--- a/libavformat/allformats.c
+++ b/libavformat/allformats.c
@@ -241,6 +241,7 @@ void av_register_all(void)
REGISTER_PROTOCOL (FILE, file);
REGISTER_PROTOCOL (GOPHER, gopher);
REGISTER_PROTOCOL (HTTP, http);
+ REGISTER_PROTOCOL (HTTPS, https);
REGISTER_PROTOCOL (MMSH, mmsh);
REGISTER_PROTOCOL (MMST, mmst);
REGISTER_PROTOCOL (MD5, md5);
diff --git a/libavformat/http.c b/libavformat/http.c
index 1db9e82..0030bc7 100644
--- a/libavformat/http.c
+++ b/libavformat/http.c
@@ -92,8 +92,8 @@ void ff_http_init_auth_state(URLContext *dest, const URLContext *src)
/* return non zero if error */
static int http_open_cnx(URLContext *h)
{
- const char *path, *proxy_path;
- char hostname[1024], hoststr[1024];
+ const char *path, *proxy_path, *lower_proto = "tcp";
+ char hostname[1024], hoststr[1024], proto[10];
char auth[1024];
char path1[1024];
char buf[1024];
@@ -109,7 +109,8 @@ static int http_open_cnx(URLContext *h)
/* fill the dest addr */
redo:
/* needed in any case to build the host string */
- av_url_split(NULL, 0, auth, sizeof(auth), hostname, sizeof(hostname), &port,
+ av_url_split(proto, sizeof(proto), auth, sizeof(auth),
+ hostname, sizeof(hostname), &port,
path1, sizeof(path1), s->location);
ff_url_join(hoststr, sizeof(hoststr), NULL, NULL, hostname, port, NULL);
@@ -123,10 +124,15 @@ static int http_open_cnx(URLContext *h)
else
path = path1;
}
+ if (!strcmp(proto, "https")) {
+ lower_proto = "tls";
+ if (port < 0)
+ port = 443;
+ }
if (port < 0)
port = 80;
- ff_url_join(buf, sizeof(buf), "tcp", NULL, hostname, port, NULL);
+ ff_url_join(buf, sizeof(buf), lower_proto, NULL, hostname, port, NULL);
err = ffurl_open(&hd, buf, AVIO_FLAG_READ_WRITE);
if (err < 0)
goto fail;
@@ -509,6 +515,7 @@ http_get_file_handle(URLContext *h)
return ffurl_get_file_handle(s->hd);
}
+#if CONFIG_HTTP_PROTOCOL
URLProtocol ff_http_protocol = {
.name = "http",
.url_open = http_open,
@@ -520,3 +527,17 @@ URLProtocol ff_http_protocol = {
.priv_data_size = sizeof(HTTPContext),
.priv_data_class = &httpcontext_class,
};
+#endif
+#if CONFIG_HTTPS_PROTOCOL
+URLProtocol ff_https_protocol = {
+ .name = "https",
+ .url_open = http_open,
+ .url_read = http_read,
+ .url_write = http_write,
+ .url_seek = http_seek,
+ .url_close = http_close,
+ .url_get_file_handle = http_get_file_handle,
+ .priv_data_size = sizeof(HTTPContext),
+ .priv_data_class = &httpcontext_class,
+};
+#endif
diff --git a/libavformat/version.h b/libavformat/version.h
index 2b1ef95..c7b0778 100644
--- a/libavformat/version.h
+++ b/libavformat/version.h
@@ -24,7 +24,7 @@
#include "libavutil/avutil.h"
#define LIBAVFORMAT_VERSION_MAJOR 53
-#define LIBAVFORMAT_VERSION_MINOR 11
+#define LIBAVFORMAT_VERSION_MINOR 12
#define LIBAVFORMAT_VERSION_MICRO 0
#define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
More information about the ffmpeg-cvslog
mailing list