diff options
author | Anton Khirnov <anton@khirnov.net> | 2011-04-04 10:18:54 +0400 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2011-04-08 19:48:44 +0400 |
commit | f8270bbf8ce891cc614a5562c02ce18a50a89f1d (patch) | |
tree | d3e1e18d889e8b7cd931233b535aebd19d782eab | |
parent | c234d40bd9c98fc8c5540135cd5055c12e603a0f (diff) |
avio: add a function for iterating though protocol names.
-rw-r--r-- | libavformat/avio.c | 10 | ||||
-rw-r--r-- | libavformat/avio.h | 13 |
2 files changed, 23 insertions, 0 deletions
diff --git a/libavformat/avio.c b/libavformat/avio.c index e043058974..ab7a7f51ec 100644 --- a/libavformat/avio.c +++ b/libavformat/avio.c @@ -57,6 +57,16 @@ URLProtocol *av_protocol_next(URLProtocol *p) else return first_protocol; } +const char *avio_enum_protocols(void **opaque, int output) +{ + URLProtocol **p = opaque; + *p = *p ? (*p)->next : first_protocol; + if (!*p) return NULL; + if ((output && (*p)->url_write) || (!output && (*p)->url_read)) + return (*p)->name; + return avio_enum_protocols(opaque, output); +} + int ffurl_register_protocol(URLProtocol *protocol, int size) { URLProtocol **p; diff --git a/libavformat/avio.h b/libavformat/avio.h index c39d2a0444..9ea138e080 100644 --- a/libavformat/avio.h +++ b/libavformat/avio.h @@ -600,4 +600,17 @@ int avio_close_dyn_buf(AVIOContext *s, uint8_t **pbuffer); int udp_get_file_handle(URLContext *h); #endif +/** + * Iterate through names of available protocols. + * + * @param opaque A private pointer representing current protocol. + * It must be a pointer to NULL on first iteration and will + * be updated by successive calls to avio_enum_protocols. + * @param output If set to 1, iterate over output protocols, + * otherwise over input protocols. + * + * @return A static string containing the name of current protocol or NULL + */ +const char *avio_enum_protocols(void **opaque, int output); + #endif /* AVFORMAT_AVIO_H */ |