and ensures the following padding is correctly initialized to 0.
Originally committed as revision 18378 to svn://svn.ffmpeg.org/ffmpeg/trunk
int av_new_packet(AVPacket *pkt, int size);
/**
+ * Reduce packet size, correctly zeroing padding
+ *
+ * @param pkt packet
+ * @param size new size
+ */
+void av_shrink_packet(AVPacket *pkt, int size);
+
+/**
* @warning This is a hack - the packet memory allocation stuff is broken. The
* packet is allocated if it was not really allocated.
*/
return 0;
}
+void av_shrink_packet(AVPacket *pkt, int size)
+{
+ if (pkt->size <= size) return;
+ pkt->size = size;
+ memset(pkt->data + size, 0, FF_INPUT_BUFFER_PADDING_SIZE);
+}
+
int av_dup_packet(AVPacket *pkt)
{
if (((pkt->destruct == av_destruct_packet_nofree) || (pkt->destruct == NULL)) && pkt->data) {
if(ret<=0)
av_free_packet(pkt);
else
- pkt->size= ret;
+ av_shrink_packet(pkt, ret);
return ret;
}