From feb993e5794b3dacb51085a9b77013495eb6dd1c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Reimar=20D=C3=B6ffinger?= <Reimar.Doeffinger@gmx.de>
Date: Wed, 8 Apr 2009 20:19:12 +0000
Subject: [PATCH] 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.

Originally committed as revision 18378 to svn://svn.ffmpeg.org/ffmpeg/trunk
---
 libavcodec/avcodec.h  | 8 ++++++++
 libavcodec/avpacket.c | 7 +++++++
 libavformat/utils.c   | 2 +-
 3 files changed, 16 insertions(+), 1 deletion(-)

diff --git a/libavcodec/avcodec.h b/libavcodec/avcodec.h
index 218e236e9b6..f500151e856 100644
--- a/libavcodec/avcodec.h
+++ b/libavcodec/avcodec.h
@@ -2654,6 +2654,14 @@ void av_init_packet(AVPacket *pkt);
  */
 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.
diff --git a/libavcodec/avpacket.c b/libavcodec/avpacket.c
index 107afb3817b..d91ee3a10d0 100644
--- a/libavcodec/avpacket.c
+++ b/libavcodec/avpacket.c
@@ -62,6 +62,13 @@ int av_new_packet(AVPacket *pkt, int size)
     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) {
diff --git a/libavformat/utils.c b/libavformat/utils.c
index 54c92028a99..d3b9c090ebe 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -272,7 +272,7 @@ int av_get_packet(ByteIOContext *s, AVPacket *pkt, int size)
     if(ret<=0)
         av_free_packet(pkt);
     else
-        pkt->size= ret;
+        av_shrink_packet(pkt, ret);
 
     return ret;
 }
-- 
GitLab