diff options
Diffstat (limited to 'contrib/ffmpeg/libavformat/avio.c')
-rw-r--r-- | contrib/ffmpeg/libavformat/avio.c | 186 |
1 files changed, 0 insertions, 186 deletions
diff --git a/contrib/ffmpeg/libavformat/avio.c b/contrib/ffmpeg/libavformat/avio.c deleted file mode 100644 index a22bd22f3..000000000 --- a/contrib/ffmpeg/libavformat/avio.c +++ /dev/null @@ -1,186 +0,0 @@ -/* - * Unbuffered io for ffmpeg system - * Copyright (c) 2001 Fabrice Bellard - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ -#include "avformat.h" - -static int default_interrupt_cb(void); - -URLProtocol *first_protocol = NULL; -URLInterruptCB *url_interrupt_cb = default_interrupt_cb; - -int register_protocol(URLProtocol *protocol) -{ - URLProtocol **p; - p = &first_protocol; - while (*p != NULL) p = &(*p)->next; - *p = protocol; - protocol->next = NULL; - return 0; -} - -int url_open(URLContext **puc, const char *filename, int flags) -{ - URLContext *uc; - URLProtocol *up; - const char *p; - char proto_str[128], *q; - int err; - - p = filename; - q = proto_str; - while (*p != '\0' && *p != ':') { - /* protocols can only contain alphabetic chars */ - if (!isalpha(*p)) - goto file_proto; - if ((q - proto_str) < sizeof(proto_str) - 1) - *q++ = *p; - p++; - } - /* if the protocol has length 1, we consider it is a dos drive */ - if (*p == '\0' || (q - proto_str) <= 1) { - file_proto: - strcpy(proto_str, "file"); - } else { - *q = '\0'; - } - - up = first_protocol; - while (up != NULL) { - if (!strcmp(proto_str, up->name)) - goto found; - up = up->next; - } - err = AVERROR(ENOENT); - goto fail; - found: - uc = av_malloc(sizeof(URLContext) + strlen(filename) + 1); - if (!uc) { - err = AVERROR(ENOMEM); - goto fail; - } -#if LIBAVFORMAT_VERSION_INT >= (52<<16) - uc->filename = (char *) &uc[1]; -#endif - strcpy(uc->filename, filename); - uc->prot = up; - uc->flags = flags; - uc->is_streamed = 0; /* default = not streamed */ - uc->max_packet_size = 0; /* default: stream file */ - err = up->url_open(uc, filename, flags); - if (err < 0) { - av_free(uc); - *puc = NULL; - return err; - } - *puc = uc; - return 0; - fail: - *puc = NULL; - return err; -} - -int url_read(URLContext *h, unsigned char *buf, int size) -{ - int ret; - if (h->flags & URL_WRONLY) - return AVERROR_IO; - ret = h->prot->url_read(h, buf, size); - return ret; -} - -#if defined(CONFIG_MUXERS) || defined(CONFIG_PROTOCOLS) -int url_write(URLContext *h, unsigned char *buf, int size) -{ - int ret; - if (!(h->flags & (URL_WRONLY | URL_RDWR))) - return AVERROR_IO; - /* avoid sending too big packets */ - if (h->max_packet_size && size > h->max_packet_size) - return AVERROR_IO; - ret = h->prot->url_write(h, buf, size); - return ret; -} -#endif //CONFIG_MUXERS || CONFIG_PROTOCOLS - -offset_t url_seek(URLContext *h, offset_t pos, int whence) -{ - offset_t ret; - - if (!h->prot->url_seek) - return AVERROR(EPIPE); - ret = h->prot->url_seek(h, pos, whence); - return ret; -} - -int url_close(URLContext *h) -{ - int ret; - - ret = h->prot->url_close(h); - av_free(h); - return ret; -} - -int url_exist(const char *filename) -{ - URLContext *h; - if (url_open(&h, filename, URL_RDONLY) < 0) - return 0; - url_close(h); - return 1; -} - -offset_t url_filesize(URLContext *h) -{ - offset_t pos, size; - - size= url_seek(h, 0, AVSEEK_SIZE); - if(size<0){ - pos = url_seek(h, 0, SEEK_CUR); - if ((size = url_seek(h, -1, SEEK_END)) < 0) - return size; - size++; - url_seek(h, pos, SEEK_SET); - } - return size; -} - -int url_get_max_packet_size(URLContext *h) -{ - return h->max_packet_size; -} - -void url_get_filename(URLContext *h, char *buf, int buf_size) -{ - pstrcpy(buf, buf_size, h->filename); -} - - -static int default_interrupt_cb(void) -{ - return 0; -} - -void url_set_interrupt_cb(URLInterruptCB *interrupt_cb) -{ - if (!interrupt_cb) - interrupt_cb = default_interrupt_cb; - url_interrupt_cb = interrupt_cb; -} |