summaryrefslogtreecommitdiff
path: root/contrib/ffmpeg/libavformat/avio.c
diff options
context:
space:
mode:
authorDiego 'Flameeyes' Pettenò <flameeyes@gmail.com>2008-03-01 03:05:13 +0100
committerDiego 'Flameeyes' Pettenò <flameeyes@gmail.com>2008-03-01 03:05:13 +0100
commit1d0b3b20c34517b9d1ddf3ea347776304b0c4b44 (patch)
tree89f4fc640c2becc6f00ae08996754952ecf149c1 /contrib/ffmpeg/libavformat/avio.c
parent09496ad3469a0ade8dbd9a351e639b78f20b7942 (diff)
downloadxine-lib-1d0b3b20c34517b9d1ddf3ea347776304b0c4b44.tar.gz
xine-lib-1d0b3b20c34517b9d1ddf3ea347776304b0c4b44.tar.bz2
Update internal FFmpeg copy.
Diffstat (limited to 'contrib/ffmpeg/libavformat/avio.c')
-rw-r--r--contrib/ffmpeg/libavformat/avio.c40
1 files changed, 30 insertions, 10 deletions
diff --git a/contrib/ffmpeg/libavformat/avio.c b/contrib/ffmpeg/libavformat/avio.c
index a22bd22f3..5f5bff158 100644
--- a/contrib/ffmpeg/libavformat/avio.c
+++ b/contrib/ffmpeg/libavformat/avio.c
@@ -19,12 +19,19 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include "avformat.h"
+#include "avstring.h"
static int default_interrupt_cb(void);
URLProtocol *first_protocol = NULL;
URLInterruptCB *url_interrupt_cb = default_interrupt_cb;
+URLProtocol *av_protocol_next(URLProtocol *p)
+{
+ if(p) return p->next;
+ else return first_protocol;
+}
+
int register_protocol(URLProtocol *protocol)
{
URLProtocol **p;
@@ -75,9 +82,7 @@ int url_open(URLContext **puc, const char *filename, int flags)
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;
@@ -100,24 +105,22 @@ int url_read(URLContext *h, unsigned char *buf, int size)
{
int ret;
if (h->flags & URL_WRONLY)
- return AVERROR_IO;
+ return AVERROR(EIO);
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;
+ return AVERROR(EIO);
/* avoid sending too big packets */
if (h->max_packet_size && size > h->max_packet_size)
- return AVERROR_IO;
+ return AVERROR(EIO);
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)
{
@@ -131,9 +134,11 @@ offset_t url_seek(URLContext *h, offset_t pos, int whence)
int url_close(URLContext *h)
{
- int ret;
+ int ret = 0;
+ if (!h) return 0; /* can happen when url_open fails */
- ret = h->prot->url_close(h);
+ if (h->prot->url_close)
+ ret = h->prot->url_close(h);
av_free(h);
return ret;
}
@@ -169,7 +174,7 @@ int url_get_max_packet_size(URLContext *h)
void url_get_filename(URLContext *h, char *buf, int buf_size)
{
- pstrcpy(buf, buf_size, h->filename);
+ av_strlcpy(buf, h->filename, buf_size);
}
@@ -184,3 +189,18 @@ void url_set_interrupt_cb(URLInterruptCB *interrupt_cb)
interrupt_cb = default_interrupt_cb;
url_interrupt_cb = interrupt_cb;
}
+
+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);
+}
+
+offset_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);
+}