Commit f8270bbf authored by Anton Khirnov's avatar Anton Khirnov

avio: add a function for iterating though protocol names.

parent c234d40b
......@@ -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;
......
......@@ -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 */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment