mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-11-26 19:01:44 +02:00
avformat: Add the https protocol
Signed-off-by: Martin Storsjö <martin@martin.st>
This commit is contained in:
parent
558d192d23
commit
183baeadca
@ -57,6 +57,7 @@ easier to use. The changes are:
|
|||||||
- 4:2:2 H.264 decoding support
|
- 4:2:2 H.264 decoding support
|
||||||
- Pulseaudio input device
|
- Pulseaudio input device
|
||||||
- replacement Indeo 3 decoder
|
- replacement Indeo 3 decoder
|
||||||
|
- TLS/SSL and HTTPS protocol support
|
||||||
|
|
||||||
|
|
||||||
version 0.7:
|
version 0.7:
|
||||||
|
1
configure
vendored
1
configure
vendored
@ -1478,6 +1478,7 @@ x11_grab_device_indev_extralibs="-lX11 -lXext -lXfixes"
|
|||||||
gopher_protocol_deps="network"
|
gopher_protocol_deps="network"
|
||||||
http_protocol_deps="network"
|
http_protocol_deps="network"
|
||||||
http_protocol_select="tcp_protocol"
|
http_protocol_select="tcp_protocol"
|
||||||
|
https_protocol_select="tls_protocol"
|
||||||
mmsh_protocol_select="http_protocol"
|
mmsh_protocol_select="http_protocol"
|
||||||
mmst_protocol_deps="network"
|
mmst_protocol_deps="network"
|
||||||
rtmp_protocol_select="tcp_protocol"
|
rtmp_protocol_select="tcp_protocol"
|
||||||
|
@ -322,6 +322,7 @@ OBJS-$(CONFIG_CRYPTO_PROTOCOL) += crypto.o
|
|||||||
OBJS-$(CONFIG_FILE_PROTOCOL) += file.o
|
OBJS-$(CONFIG_FILE_PROTOCOL) += file.o
|
||||||
OBJS-$(CONFIG_GOPHER_PROTOCOL) += gopher.o
|
OBJS-$(CONFIG_GOPHER_PROTOCOL) += gopher.o
|
||||||
OBJS-$(CONFIG_HTTP_PROTOCOL) += http.o httpauth.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_MMSH_PROTOCOL) += mmsh.o mms.o asf.o
|
||||||
OBJS-$(CONFIG_MMST_PROTOCOL) += mmst.o mms.o asf.o
|
OBJS-$(CONFIG_MMST_PROTOCOL) += mmst.o mms.o asf.o
|
||||||
OBJS-$(CONFIG_MD5_PROTOCOL) += md5proto.o
|
OBJS-$(CONFIG_MD5_PROTOCOL) += md5proto.o
|
||||||
|
@ -241,6 +241,7 @@ void av_register_all(void)
|
|||||||
REGISTER_PROTOCOL (FILE, file);
|
REGISTER_PROTOCOL (FILE, file);
|
||||||
REGISTER_PROTOCOL (GOPHER, gopher);
|
REGISTER_PROTOCOL (GOPHER, gopher);
|
||||||
REGISTER_PROTOCOL (HTTP, http);
|
REGISTER_PROTOCOL (HTTP, http);
|
||||||
|
REGISTER_PROTOCOL (HTTPS, https);
|
||||||
REGISTER_PROTOCOL (MMSH, mmsh);
|
REGISTER_PROTOCOL (MMSH, mmsh);
|
||||||
REGISTER_PROTOCOL (MMST, mmst);
|
REGISTER_PROTOCOL (MMST, mmst);
|
||||||
REGISTER_PROTOCOL (MD5, md5);
|
REGISTER_PROTOCOL (MD5, md5);
|
||||||
|
@ -92,8 +92,8 @@ void ff_http_init_auth_state(URLContext *dest, const URLContext *src)
|
|||||||
/* return non zero if error */
|
/* return non zero if error */
|
||||||
static int http_open_cnx(URLContext *h)
|
static int http_open_cnx(URLContext *h)
|
||||||
{
|
{
|
||||||
const char *path, *proxy_path;
|
const char *path, *proxy_path, *lower_proto = "tcp";
|
||||||
char hostname[1024], hoststr[1024];
|
char hostname[1024], hoststr[1024], proto[10];
|
||||||
char auth[1024];
|
char auth[1024];
|
||||||
char path1[1024];
|
char path1[1024];
|
||||||
char buf[1024];
|
char buf[1024];
|
||||||
@ -109,7 +109,8 @@ static int http_open_cnx(URLContext *h)
|
|||||||
/* fill the dest addr */
|
/* fill the dest addr */
|
||||||
redo:
|
redo:
|
||||||
/* needed in any case to build the host string */
|
/* 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);
|
path1, sizeof(path1), s->location);
|
||||||
ff_url_join(hoststr, sizeof(hoststr), NULL, NULL, hostname, port, NULL);
|
ff_url_join(hoststr, sizeof(hoststr), NULL, NULL, hostname, port, NULL);
|
||||||
|
|
||||||
@ -123,10 +124,15 @@ static int http_open_cnx(URLContext *h)
|
|||||||
else
|
else
|
||||||
path = path1;
|
path = path1;
|
||||||
}
|
}
|
||||||
|
if (!strcmp(proto, "https")) {
|
||||||
|
lower_proto = "tls";
|
||||||
|
if (port < 0)
|
||||||
|
port = 443;
|
||||||
|
}
|
||||||
if (port < 0)
|
if (port < 0)
|
||||||
port = 80;
|
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);
|
err = ffurl_open(&hd, buf, AVIO_FLAG_READ_WRITE);
|
||||||
if (err < 0)
|
if (err < 0)
|
||||||
goto fail;
|
goto fail;
|
||||||
@ -509,6 +515,7 @@ http_get_file_handle(URLContext *h)
|
|||||||
return ffurl_get_file_handle(s->hd);
|
return ffurl_get_file_handle(s->hd);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if CONFIG_HTTP_PROTOCOL
|
||||||
URLProtocol ff_http_protocol = {
|
URLProtocol ff_http_protocol = {
|
||||||
.name = "http",
|
.name = "http",
|
||||||
.url_open = http_open,
|
.url_open = http_open,
|
||||||
@ -520,3 +527,17 @@ URLProtocol ff_http_protocol = {
|
|||||||
.priv_data_size = sizeof(HTTPContext),
|
.priv_data_size = sizeof(HTTPContext),
|
||||||
.priv_data_class = &httpcontext_class,
|
.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
|
||||||
|
@ -24,7 +24,7 @@
|
|||||||
#include "libavutil/avutil.h"
|
#include "libavutil/avutil.h"
|
||||||
|
|
||||||
#define LIBAVFORMAT_VERSION_MAJOR 53
|
#define LIBAVFORMAT_VERSION_MAJOR 53
|
||||||
#define LIBAVFORMAT_VERSION_MINOR 11
|
#define LIBAVFORMAT_VERSION_MINOR 12
|
||||||
#define LIBAVFORMAT_VERSION_MICRO 0
|
#define LIBAVFORMAT_VERSION_MICRO 0
|
||||||
|
|
||||||
#define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
|
#define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
|
||||||
|
Loading…
Reference in New Issue
Block a user