[FFmpeg-cvslog] mpegvideo: fix visualization buffer size.

Michael Niedermayer git at videolan.org
Tue Dec 27 06:07:17 CET 2011


ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Tue Dec 27 05:53:58 2011 +0100| [b72544370aa22697cc28d4c85e642431fa591629] | committer: Michael Niedermayer

mpegvideo: fix visualization buffer size.

Signed-off-by: Michael Niedermayer <michaelni at gmx.at>

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

 libavcodec/mpegvideo.c |   16 ++++------------
 1 files changed, 4 insertions(+), 12 deletions(-)

diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c
index 712656e..5c04e9d 100644
--- a/libavcodec/mpegvideo.c
+++ b/libavcodec/mpegvideo.c
@@ -827,15 +827,6 @@ av_cold int MPV_common_init(MpegEncContext *s)
         // Note the + 1 is for  a quicker mpeg4 slice_end detection
 
         s->parse_context.state = -1;
-        if ((s->avctx->debug & (FF_DEBUG_VIS_QP | FF_DEBUG_VIS_MB_TYPE)) ||
-            s->avctx->debug_mv) {
-            s->visualization_buffer[0] = av_malloc((s->mb_width * 16 +
-                        2 * EDGE_WIDTH) * s->mb_height * 16 + 2 * EDGE_WIDTH);
-            s->visualization_buffer[1] = av_malloc((s->mb_width * 16 +
-                        2 * EDGE_WIDTH) * s->mb_height * 16 + 2 * EDGE_WIDTH);
-            s->visualization_buffer[2] = av_malloc((s->mb_width * 16 +
-                        2 * EDGE_WIDTH) * s->mb_height * 16 + 2 * EDGE_WIDTH);
-        }
 
         s->context_initialized = 1;
         s->thread_context[0]   = s;
@@ -1572,9 +1563,10 @@ void ff_print_debug_info(MpegEncContext *s, AVFrame *pict)
         avcodec_get_chroma_sub_sample(s->avctx->pix_fmt,
                                       &h_chroma_shift, &v_chroma_shift);
         for (i = 0; i < 3; i++) {
-            memcpy(s->visualization_buffer[i], pict->data[i],
-                   (i == 0) ? pict->linesize[i] * height:
-                              pict->linesize[i] * height >> v_chroma_shift);
+            size_t size= (i == 0) ? pict->linesize[i] * height:
+                         pict->linesize[i] * height >> v_chroma_shift;
+            s->visualization_buffer[i]= av_realloc(s->visualization_buffer[i], size);
+            memcpy(s->visualization_buffer[i], pict->data[i], size);
             pict->data[i] = s->visualization_buffer[i];
         }
         pict->type   = FF_BUFFER_TYPE_COPY;



More information about the ffmpeg-cvslog mailing list