X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavformat%2Favio.c;h=afaa7e6e19a43358e41702614e0e8a59d9eb38ec;hb=b6ff81d63b7b2940b39d8be2216a1c0f5cb353a8;hp=efe1c26683f97719c37d88875026fc1f7a7520b9;hpb=c40a35f8a7e3977c18d0ebff503a3add8ff58dad;p=ffmpeg diff --git a/libavformat/avio.c b/libavformat/avio.c index efe1c26683f..afaa7e6e19a 100644 --- a/libavformat/avio.c +++ b/libavformat/avio.c @@ -84,19 +84,9 @@ const AVClass ffurl_context_class = { /*@}*/ -#if FF_API_OLD_INTERRUPT_CB -static int default_interrupt_cb(void); -int (*url_interrupt_cb)(void) = default_interrupt_cb; -#endif - -URLProtocol *av_protocol_next(URLProtocol *p) -{ - return ffurl_protocol_next(p); -} - const char *avio_enum_protocols(void **opaque, int output) { - URLProtocol **p = opaque; + URLProtocol **p = (URLProtocol **)opaque; *p = ffurl_protocol_next(*p); if (!*p) return NULL; if ((output && (*p)->url_write) || (!output && (*p)->url_read)) @@ -127,7 +117,7 @@ static int url_alloc_for_protocol (URLContext **puc, struct URLProtocol *up, int err; #if CONFIG_NETWORK - if (!ff_network_init()) + if (up->flags & URL_PROTOCOL_FLAG_NETWORK && !ff_network_init()) return AVERROR(EIO); #endif uc = av_mallocz(sizeof(URLContext) + strlen(filename) + 1); @@ -145,10 +135,11 @@ static int url_alloc_for_protocol (URLContext **puc, struct URLProtocol *up, if (up->priv_data_size) { uc->priv_data = av_mallocz(up->priv_data_size); if (up->priv_data_class) { + int proto_len= strlen(up->name); char *start = strchr(uc->filename, ','); *(const AVClass**)uc->priv_data = up->priv_data_class; av_opt_set_defaults(uc->priv_data); - if(start){ + if(!strncmp(up->name, uc->filename, proto_len) && uc->filename + proto_len == start){ int ret= 0; char *p= start; char sep= *++p; @@ -180,7 +171,8 @@ static int url_alloc_for_protocol (URLContext **puc, struct URLProtocol *up, fail: *puc = NULL; #if CONFIG_NETWORK - ff_network_close(); + if (up->flags & URL_PROTOCOL_FLAG_NETWORK) + ff_network_close(); #endif return err; } @@ -188,9 +180,7 @@ static int url_alloc_for_protocol (URLContext **puc, struct URLProtocol *up, int ffurl_connect(URLContext* uc, AVDictionary **options) { int err = -#if !FF_API_OLD_AVIO uc->prot->url_open2 ? uc->prot->url_open2(uc, uc->filename, uc->flags, options) : -#endif uc->prot->url_open(uc, uc->filename, uc->flags); if (err) return err; @@ -203,81 +193,6 @@ int ffurl_connect(URLContext* uc, AVDictionary **options) return 0; } -#if FF_API_OLD_AVIO -int url_open_protocol (URLContext **puc, struct URLProtocol *up, - const char *filename, int flags) -{ - int ret; - - ret = url_alloc_for_protocol(puc, up, filename, flags, NULL); - if (ret) - goto fail; - ret = ffurl_connect(*puc, NULL); - if (!ret) - return 0; - fail: - ffurl_close(*puc); - *puc = NULL; - return ret; -} -int url_alloc(URLContext **puc, const char *filename, int flags) -{ - return ffurl_alloc(puc, filename, flags, NULL); -} -int url_connect(URLContext* uc) -{ - return ffurl_connect(uc, NULL); -} -int url_open(URLContext **puc, const char *filename, int flags) -{ - return ffurl_open(puc, filename, flags, NULL, NULL); -} -int url_read(URLContext *h, unsigned char *buf, int size) -{ - return ffurl_read(h, buf, size); -} -int url_read_complete(URLContext *h, unsigned char *buf, int size) -{ - return ffurl_read_complete(h, buf, size); -} -int url_write(URLContext *h, const unsigned char *buf, int size) -{ - return ffurl_write(h, buf, size); -} -int64_t url_seek(URLContext *h, int64_t pos, int whence) -{ - return ffurl_seek(h, pos, whence); -} -int url_close(URLContext *h) -{ - return ffurl_close(h); -} -int64_t url_filesize(URLContext *h) -{ - return ffurl_size(h); -} -int url_get_file_handle(URLContext *h) -{ - return ffurl_get_file_handle(h); -} -int url_get_max_packet_size(URLContext *h) -{ - return h->max_packet_size; -} -void url_get_filename(URLContext *h, char *buf, int buf_size) -{ - av_strlcpy(buf, h->filename, buf_size); -} -void url_set_interrupt_cb(URLInterruptCB *interrupt_cb) -{ - avio_set_interrupt_cb(interrupt_cb); -} -int av_register_protocol2(URLProtocol *protocol, int size) -{ - return ffurl_register_protocol(protocol, size); -} -#endif - #define URL_SCHEME_CHARS \ "abcdefghijklmnopqrstuvwxyz" \ "ABCDEFGHIJKLMNOPQRSTUVWXYZ" \ @@ -408,7 +323,8 @@ int ffurl_close(URLContext *h) if (h->is_connected && h->prot->url_close) ret = h->prot->url_close(h); #if CONFIG_NETWORK - ff_network_close(); + if (h->prot->flags & URL_PROTOCOL_FLAG_NETWORK) + ff_network_close(); #endif if (h->prot->priv_data_size) { if (h->prot->priv_data_class) @@ -419,17 +335,6 @@ int ffurl_close(URLContext *h) return ret; } -#if FF_API_OLD_AVIO -int url_exist(const char *filename) -{ - URLContext *h; - if (ffurl_open(&h, filename, AVIO_FLAG_READ, NULL, NULL) < 0) - return 0; - ffurl_close(h); - return 1; -} -#endif - int avio_check(const char *url, int flags) { URLContext *h; @@ -471,45 +376,10 @@ int ffurl_get_file_handle(URLContext *h) return h->prot->url_get_file_handle(h); } -#if FF_API_OLD_INTERRUPT_CB -static int default_interrupt_cb(void) -{ - return 0; -} - -void avio_set_interrupt_cb(int (*interrupt_cb)(void)) -{ - if (!interrupt_cb) - interrupt_cb = default_interrupt_cb; - url_interrupt_cb = interrupt_cb; -} -#endif - int ff_check_interrupt(AVIOInterruptCB *cb) { int ret; if (cb && cb->callback && (ret = cb->callback(cb->opaque))) return ret; -#if FF_API_OLD_INTERRUPT_CB - return url_interrupt_cb(); -#else return 0; -#endif } - -#if FF_API_OLD_AVIO -int av_url_read_pause(URLContext *h, int pause) -{ - if (!h->prot->url_read_pause) - return AVERROR(ENOSYS); - return h->prot->url_read_pause(h, pause); -} - -int64_t av_url_read_seek(URLContext *h, - int stream_index, int64_t timestamp, int flags) -{ - if (!h->prot->url_read_seek) - return AVERROR(ENOSYS); - return h->prot->url_read_seek(h, stream_index, timestamp, flags); -} -#endif