X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fpngdec.c;h=609b21e2aa9969403f1722449376aa26e1f60dd2;hb=12804348f5babf56a315fa01751eea1ffdddf98a;hp=712d88faa2a23ed6a47488941916534da7abdbea;hpb=487e088e5e7f4cade6bce5e9a3cff28fce303af1;p=ffmpeg diff --git a/libavcodec/pngdec.c b/libavcodec/pngdec.c index 712d88faa2a..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= 0; + p->reference= 3; if(avctx->get_buffer(avctx, p) < 0){ av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n"); goto fail;