ffmpeg | branch: master | Andreas Rheinhardt <andreas.rheinha...@outlook.com> | 
Thu Mar 27 03:03:02 2025 +0100| [2ac2485c1f901638870c956d816f4d20a184ca23] | 
committer: Andreas Rheinhardt

avcodec/mjpegenc: Don't allocate unnecessarily much memory

We need to allocate space for 64 coefficients per block;
24dbc4c2e82481f89d6fcacee1949e5038c5c2fc wanted to
perform the calculation 64*sizeof(MJpegHuffmanCode)
at compile time, yet in the end did it in a way that
made it allocate 64 times as much memory as needed.

Reported-by: Michael Niedermayer <mich...@niedermayer.cc>
Signed-off-by: Andreas Rheinhardt <andreas.rheinha...@outlook.com>

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

 libavcodec/mjpegenc.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/libavcodec/mjpegenc.c b/libavcodec/mjpegenc.c
index 668065011c..214e2b0ec1 100644
--- a/libavcodec/mjpegenc.c
+++ b/libavcodec/mjpegenc.c
@@ -291,13 +291,12 @@ static int alloc_huffman(MJPEGEncContext *const m2)
     static const char blocks_per_mb[] = {
         [CHROMA_420] = 6, [CHROMA_422] = 8, [CHROMA_444] = 12
     };
-    size_t num_blocks, num_codes;
+    size_t num_blocks;
 
     // Make sure we have enough space to hold this frame.
     num_blocks = s->c.mb_num * blocks_per_mb[s->c.chroma_format];
-    num_codes = num_blocks * 64;
 
-    m->huff_buffer = av_malloc_array(num_codes,
+    m->huff_buffer = av_malloc_array(num_blocks,
                                      64 /* codes per MB */ * 
sizeof(MJpegHuffmanCode));
     if (!m->huff_buffer)
         return AVERROR(ENOMEM);

_______________________________________________
ffmpeg-cvslog mailing list
ffmpeg-cvslog@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog

To unsubscribe, visit link above, or email
ffmpeg-cvslog-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to