[FFmpeg-devel] Stack usage in FFmpeg
Baptiste Coudurier
baptiste.coudurier
Fri Nov 20 23:11:24 CET 2009
On 11/20/2009 01:57 PM, Reimar D?ffinger wrote:
> 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,
Please spare the useless comment.
> unless I miss something this could just be done in-place...
Seems so.
> (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);
Should be ok if it works.
--
Baptiste COUDURIER
Key fingerprint 8D77134D20CC9220201FC5DB0AC9325C5C1ABAAA
FFmpeg maintainer http://www.ffmpeg.org
More information about the ffmpeg-devel
mailing list