Mercurial > libavformat.hg
changeset 6209:71862ed5b874 libavformat
Pad the buffer in url_close_dyn_buf, for buffers opened with url_open_dyn_buf
Patch by Josh Allmann, joshua dot allmann at gmail
author | mstorsjo |
---|---|
date | Thu, 01 Jul 2010 20:15:49 +0000 |
parents | 209c43ef17af |
children | da46dcc05d4a |
files | avio.h aviobuf.c |
diffstat | 2 files changed, 13 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/avio.h Thu Jul 01 20:12:58 2010 +0000 +++ b/avio.h Thu Jul 01 20:15:49 2010 +0000 @@ -530,7 +530,10 @@ /** * Return the written size and a pointer to the buffer. The buffer - * must be freed with av_free(). + * must be freed with av_free(). If the buffer is opened with + * url_open_dyn_buf, then padding of FF_INPUT_BUFFER_PADDING_SIZE is + * added; if opened with url_open_dyn_packet_buf, no padding is added. + * * @param s IO context * @param pbuffer pointer to a byte buffer * @return the length of the byte buffer
--- a/aviobuf.c Thu Jul 01 20:12:58 2010 +0000 +++ b/aviobuf.c Thu Jul 01 20:15:49 2010 +0000 @@ -894,6 +894,14 @@ { DynBuffer *d = s->opaque; int size; + static const char padbuf[FF_INPUT_BUFFER_PADDING_SIZE] = {0}; + int padding = 0; + + /* don't attempt to pad fixed-size packet buffers */ + if (!s->max_packet_size) { + put_buffer(s, padbuf, sizeof(padbuf)); + padding = FF_INPUT_BUFFER_PADDING_SIZE; + } put_flush_packet(s); @@ -901,6 +909,6 @@ size = d->size; av_free(d); av_free(s); - return size; + return size - padding; } #endif /* CONFIG_MUXERS || CONFIG_NETWORK */