diff --git a/libavcodec/pngdec.c b/libavcodec/pngdec.c index fa69c87732..88b0152ece 100644 --- a/libavcodec/pngdec.c +++ b/libavcodec/pngdec.c @@ -896,7 +896,8 @@ static int handle_p_frame_apng(AVCodecContext *avctx, PNGDecContext *s, return AVERROR(ENOMEM); if (s->blend_op == APNG_BLEND_OP_OVER && - avctx->pix_fmt != AV_PIX_FMT_RGBA) { + avctx->pix_fmt != AV_PIX_FMT_RGBA && + avctx->pix_fmt != AV_PIX_FMT_GRAY8A) { avpriv_request_sample(avctx, "Blending with pixel format %s", av_get_pix_fmt_name(avctx->pix_fmt)); return AVERROR_PATCHWELCOME; @@ -942,6 +943,11 @@ static int handle_p_frame_apng(AVCodecContext *avctx, PNGDecContext *s, foreground_alpha = foreground[3]; background_alpha = background[3]; break; + + case AV_PIX_FMT_GRAY8A: + foreground_alpha = foreground[1]; + background_alpha = background[1]; + break; } if (foreground_alpha == 0)