Browse Source

Support BMP files that do not properly align lines.

Quite a few programs missed that detail of the spec
(including old versions of FFmpeg I believe) and when
we would otherwise fail anyway it seems worth a try
to use a simple byte-aligned stride instead.

Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
tags/n2.6
Reimar Döffinger 11 years ago
parent
commit
d96090e7b6
1 changed files with 7 additions and 3 deletions
  1. +7
    -3
      libavcodec/bmp.c

+ 7
- 3
libavcodec/bmp.c View File

@@ -215,9 +215,13 @@ static int bmp_decode_frame(AVCodecContext *avctx,
n = ((avctx->width * depth + 31) / 8) & ~3;

if (n * avctx->height > dsize && comp != BMP_RLE4 && comp != BMP_RLE8) {
av_log(avctx, AV_LOG_ERROR, "not enough data (%d < %d)\n",
dsize, n * avctx->height);
return AVERROR_INVALIDDATA;
n = (avctx->width * depth + 7) / 8;
if (n * avctx->height > dsize) {
av_log(avctx, AV_LOG_ERROR, "not enough data (%d < %d)\n",
dsize, n * avctx->height);
return AVERROR_INVALIDDATA;
}
av_log(avctx, AV_LOG_ERROR, "data size too small, assuming missing line alignment\n");
}

// RLE may skip decoding some picture areas, so blank picture before decoding


Loading…
Cancel
Save