[FFmpeg-cvslog] r19673 - in trunk/libavcodec: dvbsubdec.c dvdsubdec.c xsubdec.c

reimar subversion
Thu Aug 20 20:54:50 CEST 2009


Author: reimar
Date: Thu Aug 20 20:54:50 2009
New Revision: 19673

Log:
Always allocate a buffer of AVPALETTE_SIZE for palette in the subtitle
decoders instead of as small as possible.
This avoids completely unnecessary issues with e.g. libswscale.

Modified:
   trunk/libavcodec/dvbsubdec.c
   trunk/libavcodec/dvdsubdec.c
   trunk/libavcodec/xsubdec.c

Modified: trunk/libavcodec/dvbsubdec.c
==============================================================================
--- trunk/libavcodec/dvbsubdec.c	Thu Aug 20 03:06:18 2009	(r19672)
+++ trunk/libavcodec/dvbsubdec.c	Thu Aug 20 20:54:50 2009	(r19673)
@@ -1314,7 +1314,7 @@ static int dvbsub_display_end_segment(AV
             break;
         }
 
-        rect->pict.data[1] = av_malloc((1 << region->depth) * sizeof(uint32_t));
+        rect->pict.data[1] = av_mallocz(AVPALETTE_SIZE);
         memcpy(rect->pict.data[1], clut_table, (1 << region->depth) * sizeof(uint32_t));
 
         rect->pict.data[0] = av_malloc(region->buf_size);

Modified: trunk/libavcodec/dvdsubdec.c
==============================================================================
--- trunk/libavcodec/dvdsubdec.c	Thu Aug 20 03:06:18 2009	(r19672)
+++ trunk/libavcodec/dvdsubdec.c	Thu Aug 20 20:54:50 2009	(r19673)
@@ -318,14 +318,13 @@ static int decode_dvd_subtitles(AVSubtit
                            buf, offset1, buf_size, is_8bit);
                 decode_rle(bitmap + w, w * 2, w, h / 2,
                            buf, offset2, buf_size, is_8bit);
+                sub_header->rects[0]->pict.data[1] = av_mallocz(AVPALETTE_SIZE);
                 if (is_8bit) {
                     if (yuv_palette == 0)
                         goto fail;
-                    sub_header->rects[0]->pict.data[1] = av_malloc(256 * 4);
                     sub_header->rects[0]->nb_colors = 256;
                     yuv_a_to_rgba(yuv_palette, alpha, (uint32_t*)sub_header->rects[0]->pict.data[1], 256);
                 } else {
-                    sub_header->rects[0]->pict.data[1] = av_malloc(4 * 4);
                     sub_header->rects[0]->nb_colors = 4;
                     guess_palette((uint32_t*)sub_header->rects[0]->pict.data[1],
                                   colormap, alpha, 0xffff00);

Modified: trunk/libavcodec/xsubdec.c
==============================================================================
--- trunk/libavcodec/xsubdec.c	Thu Aug 20 03:06:18 2009	(r19672)
+++ trunk/libavcodec/xsubdec.c	Thu Aug 20 20:54:50 2009	(r19673)
@@ -95,7 +95,7 @@ static int decode_frame(AVCodecContext *
     sub->rects[0]->pict.linesize[0] = w;
     sub->rects[0]->pict.data[0] = av_malloc(w * h);
     sub->rects[0]->nb_colors = 4;
-    sub->rects[0]->pict.data[1] = av_malloc(sub->rects[0]->nb_colors * 4);
+    sub->rects[0]->pict.data[1] = av_mallocz(AVPALETTE_SIZE);
 
     // read palette
     for (i = 0; i < sub->rects[0]->nb_colors; i++)



More information about the ffmpeg-cvslog mailing list