[FFmpeg-cvslog] r23942 - in trunk/libavformat: avio.h aviobuf.c
mstorsjo
subversion
Thu Jul 1 22:15:50 CEST 2010
Author: mstorsjo
Date: Thu Jul 1 22:15:49 2010
New Revision: 23942
Log:
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
Modified:
trunk/libavformat/avio.h
trunk/libavformat/aviobuf.c
Modified: trunk/libavformat/avio.h
==============================================================================
--- trunk/libavformat/avio.h Thu Jul 1 22:12:58 2010 (r23941)
+++ trunk/libavformat/avio.h Thu Jul 1 22:15:49 2010 (r23942)
@@ -530,7 +530,10 @@ int url_open_dyn_packet_buf(ByteIOContex
/**
* 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
Modified: trunk/libavformat/aviobuf.c
==============================================================================
--- trunk/libavformat/aviobuf.c Thu Jul 1 22:12:58 2010 (r23941)
+++ trunk/libavformat/aviobuf.c Thu Jul 1 22:15:49 2010 (r23942)
@@ -894,6 +894,14 @@ int url_close_dyn_buf(ByteIOContext *s,
{
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,
size = d->size;
av_free(d);
av_free(s);
- return size;
+ return size - padding;
}
#endif /* CONFIG_MUXERS || CONFIG_NETWORK */
More information about the ffmpeg-cvslog
mailing list