X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavformat%2Fprotocols.c;h=4b6b1c8e984644090fe54165aa820876210c3ec7;hb=0bf3a7361d17d596a5044882098f56817db0e103;hp=ad95659795e4fc43c9e1bbf91348c7fcc3bd505e;hpb=fda424b300c1a0b991296aa585691609d01196bd;p=ffmpeg diff --git a/libavformat/protocols.c b/libavformat/protocols.c index ad95659795e..4b6b1c8e984 100644 --- a/libavformat/protocols.c +++ b/libavformat/protocols.c @@ -34,6 +34,7 @@ extern const URLProtocol ff_ffrtmphttp_protocol; extern const URLProtocol ff_file_protocol; extern const URLProtocol ff_ftp_protocol; extern const URLProtocol ff_gopher_protocol; +extern const URLProtocol ff_gophers_protocol; extern const URLProtocol ff_hls_protocol; extern const URLProtocol ff_http_protocol; extern const URLProtocol ff_httpproxy_protocol; @@ -60,6 +61,8 @@ extern const URLProtocol ff_tls_protocol; extern const URLProtocol ff_udp_protocol; extern const URLProtocol ff_udplite_protocol; extern const URLProtocol ff_unix_protocol; +extern const URLProtocol ff_libamqp_protocol; +extern const URLProtocol ff_librist_protocol; extern const URLProtocol ff_librtmp_protocol; extern const URLProtocol ff_librtmpe_protocol; extern const URLProtocol ff_librtmps_protocol; @@ -68,29 +71,25 @@ extern const URLProtocol ff_librtmpte_protocol; extern const URLProtocol ff_libsrt_protocol; extern const URLProtocol ff_libssh_protocol; extern const URLProtocol ff_libsmbclient_protocol; +extern const URLProtocol ff_libzmq_protocol; #include "libavformat/protocol_list.c" -const AVClass *ff_urlcontext_child_class_next(const AVClass *prev) +const AVClass *ff_urlcontext_child_class_iterate(void **iter) { - int i; + const AVClass *ret = NULL; + uintptr_t i; - /* find the protocol that corresponds to prev */ - for (i = 0; prev && url_protocols[i]; i++) { - if (url_protocols[i]->priv_data_class == prev) { - i++; + for (i = (uintptr_t)*iter; url_protocols[i]; i++) { + ret = url_protocols[i]->priv_data_class; + if (ret) break; - } } - /* find next protocol with priv options */ - for (; url_protocols[i]; i++) - if (url_protocols[i]->priv_data_class) - return url_protocols[i]->priv_data_class; - return NULL; + *iter = (void*)(uintptr_t)(url_protocols[i] ? i + 1 : i); + return ret; } - const char *avio_enum_protocols(void **opaque, int output) { const URLProtocol **p = *opaque; @@ -106,6 +105,16 @@ const char *avio_enum_protocols(void **opaque, int output) return avio_enum_protocols(opaque, output); } +const AVClass *avio_protocol_get_class(const char *name) +{ + int i = 0; + for (i = 0; url_protocols[i]; i++) { + if (!strcmp(url_protocols[i]->name, name)) + return url_protocols[i]->priv_data_class; + } + return NULL; +} + const URLProtocol **ffurl_get_protocols(const char *whitelist, const char *blacklist) {