[FFmpeg-cvslog] matroskadec: use av_grow_packet in merge_packets.

Nicolas George git at videolan.org
Mon Apr 16 22:28:19 CEST 2012


ffmpeg | branch: master | Nicolas George <nicolas.george at normalesup.org> | Mon Apr 16 18:02:02 2012 +0200| [dcd207c4cbcd9dd72b73e5b544c055b29885be64] | committer: Nicolas George

matroskadec: use av_grow_packet in merge_packets.

It ensures that the packet is properly padded
and makes the code simpler.

Fixes trac ticket #1223.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=dcd207c4cbcd9dd72b73e5b544c055b29885be64
---

 libavformat/matroskadec.c |   10 ++++------
 1 files changed, 4 insertions(+), 6 deletions(-)

diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c
index 27d84ad..a484c50 100644
--- a/libavformat/matroskadec.c
+++ b/libavformat/matroskadec.c
@@ -1126,12 +1126,10 @@ static void matroska_fix_ass_packet(MatroskaDemuxContext *matroska,
 
 static int matroska_merge_packets(AVPacket *out, AVPacket *in)
 {
-    void *newdata = av_realloc(out->data, out->size+in->size);
-    if (!newdata)
-        return AVERROR(ENOMEM);
-    out->data = newdata;
-    memcpy(out->data+out->size, in->data, in->size);
-    out->size += in->size;
+    int ret = av_grow_packet(out, in->size);
+    if (ret < 0)
+        return ret;
+    memcpy(out->data + out->size - in->size, in->data, in->size);
     av_destruct_packet(in);
     av_free(in);
     return 0;



More information about the ffmpeg-cvslog mailing list