#define SHORT_SEEK_THRESHOLD 4096
static void fill_buffer(AVIOContext *s);
-#if !FF_API_URL_RESETBUF
static int url_resetbuf(AVIOContext *s, int flags);
-#endif
int ffio_init_context(AVIOContext *s,
unsigned char *buffer,
s->buffer_size = buffer_size;
s->buf_ptr = buffer;
s->opaque = opaque;
- url_resetbuf(s, write_flag ? AVIO_WRONLY : AVIO_RDONLY);
+ url_resetbuf(s, write_flag ? AVIO_FLAG_WRITE : AVIO_FLAG_READ);
s->write_packet = write_packet;
s->read_packet = read_packet;
s->seek = seek;
int64_t (*seek)(void *opaque, int64_t offset, int whence))
{
AVIOContext *s = av_mallocz(sizeof(AVIOContext));
+ if (!s)
+ return NULL;
ffio_init_context(s, buffer, buffer_size, write_flag, opaque,
read_packet, write_packet, seek);
return s;
}
if (ffio_init_context(*s, buffer, buffer_size,
- (h->flags & AVIO_WRONLY || h->flags & AVIO_RDWR), h,
+ h->flags & AVIO_FLAG_WRITE, h,
ffurl_read, ffurl_write, ffurl_seek) < 0) {
av_free(buffer);
av_freep(s);
s->buffer = buffer;
s->buffer_size = buf_size;
s->buf_ptr = buffer;
- url_resetbuf(s, s->write_flag ? AVIO_WRONLY : AVIO_RDONLY);
+ url_resetbuf(s, s->write_flag ? AVIO_FLAG_WRITE : AVIO_FLAG_READ);
return 0;
}
-#if FF_API_URL_RESETBUF
-int url_resetbuf(AVIOContext *s, int flags)
-#else
static int url_resetbuf(AVIOContext *s, int flags)
-#endif
{
-#if FF_API_URL_RESETBUF
- if (flags & AVIO_RDWR)
- return AVERROR(EINVAL);
-#else
- assert(flags == AVIO_WRONLY || flags == AVIO_RDONLY);
-#endif
+ assert(flags == AVIO_FLAG_WRITE || flags == AVIO_FLAG_READ);
- if (flags & AVIO_WRONLY) {
+ if (flags & AVIO_FLAG_WRITE) {
s->buf_end = s->buffer + s->buffer_size;
s->write_flag = 1;
} else {
if(!*s)
return AVERROR(ENOMEM);
ret = ffio_init_context(*s, buf, buf_size,
- (flags & AVIO_WRONLY || flags & AVIO_RDWR),
+ flags & AVIO_FLAG_WRITE,
NULL, NULL, NULL, NULL);
if(ret != 0)
av_freep(s);