|
|
@@ -56,9 +56,14 @@ URLProtocol *av_protocol_next(URLProtocol *p) |
|
|
|
else return first_protocol; |
|
|
|
} |
|
|
|
|
|
|
|
int av_register_protocol(URLProtocol *protocol) |
|
|
|
int av_register_protocol2(URLProtocol *protocol, int size) |
|
|
|
{ |
|
|
|
URLProtocol **p; |
|
|
|
if (size < sizeof(URLProtocol)) { |
|
|
|
URLProtocol* temp = av_mallocz(sizeof(URLProtocol)); |
|
|
|
memcpy(temp, protocol, size); |
|
|
|
protocol = temp; |
|
|
|
} |
|
|
|
p = &first_protocol; |
|
|
|
while (*p != NULL) p = &(*p)->next; |
|
|
|
*p = protocol; |
|
|
@@ -67,6 +72,22 @@ int av_register_protocol(URLProtocol *protocol) |
|
|
|
} |
|
|
|
|
|
|
|
#if LIBAVFORMAT_VERSION_MAJOR < 53 |
|
|
|
/* The layout of URLProtocol as of when major was bumped to 52 */ |
|
|
|
struct URLProtocol_compat { |
|
|
|
const char *name; |
|
|
|
int (*url_open)(URLContext *h, const char *filename, int flags); |
|
|
|
int (*url_read)(URLContext *h, unsigned char *buf, int size); |
|
|
|
int (*url_write)(URLContext *h, unsigned char *buf, int size); |
|
|
|
int64_t (*url_seek)(URLContext *h, int64_t pos, int whence); |
|
|
|
int (*url_close)(URLContext *h); |
|
|
|
struct URLProtocol *next; |
|
|
|
}; |
|
|
|
|
|
|
|
int av_register_protocol(URLProtocol *protocol) |
|
|
|
{ |
|
|
|
return av_register_protocol2(protocol, sizeof(struct URLProtocol_compat)); |
|
|
|
} |
|
|
|
|
|
|
|
int register_protocol(URLProtocol *protocol) |
|
|
|
{ |
|
|
|
return av_register_protocol(protocol); |
|
|
|