Add functionality to set the direction of a ByteIOContext buffer.
Patch by Björn Axelsson bjorn axelsson intinor se Original thread: [FFmpeg-devel] [PATCH] MMS protocol support patch 1 Date: 09/19/2007 05:51 PM Originally committed as revision 10709 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
3ea7841120
commit
770d9dafa1
@ -203,6 +203,11 @@ int url_fdopen(ByteIOContext *s, URLContext *h);
|
|||||||
|
|
||||||
/** @warning must be called before any I/O */
|
/** @warning must be called before any I/O */
|
||||||
int url_setbufsize(ByteIOContext *s, int buf_size);
|
int url_setbufsize(ByteIOContext *s, int buf_size);
|
||||||
|
/** Reset the buffer for reading or writing.
|
||||||
|
* @note Will drop any data currently in the buffer without transmitting it.
|
||||||
|
* @param flags URL_RDONLY to set up the buffer for reading, or URL_WRONLY
|
||||||
|
* to set up the buffer for writing. */
|
||||||
|
int url_resetbuf(ByteIOContext *s, int flags);
|
||||||
|
|
||||||
/** @note when opened as read/write, the buffers are only used for
|
/** @note when opened as read/write, the buffers are only used for
|
||||||
writing */
|
writing */
|
||||||
|
@ -38,11 +38,7 @@ int init_put_byte(ByteIOContext *s,
|
|||||||
s->buffer = buffer;
|
s->buffer = buffer;
|
||||||
s->buffer_size = buffer_size;
|
s->buffer_size = buffer_size;
|
||||||
s->buf_ptr = buffer;
|
s->buf_ptr = buffer;
|
||||||
s->write_flag = write_flag;
|
url_resetbuf(s, write_flag ? URL_WRONLY : URL_RDONLY);
|
||||||
if (!s->write_flag)
|
|
||||||
s->buf_end = buffer;
|
|
||||||
else
|
|
||||||
s->buf_end = buffer + buffer_size;
|
|
||||||
s->opaque = opaque;
|
s->opaque = opaque;
|
||||||
s->write_packet = write_packet;
|
s->write_packet = write_packet;
|
||||||
s->read_packet = read_packet;
|
s->read_packet = read_packet;
|
||||||
@ -534,10 +530,23 @@ int url_setbufsize(ByteIOContext *s, int buf_size)
|
|||||||
s->buffer = buffer;
|
s->buffer = buffer;
|
||||||
s->buffer_size = buf_size;
|
s->buffer_size = buf_size;
|
||||||
s->buf_ptr = buffer;
|
s->buf_ptr = buffer;
|
||||||
if (!s->write_flag)
|
url_resetbuf(s, s->write_flag ? URL_WRONLY : URL_RDONLY);
|
||||||
s->buf_end = buffer;
|
return 0;
|
||||||
else
|
}
|
||||||
s->buf_end = buffer + buf_size;
|
|
||||||
|
int url_resetbuf(ByteIOContext *s, int flags)
|
||||||
|
{
|
||||||
|
URLContext *h = s->opaque;
|
||||||
|
if ((flags & URL_RDWR) || (h && h->flags != flags && !h->flags & URL_RDWR))
|
||||||
|
return AVERROR(EINVAL);
|
||||||
|
|
||||||
|
if (flags & URL_WRONLY) {
|
||||||
|
s->buf_end = s->buffer + s->buffer_size;
|
||||||
|
s->write_flag = 1;
|
||||||
|
} else {
|
||||||
|
s->buf_end = s->buffer;
|
||||||
|
s->write_flag = 0;
|
||||||
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user