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

Originally committed as revision 23942 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
Josh Allmann 2010-07-01 20:15:49 +00:00 committed by Martin Storsjö
parent 4449df6baf
commit de1807bbc4
2 changed files with 13 additions and 2 deletions

View File

@ -530,7 +530,10 @@ int url_open_dyn_packet_buf(ByteIOContext **s, int max_packet_size);
/**
* 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

View File

@ -894,6 +894,14 @@ int url_close_dyn_buf(ByteIOContext *s, uint8_t **pbuffer)
{
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 @@ int url_close_dyn_buf(ByteIOContext *s, uint8_t **pbuffer)
size = d->size;
av_free(d);
av_free(s);
return size;
return size - padding;
}
#endif /* CONFIG_MUXERS || CONFIG_NETWORK */