# HG changeset patch # User reimar # Date 1250794490 0 # Node ID 8ac9bc10b485761ca45da836e6030f38768d6464 # Parent 770294452eafa32e92ae9d451f81e41543f7e97b 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. diff -r 770294452eaf -r 8ac9bc10b485 dvbsubdec.c --- a/dvbsubdec.c Wed Aug 19 21:59:44 2009 +0000 +++ b/dvbsubdec.c Thu Aug 20 18:54:50 2009 +0000 @@ -1314,7 +1314,7 @@ 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 -r 770294452eaf -r 8ac9bc10b485 dvdsubdec.c --- a/dvdsubdec.c Wed Aug 19 21:59:44 2009 +0000 +++ b/dvdsubdec.c Thu Aug 20 18:54:50 2009 +0000 @@ -318,14 +318,13 @@ 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 -r 770294452eaf -r 8ac9bc10b485 xsubdec.c --- a/xsubdec.c Wed Aug 19 21:59:44 2009 +0000 +++ b/xsubdec.c Thu Aug 20 18:54:50 2009 +0000 @@ -95,7 +95,7 @@ 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++)