diff --git a/libavcodec/bmp.c b/libavcodec/bmp.c index 42270da6e7..3019d01016 100644 --- a/libavcodec/bmp.c +++ b/libavcodec/bmp.c @@ -337,6 +337,20 @@ static int bmp_decode_frame(AVCodecContext *avctx, return AVERROR_INVALIDDATA; } } + if (avctx->pix_fmt == AV_PIX_FMT_BGRA) { + for (i = 0; i < avctx->height; i++) { + int j; + uint8_t *ptr = p->data[0] + p->linesize[0]*i + 3; + for (j = 0; j < avctx->width; j++) { + if (ptr[4*j]) + break; + } + if (j < avctx->width) + break; + } + if (i == avctx->height) + avctx->pix_fmt = p->format = AV_PIX_FMT_BGR0; + } *got_frame = 1;