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 <michael@niedermayer.cc>
This commit is contained in:
parent
319898bba2
commit
aec340c533
@ -337,6 +337,20 @@ static int bmp_decode_frame(AVCodecContext *avctx,
|
|||||||
return AVERROR_INVALIDDATA;
|
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;
|
*got_frame = 1;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user