[FFmpeg-devel] Stack usage in FFmpeg

Reimar Döffinger Reimar.Doeffinger
Fri Nov 20 22:57:52 CET 2009


On Sun, Nov 01, 2009 at 08:50:15PM +0000, M?ns Rullg?rd wrote:
>   61440 mxf_get_d10_aes3_packet        mxfdec.c:216

This seems really silly, unless I miss something this could just be done in-place...
(of course I assume that the load-store mismatches are not going to
break performance in any relevant way).
Patch to get rid of the stack usage:
Index: libavformat/mxfdec.c
===================================================================
--- libavformat/mxfdec.c	(revision 20562)
+++ libavformat/mxfdec.c	(working copy)
@@ -214,18 +214,17 @@
 /* XXX: use AVBitStreamFilter */
 static int mxf_get_d10_aes3_packet(ByteIOContext *pb, AVStream *st, AVPacket *pkt, int64_t length)
 {
-    uint8_t buffer[61444];
     const uint8_t *buf_ptr, *end_ptr;
     uint8_t *data_ptr;
     int i;
 
     if (length > 61444) /* worst case PAL 1920 samples 8 channels */
         return -1;
-    get_buffer(pb, buffer, length);
     av_new_packet(pkt, length);
+    get_buffer(pb, pkt->data, length);
     data_ptr = pkt->data;
-    end_ptr = buffer + length;
-    buf_ptr = buffer + 4; /* skip SMPTE 331M header */
+    end_ptr = pkt->data + length;
+    buf_ptr = pkt->data + 4; /* skip SMPTE 331M header */
     for (; buf_ptr < end_ptr; ) {
         for (i = 0; i < st->codec->channels; i++) {
             uint32_t sample = bytestream_get_le32(&buf_ptr);



More information about the ffmpeg-devel mailing list