X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;ds=sidebyside;f=libavcodec%2Fpngdec.c;h=609b21e2aa9969403f1722449376aa26e1f60dd2;hb=12804348f5babf56a315fa01751eea1ffdddf98a;hp=dd3fe67876ca840493e7807511a07cb10bee4889;hpb=f884ef00de362a5460a9c58318d009bcae440cc8;p=ffmpeg diff --git a/libavcodec/pngdec.c b/libavcodec/pngdec.c index dd3fe67876c..609b21e2aa9 100644 --- a/libavcodec/pngdec.c +++ b/libavcodec/pngdec.c @@ -498,7 +498,8 @@ static int decode_frame(AVCodecContext *avctx, avctx->pix_fmt = PIX_FMT_MONOBLACK; } else if (s->color_type == PNG_COLOR_TYPE_PALETTE) { avctx->pix_fmt = PIX_FMT_PAL8; - } else if (s->color_type == PNG_COLOR_TYPE_GRAY_ALPHA) { + } else if (s->bit_depth == 8 && + s->color_type == PNG_COLOR_TYPE_GRAY_ALPHA) { avctx->pix_fmt = PIX_FMT_GRAY8A; } else { goto fail; @@ -506,7 +507,7 @@ static int decode_frame(AVCodecContext *avctx, if(p->data[0]) avctx->release_buffer(avctx, p); - p->reference= 1; + p->reference= 3; if(avctx->get_buffer(avctx, p) < 0){ av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n"); goto fail;