changeset 9360:66e270967340 libavcodec

Add av_shrink_packet function for use in av_get_packet that reduces pkt->size and ensures the following padding is correctly initialized to 0.
author reimar
date Wed, 08 Apr 2009 20:19:12 +0000
parents f978e4a699c5
children 53e5c6a453e9
files avcodec.h avpacket.c
diffstat 2 files changed, 15 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/avcodec.h	Wed Apr 08 01:45:44 2009 +0000
+++ b/avcodec.h	Wed Apr 08 20:19:12 2009 +0000
@@ -2655,6 +2655,14 @@
 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.
  */
--- a/avpacket.c	Wed Apr 08 01:45:44 2009 +0000
+++ b/avpacket.c	Wed Apr 08 20:19:12 2009 +0000
@@ -62,6 +62,13 @@
     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) {