From aec340c533293d6230573aaf3fe22a74e5454b99 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Thu, 10 Sep 2015 16:06:14 +0200 Subject: [PATCH] avcodec/bmp: Analyze BGRA files alpha channel to choose pixel format BGRA BMPs commonly do contain an all transparent alpha channel Signed-off-by: Michael Niedermayer --- libavcodec/bmp.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) 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;