[FFmpeg-cvslog] svq1enc: reduce stack usage of recursively-called function.

Reimar Döffinger git at videolan.org
Sun Nov 23 06:53:32 CET 2014


ffmpeg | branch: master | Reimar Döffinger <Reimar.Doeffinger at gmx.de> | Sat Nov 22 19:50:37 2014 +0100| [d0682b5eb0d9b6d2c1bc8d03e7ab87c29bb08abc] | committer: Reimar Döffinger

svq1enc: reduce stack usage of recursively-called function.

Signed-off-by: Reimar Döffinger <Reimar.Doeffinger at gmx.de>

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

 libavcodec/svq1enc.c |    2 +-
 libavcodec/svq1enc.h |    2 ++
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/libavcodec/svq1enc.c b/libavcodec/svq1enc.c
index 288da1f..2a0d780 100644
--- a/libavcodec/svq1enc.c
+++ b/libavcodec/svq1enc.c
@@ -96,7 +96,7 @@ static int encode_block(SVQ1EncContext *s, uint8_t *src, uint8_t *ref,
     int w            = 2 << (level + 2 >> 1);
     int h            = 2 << (level + 1 >> 1);
     int size         = w * h;
-    DECLARE_ALIGNED(16, int16_t, block)[7][256];
+    int16_t (*block)[256] = s->encoded_block_levels[level];
     const int8_t *codebook_sum, *codebook;
     const uint16_t(*mean_vlc)[2];
     const uint8_t(*multistage_vlc)[2];
diff --git a/libavcodec/svq1enc.h b/libavcodec/svq1enc.h
index 740d2ff..8e74885 100644
--- a/libavcodec/svq1enc.h
+++ b/libavcodec/svq1enc.h
@@ -59,6 +59,8 @@ typedef struct SVQ1EncContext {
     int c_block_width;
     int c_block_height;
 
+    DECLARE_ALIGNED(16, int16_t, encoded_block_levels)[6][7][256];
+
     uint16_t *mb_type;
     uint32_t *dummy;
     int16_t (*motion_val8[3])[2];



More information about the ffmpeg-cvslog mailing list