[SCM] libav/experimental: 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.
siretart at users.alioth.debian.org
siretart at users.alioth.debian.org
Sun Jun 30 16:50:15 UTC 2013
The following commit has been merged in the experimental branch:
commit 29d7eef7dcfaf6cc6c97ac154e54c89f77507d86
Author: Reimar Döffinger <Reimar.Doeffinger at gmx.de>
Date: Thu Aug 20 18:54:50 2009 +0000
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.
Originally committed as revision 19673 to svn://svn.ffmpeg.org/ffmpeg/trunk
diff --git a/libavcodec/dvbsubdec.c b/libavcodec/dvbsubdec.c
index fb09740..b810ef9 100644
--- a/libavcodec/dvbsubdec.c
+++ b/libavcodec/dvbsubdec.c
@@ -1314,7 +1314,7 @@ static int dvbsub_display_end_segment(AVCodecContext *avctx, const uint8_t *buf,
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);
diff --git a/libavcodec/dvdsubdec.c b/libavcodec/dvdsubdec.c
index 49b0802..1422412 100644
--- a/libavcodec/dvdsubdec.c
+++ b/libavcodec/dvdsubdec.c
@@ -318,14 +318,13 @@ static int decode_dvd_subtitles(AVSubtitle *sub_header,
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);
diff --git a/libavcodec/xsubdec.c b/libavcodec/xsubdec.c
index 3838722..368caf4 100644
--- a/libavcodec/xsubdec.c
+++ b/libavcodec/xsubdec.c
@@ -95,7 +95,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size,
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++)
--
Libav/FFmpeg packaging
More information about the pkg-multimedia-commits
mailing list