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/trunktags/v0.6
| @@ -1314,7 +1314,7 @@ static int dvbsub_display_end_segment(AVCodecContext *avctx, const uint8_t *buf, | |||||
| break; | 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)); | memcpy(rect->pict.data[1], clut_table, (1 << region->depth) * sizeof(uint32_t)); | ||||
| rect->pict.data[0] = av_malloc(region->buf_size); | rect->pict.data[0] = av_malloc(region->buf_size); | ||||
| @@ -318,14 +318,13 @@ static int decode_dvd_subtitles(AVSubtitle *sub_header, | |||||
| buf, offset1, buf_size, is_8bit); | buf, offset1, buf_size, is_8bit); | ||||
| decode_rle(bitmap + w, w * 2, w, h / 2, | decode_rle(bitmap + w, w * 2, w, h / 2, | ||||
| buf, offset2, buf_size, is_8bit); | buf, offset2, buf_size, is_8bit); | ||||
| sub_header->rects[0]->pict.data[1] = av_mallocz(AVPALETTE_SIZE); | |||||
| if (is_8bit) { | if (is_8bit) { | ||||
| if (yuv_palette == 0) | if (yuv_palette == 0) | ||||
| goto fail; | goto fail; | ||||
| sub_header->rects[0]->pict.data[1] = av_malloc(256 * 4); | |||||
| sub_header->rects[0]->nb_colors = 256; | sub_header->rects[0]->nb_colors = 256; | ||||
| yuv_a_to_rgba(yuv_palette, alpha, (uint32_t*)sub_header->rects[0]->pict.data[1], 256); | yuv_a_to_rgba(yuv_palette, alpha, (uint32_t*)sub_header->rects[0]->pict.data[1], 256); | ||||
| } else { | } else { | ||||
| sub_header->rects[0]->pict.data[1] = av_malloc(4 * 4); | |||||
| sub_header->rects[0]->nb_colors = 4; | sub_header->rects[0]->nb_colors = 4; | ||||
| guess_palette((uint32_t*)sub_header->rects[0]->pict.data[1], | guess_palette((uint32_t*)sub_header->rects[0]->pict.data[1], | ||||
| colormap, alpha, 0xffff00); | colormap, alpha, 0xffff00); | ||||
| @@ -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.linesize[0] = w; | ||||
| sub->rects[0]->pict.data[0] = av_malloc(w * h); | sub->rects[0]->pict.data[0] = av_malloc(w * h); | ||||
| sub->rects[0]->nb_colors = 4; | 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 | // read palette | ||||
| for (i = 0; i < sub->rects[0]->nb_colors; i++) | for (i = 0; i < sub->rects[0]->nb_colors; i++) | ||||